İçeriğe geç

YOLOv10: Gerçek Zamanlı Uçtan Uca Nesne Algılama

YOLOv10, şu temeller üzerine inşa edilmiştir UltralyticsTsinghua Üniversitesi'ndeki araştırmacılar tarafından geliştirilen Python paketi, önceki YOLO sürümlerinde bulunan hem işlem sonrası hem de model mimarisi eksikliklerini gidererek gerçek zamanlı nesne algılamaya yeni bir yaklaşım getiriyor. Maksimum olmayan bastırmayı (NMS) ortadan kaldırarak ve çeşitli model bileşenlerini optimize ederek, YOLOv10 önemli ölçüde azaltılmış hesaplama ek yükü ile son teknoloji performansa ulaşır. Kapsamlı deneyler, çoklu model ölçeklerinde üstün doğruluk-gecikme ödünleşimlerini göstermektedir.

NMS'siz eğitim için YOLOv10 tutarlı çift atama



İzle: Ultralytics Kullanarak SKU-110k Veri Kümesinde YOLOv10 Nasıl Eğitilir | Perakende Veri Kümesi

Genel Bakış

Gerçek zamanlı nesne algılama, düşük gecikmeyle görüntülerdeki nesne kategorilerini ve konumlarını doğru bir şekilde tahmin etmeyi amaçlar. YOLO serisi, performans ve verimlilik arasındaki dengesi nedeniyle bu araştırmanın ön saflarında yer almıştır. Ancak, NMS'ye bağımlılık ve mimari verimsizlikler optimum performansı engellemiştir. YOLOv10, NMS'siz eğitim için tutarlı çift atamalar ve bütünsel bir verimlilik-doğruluk odaklı model tasarım stratejisi sunarak bu sorunları ele almaktadır.

Mimari

YOLOv10'un mimarisi, önceki YOLO modellerinin güçlü yönleri üzerine inşa edilirken, çeşitli temel yenilikler sunmaktadır. Model mimarisi aşağıdaki bileşenlerden oluşmaktadır:

  1. Backbone: Özellik çıkarımından sorumlu olan YOLOv10'daki backbone, gradyan akışını iyileştirmek ve hesaplama yedekliliğini azaltmak için CSPNet'in (Çapraz Aşamalı Kısmi Ağ) geliştirilmiş bir sürümünü kullanır.
  2. Boyun (Neck): Boyun, farklı ölçeklerden özellikleri toplamak ve bunları başlığa (head) geçirmek için tasarlanmıştır. Etkili çok ölçekli özellik kaynaştırması için PAN (Yol Toplama Ağı) katmanlarını içerir.
  3. Bire Çok Başlık (One-to-Many Head): Zengin denetleyici sinyalleri sağlamak ve öğrenme doğruluğunu artırmak için eğitim sırasında nesne başına birden çok tahmin üretir.
  4. Bire Bir Başlık (One-to-One Head): NMS ihtiyacını ortadan kaldırmak, böylece gecikmeyi azaltmak ve verimliliği artırmak için çıkarım sırasında nesne başına tek bir en iyi tahmin üretir.

Temel Özellikler

  1. NMS'siz Eğitim: NMS ihtiyacını ortadan kaldırmak için tutarlı çift atamalar kullanır ve çıkarım gecikmesini azaltır.
  2. Bütünsel Model Tasarımı: Hafif sınıflandırma başlıkları, uzamsal-kanal ayrışık alt örnekleme ve sıra güdümlü blok tasarımı dahil olmak üzere, hem verimlilik hem de doğruluk perspektiflerinden çeşitli bileşenlerin kapsamlı optimizasyonu.
  3. Gelişmiş Model Yetenekleri: Önemli bir hesaplama maliyeti olmadan performansı artırmak için geniş çekirdekli evrişimler ve kısmi öz-dikkat modülleri içerir.

Model Varyantları

