YOLOE: Gerçek Zamanlı Her Şeyi Görme#
Giriş#

YOLOE (Real-Time Seeing Anything), açık uçlu kelime dağarcığı (open-vocabulary) algılama ve segmentasyon için tasarlanmış, sıfır örnekli (zero-shot), istemle yönlendirilebilir yeni bir YOLO modelidir. Sabit kategorilerle sınırlı önceki YOLO modellerinin aksine YOLOE; metin, görsel veya dahili kelime dağarcığı istemlerini kullanarak herhangi bir nesne sınıfının gerçek zamanlı olarak algılanmasını sağlar. YOLOv10 üzerine inşa edilen ve YOLO-World modellerinden ilham alan YOLOE, hız ve doğruluğu minimum düzeyde etkileyerek en son teknoloji ürünü sıfır örnekli (zero-shot) performans sunar.
Watch: How to use Ultralytics YOLOE-26 (New) | Open Vocabulary & Real-Time Seeing Anything 🚀
Daha önceki YOLO modelleriyle karşılaştırıldığında YOLOE, verimliliği ve doğruluğu önemli ölçüde artırır. Eğitim kaynaklarının yalnızca üçte birini kullanarak ve 1,4 kat daha hızlı çıkarım hızlarına ulaşarak LVIS üzerinde YOLO-Worldv2'ye kıyasla +3,5 AP iyileştirme sağlar. COCO üzerinde fine-tune edilen (ince ayarı yapılan) YOLOE-v8-large, neredeyse 4 kat daha az eğitim süresi kullanarak YOLOv8-L modelini 0,1 mAP ile geride bırakır. Bu durum YOLOE'nin olağanüstü doğruluk, verimlilik ve çok yönlülük dengesini gözler önüne serer. Aşağıdaki bölümlerde YOLOE'nin mimarisi, kıyaslama (benchmark) karşılaştırmaları ve Ultralytics çerçevesiyle (framework) entegrasyonu incelenmektedir.
Mimariye Genel Bakış#
YOLOE, standart YOLO yapısını korur: özellik çıkarımı için evrişimli bir backbone (örneğin, CSP-Darknet), çok ölçekli füzyon için bir neck (örneğin, PAN-FPN) ve nesneliği, sınıfları ve kutuları bağımsız olarak tahmin eden (YOLOv8/YOLO11'deki gibi) çapasız (anchor-free), ayrıştırılmış (decoupled) bir tespit head yapısı. YOLOE, açık uçlu tespiti mümkün kılan üç yeni modül tanıtır:
-
Yeniden Parametrelendirilebilir Bölge-Metin Hizalaması (RepRTA - Re-parameterizable Region-Text Alignment): Küçük bir yardımcı ağ aracılığıyla metin gömme işlemlerini (embeddings) (ör. CLIP'ten alınanlar) iyileştirerek metin istemli algılamayı destekler. Çıkarım sırasında bu ağ ana modele entegre edilir ve böylece sıfır ek yük (overhead) sağlanır. YOLOE bu sayede çalışma zamanında bir ceza olmaksızın isteğe bağlı metin etiketli nesneleri (ör. daha önce görülmemiş "trafik ışığı" ("traffic light")) algılar.
-
Semantik Etkinleştirilmiş Görsel İstem Kodlayıcı (SAVPE): Hafif bir gömme dalı aracılığıyla görsel istemli tespiti sağlar. Bir referans görüntü verildiğinde SAVPE, semantik ve aktivasyon özelliklerini kodlar ve modeli görsel olarak benzer nesneleri tespit etmesi için koşullandırır; bu, logolar veya belirli parçalar için yararlı olan tek vuruşlu (one-shot) bir tespit yeteneğidir.
-
Tembel Bölge-İstem Karşıtlığı (LRPC): İstemsiz modda, YOLOE büyük sözlükler üzerinde (LVIS ve Objects365'ten 1200+ kategori) eğitilmiş dahili gömme verilerini kullanarak açık küme (open-set) tanıma gerçekleştirir. Harici istemler veya kodlayıcılar olmadan YOLOE, nesneleri gömme benzerliği araması yoluyla tanımlar ve çıkarım sırasında büyük etiket alanlarını verimli bir şekilde işler.
Ek olarak YOLOE, tespit kafasını bir maske tahmin dalı (YOLACT veya YOLOv8-Seg'e benzer) ile genişleterek minimum ek yükle gerçek zamanlı örnek segmentasyonu entegre eder.
En önemlisi, YOLOE'nin açık dünya modülleri, normal bir kapalı küme (closed-set) YOLO olarak kullanıldığında hiçbir çıkarım maliyeti getirmez. Eğitim sonrasında YOLOE parametreleri standart bir YOLO kafasına yeniden parametrelendirilebilir; böylece özdeş FLOP değerleri ve hız korunur (ör. YOLO11 ile birebir eşleşir).
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları#
Bu bölümde, belirli ön eğitilmiş (pretrained) ağırlıklarıyla birlikte sunulan modeller, destekledikleri görevler ve desteklenen modlar için ✅ ve desteklenmeyen modlar için ❌ ile belirtilen Çıkarım (Inference), Doğrulama (Validation), Eğitim (Training) ve Dışa Aktarma (Export) gibi çeşitli çalışma modlarıyla uyumlulukları ayrıntılı olarak ele alınmaktadır.
Metin/Görsel İstem modelleri#
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Eğitim | Doğrulama | Çıkarım | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S | yoloe-11s-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M | yoloe-11m-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L | yoloe-11l-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S | yoloe-v8s-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M | yoloe-v8m-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L | yoloe-v8l-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N | yoloe-26n-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S | yoloe-26s-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M | yoloe-26m-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L | yoloe-26l-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X | yoloe-26x-seg.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
İstemsiz modeller#
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Eğitim | Doğrulama | Çıkarım | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S-PF | yoloe-11s-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M-PF | yoloe-11m-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L-PF | yoloe-11l-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S-PF | yoloe-v8s-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M-PF | yoloe-v8m-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L-PF | yoloe-v8l-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N-PF | yoloe-26n-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S-PF | yoloe-26s-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M-PF | yoloe-26m-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L-PF | yoloe-26l-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X-PF | yoloe-26x-seg-pf.pt | Örnek Bölütleme | ✅ | ✅ | ✅ | ✅ |
| Model | boyut (piksel) | İstem Türü | mAPminival 50-95(e2e) | mAPminival 50-95 | mAPr | mAPc | mAPf | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|---|---|
| YOLOE-26n-seg | 640 | Metin/Görsel | 23.7 / 20.9 | 24.7 / 21.9 | 20.5 / 17.6 | 24.1 / 22.3 | 26.1 / 22.4 | 4.8 | 6.0 |
| YOLOE-26s-seg | 640 | Metin/Görsel | 29.9 / 27.1 | 30.8 / 28.6 | 23.9 / 25.1 | 29.6 / 27.8 | 33.0 / 29.9 | 13.1 | 21.7 |
| YOLOE-26m-seg | 640 | Metin/Görsel | 35.4 / 31.3 | 35.4 / 33.9 | 31.1 / 33.4 | 34.7 / 34.0 | 36.9 / 33.8 | 27.9 | 70.1 |
| YOLOE-26l-seg | 640 | Metin/Görsel | 36.8 / 33.7 | 37.8 / 36.3 | 35.1 / 37.6 | 37.6 / 36.2 | 38.5 / 36.1 | 32.3 | 88.3 |
| YOLOE-26x-seg | 640 | Metin/Görsel | 39.5 / 36.2 | 40.6 / 38.5 | 37.4 / 35.3 | 40.9 / 38.8 | 41.0 / 38.8 | 69.9 | 196.7 |
Kullanım Örnekleri#
YOLOE modelleri Python uygulamalarına kolayca entegre edilebilir. Ultralytics, geliştirme sürecini kolaylaştırmak için kullanıcı dostu Python API ve CLI komutları sağlar.
Eğitim Kullanımı#
Özel veri kümesinde ince ayar#
Herhangi bir ön eğitilmiş YOLOE modelini, hem nesne algılama (detection) hem de örnek segmentasyonu (instance segmentation) görevleri için özel YOLO veri setin üzerinde fine-tune edebilirsin.
Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Örnek segmentasyonu
Ön eğitilmiş bir YOLOE kontrol noktasını (checkpoint) fine-tune etmek çoğunlukla standart YOLO eğitim prosedürünü takip eder. Buradaki temel fark, YOLOEPESegTrainer değerinin trainer parametresi olarak açıkça model.train() fonksiyonuna aktarılmasıdır:
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPESegTrainer
model = YOLOE("yoloe-26s-seg.pt")
# Fine-tune on your segmentation dataset
results = model.train(
data="coco128-seg.yaml", # Segmentation dataset
epochs=80,
patience=10,
trainer=YOLOEPESegTrainer, # <- Important: use segmentation trainer
)Nesne tespiti
Tüm pretrained YOLOE models varsayılan olarak örnek bölütleme (instance segmentation) gerçekleştirir. Bu önceden eğitilmiş kontrol noktalarını (checkpoints) bir nesne tespiti modeli eğitmek için kullanmak üzere, YAML yapılandırmasını kullanarak sıfırdan bir nesne tespiti modeli başlatın, ardından aynı ölçekteki önceden eğitilmiş bölütleme kontrol noktasını yükleyin. Bir nesne tespiti modeli eğittiğimiz için YOLOEPESegTrainer yerine YOLOEPETrainer kullandığımızı unutmayın:
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOEPETrainer
# Initialize a detection model from a config
model = YOLOE("yoloe-26s.yaml")
# Load weights from a pretrained segmentation checkpoint (same scale)
model.load("yoloe-26s-seg.pt")
# Fine-tune on your detection dataset
results = model.train(
data="coco128.yaml", # Detection dataset
epochs=80,
patience=10,
trainer=YOLOEPETrainer, # <- Important: use detection trainer
)Tahmin Kullanımı#
YOLOE, hem metin tabanlı hem de görsel istemleri destekler. İstemleri kullanmak son derece basittir; aşağıda gösterildiği gibi bunları predict yöntemi üzerinden iletmen yeterlidir:
Metin istemleri, metinsel açıklamalar aracılığıyla tespit etmek istediğin sınıfları belirtmene olanak tanır. Aşağıdaki kod, bir görüntüdeki insanları ve otobüsleri tespit etmek için YOLOE'yi nasıl kullanabileceğini gösterir:
from ultralytics import YOLOE
# Initialize a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Set text prompt to detect person and bus. You only need to do this once after you load the model.
model.set_classes(["person", "bus"])
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Doğrulama Kullanımı#
Bir veri setinde model doğrulama işlemi şu şekilde kolaylaştırılmıştır:
from ultralytics import YOLOE
# Create a YOLOE model
model = YOLOE("yoloe-26l-seg.pt") # or yoloe-26s/m-seg.pt for different sizes
# Conduct model validation on the COCO128-seg example dataset
metrics = model.val(data="coco128-seg.yaml")Dışa Aktarma Kullanımı#
Dışa aktarma süreci, metin ve görsel istemleri işleme esnekliği eklenmiş olarak diğer YOLO modellerine benzer:
set_classes() (veya görsel istemler için refer_image aracılığıyla) yapılandırılan sınıflar, dışarı aktarılan ağırlıklara işlenir. Dışarı aktarıldıktan sonra model artık yeni istemleri kabul edemez: Yüklenmiş bir dışarı aktarmada predict() üzerinde set_classes() çağrısı yapmak veya visual_prompts=... geçirmek başarısız olur. Tespit edilen sınıfları değiştirmek için, yeni istemler yapılandırılmış olarak orijinal .pt kontrol noktasından yeniden dışarı aktarın. Dışarı aktarılan dosya standart bir YOLO dedektörü gibi davranır ve YOLOE() yerine YOLO() ile de yüklenebilir.
İ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.
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)from ultralytics import YOLOE
# Select yoloe-26s/m-seg.pt for different sizes
model = YOLOE("yoloe-26l-seg.pt")
# Configure the set_classes() before exporting the model
model.set_classes(["person", "bus"])
export_model = model.export(format="onnx")
model = YOLOE(export_model)
# Run detection on the given image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()Resmi Modelleri Eğit#
Veri setlerini hazırlayın#
Resmi YOLOE modellerini eğitmek, eğitim verileri için segment etiketlerine ihtiyaç duyar; işte resmi ekip tarafından sağlanan SAM2.1 models tarafından desteklenen, veri kümelerini segment etiketlerine dönüştüren the script provided by official team. Veya resmi ekip tarafından sağlanan aşağıdaki tablodaki Processed Segment Annotations öğesini doğrudan indirebilirsiniz.
- Eğitim verisi
| Veri Seti | Tip | Örnekler | Kutular | Ham Tespit Ek Açıklamaları | İşlenmiş Segment Ek Açıklamaları |
|---|---|---|---|---|---|
| Objects365v1 | Tespit | 609k | 9621k | objects365_train.json | objects365_train_segm.json |
| GQA | Grounding | 621k | 3681k | final_mixed_train_no_coco.json | final_mixed_train_no_coco_segm.json |
| Flickr30k | Grounding | 149k | 641k | final_flickr_separateGT_train.json | final_flickr_separateGT_train_segm.json |
- Doğrulama verisi
| Veri Seti | Tip | Açıklama Dosyaları |
|---|---|---|
| LVIS minival | Tespit | minival.txt |
Sıfırdan eğitim başlatma#
Visual Prompt modelleri, iyi eğitilmiş Text Prompt modelleri temel alınarak fine-tune edilir.
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch
# Option 1: Use Python dictionary
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"]},
}
# Option 2: Use YAML file (yoloe_data.yaml)
# 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 data="yoloe_data.yaml" if using YAML file
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",
)YOLOE Performans Karşılaştırması#
YOLOE, hız veya model boyutundan ödün vermeden COCO ve LVIS gibi standart kıyaslamalarda (benchmark) kapalı küme (closed-set) YOLO modellerinin doğruluğunu yakalar veya aşar. Aşağıdaki tablo, YOLOE-L (YOLO11 üzerine kurulmuştur) ve YOLOE26-L (YOLO26 üzerine kurulmuştur) modellerini karşılık gelen kapalı küme modellerle karşılaştırmaktadır:
| Model | COCO mAP50-95 | LVIS mAP50-95 | Çıkarım Hızı (T4) | Parametreler | GFLOPs (640px) |
|---|---|---|---|---|---|
| YOLOv8-L (kapalı küme) | 52.9% | - | 9.06 ms (110 FPS) | 43.7 M | 165.2 B |
| YOLO11-L (kapalı küme) | 53.5% | - | 6.2 ms (161 FPS) | 26.2 M | 86.9 B |
| YOLOE-L (açık kelime dağarcığı) | 52.6% | 35.2% | 6.2 ms (161 FPS) | 26.2 M | 86.9 B† |
| YOLOE26-L (açık kelime dağarcığı) | - | 36.8% | 6.2 ms (161 FPS) | 32.3 M | 88.3 B† |
† YOLOE-L, YOLO11-L'nin mimarisini paylaşır ve YOLOE26-L, YOLO26-L'nin mimarisini paylaşır; bu da benzer çıkarım hızı ve GFLOPs ile sonuçlanır.
YOLOE26-L, T4 GPU üzerinde 640×640 görüntüleri 6.2 ms (161 FPS) hızında işleyerek 32.3M parametre ve 88.3B FLOPs ile 36.8% LVIS mAP değerine ulaşır. Bu, YOLOE-L'in 35.2% LVIS mAP değerine göre bir gelişmedir ve aynı çıkarım hızını korur. En önemlisi, YOLOE'nin açık kelime dağarcığı (open-vocabulary) modülleri çıkarım maliyeti getirmez, bu da "bedava öğle yemeği yoktur takası" tasarımını kanıtlar.
Sıfır vuruşlu (zero-shot) görevler için YOLOE26, önceki açık kelime dağarcığı dedektörlerinden önemli ölçüde daha iyi performans gösterir: LVIS üzerinde YOLOE26-S, YOLO-World-S'i +11.4 AP ile geride bırakarak 29.9% mAP değerine ulaşırken, YOLOE26-L +10.0 AP farkla YOLO-World-L'i geçerek 36.8% mAP değerine ulaşır. YOLOE26, T4 GPU üzerinde 161 FPS hızında verimli çıkarım sağlayarak gerçek zamanlı açık kelime dağarcığı uygulamaları için idealdir.
Kıyaslama koşulları: YOLOE sonuçları, Objects365, GoldG ve LVIS üzerinde önceden eğitilmiş, ardından COCO üzerinde ince ayar yapılmış veya değerlendirilmiş modellerden alınmıştır. YOLOE'nin YOLOv8'e göre sahip olduğu küçük mAP avantajı, kapsamlı ön eğitimden kaynaklanmaktadır. Bu açık kelime dağarcığı eğitimi olmadan, YOLOE benzer büyüklükteki YOLO modelleriyle eşleşir; bu da SOTA doğruluğunu ve performans cezası olmaksızın açık dünya esnekliğini doğrular.
Önceki Modellerle Karşılaştırma#
YOLOE, önceki YOLO modellerine ve açık kelime dağarcığı dedektörlerine göre kayda değer ilerlemeler sunar:
-
YOLOE ile YOLOv5 Karşılaştırması: YOLOv5 iyi bir hız-doğruluk dengesi sunuyordu ancak yeni sınıflar için yeniden eğitim gerektiriyordu ve çapa tabanlı (anchor-based) kafalar kullanıyordu. Buna karşın YOLOE çapasızdır (anchor-free) ve yeni sınıfları dinamik olarak algılar. YOLOv8'in geliştirmeleri üzerine inşa edilen YOLOE, YOLOv5'ten farklı olarak daha yüksek doğruluk elde eder (COCO üzerinde YOLOv5'in ~%50 mAP değerine karşılık %52,6) ve örnek segmentasyonunu entegre eder.
-
YOLOE ile YOLOv8 Karşılaştırması: YOLOE, YOLOv8'in yeniden tasarlanan mimarisini genişleterek benzer veya üstün bir doğruluk elde eder (YOLOv8-L'nin ~44M parametre ile %52,9 mAP değerine karşılık ~26M parametre ile %52,6 mAP). Daha güçlü ön eğitim sayesinde eğitim süresini önemli ölçüde azaltır. Temel ilerleme, YOLOv8'in kapalı küme tasarımından farklı olarak YOLOE'nin istemler aracılığıyla daha önce görülmemiş nesneleri ("kuş scooter'ı" ("bird scooter") veya "barış sembolü" ("peace symbol")) algılayan açık dünya yeteneğidir.
-
YOLOE ile YOLO11 Karşılaştırması: YOLO11, artırılmış verimlilik ve daha az parametreyle (~%22 azalma) YOLOv8'i geliştirir. YOLOE bu kazanımları doğrudan devralır; YOLO11'in çıkarım hızını ve parametre sayısını (~26M parametre) korurken açık uçlu kelime dağarcığı ile algılama ve segmentasyon ekler. Kapalı küme senaryolarında YOLOE, YOLO11 ile eşdeğerdir ancak hızdan ödün vermeden görünmeyen sınıfları algılama adaptasyonunu kritik bir şekilde ekleyerek YOLO11 + açık dünya yeteneği sunar.
-
YOLOE26 ile YOLOE (YOLO11 tabanlı) Karşılaştırması: YOLOE26, YOLO26 mimarisi üzerine inşa edilmiştir ve daha hızlı çıkarım için NMS'siz uçtan uca (end-to-end) tasarımını miras alır. LVIS üzerinde YOLOE26-L, %36,8 mAP elde ederek YOLOE-L'nin %35,2 mAP değerini geliştirir. YOLOE26, YOLOE'nin üç ölçeğine (S/M/L) kıyasla beş model ölçeğinin tümünü (N/S/M/L/X) sunarak farklı dağıtım senaryoları için daha fazla esneklik sağlar.
-
YOLOE26 ile Önceki Açık Uçlu Kelime Dağarcığı Dedektörlerinin Karşılaştırması: Daha önceki açık uçlu kelime dağarcığı modelleri (GLIP, OWL-ViT, YOLO-World), yavaş çıkarıma yol açacak şekilde büyük ölçüde vizyon-dil transformer modellerine güveniyordu. LVIS üzerinde YOLOE26-S %29,9 mAP (YOLO-World-S'ye kıyasla +11,4 AP) ve YOLOE26-L %36,8 mAP (YOLO-World-L'ye kıyasla +10,0 AP) elde ederken T4 GPU üzerinde 161 FPS hızında gerçek zamanlı çıkarımı sürdürür. Transformer tabanlı yaklaşımlarla (ör. GLIP) karşılaştırıldığında YOLOE26, büyüklük mertebesinde daha hızlı çıkarım sunarak açık küme algılamadaki doğruluk-verimlilik boşluğunu etkili bir şekilde kapatır.
Özetle, YOLOE ve YOLOE26, YOLO'nun bilinen hız ve verimliliğini korur, doğruluk konusunda seleflerini geride bırakır, segmentasyonu entegre eder ve güçlü açık dünya algılamasını sunar. YOLOE26, YOLO26'dan gelen NMS'siz uçtan uca çıkarım ile mimariyi daha da geliştirerek onu gerçek zamanlı açık kelime dağarcığı uygulamaları için ideal hale getirir.
Kullanım Durumları ve Uygulamalar#
YOLOE'nin açık kelime dağarcığı algılama ve segmentasyonu, geleneksel sabit sınıflı modellerin ötesinde çeşitli uygulamalara olanak tanır:
-
Açık Dünya Nesne Algılama: Robotların istemleri kullanarak önceden görülmemiş nesneleri tanıdığı robotik gibi dinamik senaryolar veya güvenlik sistemlerinin yeniden eğitim gerektirmeden yeni tehditlere (ör. tehlikeli maddeler) hızla uyum sağlaması için idealdir.
-
Az Örnekli (Few-Shot) ve Tek Örnekli (One-Shot) Algılama: Görsel istemleri (SAVPE) kullanan YOLOE, tek bir referans görselden yeni nesneleri hızlı bir şekilde öğrenir; bu, endüstriyel denetim (parçaları veya kusurları anında tanımlama) veya minimum kurulumla görsel aramalara olanak tanıyan özel gözetim (custom surveillance) için mükemmeldir.
-
Geniş Kelime Dağarcığı ve Uzun Kuyruk (Long-Tail) Tanıma: 1000'den fazla sınıflı bir kelime dağarcığıyla donatılmış olan YOLOE; biyolojik çeşitlilik izleme (nadir türleri algılama), müze koleksiyonları, perakende envanteri veya e-ticaret gibi görevlerde, sınıf başına kapsamlı eğitim gerektirmeden birçok sınıfı güvenilir bir şekilde tanımlayarak öne çıkar.
-
Etkileşimli Algılama ve Segmentasyon: YOLOE, doğal girdiler (metin veya görsel yönlendirmeler) ile desteklenen aranabilir video/görüntü geri alma, artırılmış gerçeklik (AR) ve sezgisel görüntü düzenleme gibi gerçek zamanlı etkileşimli uygulamaları destekler. Kullanıcılar, segmentasyon maskeleri kullanarak nesneleri hassas bir şekilde izole edebilir, tanımlayabilir veya düzenleyebilir.
-
Otomatik Veri Etiketleme ve Önyükleme: YOLOE, başlangıç sınırlayıcı kutu (bounding box) ve segmentasyon ek açıklamaları sağlayarak hızlı veri kümesi oluşturmayı kolaylaştırır ve insan etiketleme çabasını önemli ölçüde azaltır. Özellikle, mevcut nesneleri otomatik olarak tanımlayabildiği ve daha hızlı özel modeller oluşturmaya yardımcı olduğu büyük medya koleksiyonlarının analitiği için değerlidir.
-
Herhangi Bir Nesne için Segmentasyon: İstemler aracılığıyla segmentasyon yeteneklerini isteğe bağlı nesnelere kadar genişletir; bu, tıbbi görüntüleme, mikroskopi veya uydu görüntüsü analizi için özellikle faydalıdır ve özel ön eğitilmiş modellere ihtiyaç duymadan yapıları otomatik olarak tanımlar ve hassas bir şekilde segmentlere ayırır. SAM gibi modellerin aksine YOLOE, nesneleri aynı anda otomatik olarak tanır ve segmentlere ayırır; bu da içerik oluşturma veya sahne anlama gibi görevlere yardımcı olur.
Tüm bu kullanım senaryolarında YOLOE'nin temel avantajı, dinamik senaryolarda algılama, tanıma ve segmentasyon için birleşik bir model sağlayan çok yönlülüktür. Verimliliği, kaynak kısıtlı cihazlarda gerçek zamanlı performansı garanti ederek robotik, otonom sürüş, savunma ve ötesi için idealdir.
İhtiyaçlarına göre YOLOE modunu seç:
- Kapalı küme modu: Sabit sınıflı görevler için (maksimum hız ve doğruluk).
- Yönlendirmeli mod: Metin veya görsel yönlendirmelerle yeni nesneleri hızla ekle.
- Yönlendirmesiz açık küme modu: Birçok kategoride genel algılama (kataloglama ve keşif için ideal).
Genellikle modları birleştirmek (yönlendirmesiz keşif ve ardından hedeflenmiş yönlendirmeler gibi), YOLOE'nin tam potansiyelinden yararlanmanı sağlar.
Eğitim ve Çıkarım#
YOLOE, diğer YOLO modellerine (YOLOv8, YOLO-World) benzer şekilde Ultralytics Python API ve CLI ile sorunsuz bir şekilde entegre olur. Hızlı bir şekilde başlamanın yolu şöyledir:
from ultralytics import YOLO
# Load pretrained YOLOE model and train on custom data
model = YOLO("yoloe-26s-seg.pt")
model.train(data="path/to/data.yaml", epochs=50, imgsz=640)
# Run inference using text prompts ("person", "bus")
model.set_classes(["person", "bus"])
results = model.predict(source="test_images/street.jpg")
results[0].save() # save annotated outputBurada YOLOE varsayılan olarak standart bir dedektör gibi davranır ancak sınıfları (set_classes) belirterek istemli algılamaya kolayca geçer. Sonuçlar sınırlayıcı kutular, maskeler ve etiketler içerir.
Diğer Desteklenen Görevler#
- Doğrulama (Validation):
model.val()veyayolo valkullanarak doğruluğu kolayca değerlendir. - Dışa Aktarma (Export): Dağıtımı kolaylaştırmak için YOLOE modellerini (
model.export()) ONNX, TensorRT vb. formatlara dışa aktar. - İzleme (Tracking): YOLOE, entegre edildiğinde nesne izlemeyi (
yolo track) destekler; bu, videolardaki istemli sınıfları izlemek için kullanışlıdır.
YOLOE, çıkarım sonuçlarına otomatik olarak segmentasyon maskeleri (results[0].masks) dahil eder; böylece ayrı modellere ihtiyaç duymadan nesne çıkarma veya ölçüm gibi piksel hassasiyetindeki görevleri basitleştirir.
Başlarken#
Bu adımları izleyerek YOLOE'yi Ultralytics ile hızlıca kur:
-
Kurulum: Ultralytics paketini kur veya güncelle:
pip install -U ultralytics -
YOLOE Ağırlıklarını İndirme: Ön eğitilmiş YOLOE modelleri (ör. YOLOE-v8-S/L, YOLOE-11 varyantları) YOLOE GitHub sürümlerinden (releases) temin edilebilir. Ultralytics YOLO sınıfına yüklemek için istediğin
.ptdosyasını indirmen yeterlidir. -
Donanım Gereksinimleri:
- Çıkarım (Inference): Önerilen GPU (≥4-8GB VRAM'li NVIDIA). Küçük modeller, uç (edge) GPU'larda (ör. Jetson) veya daha düşük çözünürlüklerde CPU'larda verimli bir şekilde çalışır. Kompakt iş istasyonlarında yüksek performanslı çıkarım için NVIDIA DGX Spark kılavuzumuza göz at.
- Eğitim: YOLOE'ye özel veriler üzerinde ince ayar yapmak genellikle sadece bir GPU gerektirir. Yazarların kullandığı kapsamlı açık kelime dağarcığı ön eğitimi (LVIS/Objects365) önemli miktarda hesaplama gücü (8× RTX 4090 GPU) gerektirmiştir.
-
Yapılandırma (Configuration): YOLOE yapılandırmaları standart Ultralytics YAML dosyalarını kullanır. Varsayılan yapılandırmalar (ör.
yoloe-26s-seg.yaml) genellikle yeterlidir ancak gerektiğinde ana omurgayı (backbone), sınıfları veya görsel boyutunu değiştirebilirsin. -
YOLOE Çalıştırma:
-
Hızlı çıkarım (yönlendirmesiz):
yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg" -
Yönlendirmeli algılama (metin yönlendirmesi örneği):
from ultralytics import YOLO model = YOLO("yoloe-26s-seg.pt") model.set_classes(["bowl", "apple"]) results = model.predict("kitchen.jpg") results[0].save()
-
-
Entegrasyon İpuçları:
- Sınıf adları: Varsayılan YOLOE çıktıları LVIS kategorilerini kullanır; kendi etiketlerini belirtmek için
set_classes()kullan. - Hız: YOLOE, yönlendirme kullanılmadığı sürece ek yük getirmez. Metin yönlendirmelerinin etkisi minimumdur; görsel yönlendirmelerin ise biraz daha fazladır.
- NMS davranışı: YOLOE, tahmin sırasında otomatik olarak
agnostic_nms=Truekullanır ve sınıflar arasındaki örtüşen kutuları birleştirir. Bu, aynı nesne YOLOE'nin geniş kelime dağarcığındaki (1200+ LVIS sınıfı) birden fazla kategoriyle eşleştiğinde mükerrer (duplicate) algılamaları önler. Açıkçaagnostic_nms=Falseileterek bunu geçersiz kılabilirsin. - Toplu çıkarım (Batch inference): Doğrudan desteklenir (
model.predict([img1, img2])). Görsele özel istemler için görselleri ayrı ayrı çalıştır.
- Sınıf adları: Varsayılan YOLOE çıktıları LVIS kategorilerini kullanır; kendi etiketlerini belirtmek için
Ultralytics belgeleri ek kaynaklar sağlar. YOLOE, tanıdık YOLO ekosistemi içinde güçlü açık dünya yeteneklerini kolayca keşfetmene olanak tanır.
Pro İpucu: YOLOE'nin sıfır vuruşlu (zero-shot) doğruluğunu en üst düzeye çıkarmak için sıfırdan eğitmek yerine sağlanan kontrol noktalarından (checkpoints) ince ayar yap. Algılama doğruluğunu artırmak için yaygın eğitim etiketleriyle (LVIS kategorilerine bak) uyumlu yönlendirme kelimeleri kullan.
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:
@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#
YOLOE, YOLO-World'den nasıl farklıdır?#
Hem YOLOE hem de YOLO-World açık uçlu kelime dağarcığı ile algılamayı etkinleştirse de YOLOE çeşitli avantajlar sunar. YOLOE, LVIS üzerinde YOLO-Worldv2'den 3 kat daha az eğitim kaynağı kullanarak ve 1,4 kat daha hızlı çalışarak +3,5 AP daha yüksek doğruluk elde eder. YOLOE ayrıca YOLO-World öncelikli olarak metin istemlerine odaklanırken üç istem modunu (metin, görsel ve dahili kelime dağarcığı) destekler. Ek olarak YOLOE, ek bir yük olmaksızın algılanan nesneler için piksel hassasiyetinde maskeler sağlayan yerleşik örnek segmentasyonu yeteneklerini içerir.
YOLOE'yi normal bir YOLO modeli olarak kullanabilir miyim?#
Evet, YOLOE performans cezası olmaksızın standart bir YOLO modeli gibi çalışabilir. Kapalı küme modunda (yönlendirmesiz) kullanıldığında, YOLOE'nin açık kelime dağarcığı modülleri standart algılama başlığına yeniden parametrelendirilir ve bu da eşdeğer YOLO11 modelleriyle aynı hız ve doğruluğu sağlar. Bu, YOLOE'yi son derece çok yönlü kılar; maksimum hız için geleneksel bir dedektör olarak kullanabilir ve ardından yalnızca gerektiğinde açık kelime dağarcığı moduna geçebilirsin.
YOLOE ile ne tür yönlendirmeler kullanabilirim?#
YOLOE üç tür yönlendirmeyi destekler:
- Metin yönlendirmeleri: Nesne sınıflarını doğal dille belirt (örneğin, "person", "traffic light", "bird scooter")
- Görsel yönlendirmeler: Algılamak istediğin nesnelerin referans görüntülerini sağla
- Dahili kelime dağarcığı: Harici yönlendirmeler olmadan YOLOE'nin yerleşik 1200+ kategorilik kelime dağarcığını kullan
Bu esneklik, YOLOE'yi modeli yeniden eğitmeden çeşitli senaryolara uyarlamana olanak tanır ve bu da onu özellikle algılama gereksinimlerinin sıkça değiştiği dinamik ortamlar için kullanışlı hale getirir.
YOLOE örnek segmentasyonunu nasıl yönetir?#
YOLOE, algılama kafasını bir maske tahmin dalıyla genişleterek örnek segmentasyonunu doğrudan mimarisine entegre eder. Bu yaklaşım YOLOv8-Seg'e benzer ancak istem verilen herhangi bir nesne sınıfı için çalışır. Segmentasyon maskeleri çıkarım sonuçlarına otomatik olarak dahil edilir ve results[0].masks aracılığıyla erişilebilir. Bu birleşik yaklaşım, ayrı algılama ve segmentasyon modellerine olan ihtiyacı ortadan kaldırarak piksel hassasiyetinde nesne sınırları gerektiren uygulamalar için iş akışlarını kolaylaştırır.
YOLOE, özel yönlendirmelerle (prompts) çıkarımı nasıl gerçekleştirir?#
YOLO-World benzer şekilde YOLOE, verimliliği artırmak için çevrimdışı bir kelime dağarcığı kullanan "önce istem ver, sonra algıla" stratejisini destekler. Açıklamalar veya belirli nesne kategorileri gibi özel istemler önceden kodlanır ve çevrimdışı kelime dağarcığı gömmeleri (embeddings) olarak saklanır. Bu yaklaşım, yeniden eğitim gerektirmeden algılama sürecini kolaylaştırır. Belirli algılama görevlerine uyarlamak için bu istemleri model içinde dinamik olarak ayarlayabilirsin:
from ultralytics import YOLO
# Initialize a YOLOE model
model = YOLO("yoloe-26s-seg.pt")
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()