YOLO Vision 2026:

YOLOE: Gerçek Zamanlı Açık Sözlük Tabanlı Tespit ve Bölütleme#

Ultralytics YOLOE (Real-Time Seeing Anything), açık sözlük tabanlı (open-vocabulary) bir tespit ve örnek bölütleme modelidir: eğitim aşamasında sabitlenen bir sınıf listesi kullanmak yerine, çıkarım aşamasında istediğin kategorileri bir metin istemi, görsel bir örnek veya yerleşik 4.585 isimli bir sözlük aracılığıyla alır. Ultralytics YOLO mimarileri — YOLOv8, YOLO11 ve YOLO26 — üzerine kurulan ve YOLO-World modelinden ilham alan YOLOE, kapalı küme YOLO hızına yakın bir seviyede son teknoloji sıfır atış (zero-shot) doğruluğuna ulaşır.



Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀

Hızlı Başlangıç#

İstediğin sınıfları adlandır ve çalıştır. YOLOE-26, daha önce hiç eğitilmediği kategoriler için kutular ve örnek bölütleme maskeleri döndürür.

Adlandırabildiğin her şeyi tespit et
from ultralytics import YOLOE

model = YOLOE("yoloe-26s-seg.pt")

# "double-decker bus" is not a COCO class; YOLOE resolves it from the words alone
model.set_classes(["double-decker bus", "person"])

results = model.predict("https://ultralytics.com/images/bus.jpg")
results[0].show()

İlk set_classes() çağrısı bir metin kodlayıcı indirir; ağ erişimi olmayan bir makineye dağıtım yapmadan önce Kurulum ve Gereksinimler bölümüne göz at.

İstem Modu Seçimi#

YOLOE üç istem modunu destekler ve yapacağın seçim, hangi kontrol noktasını (checkpoint) yükleyeceğini ve sınıf etiketlerinin nasıl görüneceğini belirler. Çıkarım aşamasında sağlayabileceğin girdiye uyan satırı seç.

YOLOE metin istemlerinden, görsel istemlerden ve istem gerektirmeyen sözlüğünden nesneleri tespit edip bölütlüyor

ModKontrol NoktasıSağladığın girdiSonuçlardaki sınıf adlarıŞu durumlarda kullan
Metin istemi*-seg.ptDize olarak sınıf adlarıTam olarak ilettiğin adlarHedefi kelimelerle tanımlayabildiğin durumlar — en yaygın seçim
Görsel istem*-seg.ptReferans bir görüntü üzerinde örnek kutularGenel object0, object1, …Hedefi kelimelerle ifade edemediğin durumlar: belirli bir parça, logo veya kusur
İstem gerektirmeyen*-seg-pf.ptHiçbir şeyYerleşik 4.585 isimli sözlükten gelen adlarKataloglama veya keşif yapıyorsan ve önceden ne arayacağını bilmiyorsan
İki Yaygın Sürpriz
  • Görsel istemler kendi etiketlerini taşımaz. visual_prompts içindeki sınıf kimlikleri (ID) örnekleri bir arada gruplar; model bunları object0, object1 vb. olarak bildirir. Bunları kendi adlarınla kendin eşleştirmelisin.
  • İstem gerektirmeyen kontrol noktaları set_classes() girdisini reddeder. Bunu bir *-seg-pf.pt modeli üzerinde çağrıştırmak AssertionError: Prompt-free model does not support setting classes. Please try with Text/Visual prompt models. hatasına yol açar. Kendi sınıflarına ihtiyaç duyduğunda bunun yerine bir *-seg.pt kontrol noktası yükle.

Kurulum ve Gereksinimler#

YOLOE, ana Ultralytics paketinin içinde gelir:

pip install -U ultralytics

Metin tabanlı istem oluşturma işlemi, bunun üzerinde bir metin kodlayıcı gerektirir ve bu kodlayıcı kurulum zamanında değil, ilk kullanımda getirilir:

  • İlk set_classes() çağrısı, pip ile birlikte GitHub üzerinden ultralytics/CLIP paketini kurar (bu paket belirteçleyiciyi [tokenizer] sağlar) ve çalışma dizinine bir TorchScript metin kodlayıcı indirir. YOLOE-26 yaklaşık 254 MB boyatındaki mobileclip2_b.ts dosyasını çeker; YOLOE-11 ve YOLOE-v8 ise mobileclip_blt.ts dosyasını çeker. İndirme işlemini komutları çalıştıracağın dizinden bir kez çalıştır veya dosyayı oraya kopyala, aksi takdirde dosya yeniden indirilir.
  • Her iki adım da ağ erişimi gerektirir; bu nedenle çevrimdışı veya dış ağdan yalıtılmış (air-gapped) bir makineye dağıtım yapmadan önce istemli bir tahmini bir kez çalıştır.
  • Görsel istemler ve istem gerektirmeyen kontrol noktaları hiçbir metin kodlayıcıya ihtiyaç duymaz.

YOLOE-26 kontrol noktaları ultralytics 8.4.0 veya daha yeni bir sürümünü gerektirir; YOLOE-11 ve YOLOE-v8 aileleri önceki sürümlerde mevcuttur. Metin istemli tek bir tahmin, tüm süreci test eder — kontrol noktası indirme, CLIP kurulumu, metin kodlayıcı, çıkarım:

