YOLOv10: Gerçek Zamanlı Uçtan Uca Nesne Algılama#
Mayıs 2024'te yayımlanan ve Tsinghua Üniversitesi araştırmacıları tarafından geliştirilen Ultralytics Python paketi üzerine kurulan YOLOv10, önceki YOLO sürümlerinde bulunan son işleme ve model mimarisi eksikliklerini ele alarak gerçek zamanlı nesne algılamaya yeni bir yaklaşım getirir. Maksimum olmayan bastırmayı (NMS) ortadan kaldırıp çeşitli model bileşenlerini optimize eden YOLOv10, yayımlandığı dönemde hesaplama yükünü önemli ölçüde azaltarak mükemmel performans elde etti. NMS içermeyen uçtan uca tasarımı, YOLO26 ile daha da geliştirilen bir yaklaşımın öncüsü oldu.

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
Genel Bakış#
Gerçek zamanlı nesne algılama, görüntülerdeki nesne kategorilerini ve konumlarını düşük gecikmeyle doğru biçimde tahmin etmeyi amaçlar. YOLO serisi, performans ve verimlilik arasındaki dengesi sayesinde bu araştırmaların ön saflarında yer almıştır. Ancak NMS'ye olan bağımlılık ve mimari verimsizlikler, optimum performansa ulaşılmasını engellemiştir. YOLOv10, NMS içermeyen eğitim için tutarlı çift atamalar ve verimlilik-doğruluk odaklı bütüncül bir model tasarım stratejisi sunarak bu sorunları ele alır.
Mimari#
YOLOv10'un mimarisi, önceki YOLO modellerinin güçlü yönlerini temel alırken birkaç önemli yenilik sunar. Model mimarisi aşağıdaki bileşenlerden oluşur:
- Backbone: Özellik çıkarımından sorumlu olan YOLOv10 backbone'u, gradyan akışını iyileştirmek ve hesaplama tekrarını azaltmak için CSPNet'in (Aşamalar Arası Kısmi Ağ) geliştirilmiş bir sürümünü kullanır.
- Neck: Neck, farklı ölçeklerdeki özellikleri bir araya getirip head'e aktaracak şekilde tasarlanmıştır. Etkili çok ölçekli özellik birleştirme için PAN (Yol Birleştirme Ağı) katmanlarını içerir.
- One-to-Many Head: Zengin denetim sinyalleri sağlamak ve öğrenme doğruluğunu artırmak için eğitim sırasında her nesne başına birden fazla tahmin üretir.
- 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 her nesne başına en iyi tek tahmini üretir.
Temel Özellikler#
- NMS İçermeyen Eğitim: NMS ihtiyacını ortadan kaldırmak ve çıkarım gecikmesini azaltmak için tutarlı çift atamalardan yararlanır.
- Bütüncül Model Tasarımı: Hafif sınıflandırma kafaları, uzaysal-kanal ayrıştırılmış örnekleme düşürme ve derece odaklı blok tasarımı dahil olmak üzere hem verimlilik hem de doğruluk perspektiflerinden çeşitli bileşenlerin kapsamlı optimizasyonu.
- Geliştirilmiş Model Yetenekleri: Önemli bir hesaplama maliyeti oluşturmadan performansı artırmak için büyük çekirdekli konvolüsyonları ve kısmi öz-dikkat modüllerini içerir.
Model Varyantları#
YOLOv10, farklı uygulama ihtiyaçlarını karşılamak üzere çeşitli model ölçekleriyle sunulur:
- YOLOv10n: Son derece kısıtlı kaynaklara sahip ortamlar için Nano sürümü.
- YOLOv10s: Hız ve doğruluk arasında denge kuran Small sürümü.
- YOLOv10m: Genel amaçlı kullanım için Medium sürümü.
- YOLOv10b: Daha yüksek doğruluk için artırılmış genişliğe sahip dengeli sürüm.
- YOLOv10l: Artan hesaplama kaynakları karşılığında daha yüksek doğruluk sunan Large sürümü.
- YOLOv10x: En yüksek doğruluk ve performans için Extra-large sürümü.
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 değerine sahip RT-DETR-R18 modelinden 1,8 kat daha hızlıdır; YOLOv10b ise aynı performansla YOLOv9-C modelinden %46 daha düşük gecikmeye ve %25 daha az parametreye sahiptir.
Gecikme, T4 GPU üzerinde TensorRT FP16 kullanılarak ölçülmüştür.
| Model | Girdi Boyutu | APval | FLOPs (G) | Gecikme (ms) |
|---|---|---|---|---|
| [YOLOv10n][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
Yöntemoloji#
NMS İçermeyen 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 bir-çoklu ve bir-bir stratejilerini birleştiren ikili etiket atamaları kullanır. Ultralytics tahmini ve doğrulaması, NMS ile bir-çoklu kafaya varsayılan olarak atanır; NMS içermeyen kafayı seçmek için nms=False ayarını yap. Tutarlı eşleştirme metriği, her iki strateji arasındaki denetimi hizalayarak çıkarım sırasında tahminlerin kalitesini artırır.
Bütüncül Verimlilik-Doğruluk Odaklı Model Tasarımı#
Verimlilik İyileştirmeleri#
- Hafif Sınıflandırma Head'i: Derinlik bazlı ayrılabilir konvolüsyonlar kullanarak sınıflandırma head'inin hesaplama yükünü azaltır.
- Uzaysal-Kanal Ayrıştırılmış Örnekleme Düşürme: Bilgi kaybını ve hesaplama maliyetini en aza indirmek için uzaysal indirgemeyi ve kanal modülasyonunu ayrıştırır.
- Sıralama Kılavuzlu Blok Tasarımı: Optimum parametre kullanımını sağlamak için blok tasarımını içsel aşama tekrarına göre uyarlar.
Doğruluk İyileştirmeleri#
- Büyük Çekirdekli Konvolüsyon: Alıcı alanı genişleterek özellik çıkarma yeteneğini artırır.
- Kısmi Öz-Dikkat (PSA): Çok düşük ek yükle küresel temsil öğrenimini iyileştirmek için öz-dikkat modüllerini içerir.
Deneyler ve Sonuçlar#
YOLOv10, COCO gibi standart kıyaslamalarda kapsamlı biçimde test edilmiş ve üstün performans ile verimlilik göstermiştir. Model, farklı varyantlarda son teknoloji sonuçlara ulaşarak önceki sürümlere ve diğer çağdaş algılayıcılara kıyasla gecikme ve doğrulukta önemli iyileştirmeler sunar.
Karşılaştırmalar#

Diğer son teknoloji algılayıcılarla karşılaştırıldığında:
- YOLOv10s / x, benzer doğrulukla RT-DETR-R18 / R101 modellerinden 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 gecikmeye sahiptir
- YOLOv10l / x, 1,8× / 2,3× daha az parametreyle YOLOv8l / x modellerini 0,3 AP / 0,5 AP farkla geride bırakır
Aşağıdaki değerler YOLOv10 makalesinde bildirildiği ve kendi protokolü kullanılarak ölçüldüğü için Ultralytics model sayfalarındaki değerlerle doğrudan karşılaştırılamaz:
| Model | Parametreler (M) | FLOPs (G) | mAPval 50-95 | Gecikme (ms) | Gecikme-öncelikli (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 |
Parametre ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren ve yardımcı one-to-many algılama head'ini kaldıran model.fuse() sonrasındaki birleştirilmiş modele aittir. Önceden eğitilmiş checkpoint'ler tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
Kullanım Örnekleri#
YOLOv10 ile yeni görüntüleri tahmin etmek için. Modeller ayrıca Ultralytics Platform üzerinden bulut GPU'larında eğitilebilir:
from ultralytics import YOLO
# Load a pretrained YOLOv10n model
model = YOLO("yolov10n.pt")
# Perform object detection on an image
results = model("image.jpg")
# Display the results
results[0].show()YOLOv10'u özel bir veri kümesi üzerinde eğitmek için:
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)Desteklenen Görevler ve Modlar#
YOLOv10 model serisi, her biri yüksek performanslı Nesne Algılama için optimize edilmiş çeşitli modeller sunar. Bu modeller, farklı hesaplama ihtiyaçlarını ve doğruluk gereksinimlerini karşılayarak çok çeşitli uygulamalarda kullanılabilir.
| Model | Dosya Adları | Görevler | Eğitim | Doğrulama | Çıkarım | Dışa aktarma |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | Nesne Tespiti | ✅ | ✅ | ✅ | ✅ |
YOLOv10'u Dışa Aktarma#
YOLOv10 ile sunulan yeni işlemler nedeniyle Ultralytics tarafından sağlanan tüm dışa aktarma biçimleri şu anda desteklenmemektedir. Aşağıdaki tabloda, YOLOv10 için Ultralytics kullanılarak başarıyla dönüştürülen biçimler gösterilmektedir. YOLOv10 için ek biçimlere dışa aktarma desteği eklemeye yönelik katkı değişikliği sağlayabiliyorsan bir pull request açabilirsin.
| Dışa Aktarma Biçimi | Dışa Aktarma Desteği | Dışa Aktarılan Model Çıkarımı | Notlar |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Standart PyTorch model biçimi. |
| ONNX | ✅ | ✅ | Dağıtım için geniş ölçüde 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 biçimi. |
| TF GraphDef | ✅ | ✅ | Eski TensorFlow biçimi. |
| LiteRT | ✅ | ✅ | Mobil, gömülü ve tarayıcı ortamları (LiteRT.js) için optimize edilmiştir. |
| TF Edge TPU | ✅ | ✅ | Google'ın Edge TPU cihazlarına özeldir. |
| PaddlePaddle | ❌ | ❌ | Çin'de popülerdir; küresel desteği daha sınırlıdır. |
| NCNN | ✅ | ❌ | torch.topk operatörü NCNN çalışma zamanı tarafından desteklenmiyor. |
Sonuç#
YOLOv10, önceki YOLO sürümlerinin eksikliklerini giderip yenilikçi tasarım stratejilerini bir araya getirerek piyasaya çıktığında gerçek zamanlı nesne algılamada yeni bir standart belirledi. NMS'siz yaklaşımı, YOLO ailesinde uçtan uca nesne algılamanın öncülüğünü yaptı. Geliştirilmiş performansa ve NMS'siz çıkarıma sahip en yeni Ultralytics modeli için YOLO26 sayfasına bakın.
Atıflar ve Teşekkürler#
Kapsamlı araştırmaları ve Ultralytics çerçevesine yaptıkları önemli katkılar için Tsinghua Üniversitesi bünyesindeki YOLOv10 yazarlarını anmak isteriz:
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}Ayrıntılı uygulama, mimari yenilikler ve deneysel sonuçlar için Tsinghua Üniversitesi ekibinin hazırladığı YOLOv10 araştırma makalesine ve GitHub deposuna başvurun.
SSS#
Tsinghua Üniversitesi araştırmacıları tarafından geliştirilen YOLOv10, gerçek zamanlı nesne algılamaya yönelik birçok önemli yenilik sunar. Eğitim sırasında tutarlı ikili atamaları ve üstün performans için optimize edilmiş model bileşenlerini kullanarak hesaplama yükünü azaltır ve maksimum olmayan bastırma (NMS) gereksinimini 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.
Kolay çıkarım için Ultralytics YOLO Python kütüphanesini veya komut satırı arayüzünü (CLI) kullanabilirsin. Aşağıda YOLOv10 kullanarak yeni görüntüler üzerinde tahmin yapmaya ilişkin örnekler yer alıyor:
Örnekfrom ultralytics import YOLO # Load the pretrained YOLOv10n model model = YOLO("yolov10n.pt") results = model("image.jpg") results[0].show()Daha fazla kullanım örneği için Kullanım Örnekleri bölümünü ziyaret et.
YOLOv10, farklı kullanım alanlarına hitap etmek için çeşitli model varyantları sunar:
- YOLOv10n: Kaynakları son derece kısıtlı ortamlar için uygundur
- YOLOv10s: Hız ve doğruluk arasında denge sağlar
- YOLOv10m: Genel amaçlı kullanım
- YOLOv10b: Artırılmış genişlikle daha yüksek doğruluk
- YOLOv10l: Hesaplama kaynakları karşılığında 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; bu da onları çeşitli uygulamalar için esnek hâle getirir. Daha fazla bilgi için Model Varyantları bölümünü inceleyin.
YOLOv10, bire bir başlığın nesne başına en iyi tek bir tahmin üretmesini sağlayan tutarlı ikili atamalarla eğitilir; bu da çıkarım sırasında Non-Maximum Suppression (NMS) ihtiyacını ortadan kaldırır. Ultralytics tahmini ve doğrulaması, NMS'li bire çok başlığa varsayılan olarak ayarlanır; NMS içermeyen başlığı seçmek ve NMS geçişini kaldırmak için
nms=Falseayarını yap. Ayrıntılı bir açıklama için Consistent Dual Assignments for NMS-Free Training bölümüne göz at.YOLOv10; TorchScript, ONNX, OpenVINO ve TensorRT dâhil olmak üzere çeşitli dışa aktarma biçimlerini destekler. Ancak yeni işlemleri nedeniyle Ultralytics tarafından sağlanan tüm dışa aktarma biçimleri şu anda YOLOv10 tarafından desteklenmemektedir. Desteklenen biçimler ve dışa aktarma talimatları için YOLOv10'u Dışa Aktarma bölümünü ziyaret edin.
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 değerine sahipken RT-DETR-R18'den 1,8 kat daha hızlıdır. YOLOv10b, aynı performansla YOLOv9-C'ye kıyasla %46 daha düşük gecikme ve %25 daha az parametre sunar. Ayrıntılı kıyaslamalar Karşılaştırmalar bölümünde bulunabilir.