İçeriğe geç

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

Tsinghua Üniversitesi'ndeki araştırmacılar tarafından Ultralytics Python paketi üzerine inşa edilen YOLOv10, önceki YOLO sürümlerinde bulunan işlem sonrası ve model mimarisi eksikliklerini gidererek gerçek zamanlı nesne algılamaya yeni bir yaklaşım getiriyor. Non-maximum suppression'ı (NMS) ortadan kaldırarak ve çeşitli model bileşenlerini optimize ederek, YOLOv10 önemli ölçüde azaltılmış hesaplama yükü ile son teknoloji performansı elde eder. Kapsamlı deneyler, birden fazla model ölçeğinde üstün doğruluk-gecikme dengesini 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.

Model Giriş Boyutu APval FLOP'lar (G) Gecikme (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.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ı:

Model Parametreler
(M)
FLOP'lar
(G)
mAPval
50-95
Gecikme
(ms)
Gecikme-ileri
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
Gold-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8n 3.2 8.7 37.3 6.16 1.77
YOLOv10n 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Gold-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8s 11.2 28.6 44.9 7.07 2.33
YOLOv10s 7.2 21.6 46.8 2.49 2.39
RT-DETR-R18 20.0 60.0 46.5 4.58 4.49
YOLOv6-3.0-M 34.9 85.8 49.1 5.63 4.56
Gold-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8m 25.9 78.9 50.6 9.50 5.09
YOLOv10m 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Gold-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8l 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10l 24.4 120.3 53.4 7.28 7.21
YOLOv8x 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10x 29.5 160.4 54.4 10.70 10.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, çeşitli hesaplama ihtiyaçlarına ve doğruluk gereksinimlerine hitap ederek çok çeşitli uygulamalar için çok yönlü hale getirir.

Model Dosya adları Görevler Çıkarım Doğrulama Eğitim Dışa aktar
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Nesne 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çimi Dışa Aktarma Desteği Dışa Aktarılan Model Çıkarımı Notlar
TorchScript Standart PyTorch model formatı.
ONNX Dağıtım için yaygın olarak desteklenir.
OpenVINO Intel donanımı için optimize edilmiştir.
TensorRT NVIDIA GPU'lar için optimize edilmiştir.
CoreML Apple cihazlarıyla sınırlıdır.
TF SavedModel TensorFlow'un standart model formatı.
TF GraphDef Eski TensorFlow formatı.
TF Lite Mobil ve gömülü sistemler için optimize edilmiştir.
TF Edge TPU Google'ın Edge TPU cihazlarına özeldir.
TF.js Tarayıcı kullanımı için JavaScript ortamı.
PaddlePaddle Çin'de popüler; daha az küresel destek.
NCNN Katman 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 ✏️ 3 ay önce güncellendi

Yorumlar