Ultralytics YOLO26'da Uçtan Uca Algılamayı Anlama#
YOLO26, hem bire-çok başlık hem de bire-bir başlık eğitir. Tahmin ve doğrulama, varsayılan olarak Maksimum Olmayan Bastırma (NMS) kullanan bire-çok başlığı kullanır. Bu, aynı eğitilmiş ağırlıkları kullanarak doğruluğa öncelik verir. Bunun yerine daha hızlı, NMS gerektirmeyen bire-bir başlığı kullanmak için nms=False değerini ayarla.
Tahmin, doğrulama, izleme, dışa aktarım ve karşılaştırma genelinde seçimi tek bir argüman belirler:
nms | Tahmin ve doğrulama | Dışa aktar |
|---|---|---|
None (varsayılan) | Bire-çok başlık; Ultralytics NMS çalıştırır | Ham bire-çok çıktıları; NMS'yi kullanan taraf çalıştırır |
True | None ile aynı | Desteklendiği yerlerde NMS'in içine gömülü olduğu bire-çok başlık |
False | IoU bastırması olmayan bire-bir başlık | Desteklendiği yerlerde NMS gerektirmeyen bire-bir çıktılar |
None, modele isteğe bağlı son işleme eklenmediği anlamına gelir. Bu, model çıktılarını tahmin sonuçlarına veya doğrulama metriklerine dönüştüren normal işlemleri kaldırmaz. Sınıflandırma, anlamsal segmentasyon, derinlik ve seçilebilir algılama başlıkları olmayan modeller, görevlerine özgü davranışlarını korur.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.predict("image.jpg") # bire-çok + NMS
metrics = model.val(data="coco.yaml") # bire-çok + NMS
results = model.predict("image.jpg", nms=False) # NMS gerektirmeyen çıkarımı etkinleştir
results = model.predict("image.jpg", nms=None) # bire-çok + NMS'ye geri dön
model.export(format="onnx") # ham bire-çok çıktıları
model.export(format="onnx", nms=True) # NMS'i modele ekle
model.export(format="onnx", nms=False) # NMS gerektirmeyen bire-bir çıktılarUçtan Uca Algılama Nasıl Çalışır#
Her iki başlık da omurga ve boyun katmanlarını paylaşır ve eğitim sırasında optimize edilir. Bire-çok başlık, her nesne için birden fazla aday tahmin üretir; NMS, örtüşen algılamaları kaldırır. Bire-bir başlık, her nesne için tek bir tahmin üretmeyi öğrenir. Çıkarım yolunu seçmek, çift başlıklı denetimi devre dışı bırakmaz. Eğitim sırasındaki doğrulama, seçilen çıkarım başlığını kullanır; bu nedenle kontrol noktası seçimi ve erken durdurma, dağıtımda kullanılan tahminleri izler.
| Başlık | Harici işlemeden önceki algılama çıktısı | İşleme |
|---|---|---|
| Bire-çok (varsayılan) | (N, nc + 4, 8400) | Güven eşiğine göre filtreleme ve NMS |
| Bire-bir | (N, 300, 6) | Güven eşiğine göre filtreleme; IoU bastırması yok |
Burada N toplu iş boyutunu, nc sınıf sayısını, 8400 ise imgsz=640 için aday sayısını belirtir. Bire-bir algılama satırları [x1, y1, x2, y2, confidence, class_id] içerir. Diğer algılama görevlerinde ek çıktılar bulunur:
| 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 anahtar nokta × 3 değer |
| OBB | (N, 300, 7) | Dönüş açısı |
Birleştirme, kullanılmayan çıkarım dallarını kaldırmanın yanı sıra Conv ve BatchNorm katmanlarını da birleştirir. Başlıkları değiştirmek istiyorsan orijinal eğitim kontrol noktasını sakla: kaldırılmış bir dal birleştirme sonrasında yeniden oluşturulamaz. Yalnızca bire bir başlığı kalan modelde bu kullanılabilir yol korunur.
Dışa Aktarılan Çıktılar#
YOLOv8, YOLO11 ve YOLO26 algılama modelleri varsayılan olarak ham bire çok tahminler dışa aktarır. NMS içermeyen algılamalar 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 | Her aday ve sınıf için bir skor | Her algılama için güven skoru ve sınıf kimliği |
| Harici işleme | Güven eşiğine göre filtreleme ve NMS | Güven eşiğine göre filtreleme |
nms=True işlenmiş algılamalar da üretir, ancak bire çok başlığını kullanır ve geleneksel NMS'yi içerir. Dağıtım çalışma zamanının bastırma işlemini kendisi uygulamadan algılamaları alması gerekiyorsa bu seçenek kullanışlıdır.
Dışa aktarılan bir modelin grafiği, çıktıları belirler. Model yüklenirken nms değerinin iletilmesi grafiği yeniden oluşturmaz; çıktı yolunu seçmek için kaynak kontrol noktasını istenen nms değeriyle dışa aktar. Ultralytics, NMS'nin iki kez uygulanmasını önlemek için yapıtın meta verilerini kullanır.
Dışa Aktarma Biçimi Uyumluluğu#
ONNX, TensorRT, CoreML, OpenVINO ve başka birçok biçim NMS içermeyen dışa aktarımları destekler. NCNN, RKNN, PaddlePaddle, ExecuTorch, IMX, Edge TPU ve Qualcomm QNN, operatörleri uçtan uca çıktıyı destekleyemediğinde bire çok yoluna geri döner. Biçim uyarıları bu geri dönüşü açıklar.
- Dâhilî NMS:
nms=True, her biçimin görev, hassasiyet ve dinamik şekil kısıtlamalarına tabidir. Dâhilî NMS desteği olmayan biçimler, harici işleme için yerel çıktıları dışa aktarır. - CoreML: Dâhilî NMS, sabit şekillerle algılama, segmentasyon ve poz görevlerini destekler. Xcode Preview'ın NMS hattını gerektiren algılama modelleri için
nms=Truekullan. - MNN: Dâhilî NMS,
dynamic=Falseile algılama ve poz görevlerini destekler. - IMX: Algılama, örnek segmentasyonu ve poz görevleri için dâhilî NMS gerekir ve bu seçenek otomatik olarak belirlenir.
- Hailo: YOLO26 varsayılan olarak ana makine tarafında NMS uygulanan ham tensörleri kullanır;
nms=Falsebire bir yolunu seçer. YOLOv8/YOLO11 algılama, HailoRT NMS kullanır. - Niceleme: 8.5.0 öncesi TensorRT sürümleri, JetPack 6'da TensorRT 10.3.0 INT8 ve LiteRT INT8 ya da
w8a16, bire çok çıktılara geri döner.
Donanım gereksinimleri için entegrasyon kılavuzlarına göz at. Tam FP16 çıktı tensörleri için nms=None kullan; model niceleme uygulanmış olsa bile uçtan uca sınıf indeksleri çıktı tensörlerini FP32 biçiminde tutabilir.
Doğruluk ve Hız Arasındaki Ödünleşimler#
Yayımlanmış YOLO26 COCO sonuçları, bire çok başlığının beş ölçeğin tamamında algılama mAP değerini 0,6–0,8 puan artırdığını gösteriyor: örneğin YOLO26n için 40,9'a karşı 40,1 ve YOLO26x için 57,5'e karşı 56,9. Bire bir başlığı NMS aşamasını ortadan kaldırır ve gecikme süresini düşürmeye öncelik verir. Bu sonuçlar varsayılan seçeneğin temelini oluşturur; her veri kümesinde artış olacağını garanti etmez.
Yayımlanmış NMS'siz hız ölçümlerinde nms=False kullanılır. Doğruluk ve gecikme süresini aynı başlık seçimi, görüntü boyutu, hassasiyet ve donanımla karşılaştır.
Sık Sorulan Sorular#
Tahmin ve doğrulama işlemlerinin döndürdüğü algılama sayısını sınırlar. Uçtan uca ve dâhilî NMS içeren dışa aktarımlarda sınır grafiğin bir parçasıdır; değiştirmek için modeli yeniden dışa aktar. CoreML algılama için dâhilî NMS bir istisnadır ve algılama sınırı yoktur. Görüntüde
max_detdeğerinden az çapa varsa uçtan uca çıktı daha az aday içerebilir.Evet, varsayılan algılama sınırıyla
nms=Falseveyanms=Trueiçin. Yalnızca şekle bakarak hangi başlığın dışa aktarıldığı anlaşılamaz. Varsayılan ham COCO algılama dışa aktarımının şekli normaldeimgsz=640boyutunda(1, 84, 8400)olur.Evet. Aynı
nmsbağımsız değişkeni; algılama, örnek segmentasyonu, poz ve OBB görevlerinde kullanılabilir algılama başlığını seçer. Maske yeniden oluşturma, anahtar nokta çözümleme, döndürülmüş kutu işleme, sınıflandırma olasılıkları, anlamsal sınıf haritaları veya derinlik çözümleme işlemlerinin yerini almaz.