YOLOE: Gerçek Zamanlı Açık Kelime Dağarcıklı Algılama ve Segmentasyon#
Ultralytics YOLOE (Gerçek Zamanlı Her Şeyi Görme), eğitim zamanında sabitlenmiş bir sınıf listesi yerine çıkarım sırasında istediğin kategorileri metin istemi, görsel örnek veya 4.585 adlık yerleşik kelime dağarcığı olarak alan bir açık kelime dağarcıklı algılama ve örnek segmentasyonu modelidir: Ultralytics YOLO mimarileri — YOLOv8, YOLO11 ve YOLO26 — üzerine kuruludur ve YOLO-World modelinden esinlenmiştir. YOLOE, kapalı küme YOLO hızına yakın bir hızla, sıfır atışlı doğrulukta en güncel sonuçlara 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, hiç eğitim almadığı kategoriler için kutular ve örnek segmentasyonu 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 bak.
İstem Modu Seçme#
YOLOE üç istem modunu destekler; seçimin, hangi kontrol noktası dosyasını yükleyeceğini ve sınıf etiketlerinin nasıl görüneceğini belirler. Çıkarım sırasında sağlayabileceklerine uyan satırı seç.

| Mod | Kontrol noktası | Sağladığın şey | Sonuçlardaki sınıf adları | Şu durumda kullan |
|---|---|---|---|---|
| Metin istemi | *-seg.pt | Dizeler olarak sınıf adları | Geçirdiğin adların aynısı | Hedefi sözcüklerle açıklayabiliyorsan — genel tercih |
| Görsel istem | *-seg.pt | Referans görüntü üzerindeki örnek kutular | Genel object0, object1, … | Hedefi sözcüklerle ifade edemiyorsan: belirli bir parça, logo veya kusur |
| İstemsiz | *-seg-pf.pt | Hiçbir şey | Yerleşik 4.585 adlık kelime dağarcığındaki adlar | Katalog oluşturuyor veya keşif yapıyorsan ve önceden ne arayacağını bilmiyorsan |
- Görsel istemler etiketlerini taşımaz.
visual_promptsiçindeki sınıf kimlikleri örnekleri birlikte gruplandırır; model bunlarıobject0,object1ve benzeri olarak bildirir. Bunları kendi adlarına kendin eşleştir. - İstemsiz kontrol noktaları
set_classes()değerini kabul etmez. Bunu bir*-seg-pf.ptmodeli üzerinde çağırmakAssertionError: Prompt-free model does not support setting classes. Please try with Text/Visual prompt models.hatasını oluşturur. Kendi sınıflarına ihtiyacın olduğunda bunun yerine bir*-seg.ptkontrol noktası yükle.
Kurulum ve Gereksinimler#
YOLOE, ana Ultralytics paketinde sunulur:
pip install -U ultralyticsMetin istemi bunun üzerine bir metin kodlayıcı gerektirir ve bu kodlayıcı kurulum sırasında değil, ilk kullanımda indirilir:
- İlk
set_classes()çağrısı,pipile (belirteçleyiciyi sağlar) GitHub'dan ultralytics/CLIP paketini kurar ve bir TorchScript metin kodlayıcısını geçerli çalışma dizinine indirir. YOLOE-26 yaklaşık 254 MB boyutundakimobileclip2_b.tsdosyasını; YOLOE-11 ve YOLOE-v8 isemobileclip_blt.tsdosyasını indirir. İndirmeyi çalıştıracağın dizinden bir kez yap veya dosyayı oraya kopyala; aksi halde dosya yeniden indirilir. - Her iki adım da ağ erişimi gerektirir; bu nedenle çevrimdışı veya ağdan tamamen izole edilmiş bir makineye dağıtım yapmadan önce istemli bir tahmini bir kez çalıştır.
- Görsel istemler ve istemsiz kontrol noktaları hiçbir metin kodlayıcı gerektirmez.
YOLOE-26 kontrol noktaları ultralytics 8.4.0 veya daha yeni bir sürümünü gerektirir; YOLOE-11 ve YOLOE-v8 aileleri daha eski sürümlerde de kullanılabilir. Metin istemli tek bir tahmin, tüm akışı — kontrol noktası indirme, CLIP kurulumu, metin kodlayıcı ve çıkarım — çalıştırır:
yolo predict model=yoloe-26s-seg.pt source="https://ultralytics.com/images/bus.jpg" classes="person"Çıkarım sırasında metin kodlayıcı indirmesini tamamen atlamak için istemleri bir kez ağırlıklara göm ve yeniden kullan — İstem gömmelerini yeniden kullanma bölümüne bak.
Mimariye Genel Bakış#
YOLOE, özellik çıkarımı için evrişimli bir omurga, çok ölçekli birleştirme için bir boyun ve sınıfları ve kutuları tahmin eden çapasız, ayrıştırılmış bir başlıktan oluşan standart YOLO yapısını korur ve her istem modu için bir 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ğ üzerinden iyileştirir. Bu ağ her
set_classes()çağrısında bir kez çalışır ve dışa aktarma sırasında katlanarak kaldırılır; dolayısıyla kare başına maliyeti yoktur. Her ileri geçişte çalışan işlem, depolanan istem gömmelerini bölge özellikleriyle karşılaştırmaktır; büyük bir istem kümesinin maliyeti için Sınırlamalar bölümüne bak. - Anlamsal Olarak Etkinleştirilen Görsel İstem Kodlayıcı (SAVPE), örnek kutusundan anlamsal ve etkinleştirme özelliklerini kodlayarak modeli ona benzeyen neslelere koşullandırır. Bu, logo veya belirli bir parça gibi adlandırılması zor hedefler için tek örnekli yoldur.
- Tembel Bölge-İstem Kontrastı (LRPC), bölge gömmelerini yerleşik 4.585 adlık kelime dağarcığıyla eşleştirir; böylece istemsiz kontrol noktaları harici bir istem ve metin kodlayıcı olmadan nesneleri tanır.
Örnek segmentasyonu, YOLOv8-Seg'de olduğu gibi algılama başlığındaki bir maske dalından gelir ve her tahmin results[0].masks üzerinde bir maske taşır. Model dışa aktarıldığında, açık dünya modülleri standart bir YOLO başlığına yeniden parametrelendirilir; bu nedenle dışa aktarılan dosya normal algılama/segmentasyon yolunu çalıştırır.
Kullanılabilir Modeller#
Aşağıdaki her kontrol noktası bir örnek segmentasyonu modelidir ve val, predict, export ve track işlemlerini destekler. Metin veya görsel istem için bir *-seg.pt dosyası, istemsiz çıkarım için ise bir *-seg-pf.pt dosyası yükle; bunlar birbirinin yerine kullanılamaz, İstem Modu Seçme bölümüne bak. Yalnızca *-seg.pt dosyaları train işlemini destekler; istemsiz kontrol noktası, eğitilmiş bir metin istemli modelden üretilir, bkz. Resmi Modelleri Sıfırdan Eğitme.
| Model | Metin / görsel istem | İstemsiz |
|---|---|---|
| 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 pikselde LVIS minival üzerindeki sıfır atışlı sonuçlar.
Metin ve görsel istemler#
Her doğruluk ve parametre hücresi metin istemi / görsel istem biçimindedir; FLOPs yalnızca bir kez verilir. Parametreler ve FLOPs, makalenin değerlendirdiği algılama yapılandırmasına aittir. Doğruluk, karşılaştırmadaki her model için raporlanan tek protokol olan makalenin E2E olmayan değeridir; YOLOE-26'nın uçtan uca başlığı, metin istemlerinde en fazla 1.1 AP ve görsel istemlerde 2.6 AP gerisinde kalır.
| Model | mAP50-95 | mAPr | mAPc | mAPf | parametre (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 |
İstemsiz#
İstemsiz kontrol noktaları, sağlanan bir istem olmadan yerleşik kelime dağarcıklarından yanıt verir. Her doğruluk hücresi uçtan uca / E2E olmayan biçimindedir; bunlar makalenin YOLOE-26 için puanladığı iki protokoldür. YOLO26 sayfası E2E olmayan sütunu aktarır.
| Model | mAP50-95 | mAPr | mAPc | mAPf | parametre (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 değerinde eşleşen her ölçekte YOLOE-11 ve YOLOE-v8 karşılıklarını geride bırakırken parametre ve FLOPs sayılarında v8 serisinin altında kalır. Aynı bölmede makale, YOLO-Worldv2 için 24.4 (S), 32.4 (M) ve 35.5 (L) değerlerini; Transformer tabanlı algılayıcılar GLIP-T için 26.0, GDINO-T için 27.4 ve DetCLIP-T için 34.4 değerlerini bildirir; bunların her biri 155 ila 232 M parametre taşır. Özgün YOLOE makalesi, tanıttığı v8 ölçeğindeki modeller için iki sonuç daha ekler. LVIS üzerinde YOLOE-v8s, YOLO-Worldv2-S modelini eğitme maliyetinin üçte biri ve 1,4 kat çıkarım hızıyla 3.5 AP kadar geçer. COCO'ya aktarıldığında YOLOE-v8l, kapalı küme YOLOv8-L modeline kıyasla 0.6 kutu AP ve 0.4 maske AP kazanır ve eğitim süresi neredeyse 4 kat daha kısadır.
YOLO26 makalesi bir algılama yapılandırmasını değerlendirir. Yayımlanan ağırlıklar segmentasyon kontrol noktalarıdır ve üstüne bir maske dalı, SAVPE ve metin projeksiyonu eklenmiştir; bu nedenle yüklenmiş bir yoloe-26l-seg.pt, yukarıdaki 25.5 M ve 89.0 B yerine 35.4 M ve 142.0 B bildirir. Her iki durumda da FLOPs değeri bölge-metin benzerliğini dışlar; bu nedenle sütun değişmese bile gerçek maliyet istem kümesinin boyutuyla artar. Sınırlamalar bölümüne bak.
Kullanım Örnekleri#
Aşağıdaki her YOLOE örneği Python API üzerinden çalışır. Metin istemli tahmin, doğrulama, dışa aktarma, izleme ve normal eğitim CLI üzerinden de çalışır; ince ayar tarifleri ve görsel istem oluşturma, bağımsız değişken olarak bir eğitici veya tahmin sınıfı geçirir ve bunu yalnızca Python API kabul eder.
Eğitim Kullanımı#
Yayımlanan herhangi bir *-seg.pt kontrol noktası üzerinde kendi YOLO veri kümenle ince ayar yap. Bu işlem büyük ölçüde standart YOLO eğitim prosedürünü izler; fark, hangi eğiticiyi geçirdiğindir. YOLOEPESegTrainer, sınıf adlarını başlığa birleştirir ve buradan ince ayar yapar; kendi etiketlerin üzerinde istediğin işlem budur. Varsayılan eğitici, sınıf adlarınla eğitmez.
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 checkpoint bir segmentasyon modelidir. Bir algılayıcı eğitmek için modeli eşleşen YAML'dan oluştur, aynı ölçeğin segmentasyon ağırlıklarını yükle ve algılama eğiticisini kullan. Diğer her şey değişmeden 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 istemi çağrısı Quick Start bölümünde gösterilendir. Diğer iki modun her biri ek bir bağımsız değişken gerektirir:
Görsel istemler, bir örneği açıklamak yerine modele gösterir. visual_prompts, örnek kutulardan oluşan bir bboxes dizisi ve kutu başına bir sınıf kimliği içeren bir cls dizisi alır. Kimlikler etiket değil, geçici gruplamalardır — 0'dan başlayarak ardışık olmalıdır ve sonuçlar seçtiğin adlarla değil, object0, object1, … olarak döner.
Örnek kutular, tahmin yaptığın görüntünün üzerinde bulunabilir:
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()Ya da refer_image olarak geçirilen ayrı bir referans görüntüsünde bulunabilir; bu durumda bboxes ve cls, hedefteki değil 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 geçirdiğin istemler bu kareye uygulanır ve videonun geri kalanında sürdürülür. Farklı bir kare seçmek için refer_image değerini açıkça geçir.
Hem source hem de refer_image, torch tensörlerini doğrudan kabul eder; bu, görüntüler zaten mevcut bir işlem hattından geldiğinde 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,
)Aynı anda birden fazla görüntü üzerinde tahmin yapmak için istemleri bir seviye daha derine yerleştir: kaynak görüntü başına, kaynaklarla aynı sırada bir bboxes dizisi ve bir cls dizisi.
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, segmentasyon veri kümesinde diğer tüm modellerde olduğu 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 bir görsel gömme çıkarır. Gömeleri, tam olarak aynı kategorileri taşıması gereken farklı bir veri kümesinden almak içinrefer_data="coco.yaml"ekle. - İstemsiz — bir
*-seg-pf.ptcheckpoint'i yükle vesingle_cls=Truedeğerini geçir.
Dışa Aktarım Kullanımı#
İstem gömmeleri bir kez kaydedilebilir ve ONNX, OpenVINO, TensorRT, CoreML, LiteRT ve RKNN gibi statik dışa aktarımlar oluşturulurken yeniden kullanılabilir. NPZ profili dışa aktarımdan önce özgün PyTorch modeli tarafından yüklenir; ek bir çalışma zamanı girdisi değildir ve dışa aktarılan model NPZ dosyasını gerektirmez.
set_classes() ile (veya görsel istemler için refer_image üzerinden) yapılandırılan sınıflar, dışa aktarılan ağırlıklara gömülür. Dışa aktarıldıktan sonra model artık yeni istemleri kabul edemez: yüklü bir dışa aktarım üzerinde set_classes() çağrısı yapmak veya visual_prompts=... değerini predict() öğesine geçirmek başarısız olur. Algılanan sınıfları değiştirmek için yeni istemler yapılandırılmış şekilde özgün .pt checkpoint'inden yeniden dışa aktar. 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şturulan yalnızca algılama yapan bir modeli de yapılandırabilir. Bu, istemle belirtilen sınıfları korurken maske dalını kaldırır:
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)İzleme Kullanımı#
İstemle belirtilen sınıflar doğrudan izlemeye aktarılır; böylece izleyicinin 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 algılayıcı ile ağır bir açık kelime dağarcıklı model arasında konumlanı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 algılama/segmentasyon yoluyla tahmin yapar ve diğer tüm modeller gibi dışa aktarılır. Eklediği özellik, yeniden eğitim yerine çıkarım sırasında sınıf listesini değiştirebilmendir; bunun karşılığında sıfır atış doğruluğu, kendi sınıfların üzerinde eğitilmiş bir modelin oldukça altındadır.
- Önceki YOLOE ailelerine karşı. YOLOE-26, YOLO26'nın NMS içermeyen uçtan uca başlığını devralır ve önceki üç ölçeğe (s/m/l) karşılık beş ölçeği (n/s/m/l/x) kapsar; ayrıca Performance bölümünde eşleşen her ölçekte öndedir.
- Transformer tabanlı açık kelime dağarcıklı algılayıcılara karşı. GLIP ve OWL-ViT, çıkarım sırasında bir görsel-dil Transformer'ı çalıştırır. YOLOE, istemleri bir kez kodlar ve ardından bunları evrişimli bir başlığın içindeki bölge özellikleriyle 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 üçü farklı soruları yanıtlar:
| YOLOE | SAM 3 | YOLO-World | |
|---|---|---|---|
| Şunun için tasarlandı | Adlandırılmış sınıfların gerçek zamanlı algılanması ve segmentasyonu | Kavram segmentasyonu ve istemlenebilir izleme | Gerçek zamanlı açık kelime dağarcıklı algılama |
| Maskeler | Evet, *-seg.pt checkpoint'leriyle | Evet | Hayır, yalnızca kutular |
| Görsel istemler | Evet (SAVPE) | Evet | Hayır |
| İstemsiz mod | Evet, 4.585 adlık kelime dağarcığı | Hayır | Hayır |
| Şu durumda seç | Yüksek işlem hacmine ihtiyacın varsa ve sınıfları adlandırabiliyorsan | En güçlü kavram segmentasyonuna ihtiyacın varsa ve hesaplama kaynaklarını ayırabiliyorsan | Zaten onu kullanıyorsan — aşağıdaki geçiş notuna bak |
YOLO-World'den mi geliyorsun? API aynı yapıdadır: YOLOWorld yerine YOLOE kullan, bir *-seg.pt checkpoint'i yükle ve set_classes() çağrını olduğu gibi koru. Maske ve görsel istemler kazanırsın; dondurulmuş sınıflarla ilgili dışa aktarım notu her ikisi için de geçerlidir.
Kullanım Alanları ve Uygulamalar#
Açık kelime dağarcıklı algılama, sınıf başına yeniden eğitim adımını ortadan kaldırır; bu, özellikle hedef listesinin önceden bilinmediği durumlarda önemlidir:
- Açık dünya algılaması — eğitim sırasında hiç kimsenin listelemediği nesnelerle karşılaşan robotik ve güvenlik sistemleri.
- Bir örnekten tek atışlı algılama — görsel istemler, tek bir referans kutusundan belirli bir parçayı, logoyu veya kusuru algılar; bu, endüstriyel denetimde kullanışlıdır.
- Uzun kuyruklu kataloglama — yerleşik 4.585 adlık kelime dağarcığı, biyoçeşitlilik izleme veya perakende envanteri taramaları için yeterince geniştir.
- Veri kümesi önyüklemesi — insan incelemesinden önce görüntüleri kutular ve maskelerle önceden etiketle, ardından sonuç üzerinde hızlı bir kapalı küme modeli eğit.
- Keyfi hedeflerin segmentasyonu — yayınlanan
*-seg.ptcheckpoint'leri her tahminle birlikte bir maske döndürür; böylece tıbbi görüntüleme ve uydu analizi, ikinci bir model olmadan piksel hassasiyetinde çıktı elde eder.
Yaygın bir yaklaşım iki modu birleştirir: mevcut olanları keşfetmek için önce istemsiz modu bir kez çalıştır, ardından önemli kategoriler için metin istemlerine geç.
Sınırlamalar#
YOLOE, sınıfları çıkarım sırasında değiştirebilme yeteneği karşılığında doğruluktan ödün verir. Karar vermeden önce bilmen gereken sonuçlar şunlardır:
- Sıfır atış doğruluğu, sınıfların üzerinde eğitilmiş bir modelin oldukça altındadır. İstemli checkpoint'ler LVIS minival üzerinde yaklaşık 22-40 mAP aralığına ulaşır; kendi verilerin üzerinde eğitilmiş kapalı küme bir YOLO, bu sınıflarda daha iyi sonuç verir. YOLOE'ye, eğitim verisi oluşturamayacağın sınıfları kapsamak için yönel; eğitimin yerine kullanma.
- Nadir kategoriler zayıf noktadır. Performance bölümündeki mAPr sütunu özellikle LVIS'in nadir sınıflarındaki doğruluğu bildirir ve metin istemi kullanıldığında her satırda yaygın ve sık sınıf sütunlarının altında kalır. Hedeflerin sıra dışı olduğunda başlıktaki mAP yerine bunu kontrol et.
- Bir istem, ilişkileri değil görünümü açıklar. Algılama, bölge özelliklerinin istem gömmesiyle karşılaştırılmasıyla çalışır; bu nedenle duruma, bağlama veya karşılaştırmaya dayanan — "hasarlı", "en soldaki", "taşınan" — istemlerin eşleştirilebileceği güvenilir bir karşılığı yoktur. Günlük kategori adlarına yakın ifadeleri tercih et.
- Büyük istem kümeleri gecikmeye mal olur. İstem gömmeleri bir kez hesaplanır; ancak her ileri geçişte bölge özellikleriyle karşılaştırılır.
yoloe-26s-seg.ptile CPU üzerinde ölçüldüğünde, 80 sınıftan 1.203 sınıfa geçerken ileri geçiş yaklaşık %19, tam 4.585 adlık kelime dağarcığında ise yaklaşık %89 büyür. Bildirilen FLOPs hiç değişmez; çünkü bölge-metin benzerliği hesaba katılmaz, dolayısıyla profil seni uyarmaz. - İstem verilene kadar sınıf adları yer tutucudur. Yeni yüklenmiş bir
*-seg.ptcheckpoint'i, sayısal adlara ("0","1", …) sahipnc=80bildirir; bu nedenle etiketleri okumadan önceset_classes()çağrısını yap. İstemsiz checkpoint'ler tam kelime dağarcığı doldurulmuş şekilde gelir.
Dağıtım Notları#
- Donanım. Çıkarım için 4-8 GB VRAM'e sahip bir NVIDIA GPU gerekir;
nvesölçekleri Jetson gibi uç GPU'larda veya daha düşük çözünürlükte CPU üzerinde çalışır. İnce ayar için tek bir GPU gerekir. - NMS varsayılan olarak sınıftan bağımsızdır. YOLOE,
agnostic_nms=Trueile tahmin yapar. Varsayılan olarak bu, yalnızca aynı sınıf içinde değil, farklı sınıflardaki daha düşük puanlı çakışan kutuları bastırarak bir nesne birkaç kategoriyle eşleştiğinde yinelenenleri önler.nms=Falseile YOLOE-26 herhangi bir IoU bastırması uygulamaz; bağımsız mod, bir çapa birden fazla sınıf etiketi yaymasına izin vermek yerine çapa başına yalnızca en iyi tek sınıfı tutar. Geçersiz kılmak içinagnostic_nms=Falsedeğerini aktar. - Toplu işleme. Toplu çıkarım doğrudan çalışır ve görsel istemler aynı çağrıdaki her görüntü için farklı olabilir.
Resmî Modelleri Sıfırdan Eğitme#
Çoğu okuyucunun buna hiç ihtiyacı olmaz. Bu işlem, Objects365, GQA ve Flickr30k üzerinden yayımlanan açık kelime dağarcıklı checkpoint'leri yeniden üretir — 8× RTX 4090 üzerinde yaklaşık 1,4 M eğitim örneği — ve yukarıdaki Train Usage bölümünde ele alınan kendi verilerin üzerinde ince ayar yapmayla ilgili değildir.
YOLOETrainer öğesini devralan her eğitici, varsayılan YOLOESegTrainer ve aşağıdaki sıfırdan eğitim eğiticilerinin tümü dahil olmak üzere compile=True değerini reddeder. compile=False değerini geçir (varsayılan). Yukarıda kullanılan iki ince ayar eğiticisi (YOLOEPESegTrainer ve YOLOEPETrainer) bu kısıtlamayı taşımaz.
Eğitim, segment açıklamaları gerektirir. Aşağıdaki işlenmiş dosyaları indir veya resmî ekibin sağladığı komut dosyasıyla kendi dosyalarını oluştur; bu komut dosyası SAM 2.1 tarafından desteklenir. Doğrulamada LVIS minival kullanılır.
| Veri kümesi | Tür | Örnekler | Kutular | İşlenmiş segment açıklamaları |
|---|---|---|---|---|
| Objects365v1 | Algılama | 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 istemi modeli önce eğitilir, diğer iki istem modu ise bunun üzerinde geliştirilir:
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 istem ve istemsiz checkpoint'ler, bu eğitilmiş metin istemi modelinden başlar ve her biri bir modülü günceller. YOLOESegVPTrainer, görsel istem tarifidir ve YOLOEPEFreeTrainer, istemsiz tarifidir; ancak bunların hiçbiri tek başına herhangi bir sınıfı dondurmaz: seçici eğitim, yanında geçirdiğin ve savpe hariç her başlık alt öğesini (sırasıyla her sınıflandırma kulesini) adlandıran freeze listesinden gelir; ayrıca istemsiz çalıştırma single_cls=True değerini gerektirir. Upstream YOLOE repository, v8 ölçekli modeller için tariflerin tamamını içerir.
Tamamlanmış bir istemsiz çalıştırma, çıkarım sırasında istem olmadan adlarını bildiren bir checkpoint'e yeniden parametrelenir; bunun için get_vocab ve set_vocab kullanılır:
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 checkpointAtıflar ve Teşekkürler#
YOLOE araştırmana veya projenize katkı sağladıysa lütfen Tsinghua University'den Ao Wang, Lihao Liu, Hui Chen, Zijia Lin, Jungong Han ve Guiguang Ding tarafından yazılan özgün makaleye atıf yap:
@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 bilgi için özgün YOLOE makalesine arXiv üzerinden ulaşabilirsin. Projenin kaynak koduna ve ek kaynaklarına GitHub deposu üzerinden erişebilirsin.
SSS#
Ultralytics YOLOE, YOLO-World'de bulunmayan iki özellik ekler: sınıf adının yerini bir örnek kutunun aldığı görsel istemler ve hiçbir istem olmadan yerleşik 4.585 adlık kelime dağarcığından yanıt veren istemsiz checkpoint'ler. Yayınlanan
*-seg.ptcheckpoint'lerindeki her tahmin ayrıca bir örnek segmentasyonu maskesi taşır. Doğruluk açısından özgün YOLOE makalesi, LVIS üzerinde YOLOE-v8s'nin YOLO-Worldv2-S'den 3,5 AP daha önde olduğunu; eğitim maliyetinin üçte biri ve çıkarım hızının 1,4 katı olduğunu gösterir. Geçiş tek satırlık bir değişikliktir — YOLOE Nasıl Karşılaştırılır bölümüne bak.Ultralytics YOLOE üç istem modunu destekler. Metin istemi,
*-seg.ptcheckpoint'inde dizeler olarak verilen sınıf adlarıdır ve olağan seçimdir. Görsel istem, sözcüklerle ifade edilmesi zor hedefler için referans görüntüsündeki bir veya daha fazla örnek kutudur. İstemsiz çıkarım, hiçbir şey sağlanmadan yerleşik 4.585 adlık kelime dağarcığından yanıt veren ayrı bir*-seg-pf.ptcheckpoint'i kullanır. Metin ve görsel istemler aynı checkpoint'leri paylaşır; istemsiz olanlar farklı dosyalardır veset_classes()değerini reddeder. Tam karşılaştırma için İstem Modu Seçimi bölümüne bak.yoloe-26s-seg.ptile başla: 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'in üzerine çıkan en küçük ölçektir. Nadir kategorilerde doğruluk gecikmeden daha önemliysem,lveyaxdeğerine geç — karşılaştırman gereken sütun Performance bölümündeki mAPr sütunudur. Yalnızca uç dağıtım içinndeğerine düş. Kendi sınıf adların yerine yerleşik kelime dağarcığını istediğinde aynı ölçeğin*-seg-pf.ptdosyasını yükle.object0veobject1gibi etiketler, tahminin görsel bir istemden geldiği anlamına gelir; bu istem, örnek kutularını adlarını taşımak yerine geçici numaralı sınıflar altında gruplar.visual_prompts["cls"]içinde ilettiğin sınıf kimlikleri yalnızca bu gruplamayı yapar. Model bunları, atadığın kimliklerin sırasına göreobject0,object1ve benzeri şekilde bildirir; bu nedenle sonuçta bunları kendi etiketlerinle eşleştir. Çıktıda kendi adlarının görünmesini istiyorsan bunun yerine metin istemi kullan.İstemsiz checkpoint'ler (
*-seg-pf.pt), sınıfları kendi yerleşik söz varlıkları üzerinden belirler ve harici istemleriAssertionError: Prompt-free model does not support setting classes. Please try with Text/Visual prompt models.ile reddeder. Kendi sınıf listen gerektiğinde bir*-seg.ptcheckpoint'i yükle. İstem Modu Seçimi bölümüne bak.İlk metin istemi, Ultralytics YOLOE'nin GitHub'dan ultralytics/CLIP paketini
pipile yüklemesine ve geçerli çalışma dizinine bir TorchScript metin kodlayıcısı indirmesine neden olur — YOLOE-26 için yaklaşık 254 MB; her model ailesi için gereken tam varlık bilgisi için Kurulum ve Gereksinimler bölümüne bak. Görsel istemler ve istemsiz checkpoint'ler bunların hiçbirine ihtiyaç duymaz. Hedef makinede indirme işlemini önlemek için istemleri bir kez ayarla vesave_prompt_embeddings()ile kaydet ya da sınıfları önceden yapılandırılmış şekilde modeli dışa aktar.Hayır — YOLOE, istemle belirtilen sınıfları dışa aktarma sırasında ağırlıklara işler; bu nedenle yüklenen bir dışa aktarım hem
set_classes()hem devisual_prompts=ifadelerini reddeder. Yeni istemleri yapılandırarak orijinal.ptcheckpoint'inden yeniden dışa aktar. Dışa aktarılan dosya standart bir YOLO modeli gibi davranır veYOLO()ile birlikteYOLOE()kullanılarak da yüklenebilir.Gerçek zamanlı iş hacmine ihtiyacın varsa ve sınıfları adlandırabiliyorsan YOLOE'yi; hızdan çok bir kavram üzerindeki segmentasyon kalitesi önemliyse SAM 3'ü kullan. Her ikisi de görsel örnekleri kabul eder; yalnızca YOLOE istemsiz bir moda sahiptir. Tam karşılaştırmayı YOLOE Karşılaştırması bölümünde bulabilirsin.