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.
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ç.

| Mod | Kontrol Noktası | Sağladığın girdi | Sonuçlardaki sınıf adları | Şu durumlarda kullan |
|---|---|---|---|---|
| Metin istemi | *-seg.pt | Dize olarak sınıf adları | Tam olarak ilettiğin adlar | Hedefi kelimelerle tanımlayabildiğin durumlar — en yaygın seçim |
| Görsel istem | *-seg.pt | Referans bir görüntü üzerinde örnek kutular | Genel object0, object1, … | Hedefi kelimelerle ifade edemediğin durumlar: belirli bir parça, logo veya kusur |
| İstem gerektirmeyen | *-seg-pf.pt | Hiçbir şey | Yerleşik 4.585 isimli sözlükten gelen adlar | Kataloglama veya keşif yapıyorsan ve önceden ne arayacağını bilmiyorsan |
- Görsel istemler kendi etiketlerini taşımaz.
visual_promptsiçindeki sınıf kimlikleri (ID) örnekleri bir arada gruplar; model bunlarıobject0,object1vb. olarak bildirir. Bunları kendi adlarınla kendin eşleştirmelisin. - İstem gerektirmeyen kontrol noktaları
set_classes()girdisini reddeder. Bunu bir*-seg-pf.ptmodeli üzerinde çağrıştırmakAssertionError: 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.ptkontrol noktası yükle.
Kurulum ve Gereksinimler#
YOLOE, ana Ultralytics paketinin içinde gelir:
pip install -U ultralyticsMetin 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ı,pipile 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ındakimobileclip2_b.tsdosyasını çeker; YOLOE-11 ve YOLOE-v8 isemobileclip_blt.tsdosyası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, 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.
| Model | Metin / görsel istem | İstem gerektirmeyen |
|---|---|---|
| YOLOE-26n | yoloe-26n-seg.pt | yoloe-26n-seg-pf.pt |
| YOLOE-26s | yoloe-26s-seg.pt | yoloe-26s-seg-pf.pt |
| YOLOE-26m | yoloe-26m-seg.pt | yoloe-26m-seg-pf.pt |
| YOLOE-26l | yoloe-26l-seg.pt | yoloe-26l-seg-pf.pt |
| YOLOE-26x | yoloe-26x-seg.pt | yoloe-26x-seg-pf.pt |
| YOLOE-11s | yoloe-11s-seg.pt | yoloe-11s-seg-pf.pt |
| YOLOE-11m | yoloe-11m-seg.pt | yoloe-11m-seg-pf.pt |
| YOLOE-11l | yoloe-11l-seg.pt | yoloe-11l-seg-pf.pt |
| YOLOE-v8s | yoloe-v8s-seg.pt | yoloe-v8s-seg-pf.pt |
| YOLOE-v8m | yoloe-v8m-seg.pt | yoloe-v8m-seg-pf.pt |
| YOLOE-v8l | yoloe-v8l-seg.pt | yoloe-v8l-seg-pf.pt |
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.
| Model | mAP50-95 | mAPr | mAPc | mAPf | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOE-26n | 24.7 / 21.9 | 20.5 / 17.6 | 24.1 / 22.3 | 26.1 / 22.4 | 3.9 / 3.1 | 6.1 |
| YOLOE-26s | 30.8 / 28.6 | 23.9 / 25.1 | 29.6 / 27.8 | 33.0 / 29.9 | 10.7 / 11.0 | 21.9 |
| YOLOE-26m | 35.4 / 33.9 | 31.1 / 33.4 | 34.7 / 34.0 | 36.9 / 33.8 | 21.3 / 25.1 | 70.6 |
| YOLOE-26l | 37.8 / 36.3 | 35.1 / 37.6 | 37.6 / 36.2 | 38.5 / 36.1 | 25.5 / 29.3 | 89.0 |
| YOLOE-26x | 40.6 / 38.5 | 37.4 / 35.3 | 40.9 / 38.8 | 41.0 / 38.8 | 55.2 / 65.2 | 197.7 |
| YOLOE-11s | 27.5 / 26.3 | 21.4 / 22.5 | 26.8 / 27.1 | 29.3 / 26.4 | 10.7 / 10.9 | 22.7 |
| YOLOE-11m | 33.0 / 31.4 | 26.9 / 27.1 | 32.5 / 31.9 | 34.5 / 31.7 | 21.0 / 24.8 | 70.4 |
| YOLOE-11l | 35.2 / 33.7 | 29.1 / 28.1 | 35.0 / 34.6 | 36.5 / 33.8 | 26.0 / 29.8 | 89.5 |
| YOLOE-v8s | 27.9 / 26.2 | 22.3 / 21.3 | 27.8 / 27.7 | 29.0 / 25.7 | 12.3 / 12.6 | 29.8 |
| YOLOE-v8m | 32.6 / 31.0 | 26.9 / 27.0 | 31.9 / 31.7 | 34.4 / 31.1 | 26.4 / 28.4 | 80.7 |
| YOLOE-v8l | 35.9 / 34.2 | 33.2 / 33.2 | 34.8 / 34.6 | 37.3 / 34.1 | 43.5 / 47.3 | 167.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.
| Model | mAP50-95 | mAPr | mAPc | mAPf | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOE-26n-pf | 16.6 / 17.7 | 15.7 / 15.8 | 15.3 / 16.4 | 17.9 / 19.2 | 2.3 | 5.3 |
| YOLOE-26s-pf | 21.4 / 22.6 | 16.2 / 20.2 | 20.1 / 20.9 | 23.5 / 24.5 | 9.0 | 20.8 |
| YOLOE-26m-pf | 25.7 / 26.4 | 26.7 / 24.5 | 24.0 / 25.0 | 26.9 / 27.9 | 19.4 | 68.4 |
| YOLOE-26l-pf | 27.2 / 28.0 | 26.3 / 25.7 | 25.7 / 26.8 | 28.7 / 29.5 | 23.6 | 86.8 |
| YOLOE-26x-pf | 29.9 / 31.1 | 27.5 / 28.9 | 29.1 / 30.7 | 31.1 / 31.7 | 53.1 | 194.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.
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 🚀
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
)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:
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 themsource 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:
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 istemler —
model.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çinrefer_data="coco.yaml"ekle. - İstem gerektirmeyen — bir
*-seg-pf.ptkontrol noktası yükle vesingle_cls=Trueilet.
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.
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.
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:
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:
| YOLOE | SAM 3 | YOLO-World | |
|---|---|---|---|
| Şunun için tasarlandı | Adlandırılmış sınıfların gerçek zamanlı tespiti ve bölütlenmesi | Kavram bölütleme ve istem verilebilir takip | Gerçek zamanlı açık kelime dağarcıklı algılama |
| Maskeler | Evet, *-seg.pt kontrol noktaları ile | Evet | Hayır, yalnızca kutular |
| Görsel ipuçları | Evet (SAVPE) | Evet | Hayır |
| İpucu gerektirmeyen mod | Evet, 4.585 isimli kelime dağarcığı | Hayır | Hayır |
| Şu durumlarda seç: | Aktarım hızına ihtiyacın var ve sınıfları adlandırabiliyorsun | En güçlü konsept segmentasyonuna ihtiyacın var ve hesaplama gücü harcayabilirsin | Zaten 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.ptkontrol 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.ptile 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.ptkontrol noktası, sayısal adlarla (nc=80,"0", …) birlikte"1"rapor eder, bu nedenle etiketleri okumadan önceset_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;
nvesö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=Trueile 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çinagnostic_nms=Falseiletin. - 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.
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 Seti | Tip | Örnekler | Kutular | İşlenmiş segment ek açıklamaları |
|---|---|---|---|---|
| Objects365v1 | Tespit | 609k | 9621k | objects365_train_segm.json |
| GQA | Grounding | 621k | 3681k | final_mixed_train_no_coco_segm.json |
| Flickr30k | Grounding | 149k | 641k | final_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 checkpointAlı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:
@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.ptkontrol 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.ptkontrol 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.ptkontrol noktası kullanır. Metin ve görsel ipuçları aynı kontrol noktalarını paylaşır; ipucu gerektirmeyenler farklı dosyalardır veset_classes()'yi reddeder. Tam karşılaştırma için Bir İpucu Modu Seçme konusuna bakın.yoloe-26s-seg.ptile başlayın: YOLOE-26 ailesi, eşleşen her ölçekte YOLOE-11 ve YOLOE-v8'in önündedir vesölçeği, LVIS minival üzerinde 30 mAP'nin üzerindeki en küçük olanıdır. Nadir kategorilerdeki doğruluk gecikmeden daha önemli olduğundam,lveyax'e geçin — Performans tablosundaki mAPr sütunu karşılaştırılacak olanıdır. Yalnızca uç dağıtımı içinn'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.ptdosyasını yükleyin.object0veobject1gibi 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ıylaobject0,object1vb. 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 veAssertionError: 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.ptkontrol noktası yükleyin. Bir İpucu Modu Seçme konusuna bakın.İlk metin ipucu, Ultralytics YOLOE'nin GitHub'dan
pipile 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 vesave_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 devisual_prompts='i reddeder. Yeni ipuçları yapılandırılmış olarak orijinal.ptkontrol noktasından yeniden dışa aktarın. Dışa aktarılan dosya standart bir YOLO modeli gibi davranır veYOLO()ile olduğu kadarYOLOE()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.