İçeriğe geç

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

YOLOv10, şu temeller üzerine inşa edilmiştir UltralyticsPython Tsinghua Üniversitesi'ndeki araştırmacılar tarafından geliştirilen paket, gerçek zamanlı nesne tespitine yeni bir yaklaşım getirerek önceki YOLO sürümlerinde bulunan hem işlem sonrası hem de model mimarisi eksikliklerini gideriyor. Maksimum olmayan bastırmayı (NMS) ortadan kaldırarak ve çeşitli model bileşenlerini optimize ederek, YOLOv10 önemli ölçüde azaltılmış hesaplama ek yükü ile en son teknolojiye sahip performansa ulaşır. Kapsamlı deneyler, çoklu model ölçeklerinde üstün doğruluk-gecikme ödünleşimlerini göstermektedir.

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



İzle: Ultralytics | Perakende Veri Kümesi kullanılarak SKU-110k Veri Kümesi üzerinde YOLOv10 Nasıl Eğitilir

Genel Bakış

Gerçek zamanlı nesne tespiti, görüntülerdeki nesne kategorilerini ve konumlarını düşük gecikme süresiyle doğru bir şekilde tahmin etmeyi amaçlamaktadır. YOLO serisi, performans ve verimlilik arasındaki dengesi nedeniyle bu araştırmanın ön saflarında yer almıştır. Ancak, NMS'ye olan bağımlılık ve mimari yetersizlikler optimum performansı engellemiştir. YOLOv10, NMS'siz eğitim için tutarlı ikili atamalar ve bütünsel bir verimlilik-doğruluk odaklı model tasarım stratejisi sunarak bu sorunları ele almaktadır.

Mimarlık

YOLOv10'un mimarisi, önceki YOLO modellerinin güçlü yönlerini temel alırken birkaç önemli yeniliği de beraberinde getirmektedir. Model mimarisi aşağıdaki bileşenlerden oluşmaktadır:

  1. Omurga: Özellik çıkarma işleminden sorumlu olan YOLOv10'daki omurga, gradyan akışını iyileştirmek ve hesaplama fazlalığını azaltmak için CSPNet'in (Cross Stage Partial Network) geliştirilmiş bir versiyonunu kullanır.
  2. Boyun: Boyun, farklı ölçeklerdeki özellikleri toplamak ve bunları başa iletmek için tasarlanmıştır. Etkili çok ölçekli özellik füzyonu için PAN (Path Aggregation Network) katmanları içerir.
  3. Birden Çok Kafaya: Zengin denetleyici sinyaller 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 Kafa: NMS ihtiyacını ortadan kaldırmak için çıkarım sırasında nesne başına tek bir en iyi tahmin üretir, böylece gecikmeyi azaltır ve verimliliği artırır.

Temel Özellikler

  1. NMS'siz Eğitim: NMS ihtiyacını ortadan kaldırmak için tutarlı ikili 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ıştırmalı aşağı örnekleme ve sıralama kılavuzlu blok tasarımı dahil olmak üzere çeşitli bileşenlerin hem verimlilik hem de doğruluk perspektiflerinden kapsamlı optimizasyonu.
  3. Geliştirilmiş Model Yetenekleri: Önemli bir hesaplama maliyeti olmadan performansı artırmak için büyük çekirdekli konvolüsyonlar 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:

  • YOLOv10-N: Son derece kısıtlı kaynaklara sahip ortamlar için nano versiyon.
  • YOLOv10-S: Hız ve doğruluğu dengeleyen küçük versiyon.
  • YOLOv10-M: Genel amaçlı kullanım için orta versiyon.
  • YOLOv10-B: Daha yüksek doğruluk için genişliği artırılmış dengeli versiyon.
  • YOLOv10-L: Artan hesaplama kaynakları pahasına daha yüksek doğruluk için büyük versiyon.
  • YOLOv10-X: 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östermektedir. Örneğin, YOLOv10-S, COCO veri setinde benzer AP ile RT-DETR-R18'den 1,8 kat daha hızlıdır ve YOLOv10-B, aynı performansla YOLOv9-C'den %46 daha az gecikmeye ve %25 daha az parametreye sahiptir.

Model Giriş Boyutu APval FLOP'lar (G) Gecikme Süresi (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

T4 GPU üzerinde TensorRT FP16 ile ölçülen gecikme süresi.

Metodoloji

NMS'siz Eğitim için Tutarlı İkili 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ştirerek 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 İyileştirmeleri

  1. Hafif Sınıflandırma Kafası: Derinlik bazlı ayrılabilir konvolüsyonlar kullanarak sınıflandırma kafasının hesaplama yükünü azaltır.
  2. Uzamsal-Kanal Ayrıştırmalı Aşağı örnekleme: Bilgi kaybını ve hesaplama maliyetini en aza indirmek için uzamsal azaltma ve kanal modülasyonunu ayırır.
  3. Sıralama Kılavuzlu Blok Tasarımı: Blok tasarımını içsel aşama fazlalığına göre uyarlayarak optimum parametre kullanımını sağlar.

Doğruluk Geliştirmeleri

  1. Büyük Çekirdekli Evrişim: Özellik çıkarma kapasitesini 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 ölçütler üzerinde kapsamlı bir şekilde test edilmiş ve üstün performans ve verimlilik göstermiştir. Model, farklı varyantlarda son teknoloji ürünü sonuçlar elde ederek önceki sürümlere ve diğer çağdaş dedektörlere kıyasla gecikme ve doğrulukta önemli gelişmeler sergilemektedir.

