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

YOLOv10, released in May 2024 and built on the Ultralytics Python package by researchers at Tsinghua University, introduces a new approach to real-time object detection, addressing both the post-processing and model architecture deficiencies found in previous YOLO versions. By eliminating non-maximum suppression (NMS) and optimizing various model components, YOLOv10 achieved excellent performance with significantly reduced computational overhead at its time of release. Its NMS-free end-to-end design pioneered an approach that has been further developed in YOLO26.

NMS gerektirmeyen eğitim için YOLOv10 tutarlı ikili atama



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 gecikme süresiyle doğru bir şekilde tahmin etmeyi amaçlar. YOLO serisi, performans ve verimlilik dengesi nedeniyle bu araştırmaların ön saflarında yer almıştır. Ancak, NMS'ye olan bağımlılık ve mimari verimsizlikler optimal performansı engellemiştir. YOLOv10, NMS gerektirmeyen eğitim için tutarlı ikili atamalar ve bütünsel bir verimlilik-doğruluk odaklı model tasarım stratejisi sunarak bu sorunları ele alır.

Mimari

YOLOv10'un mimarisi, önceki YOLO modellerinin güçlü yönleri üzerine inşa edilirken birkaç önemli yeniliği de beraberinde getiriyor. Model mimarisi şu bileşenlerden oluşur:

  1. Backbone: Özellik çıkarımı işleminden sorumlu olan YOLOv10 backbone, gradyan akışını iyileştirmek ve hesaplama gereksizliğini azaltmak için CSPNet'in (Cross Stage Partial Network) geliştirilmiş bir sürümünü kullanır.
  2. Neck: Neck, farklı ölçeklerdeki özellikleri birleştirmek ve bunları head kısmına iletmek üzere tasarlanmıştır. Etkili çok ölçekli özellik füzyonu için PAN (Path Aggregation Network) katmanlarını içerir.
  3. One-to-Many Head: Eğitim sırasında nesne başına birden fazla tahmin üreterek zengin denetim sinyalleri sağlar ve öğrenme doğruluğunu artırır.
  4. One-to-One Head: Çıkarım sırasında nesne başına tek bir en iyi tahmin üreterek NMS ihtiyacını ortadan kaldırır, böylece gecikmeyi azaltır ve verimliliği artırır.

Temel Özellikler

  1. NMS-Free Training: NMS ihtiyacını ortadan kaldırmak için tutarlı ikili atamalar kullanır ve çıkarım gecikmesini azaltır.
  2. Holistic Model Design: Hafif sınıflandırma başlıkları, uzamsal-kanal ayrıklaştırılmış örnekleme ve sıralama kılavuzlu blok tasarımı dahil olmak üzere, hem verimlilik hem de doğruluk perspektifinden çeşitli bileşenlerin kapsamlı optimizasyonu.
  3. Enhanced Model Capabilities: Önemli bir hesaplama maliyeti olmaksızın performansı artırmak için büyük çekirdekli evrişimleri ve kısmi öz-dikkat modüllerini birleştirir.

Model Varyantları

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

  • YOLOv10n: Son derece kaynak kısıtlı ortamlar için Nano sürüm.
  • YOLOv10s: Hız ve doğruluğu dengeleyen küçük sürüm.
  • YOLOv10m: Genel amaçlı kullanım için orta 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ı pahasına daha yüksek doğruluk için büyük sürüm.
  • YOLOv10x: Maksimum 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 en gelişmiş modellerden daha iyi performans gösterir. Örneğin, YOLOv10s, COCO veri setinde benzer AP ile RT-DETR-R18 modelinden 1.8 kat daha hızlıdır ve YOLOv10b, aynı performansa sahip YOLOv9-C ile karşılaştırıldığında %46 daha düşük gecikmeye ve %25 daha az parametreye sahiptir.

Performans

Gecikme, T4 GPU üzerinde TensorRT FP16 ile ölçülmüştür.