YOLOv10, farklı uygulama ihtiyaçlarını karşılamak için çeşitli model ölçeklerinde gelir:

  • YOLOv10n: Aşırı kaynak kısıtlamalı ortamlar için nano versiyon.
  • YOLOv10s: Hız ve doğruluğu dengeleyen küçük versiyon.
  • YOLOv10m: Genel amaçlı kullanım için orta boyutlu versiyon.
  • YOLOv10b: Daha yüksek doğruluk için artırılmış genişliğe sahip dengeli versiyon.
  • YOLOv10l: Artan hesaplama kaynakları pahasına daha yüksek doğruluk için büyük versiyon.
  • YOLOv10x: Maksimum doğruluk ve performans için ekstra büyük versiyon.

Performans

YOLOv10, doğruluk ve verimlilik açısından önceki YOLO sürümlerinden ve diğer son teknoloji modellerden daha iyi performans gösterir. Örneğin, YOLOv10s, COCO veri kümesinde benzer AP ile RT-DETR-R18'den 1,8 kat daha hızlıdır ve YOLOv10b, aynı performansla YOLOv9-C'den %46 daha az gecikme süresine ve %25 daha az parametreye sahiptir.

Performans

T4 GPU'da TensorRT FP16 ile ölçülen gecikme.

ModelGiriş BoyutuAPvalFLOP'lar (G)Gecikme (ms)
YOLOv10n64038.56.71.84
YOLOv10s64046.321.62.49
YOLOv10m64051.159.14.74
YOLOv10b64052.592.05.74
YOLOv10l64053.2120.37.28
YOLOv10x64054.4160.410.70

Metodoloji

NMS'siz Eğitim için Tutarlı Çift Atamalar

YOLOv10, zengin denetim ve verimli uçtan uca dağıtım sağlamak için eğitim sırasında bire çok ve bire bir stratejilerini birleştiren ikili etiket atamaları kullanır. Tutarlı eşleştirme metriği, çıkarım sırasında tahminlerin kalitesini artırarak her iki strateji arasındaki denetimi uyumlu hale getirir.

Bütünsel Verimlilik-Doğruluk Odaklı Model Tasarımı

Verimlilik Artışları

  1. Hafif Sınıflandırma Başlığı: Derinlemesine ayrılabilir evrişimler kullanarak sınıflandırma başlığının hesaplama yükünü azaltır.
  2. Uzamsal-Kanal Ayrıştırılmış Alt Örnekleme: Bilgi kaybını ve hesaplama maliyetini en aza indirmek için uzamsal azaltma ve kanal modülasyonunu ayırır.
  3. Sıra Kılavuzlu Blok Tasarımı: Evre yedekliliğine bağlı olarak blok tasarımını uyarlar ve optimum parametre kullanımını sağlar.

Doğruluk Geliştirmeleri

  1. Geniş Çekirdekli Evrişim: Özellik çıkarma yeteneğini geliştirmek için alıcı alanını genişletir.
  2. Kısmi Kendine Dikkat (PSA): Minimum ek yük ile küresel temsil öğrenimini iyileştirmek için kendine dikkat modüllerini içerir.

Deneyler ve Sonuçlar

YOLOv10, COCO gibi standart kıyaslama testlerinde kapsamlı bir şekilde test edilmiş olup üstün performans ve verimlilik sergilemektedir. Model, farklı varyantlarda son teknoloji sonuçlar elde ederek önceki sürümlere ve diğer çağdaş dedektörlere kıyasla gecikme ve doğrulukta önemli iyileştirmeler göstermektedir.

Karşılaştırmalar

YOLOv10'un SOTA nesne dedektörleriyle karşılaştırılması

Diğer son teknoloji dedektörlerle karşılaştırıldığında:

  • YOLOv10s / x, benzer doğrulukla RT-DETR-R18 / R101'den 1.8× / 1.3× daha hızlıdır
  • YOLOv10b, aynı doğrulukta YOLOv9-C'den %25 daha az parametreye ve %46 daha düşük gecikme süresine sahiptir
  • YOLOv10l / x, 1.8× / 2.3× daha az parametre ile YOLOv8l / x'ten 0.3 AP / 0.5 AP daha iyi performans gösterir