yolo predict model=yoloe-26s-seg.pt source="https://ultralytics.com/images/bus.jpg" classes="person"

Çıkarım aşamasında metin kodlayıcı indirme adımını tamamen atlamak için, istemleri ağırlıkların içine bir kez göm ve yeniden kullan — İstem gömmelerini yeniden kullanma bölümüne bakın.

Mimariye Genel Bakış#

YOLOE Architecture

YOLOE, standart YOLO yapısını — özellik çıkarımı için evrişimli (convolutional) bir arka kemik (backbone), çok ölçekli birleştirme için bir boyun (neck) ve sınıflarla kutuları tahmin eden çapası olmayan, ayrıştırılmış bir başlık (anchor-free, decoupled head) — korur ve her istem modu için birer tane olmak üzere üç modül ekler:

  • Yeniden Parametrelendirilebilir Bölge-Metin Hizalama (RepRTA), CLIP'ten gelen metin gömmelerini küçük bir yardımcı ağ aracılığıyla iyileştirir. Bu ağ, her set_classes() çağrısı için bir kez çalışır ve dışa aktarım sırasında ortadan kaldırılır, bu nedenle kare başına hiçbir maliyeti yoktur. Her ileri geçişte (forward pass) çalışan şey, depolanan istem gömmelerinin bölge özellikleriyle karşılaştırılmasıdır; büyük bir istem kümesiyle bunun maliyetinin ne olduğu hakkında bilgi için Sınırlamalar bölümüne bak.
  • Anlamsal Etkinleştirmeli Görsel İstem Kodlayıcı (SAVPE), örnek bir kutudan anlamsal ve etkinleştirme özelliklerini kodlayarak modeli kendisine benzeyen nesnelere göre koşullandırır. Bu, logo veya belirli bir parça gibi adlandırılması zor olan hedefler için tek atışlık (one-shot) yoldur.
  • Tembel Bölge-İstem Karşıtlığı (LRPC), bölge gömmelerini yerleşik 4.585 isimli bir sözlükle eşleştirir, böylece istem gerektirmeyen kontrol noktaları harici bir istem ve metin kodlayıcı olmaksızın nesneleri tanır.

Örnek bölütleme, YOLOv8-Seg'de olduğu gibi tespit başlığındaki bir maske dalından gelir ve her tahmin results[0].masks üzerinde bir maske taşır. Model dışa aktarıldıktan sonra, açık dünya modülleri standart bir YOLO başlığına yeniden parametrelendirilir, böylece dışa aktarılan dosya olağan tespit/bölütleme yolunu çalıştırır.

Mevcut Modeller#

Aşağıdaki her kontrol noktası bir örnek bölütleme modelidir ve val, predict, export ile track işlemlerini destekler. Metin veya görsel istemler için bir *-seg.pt dosyası, istem gerektirmeyen çıkarım için ise bir *-seg-pf.pt dosyası yükle; bunlar birbirinin yerine kullanılamaz, İstem Modu Seçimi bölümüne bakın. Yalnızca *-seg.pt dosyaları train işlemini destekler; istem gerektirmeyen bir kontrol noktası, eğitilmiş bir metin istemi modelinden üretilir, Resmi Modelleri Sıfırdan Eğitme bölümüne bakın.

LVIS Üzerinde YOLOE Performansı#

Ultralytics YOLO26 makalesinden alınan 640 piksel çözünürlükteki LVIS minival sıfır atış sonuçları.

Metin ve görsel istemler#

Her doğrulık ve parametre hücresi metin istemi / görsel istem olarak okunur; FLOP değerleri bir kez verilmiştir. Parametreler ve FLOP değerleri, makalenin değerlendirdiği tespit yapılandırması içindir. Doğruluk, makalenin karşılaştırmadaki her model için rapor ettiği tek protokol olan Non-E2E (uçtan uca olmayan) figürüdür; YOLOE-26 uçtan uca başlığı, metin istemleri altında en fazla 1.1 AP ve görsel istemler altında 2.6 AP gerisinde kalır.

ModelmAP50-95mAPrmAPcmAPfparametreler
(M)
FLOPs
(B)
YOLOE-26n24.7 / 21.920.5 / 17.624.1 / 22.326.1 / 22.43.9 / 3.16.1
YOLOE-26s30.8 / 28.623.9 / 25.129.6 / 27.833.0 / 29.910.7 / 11.021.9
YOLOE-26m35.4 / 33.931.1 / 33.434.7 / 34.036.9 / 33.821.3 / 25.170.6
YOLOE-26l37.8 / 36.335.1 / 37.637.6 / 36.238.5 / 36.125.5 / 29.389.0
YOLOE-26x40.6 / 38.537.4 / 35.340.9 / 38.841.0 / 38.855.2 / 65.2197.7
YOLOE-11s27.5 / 26.321.4 / 22.526.8 / 27.129.3 / 26.410.7 / 10.922.7
YOLOE-11m33.0 / 31.426.9 / 27.132.5 / 31.934.5 / 31.721.0 / 24.870.4
YOLOE-11l35.2 / 33.729.1 / 28.135.0 / 34.636.5 / 33.826.0 / 29.889.5
YOLOE-v8s27.9 / 26.222.3 / 21.327.8 / 27.729.0 / 25.712.3 / 12.629.8
YOLOE-v8m32.6 / 31.026.9 / 27.031.9 / 31.734.4 / 31.126.4 / 28.480.7
YOLOE-v8l35.9 / 34.233.2 / 33.234.8 / 34.637.3 / 34.143.5 / 47.3167.6