ModelGiriş BoyutuAPvalFLOPs (G)Gecikme (ms)
[YOLOv10n][1]64038.56.71.84
[YOLOv10s][2]64046.321.62.49
[YOLOv10m][3]64051.159.14.74
[YOLOv10b][4]64052.592.05.74
[YOLOv10l][5]64053.2120.37.28
[YOLOv10x][6]64054.4160.410.70

Metodoloji

NMS Gerektirmeyen Eğitim için Tutarlı İkili Atamalar

YOLOv10, zengin denetim ve verimli uçtan uca dağıtım sağlamak amacıyla eğitim sırasında bire-çok ve bire-bir stratejilerini birleştiren ikili etiket atamaları kullanır. 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ünsel Verimlilik-Doğruluk Odaklı Model Tasarımı

Verimlilik Geliştirmeleri

  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ıklaştırılmış Örnekleme: Bilgi kaybını ve hesaplama maliyetini en aza indirmek için uzamsal indirgemeyi ve kanal modülasyonunu ayırır.
  3. Sıralama Kılavuzlu Blok Tasarımı: Optimal parametre kullanımını sağlamak için blok tasarımını içsel aşama fazlalığına göre uyarlar.

Doğruluk Geliştirmeleri

  1. Büyük Çekirdekli Evrişim: Özellik çıkarım yeteneğini artırmak için alıcı alanı genişletir.
  2. Kısmi Öz-Dikkat (PSA): Minimum ek yük ile küresel temsil öğrenimini iyileştirmek için öz-dikkat modüllerini içerir.

Deneyler ve Sonuçlar

YOLOv10, COCO gibi standart karşılaştırmalı değerlendirmelerde kapsamlı bir şekilde test edilmiş ve üstün performans ve verimlilik göstermiştir. Model, farklı varyantlarda en güncel sonuçları elde ederek önceki sürümlere ve diğer çağdaş dedektörlere kıyasla gecikme ve doğrulukta önemli iyileştirmeler sergilemiştir.

Karşılaştırmalar

YOLOv10'un SOTA nesne dedektörleri ile karşılaştırması

Diğer en gelişmiş dedektörlerle karşılaştırıldığında:

  • YOLOv10s / x, benzer doğruluk ile RT-DETR-R18 / R101'den 1.8 kat / 1.3 kat daha hızlıdır
  • YOLOv10b, aynı doğruluk seviyesinde YOLOv9-C'den %25 daha az parametreye ve %46 daha düşük gecikmeye sahiptir
  • YOLOv10l / x, 1.8 kat / 2.3 kat daha az parametre ile YOLOv8l / x modelinden 0.3 AP / 0.5 AP daha iyi performans gösterir
Performans

İşte YOLOv10 varyantlarının diğer en gelişmiş modellerle ayrıntılı karşılaştırması:

ModelParametre
(M)
FLOPs
(G)
mAPval
50-95
Gecikme
(ms)
İleri-Gecikme
(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

Params ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren ve yardımcı bire-çok tespit başlığını kaldıran model.fuse() sonrası birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları 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:

Örnek
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()

Özel bir veri kümesinde YOLOv10 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)

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ını ve doğruluk gereksinimlerini karşılayarak onları çok çeşitli uygulamalar için çok yönlü kılar.

ModelDosya AdlarıGörevlerÇıkarımDoğrulamaEğitimDışa Aktar (Export)
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.ptNesne Tespiti

YOLOv10 Dışa Aktarma

YOLOv10 ile gelen yeni işlemler nedeniyle, Ultralytics tarafından sağlanan tüm dışa aktarma formatları şu anda desteklenmemektedir. Aşağıdaki tablo, YOLOv10 için Ultralytics kullanılarak hangi formatların başarıyla dönüştürüldüğünü göstermektedir. YOLOv10 için ek formatların dışa aktarma desteğini eklemek adına bir katkı değişikliği yapabilirsen bir pull request açmaktan çekinme.