Performans

İşte YOLOv10 varyantlarının diğer son teknoloji modellerle ayrıntılı bir karşılaştırması:

ModelParametreler
(M)
FLOP'lar
(G)
mAPval
50-95
Gecikme
(ms)
Gecikme-ileri
(ms)
YOLOv6-3.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6-3.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6-3.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6-3.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.60

Kullanım Örnekleri

YOLOv10 ile yeni görüntüleri tahmin etmek için:

Örnek

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

Özel bir veri kümesinde YOLOv10'u eğitmek için:

Örnek

from ultralytics import YOLO

# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

Desteklenen Görevler ve Modlar

YOLOv10 model serisi, her biri yüksek performanslı Nesne Algılama için optimize edilmiş bir dizi model sunar. Bu modeller, farklı hesaplama ihtiyaçlarına ve doğruluk gereksinimlerine cevap vererek onları geniş bir uygulama yelpazesi için çok yönlü hale getirir.

ModelDosya adlarıGörevlerÇıkarımDoğrulamaEğitimDışa aktar
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptNesne Algılama

YOLOv10'u Dışa Aktarma

YOLOv10 ile tanıtılan yeni işlemler nedeniyle, Ultralytics tarafından sağlanan tüm dışa aktarma biçimleri şu anda desteklenmemektedir. Aşağıdaki tablo, YOLOv10 için Ultralytics kullanılarak hangi biçimlerin başarıyla dönüştürüldüğünü özetlemektedir. YOLOv10 için ek biçimlerin dışa aktarma desteğini eklemek üzere bir katkı değişikliği sağlama olanağınız varsa, lütfen bir çekme isteği açmaktan çekinmeyin.

Dışa Aktarma BiçimiDışa Aktarma DesteğiDışa Aktarılan Model ÇıkarımıNotlar
TorchScriptStandart PyTorch model formatı.
ONNXDağıtım için yaygın olarak desteklenir.
OpenVINOIntel donanımı için optimize edilmiştir.
TensorRTNVIDIA GPU'lar için optimize edilmiştir.
CoreMLApple cihazlarıyla sınırlıdır.
TF SavedModelTensorFlow'un standart model formatı.
TF GraphDefEski TensorFlow formatı.
TF LiteMobil ve gömülü sistemler için optimize edilmiştir.
TF Edge TPUGoogle'ın Edge TPU cihazlarına özeldir.
TF.jsTarayıcı kullanımı için JavaScript ortamı.
PaddlePaddleÇin'de popüler; daha az küresel destek.
NCNNKatman torch.topk mevcut değil veya kayıtlı değil

Sonuç

YOLOv10, önceki YOLO sürümlerinin eksikliklerini gidererek ve yenilikçi tasarım stratejilerini bir araya getirerek gerçek zamanlı nesne algılamada yeni bir standart belirler. Düşük hesaplama maliyetiyle yüksek doğruluk sunma yeteneği, onu üretim, perakende ve otonom araçlar dahil olmak üzere çok çeşitli gerçek dünya uygulamaları için ideal bir seçim haline getirir.

Alıntılar ve Teşekkürler

Tsinghua Üniversitesi'nden YOLOv10 yazarlarına, Ultralytics çerçevesine yaptıkları kapsamlı araştırma ve önemli katkılarından dolayı teşekkür ederiz:

@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license = {AGPL-3.0}
}

Ayrıntılı uygulama, mimari yenilikler ve deneysel sonuçlar için lütfen Tsinghua Üniversitesi ekibi tarafından hazırlanan YOLOv10 araştırma makalesine ve GitHub deposuna bakın.

SSS

YOLOv10 nedir ve önceki YOLO versiyonlarından farkı nedir?