İstem gerektirmeyen#

İstem gerektirmeyen kontrol noktaları, hiçbir istem sağlanmadan yerleşik sözlüklerinden yanıt verir. Her doğruluk hücresi, makalenin YOLOE-26'yı puanladığı iki protokol olan uçtan uca / Non-E2E şeklinde okunur; YOLO26 sayfası Non-E2E sütununu alıntılar.

ModelmAP50-95mAPrmAPcmAPfparametreler
(M)
FLOPs
(B)
YOLOE-26n-pf16.6 / 17.715.7 / 15.815.3 / 16.417.9 / 19.22.35.3
YOLOE-26s-pf21.4 / 22.616.2 / 20.220.1 / 20.923.5 / 24.59.020.8
YOLOE-26m-pf25.7 / 26.426.7 / 24.524.0 / 25.026.9 / 27.919.468.4
YOLOE-26l-pf27.2 / 28.026.3 / 25.725.7 / 26.828.7 / 29.523.686.8
YOLOE-26x-pf29.9 / 31.127.5 / 28.929.1 / 30.731.1 / 31.753.1194.4

Metin ve görsel istemler altında YOLOE-26 modelleri, mAP50-95 üzerinde eşleşen her ölçekte YOLOE-11 ve YOLOE-v8 benzerlerini geride bırakırken, parametreler ve FLOP'lar açısından v8 çizgisinin altında kalır. Makale aynı veri kümesi bölümünde YOLO-Worldv2'yi 24.4 (S), 32.4 (M) ve 35.5 (L) olarak; transformatör tabanlı dedektörlerden GLIP-T'yi 26.0, GDINO-T'yi 27.4 ve DetCLIP-T'yi 34.4 olarak rapor eder; bunların her biri 155 ila 232 M parametre taşır. Orijinal YOLOE makalesi, tanıttığı v8 ölçekli modeller için iki sonuç daha ekler. LVIS üzerinde YOLOE-v8s, eğitim maliyetinin üçte biri ve 1.4 katı çıkarım hızıyla YOLO-Worldv2-S modelini 3.5 AP farkla geçer. COCO'ya aktarıldığında YOLOE-v8l, neredeyse 4 kat daha az eğitim süresiyle kapalı küme YOLOv8-L'ye kıyasla 0.6 kutu AP ve 0.4 maske AP kazanımı sağlar.

Makale Sayımları ile Yayınlanan Kontrol Noktaları Arasındaki Farklar

YOLO26 makalesi bir tespit yapılandırmasını değerlendirir. Yayınlanan ağırlıklar bölütleme kontrol noktalarıdır ve bir maske dalı, SAVPE ile üst kısımda metin projeksiyonu taşır; bu nedenle yüklenen bir yoloe-26l-seg.pt yukarıdaki 25.5 M ve 89.0 B değerleri yerine 35.4 M ve 142.0 B bildirir. Her iki durumda da FLOP değeri bölge-metin benzerliğini hariç tutar, bu nedenle sütun hareket etmese bile gerçek maliyet istem kümesinin boyutuyla birlikte büyür; Sınırlamalar bölümüne bakın.

Kullanım Örnekleri#

Aşağıdaki her YOLOE örneği Python API üzerinden çalışır. Metin istemli tahmin, doğrulama, dışa aktarma, takip ve düz eğitim CLI üzerinden de çalışır; ince ayar tarifleri ve görsel istemler, yalnızca Python API'nin kabul ettiği bir argüman olarak bir eğitici veya tahminci sınıfı iletir.

Eğitim Kullanımı#

Yayınlanan herhangi bir *-seg.pt kontrol noktasına kendi YOLO veri kümen üzerinde ince ayar (fine-tune) yap. Bu işlem büyük ölçüde standart YOLO eğitim prosedürünü takip eder; aradaki fark hangi eğiticiyi ilettiğindir. YOLOEPESegTrainer, sınıf adlarını başlığın içine kaynaştırır ve oradan itibaren ince ayar yapar; kendi etiketlerinle kullanmak istediğin yöntem budur; varsayılan eğitici senin sınıf adlarına göre eğitim yapmaz.



Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Örnek
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer

model = YOLOE("yoloe-26s-seg.pt")

results = model.train(
    data="coco128-seg.yaml",
    epochs=80,
    patience=10,
    trainer=YOLOEPESegTrainer,  # <- Important: the fine-tuning trainer, not the default
)
Bunun yerine bir tespit modeli eğitmek

Yayınlanan her kontrol noktası bir bölütleme modelidir. Bir dedektör eğitmek için modeli eşleşen YAML dosyasından oluştur, aynı ölçekteki bölütleme ağırlıklarını yükle ve tespit eğitici ile değiştir. Geri kalan her şey aynı kalır.

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer

model = YOLOE("yoloe-26s.yaml").load("yoloe-26s-seg.pt")

results = model.train(data="coco128.yaml", epochs=80, patience=10, trainer=YOLOEPETrainer)

Tahmin Kullanımı#

Metin istemli çağrı, Hızlı Başlangıç bölümünde gösterilendir. Kalan diğer iki modülün her biri fazladan bir argümana ihtiyaç duyar:

Örnek

Görsel istemler, bir hedefi tanımlamak yerine modele bir örnek gösterir. visual_prompts, örnek kutulardan oluşan bir bboxes dizisi ve kutu başına bir tane olacak şekilde sınıf kimliklerinden oluşan bir cls dizisi alır. Kimlikler etiket değil, geçici gruplamalardır; 0'dan başlayarak ardışık olmalıdırlar ve sonuçlar seçtiğin adlar altında değil, object0, object1, … şeklinde geri döner.

Örnek kutular üzerinde tahmin yaptığın görüntünün üzerinde yer alabilir:

import numpy as np

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-26l-seg.pt")

# One example box per target, each with its own class ID
visual_prompts = {
    "bboxes": np.array([[221.52, 405.8, 344.98, 857.54], [120, 425, 160, 445]]),  # person, glasses
    "cls": np.array([0, 1]),
}

results = model.predict(
    "ultralytics/assets/bus.jpg",
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)
results[0].show()

Veya refer_image olarak iletilen ayrı bir referans görüntü üzerinde yer alabilir; bu durumda bboxes ve cls hedefler üzerinde değil, o referanstaki nesneleri tanımlar:

import numpy as np

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-26l-seg.pt")

visual_prompts = {"bboxes": np.array([[221.52, 405.8, 344.98, 857.54]]), "cls": np.array([0])}  # person

results = model.predict(
    "ultralytics/assets/zidane.jpg",  # Target image
    refer_image="ultralytics/assets/bus.jpg",  # Where the example boxes live
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)
results[0].show()

# refer_image also sets the classes permanently, so later calls need no prompts at all
results = model("ultralytics/assets/bus.jpg")
model.export(format="onnx")  # And the export keeps them
Not

source bir video veya akış olduğunda, ilk kare otomatik olarak refer_image olur; böylece ilettiğin istemler o kareye uygulanır ve videonun geri kalanı boyunca taşınır. Farklı bir kare seçmek için açıkça refer_image ilet.

source ve refer_image ifadelerinin her ikisi de torch tensörlerini doğrudan kabul eder; bu, görüntüler halihazırda mevcut bir boru hattından (pipeline) geliyorsa kullanışlıdır. Kutuları tensörün kendi piksel koordinatlarında ver:

import numpy as np
import torch

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-11l-seg.pt")

img_tensor = torch.rand(1, 3, 480, 480)  # (1, 3, H, W) float tensor in [0, 1]
visual_prompts = {"bboxes": np.array([[10, 10, 50, 50]]), "cls": np.array([0])}

results = model.predict(
    img_tensor,
    refer_image=img_tensor,
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
    imgsz=640,
)

Birden fazla görüntü üzerinde aynı anda tahmin yapmak için istemleri bir seviye daha iç içe yerleştir: kaynak görüntü başına bir bboxes dizisi ve bir cls dizisi, kaynaklarla aynı sırada olacak şekilde.

import numpy as np

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEVPSegPredictor

model = YOLOE("yoloe-26l-seg.pt")

visual_prompts = {
    "bboxes": [
        np.array([[221.52, 405.8, 344.98, 857.54], [120, 425, 160, 445]]),  # bus.jpg: person, glasses
        np.array([[150, 200, 1150, 700]]),  # zidane.jpg: person
    ],
    "cls": [np.array([0, 1]), np.array([0])],
}

results = model.predict(
    ["ultralytics/assets/bus.jpg", "ultralytics/assets/zidane.jpg"],
    visual_prompts=visual_prompts,
    predictor=YOLOEVPSegPredictor,
)
results[0].show()

Doğrulama Kullanımı#

Doğrulama (validation) bir bölütleme veri kümesi üzerinde diğer herhangi bir model gibi çalışır:

Örnek
from ultralytics import YOLOE

model = YOLOE("yoloe-26l-seg.pt")  # or yoloe-26s/m-seg.pt for other sizes

metrics = model.val(data="coco128-seg.yaml")

Aynı çağrının iki varyantı diğer istem modlarını kapsar:

  • Görsel istemlermodel.val(data="coco128-seg.yaml", load_vp=True), veri kümesinin kendisinden kategori başına görsel bir gömme çıkarır. Gömmeleri tam olarak aynı kategorileri içermesi gereken farklı bir veri kümesinden almak için refer_data="coco.yaml" ekle.
  • İstem gerektirmeyen — bir *-seg-pf.pt kontrol noktası yükle ve single_cls=True ilet.

Dışa Aktarma Kullanımı#

İstem gömmeleri (prompt embeddings) bir kez kaydedilebilir ve ONNX, OpenVINO, TensorRT, CoreML, LiteRT ve RKNN gibi statik dışa aktarımlar üretilirken yeniden kullanılabilir. NPZ profili, dışa aktarımdan önce orijinal PyTorch modeli tarafından yüklenir; bu ek bir çalışma zamanı girdisi değildir ve dışa aktarılan model NPZ dosyasına ihtiyaç duymaz.