Dışa Aktarma FormatıDışa Aktarma DesteğiDışa Aktarılan Model ÇıkarımıNotlar
TorchScriptStandart PyTorch model formatı.
ONNXDağıtım için geniş çapta desteklenir.
OpenVINOIntel donanımı için optimize edilmiştir.
TensorRTNVIDIA GPU'ları için optimize edilmiştir.
CoreMLApple cihazları ile 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ülerdir; küresel desteği daha azdır.
NCNNtorch.topk katmanı mevcut değil veya kayıtlı değil

Sonuç

YOLOv10, önceki YOLO sürümlerinin eksikliklerini gidererek ve yenilikçi tasarım stratejilerini birleştirerek piyasaya sürüldüğünde gerçek zamanlı nesne algılamada yeni bir standart belirledi. NMS içermeyen yaklaşımı, YOLO ailesinde uçtan uca nesne algılamanın öncüsü oldu. İyileştirilmiş performans ve NMS içermeyen çıkarım ile en güncel Ultralytics modeli için YOLO26 bölümüne bak.

Alıntılar ve Teşekkür

We would like to acknowledge the YOLOv10 authors from Tsinghua University for their extensive research and significant contributions to the Ultralytics framework:

Alıntı
@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}
}

Detaylı uygulama, mimari yenilikler ve deneysel sonuçlar için lütfen Tsinghua Üniversitesi ekibinin YOLOv10 araştırma makalesine ve GitHub deposuna bak.

SSS

YOLOv10 nedir ve önceki YOLO sürümlerinden farkı nedir?

Tsinghua Üniversitesi'ndeki araştırmacılar tarafından geliştirilen YOLOv10, gerçek zamanlı nesne algılamaya birçok temel yenilik getirmektedir. Eğitim sırasında tutarlı ikili atamalar ve daha düşük hesaplama yüküyle üstün performans için optimize edilmiş model bileşenleri kullanarak, baskılamasız (NMS) ihtiyacını ortadan kaldırır. Mimarisi ve temel özellikleri hakkında daha fazla ayrıntı için YOLOv10 genel bakış bölümüne göz at.

YOLOv10 ile çı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) kullanabilirsin. Aşağıda YOLOv10 kullanarak yeni görüntüleri tahmin etme örnekleri bulunmaktadır:

Örnek
from 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ümüzü ziyaret et.

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

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

  • YOLOv10n: Son derece kaynak kısıtlı ortamlar için uygundur
  • YOLOv10s: Hız ve doğruluk arasında denge kurar
  • 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 bir varyant farklı hesaplama ihtiyaçları ve doğruluk gereksinimleri için tasarlanmıştır, bu da onları çeşitli uygulamalar için çok yönlü kılar. Daha fazla bilgi için Model Variants bölümünü keşfet.

YOLOv10 içindeki NMS-free yaklaşımı performansı nasıl artırıyor?

YOLOv10, eğitim için tutarlı ikili atamalar kullanarak çıkarım sırasında NMS (non-maximum suppression) ihtiyacını ortadan kaldırır. Bu yaklaşım, çıkarım gecikmesini azaltır ve tahmin verimliliğini artırır. Mimari ayrıca çıkarım için bire bir başlık (one-to-one head) içerir ve her nesnenin tek bir en iyi tahmine sahip olmasını sağlar. Detaylı açıklama için Consistent Dual Assignments for NMS-Free Training bölümüne bak.

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

YOLOv10, TorchScript, ONNX, OpenVINO ve TensorRT dahil olmak üzere birçok dışa aktarma formatını destekler. Ancak, yeni işlemleri nedeniyle Ultralytics tarafından sağlanan tüm dışa aktarma formatları şu an için YOLOv10 ile desteklenmemektedir. Desteklenen formatlar ve dışa aktarma talimatları hakkındaki detaylar için Exporting YOLOv10 bölümünü ziyaret et.

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 setinde benzer bir AP ile RT-DETR-R18'den 1.8 kat daha hızlıdır. YOLOv10b, aynı performansla YOLOv9-C'ye göre %46 daha az gecikme ve %25 daha az parametre gösterir. Detaylı kıyaslamalar Comparisons bölümünde bulunabilir.

Yorumlar