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

İ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, görüntülerdeki nesne kategorilerini ve konumlarını düşük gecikmeyle doğru biçimde tahmin etmeyi amaçlar. Performans ve verimlilik arasındaki dengesi sayesinde YOLO serisi bu araştırmalara öncülük etmiştir. Ancak NMS'ye bağımlılık ve mimarideki verimsizlikler en iyi performansa ulaşmayı engellemiştir. YOLOv10, NMS içermeyen eğitim için tutarlı ikili atamaları ve verimlilik ile doğruluğu bütüncül biçimde gözeten bir model tasarım stratejisini uygulayarak bu sorunları ele alır.
Mimari#
YOLOv10 mimarisi, birkaç önemli yenilik sunarken önceki YOLO modellerinin güçlü yönlerini temel alır. Model mimarisi aşağıdaki bileşenlerden oluşur:
- Omurga: Özellik çıkarımından sorumlu olan YOLOv10 omurgası, gradyan akışını iyileştirmek ve hesaplama tekrarlarını azaltmak için CSPNet'in (Çapraz Aşamalı Kısmi Ağ) gelişmiş bir sürümünü kullanır.
- Boyun: Boyun, farklı ölçeklerdeki özellikleri bir araya getirip başlığa iletmek üzere tasarlanmıştır. Etkili çok ölçekli özellik füzyonu için PAN (Yol Toplama Ağı) katmanlarını içerir.
- Bire Çok Başlık: Eğitim sırasında her nesne için birden fazla tahmin oluşturarak zengin gözetim sinyalleri sağlar ve öğrenme doğruluğunu artırır.
- Bire Bir Başlık: Çıkarım sırasında her nesne için en iyi tahmini üretir; böylece NMS ihtiyacını ortadan kaldırır, gecikmeyi azaltır ve verimliliği artırır.
Temel Özellikler#
- NMS'siz Eğitim: Tutarlı çiftli atamalar kullanarak NMS ihtiyacını ortadan kaldırır ve çıkarım gecikmesini azaltır.
- Bütüncül Model Tasarımı: Hafif sınıflandırma başlıkları, uzamsal-kanal ayrıştırmalı alt örnekleme ve sıralama rehberli blok tasarımı dâhil olmak üzere çeşitli bileşenleri hem verimlilik hem de doğruluk açısından kapsamlı şekilde optimize eder.
- Geliştirilmiş Model Yetenekleri: Önemli bir hesaplama maliyeti oluşturmadan performansı iyileştirmek için büyük çekirdekli evrişimler ve kısmi öz dikkat modülleri kullanır.
Model Varyantları#
YOLOv10, farklı uygulama ihtiyaçlarını karşılamak için çeşitli model ölçekleriyle sunulur:
- YOLOv10n: Kaynakların son derece kısıtlı olduğu ortamlar için nano sürüm.
- YOLOv10s: Hız ve doğruluk arasında denge kuran küçük sürüm.
- YOLOv10m: Genel amaçlı kullanım için orta boy sürüm.
- YOLOv10b: Daha yüksek doğruluk için genişliği artırılmış dengeli sürüm.
- YOLOv10l: Daha fazla hesaplama kaynağı gerektirme pahasına daha yüksek doğruluk sunan büyük sürüm.
- YOLOv10x: En yüksek doğruluk ve performans için ekstra büyük 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 sahipken RT-DETR-R18 modelinden 1.8 kat daha hızlıdır; YOLOv10b ise aynı performansı sunarken YOLOv9-C modeline göre %46 daha düşük gecikmeye ve %25 daha az parametreye sahiptir.
Gecikme, T4 GPU üzerinde TensorRT FP16 ile ö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 |
Metodoloji#
NMS'siz Eğitim için Tutarlı Çiftli 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 stratejileri birleştiren çift etiket atamaları kullanır. Ultralytics tahmini ve doğrulaması varsayılan olarak NMS içeren bire çok başlığı kullanır; NMS'siz başlığı seçmek için nms=False değerini ayarla. Tutarlı eşleştirme metriği, iki strateji arasındaki denetimi uyumlu hâle getirerek çı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 Başlığı: Derinlik bazında ayrılabilir evrişimler kullanarak sınıflandırma başlığının hesaplama yükünü azaltır.
- Uzamsal-Kanal Ayrıştırmalı Alt Örnekleme: Bilgi kaybını ve hesaplama maliyetini en aza indirmek için uzamsal küçültmeyi kanal modülasyonundan ayırır.
- Sıralama Rehberli Blok Tasarımı: Blok tasarımını aşamaların doğasında bulunan fazlalığa göre uyarlar ve parametrelerin en iyi şekilde kullanılmasını sağlar.
Doğruluk İyileştirmeleri#
- Büyük Çekirdekli Evrişim: Özellik çıkarma kapasitesini artırmak için alıcı alanı genişletir.
- Kısmi Öz Dikkat (PSA): Çok az ek yükle küresel temsil öğrenimini iyileştirmek için öz dikkat modülleri kullanır.
Deneyler ve Sonuçlar#
YOLOv10, COCO gibi standart kıyaslama veri kümelerinde kapsamlı biçimde test edilmiş ve üstün performans ile verimlilik sergilemiştir. Model, farklı varyantlarda son teknoloji sonuçlar elde ederek önceki sürümlere ve güncel diğer nesne algılayıcılara kıyasla gecikme ve doğrulukta önemli iyileşmeler 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 modellerinden 0.3 AP / 0.5 AP daha iyi performans gösterir
Aşağıdaki değerler, YOLOv10 makalesinde bildirildiği ve makalenin kendi protokolüyle ölçüldüğü şekildedir; bu nedenle Ultralytics model sayfalarındaki değerlerle doğrudan karşılaştırılamaz:
| Model | Parametreler (M) | FLOPs (G) | mAPval 50-95 | Gecikme (ms) | İleri geçiş gecikmesi (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 | 38.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.3 | 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.1 | 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.2 | 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ı bire çok algılama başlığını kaldıran model.fuse() işleminden sonraki birleştirilmiş modele aittir. Önceden eğitilmiş kontrol noktaları, eğitim mimarisinin tamamını korur ve daha yüksek değerler gösterebilir.
Kullanım Örnekleri#
Modeller ayrıca Ultralytics Platform üzerinden bulut GPU'larında eğitilebilir. YOLOv10 ile yeni görüntüler üzerinde tahmin yapmak için:
from ultralytics import YOLO
# Önceden eğitilmiş bir YOLOv10n modelini yükle
model = YOLO("yolov10n.pt")
# Bir görüntüde nesne algılama yap
results = model("image.jpg")
# Sonuçları görüntüle
results[0].show()YOLOv10'u özel bir veri kümesinde eğitmek için:
from ultralytics import YOLO
# YOLOv10n modelini sıfırdan yükle
model = YOLO("yolov10n.yaml")
# Modeli eğit
model.train(data="coco8.yaml", epochs=100, imgsz=640)Desteklenen Görevler ve Modlar#
YOLOv10 model serisi, yüksek performanslı Nesne Algılama için optimize edilmiş çeşitli modeller sunar. Bu modeller farklı hesaplama gereksinimlerine ve doğruluk beklentilerine hitap ederek çok çeşitli uygulamalarda kullanılabilir.
| Model | Dosya adları | Görevler | Eğitim | Doğrulama | Çıkarım | Dışa aktar |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10b.pt yolov10l.pt yolov10x.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv10'u Dışa Aktarma#
YOLOv10 ile sunulan yeni işlemler nedeniyle Ultralytics tarafından sağlanan dışa aktarma biçimlerinin tümü şu anda desteklenmiyor. Aşağıdaki tabloda, YOLOv10 için Ultralytics kullanılarak başarıyla dönüştürülen biçimler listelenmiştir. YOLOv10 için ek biçimlerin dışa aktarım desteği eklemeye yönelik bir katkı değişikliği sunabiliyorsan çekinmeden bir pull request aç.
| Dışa Aktarma Biçimi | Dışa Aktarma Desteği | Dışa Aktarılan Modelde Çıkarım | Notlar |
|---|---|---|---|
| TorchScript | ✅ | ✅ | Standart PyTorch model biçimi. |
| 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 aygıtlarıyla sınırlıdır. |
| TF SavedModel | ✅ | ✅ | TensorFlow için standart model biçimi. |
| TF GraphDef | ✅ | ✅ | Eski TensorFlow biçimi. |
| TF Edge TPU | ✅ | ✅ | Google'ın Edge TPU aygıtlarına özeldir. |
| LiteRT | ✅ | ✅ | Mobil, gömülü sistemler ve tarayıcı (LiteRT.js) için optimize edilmiştir. |
| 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 eksiklerini giderip yenilikçi tasarım stratejileri benimseyerek 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üsü oldu. Performansı iyileştirilmiş ve NMS'siz çıkarım sunan en yeni Ultralytics modeli için YOLO26'ya göz at.
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ına teşekkür ederiz:
@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}
}Uygulama ayrıntıları, mimari yenilikler ve deneysel sonuçlar için Tsinghua Üniversitesi ekibinin YOLOv10 araştırma makalesine ve GitHub deposuna başvur.
Sık Sorulan Sorular#
Tsinghua Üniversitesi araştırmacıları tarafından geliştirilen YOLOv10, gerçek zamanlı nesne algılamaya birçok önemli yenilik getiriyor. Eğitim sırasında tutarlı çiftli atamalar ve hesaplama yükünü azaltırken üstün performans sunan optimize edilmiş model bileşenleri kullanarak maksimum olmayan bastırma (NMS) ihtiyacını ortadan kaldırıyor. Mimari ve temel özellikleri hakkında daha fazla bilgi için YOLOv10 genel bakış bölümüne göz at.
Kolay çıkarım için Ultralytics YOLO Python kütüphanesini veya komut satırı arayüzünü (CLI) kullanabilirsin. Aşağıda, YOLOv10 ile yeni görüntüler üzerinde tahmin yapmaya yönelik örnekler yer alıyor:
Örnekfrom ultralytics import YOLO # Önceden eğitilmiş YOLOv10n modelini yükle 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 eden çeşitli model varyantları sunar:
- YOLOv10n: Kaynakları son derece kısıtlı ortamlar için uygundur
- YOLOv10s: Hız ile doğruluk arasında denge kurar
- YOLOv10m: Genel amaçlı kullanım
- YOLOv10b: Daha geniş yapısıyla daha yüksek doğruluk sunar
- YOLOv10l: Hesaplama kaynakları pahasına yüksek doğruluk sunar
- YOLOv10x: En yüksek doğruluk ve performans
Her varyant farklı hesaplama gereksinimleri ve doğruluk beklentileri için tasarlanmıştır; bu da onları çeşitli uygulamalarda kullanışlı kılar. Daha fazla bilgi için Model Varyantları bölümünü incele.
YOLOv10, her nesne için en iyi tek tahmini üretmesi amacıyla bire bir başlığını tutarlı ikili atamalarla eğitir; böylece çıkarım sırasında maksimum olmayan bastırmaya (NMS) gerek kalmaz. Ultralytics'te tahmin ve doğrulama işlemleri varsayılan olarak NMS kullanan bire çok başlığını kullanır; NMS'siz başlığı seçip NMS adımını atlamak için
nms=Falsedeğerini ayarla. Ayrıntılı açıklama için NMS'siz Eğitim için Tutarlı İkili Atamalar bölümüne bak.YOLOv10, TorchScript, ONNX, OpenVINO ve TensorRT dahil olmak üzere çeşitli dışa aktarma biçimlerini destekler. Ancak yeni işlemleri nedeniyle Ultralytics tarafından sunulan dışa aktarma biçimlerinin tümü şu anda YOLOv10 tarafından desteklenmiyor. Desteklenen biçimler ve dışa aktarma talimatları için YOLOv10'u Dışa Aktarma bölümünü ziyaret et.
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ğeriyle RT-DETR-R18'den 1.8 kat daha hızlıdır. YOLOv10b, aynı performansı sunarken YOLOv9-C'ye göre %46 daha düşük gecikme süresi ve %25 daha az parametre sağlar. Ayrıntılı kıyaslama sonuçlarını Karşılaştırmalar bölümünde bulabilirsin.