Dışa aktarılan modeller statiktir

set_classes() ile (veya görsel istemler için refer_image aracılığıyla) yapılandırılan sınıflar dışa aktarılan ağırlıkların içine gömülür. Dışa aktarıldıktan sonra model artık yeni istemleri kabul edemez: yüklenen bir dışa aktarım üzerinde set_classes() çağrısı yapmak veya predict() fonksiyonuna visual_prompts=... iletmek başarısız olur. Tespit edilen sınıfları değiştirmek için, yeni istemler yapılandırılmış orijinal .pt kontrol noktasından yeniden dışa aktarım yap. Dışa aktarılan dosya standart bir YOLO modeli gibi davranır ve YOLOE() yerine YOLO() ile de yüklenebilir.

İstem gömmelerini yeniden kullan
from ultralytics import YOLOE

model = YOLOE("yoloe-26n-seg.pt")
model.set_classes(["person", "bus"])
model.save_prompt_embeddings("person-bus.npz")

# The profile is bound to the source checkpoint and can be reused for later exports.
model = YOLOE("yoloe-26n-seg.pt")
model.load_prompt_embeddings("person-bus.npz")
model.export(format="onnx")

Aynı istem profili, eşleşen YOLOE mimarisinden oluşturulmuş yalnızca tespit yapabilen bir modeli de yapılandırabilir. Bu, maske dalını kaldırırken istem verilen sınıfları korur:

from ultralytics import YOLOE

model = YOLOE("yoloe-26n.yaml").load("yoloe-26n-seg.pt")
model.load_prompt_embeddings("person-bus.npz")
model.export(format="rknn", name="rk3588", quantize=16)

Takip Kullanımı#

İstem verilen sınıflar doğrudan takip işlemine aktarılır, böylece izleyicinin (tracker) daha önce hiç eğitilmediği nesneleri takip edebilirsin:

Örnek
from ultralytics import YOLOE

model = YOLOE("yoloe-26s-seg.pt")
model.set_classes(["forklift", "pallet"])

# persist=True keeps track IDs stable across frames
for result in model.track("path/to/video.mp4", stream=True, persist=True):
    print(result.boxes.id)

YOLOE Nasıl Karşılaştırılır#

YOLOE, kapalı küme bir dedektör ile ağır siklet açık sözlük tabanlı bir model arasında yer alır. Doğru seçim olup olmadığını üç karşılaştırma belirler:

  • Kapalı küme YOLO'ya karşı. İstemler ayarlandıktan sonra YOLOE, olağan tespit/bölütleme yolu üzerinden tahmin yapar ve diğer herhangi bir model gibi dışa aktarılır. Eklediği şey, yeniden eğitmek zorunda kalmadan çıkarım zamanında sınıf listesini değiştirme yeteneğidir; maliyeti ise kendi sınıfların üzerinde eğitilmiş bir modelin çok gerisinde kalan sıfır atış doğruluyudur.
  • Önceki YOLOE ailelerine karşı. YOLOE-26, YOLO26 modelinin NMS gerektirmeyen uçtan uca başlığını devralır ve önceki üç ölçeğe (s/m/l) kıyasla beş ölçeği (n/s/m/l/x) kapsar, ayrıca Performans bölümünde eşleşen her ölçekte önde yer alır.
  • Transformatör tabanlı açık sözlük tespitçilerine karşı. GLIP ve OWL-ViT çıkarım sırasında bir görme-dil transformatörü çalıştırır. YOLOE ise istemleri bir kez kodlar ve ardından bunları evrişimli bir başlığın içindeki bölge özellikleri ile karşılaştırır.

En yakın alternatiflerin tümü bir metin istemi alır, ancak yalnızca YOLOE ve SAM 3 maske döndürür ve bu üçü farklı soruları yanıtlar:

YOLOESAM 3YOLO-World
Şunun için tasarlandıAdlandırılmış sınıfların gerçek zamanlı tespiti ve bölütlenmesiKavram bölütleme ve istem verilebilir takipGerçek zamanlı açık kelime dağarcıklı algılama
MaskelerEvet, *-seg.pt kontrol noktaları ileEvetHayır, yalnızca kutular
Görsel ipuçlarıEvet (SAVPE)EvetHayır
İpucu gerektirmeyen modEvet, 4.585 isimli kelime dağarcığıHayırHayır
Şu durumlarda seç:Aktarım hızına ihtiyacın var ve sınıfları adlandırabiliyorsunEn güçlü konsept segmentasyonuna ihtiyacın var ve hesaplama gücü harcayabilirsinZaten buradasın — aşağıdaki geçiş notuna bakın

YOLO-World'den mi geliyorsun? API aynı yapıda: YOLOWorld yerine YOLOE kullan, bir *-seg.pt kontrol noktası yükle ve set_classes() çağrını olduğu gibi bırak. Maskeler ve görsel ipuçları kazanırsın; dondurulmuş sınıflarla ilgili dışa aktarma notu her ikisi için de geçerlidir.

Kullanım Durumları ve Uygulamalar#