Tsinghua Üniversitesi'ndeki araştırmacılar tarafından geliştirilen YOLOv10, gerçek zamanlı nesne algılamaya çeşitli önemli yenilikler getiriyor. Eğitim sırasında tutarlı çift atamalar kullanarak ve azaltılmış hesaplama yükü ile üstün performans için optimize edilmiş model bileşenleri ile non-maximum suppression (NMS) ihtiyacını ortadan kaldırır. Mimarisi ve temel özellikleri hakkında daha fazla bilgi için YOLOv10 genel bakış bölümüne göz atın.

YOLOv10 kullanarak çıkarım çalıştırmaya nasıl başlayabilirim?

Kolay çıkarım için Ultralytics YOLO Python kütüphanesini veya komut satırı arayüzünü (CLI) kullanabilirsiniz. Aşağıda YOLOv10 kullanarak yeni görüntüleri tahmin etme örnekleri verilmiştir:

Örnek

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

Daha fazla kullanım örneği için Kullanım Örnekleri bölümümüzü ziyaret edin.

YOLOv10 hangi model varyantlarını sunuyor ve bunların kullanım alanları nelerdir?

YOLOv10, farklı kullanım durumlarına hitap etmek için çeşitli model varyantları sunar:

  • YOLOv10n: Aşırı kaynak kısıtlamalı ortamlar için uygundur.
  • YOLOv10s: Hız ve doğruluğu dengeler.
  • YOLOv10m: Genel amaçlı kullanım
  • YOLOv10b: Artırılmış genişlik ile daha yüksek doğruluk
  • YOLOv10l: Hesaplama kaynakları pahasına yüksek doğruluk
  • YOLOv10x: Maksimum doğruluk ve performans.

Her varyant, farklı hesaplama ihtiyaçları ve doğruluk gereksinimleri için tasarlanmıştır ve bu da onları çeşitli uygulamalar için çok yönlü hale getirir. Daha fazla bilgi için Model Varyantları bölümünü inceleyin.

YOLOv10'daki NMS'siz yaklaşım, performansı nasıl artırır?

YOLOv10, eğitim için tutarlı çift atamalar kullanarak çıkarım sırasında non-maximum suppression'a (NMS) olan ihtiyacı ortadan kaldırır. Bu yaklaşım, çıkarım gecikmesini azaltır ve tahmin verimliliğini artırır. Mimari ayrıca, her nesnenin tek bir en iyi tahmin almasını sağlayan çıkarım için bire bir başlık içerir. Ayrıntılı bir açıklama için NMS'siz Eğitim için Tutarlı Çift Atamalar bölümüne bakın.

YOLOv10 modelleri için dışa aktarma seçeneklerini nerede bulabilirim?

YOLOv10, TorchScript, ONNX, OpenVINO ve TensorRT dahil olmak üzere çeşitli dışa aktarma formatlarını destekler. Ancak, Ultralytics tarafından sağlanan tüm dışa aktarma formatları, yeni operasyonları nedeniyle şu anda YOLOv10 için desteklenmemektedir. Desteklenen formatlar ve dışa aktarma talimatları hakkında ayrıntılı bilgi için YOLOv10'u Dışa Aktarma bölümünü ziyaret edin.

YOLOv10 modelleri için performans kıyaslamaları nelerdir?

YOLOv10, hem doğruluk hem de verimlilik açısından önceki YOLO sürümlerinden ve diğer son teknoloji modellerden daha iyi performans gösterir. Örneğin, YOLOv10s, COCO veri kümesinde benzer bir AP ile RT-DETR-R18'den 1,8 kat daha hızlıdır. YOLOv10b, aynı performansla YOLOv9-C'den %46 daha az gecikme süresi ve %25 daha az parametre gösterir. Ayrıntılı kıyaslamalar Karşılaştırmalar bölümünde bulunabilir.



📅1 yıl önce oluşturuldu ✏️ 5 gün önce güncellendi
glenn-jocherRizwanMunawarleonnilY-T-GLaughing-qMatthewNoyceUltralyticsAssistanthasanghaffari93zhixuweiabirami-vinaBurhan-Q

Yorumlar