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.
İ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:
- 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.
- 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.
- 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.
- 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
- NMS'siz Eğitim: NMS ihtiyacını ortadan kaldırmak için tutarlı çift atamalar kullanır ve çıkarım gecikmesini azaltır.
- 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.
- 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ı
- 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.
- 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.
- 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
- Geniş Çekirdekli Evrişim: Özellik çıkarma yeteneğini geliştirmek için alıcı alanını genişletir.
- 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
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.