Açık kelime dağarcıklı algılama, sınıf başına yeniden eğitme adımını ortadan kaldırır; bu, özellikle hedef listenin önceden bilinmediği durumlarda önemlidir:

  • Açık dünya algılaması — eğitim sırasında kimsenin numaralandırmadığı nesnelerle karşılaşan robotik ve güvenlik sistemleri.
  • Bir örnekten tek atışta algılama — görsel ipuçları, tek bir referans kutusundan belirli bir parçayı, logoyu veya kusuru yakalar; endüstriyel denetimde yararlıdır.
  • Uzun kuyruklu kataloglama — yerleşik 4.585 isimli kelime dağarcığı, biyolojik çeşitlilik izleme veya perakende envanter taramaları için yeterince geniştir.
  • Veri seti önyüklemesi — insan incelemesinden önce görselleri kutular ve maskelerle önceden etiketle, ardından sonuç üzerinde hızlı bir kapalı küme modeli eğit.
  • İsteğe bağlı hedeflerin segmentasyonu — yayınlanan *-seg.pt kontrol noktaları her tahminle birlikte bir maske döndürür, böylece tıbbi görüntüleme ve uydu analizi ikinci bir modele gerek kalmadan piksel hassasiyetinde çıktı elde eder.

Yaygın bir örüntü iki modu birleştirir: neyin mevcut olduğunu keşfetmek için bir kez ipucu gerektirmeyen modu çalıştır, ardından önemli olan kategoriler için metin ipuçlarına geç.

Sınırlamalar#

YOLOE, çıkarım zamanında sınıfları değiştirme yeteneği karşılığında doğruluğu feda eder. Taahhütte bulunmadan önce bilmeye değer sonuçlar şunlardır:

  • Sıfır atışlı doğruluk, sınıflarınız üzerinde eğitilmiş bir modelin oldukça altındadır. İpucu verilen kontrol noktaları LVIS minival üzerinde kabaca 22-40 mAP bandına denk gelir; kendi verileriniz üzerinde eğitilmiş kapalı küme bir YOLO, bu sınıflarda bunu geçecektir. Eğitimin yerini almak için değil, eğitemediğiniz sınıfları kapsamak için YOLOE'ye başvurun.
  • Nadir kategoriler zayıf noktadır. Performans tablosundaki mAPr sütunu, özellikle LVIS'in nadir kategorilerindeki doğruluğu rapor eder ve metin ipucu verildiğinde her satırda yaygın ve sık sütunlarının altında yer alır. Hedefleriniz alışılmadık olduğunda ana mAP yerine bunu kontrol edin.
  • Bir ipucu ilişkileri değil, görünümü tanımlar. Algılama, bölge özelliklerini ipucu gömüştürmesiyle karşılaştırarak çalışır; bu nedenle duruma, bağlama veya karşılaştırmaya bağlı olan ipuçları ("hasarlı", "en soldaki", "taşınmakta olan") eşleşecek güvenilir bir tutamağa sahip değildir. Günlük kategori adlarına yakın ifadeleri tercih edin.
  • Büyük ipucu setleri gecikmeye mal olur. İpucu gömüştürmeleri bir kez hesaplanır, ancak her ileri geçişte bölge özellikleri ile karşılaştırılırlar. yoloe-26s-seg.pt ile CPU üzerinde ölçüldüğünde, ileri geçiş 80'den 1.203 sınıfa çıkarken yaklaşık %19, tam 4.585 isimli kelime dağarcığında ise yaklaşık %89 oranında büyür. Bildirilen FLOP'lar hiç hareket etmez, çünkü bölge-metin benzerliği sayılmaz, bu nedenle profil sizi uyarmaz.
  • Sınıf adları, siz ipucu verene kadar yer tutucudur. Yeni yüklenen bir *-seg.pt kontrol noktası, sayısal adlarla (nc=80, "0", …) birlikte "1" rapor eder, bu nedenle etiketleri okumadan önce set_classes() çağrısı yapın. İpucu gerektirmeyen kontrol noktaları, tüm kelime dağarcığı halihazırda doldurulmuş olarak gelir.

Dağıtım Notları#

  • Donanım. Çıkarım, 4-8 GB VRAM'e sahip bir NVIDIA GPU gerektirir; n ve s ölçekleri Jetson gibi uç GPU'larda veya azaltılmış çözünürlükte CPU üzerinde çalışır. İnce ayar tek bir GPU gerektirir.
  • NMS varsayılan olarak sınıftan bağımsızdır. YOLOE, agnostic_nms=True ile tahmin yapar. YOLOE-11 ve YOLOE-v8'de bu, yalnızca aynı sınıf içinde değil, farklı sınıflardaki daha düşük puanlı çakışan kutuları bastırır; bu da bir nesne birkaç kategoriyle eşleştiğinde kopyaları önler. Uçtan uca YOLOE-26 modelleri hiçbir IoU bastırma uygulamaz; orada bağımsız mod, bir etiketçinin birkaç sınıf etiketi yaymasına izin vermek yerine, her çıpa için yalnızca en iyi tek sınıfı tutar. Geçersiz kılmak için agnostic_nms=False iletin.
  • Toplu işleme. Toplu çıkarım doğrudan çalışır ve görsel ipuçları aynı çağrı içinde görsel başına farklılık gösterebilir.