Karşılaştırmalar

YOLOv10 ile SOTA nesne dedektörlerinin karşılaştırılması

Diğer son teknoloji dedektörlerle karşılaştırıldığında:

  • YOLOv10-S / X, benzer doğrulukla RT-DETR-R18 / R101'den 1,8 × / 1,3 × daha hızlıdır
  • YOLOv10-B, aynı doğrulukta YOLOv9-C'ye göre %25 daha az parametre ve %46 daha düşük gecikme süresine sahiptir
  • YOLOv10-L / X, 1,8 × / 2,3 × daha az parametre ile YOLOv8-L / X'den 0,3 AP / 0,5 AP daha iyi performans gösterir

İşte YOLOv10 varyantlarının diğer son teknoloji modellerle ayrıntılı bir karşılaştırması:

Model Params
(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
Altın-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
Altın-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 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
Altın-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
Altın-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 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

YOLOv10'u özel bir veri kümesi üzerinde 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, farklı hesaplama ihtiyaçları ve doğruluk gereksinimlerini karşılayarak onları çok çeşitli uygulamalar için çok yönlü hale getirir.

Model Dosya adları Görevler Çıkarım Doğrulama Eğitim İhracat
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt Nesne Algılama

YOLOv10'u Dışa Aktarma

YOLOv10 ile getirilen 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 formatların başarıyla dönüştürüldüğünü özetlemektedir. YOLOv10 için ek formatların dışa aktarım desteğini eklemek için bir katkı değişikliği sağlayabiliyorsanız, bir çekme isteği açmaktan çekinmeyin.

Dışa Aktarma Formatı İhracat Desteği Dışa Aktarılan Model Çıkarsaması 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'in standart model formatına uygundur.
TF GraphDef Eski TensorFlow formatı.
TF Lite Mobil ve gömülü cihazlar için optimize edilmiştir.
TF Kenar TPU Google's Edge TPU cihazlarına özgüdür.
TF.js Tarayıcı kullanımı için JavaScript ortamı.
PaddlePaddle Çin'de popüler; küresel destek daha az.
NCNN Katman torch.topk mevcut veya kayıtlı değil

Sonuç

YOLOv10, önceki YOLO sürümlerinin eksikliklerini gidererek ve yenilikçi tasarım stratejilerini dahil ederek gerçek zamanlı nesne algılamada yeni bir standart belirliyor. Düşük hesaplama maliyeti ile yüksek doğruluk sunma yeteneği, onu çok çeşitli gerçek dünya uygulamaları için ideal bir seçim haline getirmektedir.

Atıflar ve Teşekkür

Tsinghua Üniversitesi 'nden YOLOv10 yazarlarına kapsamlı araştırmaları ve bu çalışmaya yaptıkları önemli katkılar için teşekkür ederiz. Ultralytics çerçeve:

@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 sürümlerinden farkı nedir?

Tsinghua Üniversitesi'ndeki araştırmacılar tarafından geliştirilen YOLOv10, gerçek zamanlı nesne tespitine birkaç önemli yenilik getirmektedir. Eğitim sırasında tutarlı ikili atamalar ve azaltılmış hesaplama ek yükü ile üstün performans için optimize edilmiş model bileşenleri kullanarak maksimum olmayan bastırma (NMS) ihtiyacını ortadan kaldırır. Mimarisi ve temel özellikleri hakkında daha fazla ayrıntı için YOLOv10'a genel bakış bölümüne göz atın.

YOLOv10 kullanarak çıkarım yapmaya 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 kullanılarak yeni görüntülerin tahmin edilmesine ilişkin örnekler yer almaktadır:

Örnek

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N 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:

  • YOLOv10-N: Kaynakların son derece kısıtlı olduğu ortamlar için uygundur
  • YOLOv10-S: Hız ve doğruluğu dengeler
  • YOLOv10-M: Genel amaçlı kullanım
  • YOLOv10-B: Artırılmış genişlik ile daha yüksek hassasiyet
  • YOLOv10-L: Hesaplama kaynakları pahasına yüksek doğruluk
  • YOLOv10-X: 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 ç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ıyor?

YOLOv10, eğitim için tutarlı ikili atamalar kullanarak çıkarım sırasında maksimum olmayan bastırma (NMS) 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 kafa içerir ve her nesnenin tek bir en iyi tahmin almasını sağlar. Ayrıntılı açıklama için NMS'siz Eğitim için Tutarlı İkili 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 biçimlerini destekler. Ancak, Ultralytics tarafından sağlanan tüm dışa aktarma biçimleri, yeni işlemleri nedeniyle şu anda YOLOv10 için desteklenmemektedir. Desteklenen biçimlerle ilgili ayrıntılar ve dışa aktarma talimatları 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östermektedir. Örneğin, YOLOv10-S, COCO veri setinde benzer bir AP ile RT-DETR-R18'den 1,8 kat daha hızlıdır. YOLOv10-B, aynı performansa sahip YOLOv9-C'ye göre %46 daha az gecikme ve %25 daha az parametre göstermektedir. Ayrıntılı kıyaslamalar Karşılaştırmalar bölümünde bulunabilir.

📅 6 ay önce oluşturuldu ✏️ 1 ay önce güncellendi

Yorumlar