Ultralytics YOLO26'da Uçtan Uca Algılamayı Anlama#
YOLO26 hem bir-çoğa kafası hem de bire-bir kafası eğitir. Tahmin ve doğrulama varsayılan olarak Non-Maximum Suppression (NMS) ile bir-çoğa kafasını kullanır. Bu, aynı eğitilmiş ağırlıkları kullanarak doğruluğu destekler. Bunun yerine daha hızlı ve NMS'siz bire-bir kafasını kullanmak için nms=False ayarla.
Tek bir argüman tahmin, doğrulama, izleme, dışa aktarma ve kıyaslama genelindeki seçimi kontrol eder:
nms | Tahmin ve doğrulama | Dışa aktarma |
|---|---|---|
None (varsayılan) | Bir-çoğa kafası; Ultralytics NMS çalıştırır | Ham bir-çoğa çıktıları; tüketici NMS çalıştırır |
True | None ile aynı | Desteklenen yerlerde NMS gömülü olan bir-çoğa kafası |
False | IoU bastırma olmayan bire-bir kafası | Desteklenen yerlerde NMS'siz bire-bir çıktıları |
None, modelin içine hiçbir isteğe bağlı son işlem gömülmediği anlamına gelir. Model çıktılarını tahmin sonuçlarına veya doğrulama metriklerine dönüştüren normal işlemi kaldırmaz. Sınıflandırma, anlamsal segmentasyon, derinlik ve seçilebilir algılama kafaları olmayan modeller, kendi görevlerinin yerel davranışını korur.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.predict("image.jpg") # one-to-many + NMS
metrics = model.val(data="coco.yaml") # one-to-many + NMS
results = model.predict("image.jpg", nms=False) # opt into NMS-free inference
results = model.predict("image.jpg", nms=None) # switch back to one-to-many + NMS
model.export(format="onnx") # raw one-to-many outputs
model.export(format="onnx", nms=True) # embed NMS
model.export(format="onnx", nms=False) # NMS-free one-to-one outputsUçtan Uca Algılama Nasıl Çalışır?#
Her iki kafa da omurgayı ve boynu paylaşır ve eğitim sırasında optimize edilir. Bir-çoğa kafası nesne başına birden çok aday tahmin sağlar; NMS örtüşen tespitleri kaldırır. Bire-bir kafası, nesne başına tek bir tahmin üretmeyi öğrenir. Çıkarım yolunu seçmek, ikili kafa gözetimini devre dışı bırakmaz. Eğitim sırasındaki doğrulama seçilen çıkarım kafasını kullanır, bu nedenle kontrol noktası seçimi ve erken durdurma, dağıtımla aynı tahminleri izler.
| Başlık | Harici işlemden önceki algılama çıktısı | İşleme |
|---|---|---|
| Bir-çoğa (varsayılan) | (N, nc + 4, 8400) | Güven filtreleme ve NMS |
| Bire-bir | (N, 300, 6) | Güven filtreleme; IoU bastırma yok |
Burada N yığın boyutu, nc sınıf sayısıdır ve 8400, imgsz=640 adresindeki aday sayısıdır. Bire-bir algılama satırları [x1, y1, x2, y2, confidence, class_id] içerir. Diğer algılama görevleri ek çıktıları taşır:
| Görev | Uçtan uca çıktı | Ek veri |
|---|---|---|
| Algılama | (N, 300, 6) | — |
| Örnek segmentasyonu | (N, 300, 6 + nm) ve (N, nm, H, W) | Maske katsayıları ve prototipler |
| Poz | (N, 300, 57) | 17 eklem noktası × 3 değer |
| OBB | (N, 300, 7) | Döndürme açısı |
Birleştirme, kullanılmayan çıkarım dallarını kaldırır ve Conv ile BatchNorm katmanlarını katlar. Kafaları değiştirmen gerekirse orijinal eğitim kontrol noktasını sakla: birleştirme, zaten kaldırılmış bir dalı yeniden oluşturamaz. Yalnızca bire-bir kafası kalan bir model, o kullanılabilir yolu korur.
Dışa Aktarılan Çıktılar#
YOLOv8, YOLO11 ve YOLO26 algılama modelleri varsayılan olarak ham bir-çoğa tahminlerini dışa aktarır. NMS'siz tespitler için YOLO26'yı nms=False ile dışa aktar.
nms=None | nms=False | |
|---|---|---|
| Algılama çıktısı | (N, nc + 4, 8400) | (N, 300, 6) |
| Kutu biçimi | xywh | xyxy |
| Skorlar | Aday başına sınıf başına bir skor | Algılama başına güven ve sınıf kimliği |
| Harici işleme | Güven filtreleme ve NMS | Güven filtreleme |
nms=True ayrıca işlenmiş tespitler üretir, ancak bir-çoğa kafasını kullanır ve geleneksel NMS'yi gömer. Dağıtım çalışma zamanının, bastırmanın kendisini uygulamadan tespitler alması gerektiğinde yararlıdır.
Dışa aktarılan bir modelin grafiği çıktılarını belirler. Yüklerken nms geçmek grafiği yeniden oluşturmaz; çıktı yolunu seçmek için kaynak kontrol noktasını istenen nms değeriyle dışa aktar. Ultralytics, NMS'yi iki kez uygulamaktan kaçınmak için yapının meta verilerini kullanır.
Dışa Aktarma Biçimi Uyumluluğu#
ONNX, TensorRT, CoreML, OpenVINO ve diğer çeşitli formatlar NMS'siz dışa aktarımları destekler. NCNN, RKNN, PaddlePaddle, ExecuTorch, IMX, Edge TPU ve Qualcomm QNN, operatörleri uçtan uca çıktıyı destekleyemediğinde bir-çoğa yoluna geri döner. Biçim uyarıları geri dönüşü açıklar.
- Gömülü NMS:
nms=True, her formatın görev, hassasiyet ve dinamik şekil kısıtlamalarına tabidir. Gömülü NMS desteği olmayan formatlar, harici işleme için yerel çıktıları dışa aktarır. - CoreML: Gömülü NMS, statik şekillerle algılama, segmentasyon ve pozlamayı destekler. Xcode Preview'un NMS boru hattına ihtiyaç duyan algılama modelleri için
nms=Truekullan. - MNN: Gömülü NMS,
dynamic=Falseile algılama ve pozlamayı destekler. - IMX: Algılama, örnek segmentasyonu ve pozlama, otomatik olarak seçilen gömülü NMS gerektirir.
- Hailo: YOLO26 varsayılan olarak ana bilgisayar NMS'li ham tensörler kullanır;
nms=Falsebire-bir yolunu seçer. YOLOv8/YOLO11 algılama, HailoRT NMS kullanır. - Kuantizasyon: 8.5.0 öncesi TensorRT sürümleri, JetPack 6 üzerinde TensorRT 10.3.0 INT8 ve LiteRT INT8 veya
w8a16, bir-çoğa çıktılarına geri döner.
Donanım gereksinimleri için bireysel entegrasyon kılavuzlarına bakın. Tam FP16 çıktı tensörleri için nms=None kullan; uçtan uca sınıf indeksleri, model kuantize edilmiş olsa bile çıktı tensörlerini FP32'de tutabilir.
Doğruluk ve Hız Dengeleri#
Yayınlanan YOLO26 COCO sonuçları, bir-çoğa kafasının beş ölçekte algılama mAP'sini 0,6–0,8 puan artırdığını gösterir: örneğin YOLO26n için 40,9'a karşı 40,1 ve YOLO26x için 57,5'e karşı 56,9. Bire-bir kafası NMS geçişinden kaçınır ve gecikmeyi destekler. Bu sonuçlar varsayılanı motive eder; her veri kümesinde bir kazanç garanti etmezler.
Yayınlanan NMS'siz hız ölçümleri nms=False kullanır. Aynı kafa seçimi, görüntü boyutu, hassasiyet ve donanımı kullanarak doğruluk ve gecikmeyi karşılaştır.
SSS#
Tahmin ve doğrulama tarafından döndürülen algılama sayısını sınırlar. Uçtan uca ve gömülü NMS dışarı aktarımları için sınır grafiğin bir parçasıdır, bu nedenle sınırı değiştirmek için yeniden dışarı aktar; CoreML algılama gömülü NMS bir istisnadır ve algılama sınırı yoktur. Görüntü
max_detçapasından daha az çapa sağladığında uçtan uca çıktı daha az aday içerebilir.Evet, varsayılan algılama sınırı ile
nms=Falseveyanms=Trueiçin. Yalnızca şekil, hangi kafanın dışa aktarıldığını tanımlamaz. Varsayılan bir ham COCO algılama dışa aktarımı bunun yerine normaldeimgsz=640konumunda(1, 84, 8400)şekline sahiptir.Evet. Aynı
nmsargümanı, algılama, örnek segmentasyonu, poz ve OBB için kullanılabilir algılama kafasını seçer. Maske yeniden oluşturmanın, eklem noktası kod çözmenin, döndürülmüş kutu işlemenin, sınıflandırma olasılıklarının, anlamsal sınıf haritalarının veya derinlik kod çözmenin yerini almaz.