Resmi Modelleri Sıfırdan Eğitmek#

Çoğu okuyucunun buna asla ihtiyacı olmaz. Bu, Objects365, GQA ve Flickr30k'daki yayınlanan açık kelime dağarcığı kontrol noktalarını — 8× RTX 4090 üzerinde yaklaşık 1,4 M eğitim örneği — yeniden üretir ve yukarıdaki Eğitim Kullanımı altında ele alınan kendi verileriniz üzerinde ince ayar yapma ile ilgili değildir.

Uyarı

YOLOETrainer sınıfından türeyen her eğitici, varsayılan YOLOESegTrainer ve aşağıdaki tüm sıfırdan eğiticiler dahil olmak üzere compile=True'i reddeder. compile=False (varsayılan) iletin. Yukarıda kullanılan iki ince ayar eğiticisi olan YOLOEPESegTrainer ve YOLOEPETrainer, bu kısıtlamayı taşınmaz.

Eğitim segment ek açıklamaları gerektirir. İşlenmiş dosyaları aşağıdan indirin veya SAM 2.1 tarafından desteklenen resmi ekibin sağladığı betik ile kendiniz oluşturun. Doğrulama LVIS minival kullanır.

Veri SetiTipÖrneklerKutularİşlenmiş segment ek açıklamaları
Objects365v1Tespit609k9621kobjects365_train_segm.json
GQAGrounding621k3681kfinal_mixed_train_no_coco_segm.json
Flickr30kGrounding149k641kfinal_flickr_separateGT_train_segm.json

Metin ipucu modeli önce eğitilir ve diğer iki ipucu modu bunun iyileştirmeleridir:

from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch

data = {
    "train": {
        "yolo_data": ["Objects365.yaml"],
        "grounding_data": [
            {
                "img_path": "flickr/full_images/",
                "json_file": "flickr/annotations/final_flickr_separateGT_train_segm.json",
            },
            {
                "img_path": "mixed_grounding/gqa/images",
                "json_file": "mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
            },
        ],
    },
    "val": {"yolo_data": ["lvis.yaml"]},
}

model = YOLOE("yoloe-26l-seg.yaml")
model.train(
    data=data,  # or the path to a YAML file holding the same structure
    batch=128,
    epochs=30,
    close_mosaic=2,
    optimizer="AdamW",
    lr0=2e-3,
    warmup_bias_lr=0.0,
    weight_decay=0.025,
    momentum=0.9,
    workers=4,
    trainer=YOLOESegTrainerFromScratch,
    device="0,1,2,3,4,5,6,7",
)

Görsel ipucu ve ipucu gerektirmeyen kontrol noktaları, eğitilen bu metin ipucu modelinden başlar ve her biri bir modülü günceller. YOLOESegVPTrainer görsel ipucu tarifidir ve YOLOEPEFreeTrainer ipucu gerektirmeyendir, ancak her iki sınıf da kendi başına hiçbir şeyi dondurmaz: seçici eğitim, savpe (sırasıyla her sınıflandırma kulesi) hariç tüm kafa çocuklarını adlandıran ve yanından ilettiğiniz freeze listesinden gelir ve ipucu gerektirmeyen çalışmanın ayrıca single_cls=True'e ihtiyacı vardır. Yukarı akış YOLOE deposu, v8 ölçekli modeller için tam tarifleri taşır.

Tamamlanan ipucu gerektirmeyen bir çalışmanın parametreleri, get_vocab ve set_vocab kullanılarak, çıkarım sırasında hiçbir ipucu olmaksızın adlarını bildiren bir kontrol noktasına yeniden parametrelendirilir:

from ultralytics import YOLOE

# Weights written by the prompt-free run and by the text-prompt run it started from. Each
# rerun creates a new directory (train-2, train-3, ...), so take the paths the runs printed.
model = YOLOE("runs/segment/train-2/weights/best.pt")  # prompt-free run, its head is already fused
text_model = YOLOE("runs/segment/train/weights/best.pt")  # text-prompt run, its head is still unfused

names = list(YOLOE("yoloe-26l-seg-pf.pt").model.names.values())  # the 4,585-name vocabulary, or your own list
vocab = text_model.get_vocab(names)

model.set_vocab(vocab, names)
model.save("yoloe-26l-seg-pf-custom.pt")  # never overwrite the released checkpoint

Alıntılar ve Teşekkür#

YOLOE araştırmana veya projene katkıda bulunduysa, lütfen Tsinghua Üniversitesi'nden Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han ve Guiguang Ding tarafından yazılan orijinal makaleyi alıntıla:

Alıntı
@misc{wang2025yoloerealtimeseeing,
      title={YOLOE: Real-Time Seeing Anything},
      author={Ao Wang and Lihao Liu and Hui Chen and Zijia Lin and Jungong Han and Guiguang Ding},
      year={2025},
      eprint={2503.07465},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2503.07465},
}

Daha fazla okuma için orijinal YOLOE makalesi arXiv üzerinde mevcuttur. Projenin kaynak koduna ve ek kaynaklara GitHub depoları aracılığıyla erişilebilir.

SSS#

  • Ultralytics YOLOE, YOLO-World'ün sahip olmadığı iki yetenek ekler: sınıf adının yerini örnek bir kutunun aldığı görsel ipuçları ve hiç ipucu olmadan yerleşik 4.585 isimli kelime dağarcığından yanıt veren ipucu gerektirmeyen kontrol noktaları. Yayınlanan *-seg.pt kontrol noktalarından gelen her tahmin ayrıca bir örnek segmentasyon maskesi taşır. Doğruluk açısından, orijinal YOLOE makalesi YOLOE-v8s'i LVIS'te YOLO-Worldv2-S'nin 3.5 AP önüne koyar, bu da eğitim maliyetinin üçte biri ve çıkarım hızının 1.4 katı ile gerçekleşir. Geçiş yapmak tek satırlık bir değişikliktir — bkz. YOLOE Nasıl Karşılaştırılır.

  • Ultralytics YOLOE üç ipucu modunu destekler. Metin ipucu, *-seg.pt kontrol noktası üzerinde dize olarak sınıf adlarıdır ve olağan seçimdir. Görsel ipucu, kelimelere dökülmesi zor olan hedefler için bir referans görsel üzerindeki bir veya daha fazla örnek kutudur. İpucu gerektirmeyen çıkarım, hiçbir şey sağlanmadan yerleşik 4.585 isimli kelime dağarcığından yanıt veren ayrı bir *-seg-pf.pt kontrol noktası kullanır. Metin ve görsel ipuçları aynı kontrol noktalarını paylaşır; ipucu gerektirmeyenler farklı dosyalardır ve set_classes()'yi reddeder. Tam karşılaştırma için Bir İpucu Modu Seçme konusuna bakın.

  • yoloe-26s-seg.pt ile başlayın: YOLOE-26 ailesi, eşleşen her ölçekte YOLOE-11 ve YOLOE-v8'in önündedir ve s ölçeği, LVIS minival üzerinde 30 mAP'nin üzerindeki en küçük olanıdır. Nadir kategorilerdeki doğruluk gecikmeden daha önemli olduğunda m, l veya x'e geçin — Performans tablosundaki mAPr sütunu karşılaştırılacak olanıdır. Yalnızca uç dağıtımı için n'ya düşün. Kendi sınıf adlarınız yerine yerleşik kelime dağarcığını istediğinizde bunun yerine aynı ölçeğin *-seg-pf.pt dosyasını yükleyin.

  • object0 ve object1 gibi etiketler, tahminin görsel bir ipucundan geldiği anlamına gelir; bu ipucu, adlarınızı taşımak yerine örnek kutuları geçici numaralandırılmış sınıflarda gruplandırır. visual_prompts["cls"] içinde ilettiğiniz sınıf kimlikleri yalnızca bu gruplandırmayı yapar. Model bunları atadığınız kimliklerin sırasıyla object0, object1 vb. olarak rapor eder, bu nedenle sonuç üzerinde bunları kendi etiketlerinize geri eşleyin. Çıktınızda adlarınızı istiyorsanız bunun yerine bir metin ipucu kullanın.

  • İpucu gerektirmeyen kontrol noktaları (*-seg-pf.pt) sınıfları kendi yerleşik kelime dağarcıkları aracılığıyla çözer ve AssertionError: Prompt-free model does not support setting classes. Please try with Text/Visual prompt models. ile harici ipuçlarını reddeder. Kendi sınıf listenize ihtiyacınız olduğunda bir *-seg.pt kontrol noktası yükleyin. Bir İpucu Modu Seçme konusuna bakın.

  • İlk metin ipucu, Ultralytics YOLOE'nin GitHub'dan pip ile ultralytics/CLIP yüklemesini ve mevcut çalışma dizinine bir TorchScript metin kodlayıcı indirmesini sağlar — YOLOE-26 için yaklaşık 254 MB; model ailesi başına tam varlık için Kurulum ve Gereksinimler bölümüne bakın. Görsel ipuçları ve ipucu gerektirmeyen kontrol noktaları ikisine de ihtiyaç duymaz. Hedef makinedeki indirmeden kaçınmak için ipuçlarını bir kez ayarlayın ve save_prompt_embeddings() ile kaydedin veya modeli sınıflar önceden yapılandırılmış olarak dışa aktarın.

  • Hayır — YOLOE, dışa aktarma sırasında ipucu verilen sınıfları ağırlıklara işler, bu nedenle yüklenen bir dışa aktarım hem set_classes() hem de visual_prompts='i reddeder. Yeni ipuçları yapılandırılmış olarak orijinal .pt kontrol noktasından yeniden dışa aktarın. Dışa aktarılan dosya standart bir YOLO modeli gibi davranır ve YOLO() ile olduğu kadar YOLOE() ile de yüklenebilir.

  • Gerçek zamanlı aktarım hızına ihtiyacınız olduğunda ve sınıfları adlandırabildiğinizde YOLOE'yi, bir konsept üzerindeki segmentasyon kalitesi hızdan daha önemli olduğunda SAM 3'ü kullanın. Her ikisi de görsel örnekleri kabul eder; yalnızca YOLOE'nin ipucu gerektirmeyen bir modu vardır. Tam karşılaştırma YOLOE Nasıl Karşılaştırılır içindedir.

Yorumlar