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

YOLOE (Gerçek Zamanlı Her Şeyi Görme), açık kelime dağarcıklı (open-vocabulary) tespit ve segmentasyon için tasarlanmış, sıfır örnekli (zero-shot), istem tabanlı YOLO modellerinde yeni bir ilerlemedir. 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ı tespitini sağlar. YOLOv10 üzerine inşa edilen ve YOLO-World modelinden esinlenen YOLOE, hız ve doğruluktan ödün vermeden en gelişmiş sıfır örnekli 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. LVIS üzerinde YOLO-Worldv2'ye göre +3.5 AP artış sağlarken, eğitim kaynaklarının sadece üçte birini kullanır ve 1.4 kat daha hızlı çıkarım hızı sunar. COCO üzerinde ince ayar yapılan YOLOE-v8-large, YOLOv8-L'yi 0.1 mAP farkla geçer ve yaklaşık 4 kat daha az eğitim süresi kullanır. Bu, YOLOE'nin doğruluk, verimlilik ve çok yönlülük arasındaki olağanüstü dengesini gösterir. Aşağıdaki bölümler YOLOE mimarisini, kıyaslama karşılaştırmalarını ve Ultralytics çerçevesi ile entegrasyonunu incelemektedir.
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 nesnelliği, sınıfları ve kutuları bağımsız olarak tahmin eden çapasız (anchor-free), ayrıştırılmış (decoupled) bir tespit head yapısı (YOLOv8/YOLO11'deki gibi). YOLOE, açık kelime dağarcıklı tespiti mümkün kılan üç yeni modül tanıtır:
-
Yeniden Parametrelendirilebilir Bölge-Metin Hizalama (RepRTA): Küçük bir yardımcı ağ aracılığıyla metin gömme (embeddings) (örneğin CLIP'ten gelen) verilerini iyileştirerek metin istemli tespiti destekler. Çıkarım sırasında bu ağ ana modele katlanır ve böylece sıfır ek yük sağlar. YOLOE böylece (örneğin görünmeyen "trafik lambası") gibi rastgele metin etiketli nesneleri çalışma zamanı cezaları olmadan tespit eder.
-
Semantik Aktif Görsel İstemi Kodlayıcısı (SAVPE): Hafif bir gömme dalı aracılığıyla görsel istemli tespiti mümkün kılar. Bir referans görsel 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 örnekli (one-shot) bir tespit yeteneğidir.
-
Tembel Bölge-İstemi Karşıtlığı (LRPC): İstemsiz modda, YOLOE geniş kelime dağarcığı (LVIS ve Objects365'ten 1200+ kategori) üzerinde eğitilmiş dahili gömme verilerini kullanarak açık küme tanıma gerçekleştirir. Harici istemler veya kodlayıcılar olmadan YOLOE, nesneleri gömme benzerliği sorgulaması yoluyla tanımlar ve çıkarım sırasında büyük etiket alanlarını verimli bir şekilde yönetir.
Ek olarak YOLOE, tespit kafasını (YOLACT veya YOLOv8-Seg'e benzer şekilde) bir maske tahmin dalıyla genişleterek minimum ek yük ile gerçek zamanlı örnek segmentasyonu (instance segmentation) entegre eder.
En önemlisi, YOLOE'nin açık dünya modülleri, normal bir kapalı küme 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 aynı FLOP değerleri ve hız korunur (örneğin, YOLO11 ile tam olarak eşleşir).
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları
Bu bölüm, mevcut önceden eğitilmiş ağırlıklarıyla sunulan modelleri, destekledikleri görevleri ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi çeşitli çalışma modlarıyla uyumluluklarını detaylandırır; burada desteklenen modlar ✅, desteklenmeyenler ise ❌ ile gösterilmiştir.
Metin/Görsel İstemi modelleri
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S | yoloe-11s-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M | yoloe-11m-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L | yoloe-11l-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S | yoloe-v8s-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M | yoloe-v8m-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L | yoloe-v8l-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N | yoloe-26n-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S | yoloe-26s-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M | yoloe-26m-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L | yoloe-26l-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X | yoloe-26x-seg.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
İstemsiz (Prompt Free) modeller
| Model Tipi | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa Aktar (Export) |
|---|---|---|---|---|---|---|
| YOLOE-11S-PF | yoloe-11s-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11M-PF | yoloe-11m-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-11L-PF | yoloe-11l-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8S-PF | yoloe-v8s-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8M-PF | yoloe-v8m-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-v8L-PF | yoloe-v8l-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26N-PF | yoloe-26n-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26S-PF | yoloe-26s-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26M-PF | yoloe-26m-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26L-PF | yoloe-26l-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
| YOLOE-26X-PF | yoloe-26x-seg-pf.pt | Instance Segmentasyon | ✅ | ✅ | ✅ | ✅ |
YOLOE-26 modellerinin ayrıntılı performans kıyaslamaları için YOLO26 Dokümantasyonuna bak.
Kullanım Örnekleri
YOLOE modellerini Python uygulamalarına entegre etmek kolaydır. Ultralytics, geliştirmeyi kolaylaştırmak için kullanıcı dostu Python API ve CLI komutları sağlar.
Eğitim Kullanımı
Özel veri setinde İnce Ayar (Fine-Tuning)
Hem tespit hem de örnek segmentasyonu görevleri için herhangi bir önceden eğitilmiş YOLOE modeline kendi özel YOLO veri setinde ince ayar yapabilirsin.
Watch: How to Train YOLOE on Car Parts Segmentation Dataset | Open-Vocabulary Model, Prediction & Export 🚀
Örnek segmentasyonu
Fine-tuning a YOLOE pretrained checkpoint mostly follows the standard YOLO training procedure. The key difference is explicitly passing YOLOEPESegTrainer as the trainer parameter to model.train():
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
All pretrained YOLOE models perform instance segmentation by default. To use these pretrained checkpoints for training a detection model, initialize a detection model from scratch using the YAML configuration, then load the pretrained segmentation checkpoint of the same scale. Note that we use YOLOEPETrainer instead of YOLOEPESegTrainer since we're training a detection model:
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 (Predict) Kullanımı
YOLOE hem metin hem de görsel istemlerini destekler. İstemleri kullanmak oldukça basittir; aşağıda gösterildiği gibi predict yöntemiyle iletmen yeterlidir:
Metin istemleri, tespit etmek istediğin sınıfları metin açıklamalarıyla belirtmene olanak tanır. Aşağıdaki kod, YOLOE'yi bir görüntüdeki insanları ve otobüsleri tespit etmek için 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 (Val) Kullanımı
Bir veri seti üzerinde model doğrulaması ş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 diğer YOLO modellerine benzer, ancak metin ve görsel istemlerini işleme esnekliği eklenmiştir:
Classes configured with set_classes() (or via refer_image for visual prompts) are baked into the exported weights. Once exported, the model can no longer accept new prompts: calling set_classes() or passing visual_prompts=... to predict() on a loaded export will fail. To change the detected classes, re-export from the original .pt checkpoint with the new prompts configured. The exported file behaves like a standard YOLO detector and can also be loaded with YOLO() instead of YOLOE().
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ğitme
Veri setlerini hazırla
Training official YOLOE models needs segment annotations for train data, here's the script provided by official team that converts datasets to segment annotations, powered by SAM2.1 models. Or you can directly download the provided Processed Segment Annotations in following table provided by official team.
- Eğitim verisi
| Veri Kümesi | Tür | Örnekler | Boxes | Ham Tespit Ek Açıklamaları | İşlenmiş Segment Ek Açıklamaları |
|---|---|---|---|---|---|
| Objects365v1 | Algılama | 609k | 9621k | objects365_train.json | objects365_train_segm.json |
| GQA | Temellendirme (Grounding) | 621k | 3681k | final_mixed_train_no_coco.json | final_mixed_train_no_coco_segm.json |
| Flickr30k | Temellendirme | 149k | 641k | final_flickr_separateGT_train.json | final_flickr_separateGT_train_segm.json |
- Doğrulama (Val) verisi
| Veri Kümesi | Tür | Ek Açıklama (Annotation) Dosyaları |
|---|---|---|
| LVIS minival | Algılama | minival.txt |
Sıfırdan eğitim başlatma
Visual Prompt models are fine-tuned based on trained-well Text Prompt models.
from ultralytics import YOLOE
from ultralytics.models.yolo.yoloe import YOLOESegTrainerFromScratch
# Option 1: Use Python dictionary
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="flickr/full_images/",
json_file="flickr/annotations/final_flickr_separateGT_train_segm.json",
),
dict(
img_path="mixed_grounding/gqa/images",
json_file="mixed_grounding/annotations/final_mixed_train_no_coco_segm.json",
),
],
),
val=dict(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ızdan veya model boyutundan ödün vermeden COCO ve LVIS gibi standart kıyaslamalarda kapalı küme YOLO modellerinin doğruluğunu yakalar veya aşar. Aşağıdaki tablo, YOLOE-L (YOLO11 üzerine kurulu) ve YOLOE26-L'yi (YOLO26 üzerine kurulu) karşılık gelen kapalı küme modelleriyle karşılaştırı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 elde eder. Bu, aynı çıkarım hızını korurken YOLOE-L'nin %35.2 LVIS mAP değerini geliştirir. En önemlisi, YOLOE'nin açık kelime dağarcığı modülleri çıkarım maliyeti getirmez ve "bedava öğle yemeği yok ödünleşimi" (no free lunch trade-off) tasarımını kanıtlar.
Sıfır-shot (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, %29.9 mAP elde ederek YOLO-World-S'yi +11.4 AP ile geçerken, YOLOE26-L %36.8 mAP elde ederek YOLO-World-L'yi +10.0 AP ile geçer. YOLOE26, T4 GPU'da 161 FPS hızında verimli çıkarım sağlar; bu, 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ş modellerdendir. YOLOE'nin YOLOv8'e göre hafif mAP avantajı, kapsamlı ön eğitimden kaynaklanmaktadır. Bu açık kelime dağarcığı eğitimi olmadan, YOLOE benzer boyuttaki YOLO modelleriyle eşleşir ve performans kaybı olmaksızın SOTA doğruluğunu ve 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 ve YOLOv5: YOLOv5 iyi bir hız-doğruluk dengesi sunuyordu ancak yeni sınıflar için yeniden eğitim gerektiriyordu ve çapa tabanlı başlıklar kullanıyordu. Buna karşılık YOLOE çapasızdır (anchor-free) ve yeni sınıfları dinamik olarak tespit eder. YOLOv8'in geliştirmeleri üzerine inşa edilen YOLOE, daha yüksek doğruluk (COCO üzerinde YOLOv5'in ~%50 mAP değerine karşılık %52.6 mAP) sağlar ve YOLOv5'in aksine örnek segmentasyonunu (instance segmentation) entegre eder.
-
YOLOE ve YOLOv8: YOLOE, YOLOv8'in yeniden tasarlanmış mimarisini genişleterek benzer veya üstün doğruluk elde eder (~26M parametre ile %52.6 mAP, YOLOv8-L'nin ~44M parametre ile %52.9 mAP değerine karşılık). Daha güçlü ön eğitim nedeniyle eğitim süresini önemli ölçüde azaltır. Temel ilerleme, YOLOE'nin YOLOv8'in kapalı küme tasarımının aksine, istemler aracılığıyla (örneğin "bird scooter" veya "peace symbol") görülmemiş nesneleri tespit eden açık dünya yeteneğidir.
-
YOLOE ve YOLO11: YOLO11, geliştirilmiş verimlilik ve daha az parametre (~%22 azalma) ile YOLOv8'in üzerine inşa edilir. YOLOE bu kazanımları doğrudan miras alarak YOLO11'in çıkarım hızı ve parametre sayısı (~26M parametre) ile eşleşirken açık kelime dağarcığı tespiti ve segmentasyonu ekler. Kapalı küme senaryolarında YOLOE, YOLO11'e eşdeğerdir ancak en önemlisi, hızı düşürmeden YOLO11 + açık dünya yeteneği sağlayarak görülmemiş sınıfları tespit etme uyarlanabilirliği ekler.
-
YOLOE26 ve YOLOE (YOLO11 tabanlı): YOLOE26, YOLO26'nın mimarisi üzerine inşa edilir ve daha hızlı çıkarım için NMS'siz uçtan uca tasarımını devralır. LVIS üzerinde YOLOE26-L, YOLOE-L'nin %35.2 mAP değerine göre gelişme göstererek %36.8 mAP elde eder. YOLOE26, YOLOE'nin üç model ö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 ve önceki açık kelime dağarcığı dedektörleri: Daha eski açık kelime dağarcığı modelleri (GLIP, OWL-ViT, YOLO-World), büyük ölçüde görme-dil transformer modellerine güveniyordu, bu da yavaş çıkarıma yol açıyordu. LVIS üzerinde YOLOE26-S %29.9 mAP (YOLO-World-S üzerinde +11.4 AP) ve YOLOE26-L %36.8 mAP (YOLO-World-L üzerinde +10.0 AP) elde ederken, T4 GPU'da 161 FPS ile gerçek zamanlı çıkarımı sürdürür. Transformer tabanlı yaklaşımlara (örneğin GLIP) kıyasla YOLOE26, büyüklük sırasına göre daha hızlı çıkarım sunarak açık küme tespitindeki doğruluk-verimlilik boşluğunu etkili bir şekilde kapatır.
Özetle, YOLOE ve YOLOE26, YOLO'nun bilinen hızını ve verimliliğini korur, doğruluk açısından öncekileri geride bırakır, segmentasyonu entegre eder ve güçlü açık dünya tespiti sunar. YOLOE26, mimariyi YOLO26'dan gelen NMS'siz uçtan uca çıkarım ile daha da geliştirerek onu gerçek zamanlı açık kelime dağarcığı uygulamaları için ideal kılar.
Kullanım Durumları ve Uygulamalar
YOLOE'nin açık kelime dağarcığı tespiti ve segmentasyonu, geleneksel sabit sınıf modellerinin ötesinde çeşitli uygulamaları mümkün kılar:
-
Open-World Object Detection: Ideal for dynamic scenarios like robotics, where robots recognize previously unseen objects using prompts, or security systems quickly adapting to new threats (e.g., hazardous items) without retraining.
-
Az Veriyle (Few-Shot) ve Tek Örnekle (One-Shot) Tespit: Görsel istemleri (SAVPE) kullanarak YOLOE, yeni nesneleri tek bir referans görüntüden hızla öğrenir—endüstriyel denetim (parçaları veya kusurları anında tanımlama) veya minimum kurulumla görsel aramayı mümkün kılan özel gözetim için mükemmeldir.
-
Geniş Kelime Dağarcığı ve Uzun Kuyruklu Tanıma: 1000'den fazla sınıf kelime dağarcığı ile donatılmış YOLOE, biyoçeşitlilik izleme (nadir türleri tespit etme), müze koleksiyonları, perakende envanteri veya e-ticaret gibi görevlerde, kapsamlı sınıf başına eğitim olmaksızın birçok sınıfı güvenilir bir şekilde tanımlayarak öne çıkar.
-
Etkileşimli Tespit ve Segmentasyon: YOLOE, doğal girdilerle (metin veya görsel istemler) yönlendirilen aranabilir video/görüntü erişimi, 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 maskelerini kullanarak nesneleri dinamik olarak yalıtabilir, tanımlayabilir veya hassas bir şekilde düzenleyebilir.
-
Otomatik Veri Etiketleme ve Önyükleme (Bootstrapping): YOLOE, ilk sınırlayıcı kutu (bounding box) ve segmentasyon ek açıklamalarını sağlayarak veri kümesi oluşturmayı hızlandırır ve insan etiketleme çabalarını önemli ölçüde azaltır. Özellikle, mevcut nesneleri otomatik olarak tanımlayabildiği ve daha hızlı uzman modeller oluşturmaya yardımcı olduğu büyük medya koleksiyonlarının analitiğinde değerlidir.
-
Herhangi Bir Nesne İçin Segmentasyon: Segmentasyon yeteneklerini istemler aracılığıyla keyfi nesnelere genişletir; bu özellikle tıbbi görüntüleme, mikroskopi veya uydu görüntüsü analizi için faydalıdır ve özel önceden eğitilmiş modeller olmaksızın yapıları otomatik olarak tanımlar ve hassas bir şekilde bölümler. SAM gibi modellerin aksine YOLOE, nesneleri otomatik olarak aynı anda tanır ve bölümler, bu da içerik oluşturma veya sahne anlama gibi görevlere yardımcı olur.
Tüm bu kullanım durumlarında YOLOE'nin temel avantajı çok yönlülüktür; dinamik senaryolarda tespit, tanıma ve segmentasyon için birleşik bir model sağlar. Verimliliği, robotik, otonom sürüş, savunma ve ötesi için ideal olan kaynak kısıtlı cihazlarda gerçek zamanlı performans sağlar.
İhtiyaçlarınıza göre YOLOE'nin modunu seçin:
- Kapalı küme modu: Sabit sınıf görevleri için (maksimum hız ve doğruluk).
- İstemli mod: Metin veya görsel istemlerle hızla yeni nesneler ekleyin.
- İstemsiz açık küme modu: Birçok kategoride genel tespit (kataloglama ve keşif için ideal).
Genellikle, istemsiz keşif ve ardından hedeflenmiş istemler gibi modları birleştirmek, YOLOE'nin tam potansiyelinden yararlanır.
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ızla başlamak için şunları yapabilirsin:
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 kolayca istemli tespite geçer. Sonuçlar sınırlayıcı kutular, maskeler ve etiketler içerir.
Diğer Desteklenen Görevler
- Doğrulama:
model.val()veyayolo valile doğruluğu kolayca değerlendirin. - Dışa Aktarma: YOLOE modellerini (
model.export()) ONNX, TensorRT vb. formatlara aktararak dağıtımı kolaylaştırın. - Takip: YOLOE, entegre edildiğinde nesne takibini (
yolo track) destekler; videolarda istemli sınıfları takip etmek için kullanışlıdır.
YOLOE, çıkarım sonuçlarına (results[0].masks) otomatik olarak segmentasyon maskelerini dahil eder, bu da ayrı modellere ihtiyaç duymadan nesne çıkarma veya ölçüm gibi piksel hassasiyetindeki görevleri basitleştirir.
Başlarken
Şu adımları izleyerek Ultralytics ile YOLOE'yi hızlıca kurun:
-
Kurulum: Ultralytics paketini yükleyin veya güncelleyin:
pip install -U ultralytics -
YOLOE Ağırlıklarını İndirme: Önceden eğitilmiş YOLOE modelleri (örneğin YOLOE-v8-S/L, YOLOE-11 varyantları) YOLOE GitHub sürümlerinden edinilebilir. Ultralytics YOLO sınıfına yüklemek için istediğiniz
.ptdosyasını indirmeniz yeterlidir. -
Donanım Gereksinimleri:
- Çıkarım: Önerilen GPU (≥4-8GB VRAM'li NVIDIA). Küçük modeller, uç GPU'larda (örneğin 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 rehberimize bakın.
- Eğitim: YOLOE'ye özel veriler üzerinde ince ayar yapmak genellikle sadece bir GPU gerektirir. Yazarlar tarafından kullanılan 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: YOLOE yapılandırmaları standart Ultralytics YAML dosyalarını kullanır. Varsayılan yapılandırmalar (örneğin
yoloe-26s-seg.yaml) genellikle yeterlidir, ancak ihtiyaç duyduğunuzda omurgayı (backbone), sınıfları veya görüntü boyutunu değiştirebilirsiniz. -
YOLOE Çalıştırma:
-
Hızlı çıkarım (istemsiz):
yolo predict model=yoloe-26s-seg-pf.pt source="image.jpg" -
İstemli tespit (metin istemi ö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 isimleri: Varsayılan YOLOE çıktıları LVIS kategorilerini kullanır; kendi etiketlerinizi belirtmek için
set_classes()kullanın. - Hız: İstem kullanılmadığı sürece YOLOE'nin ek yükü yoktur. Metin istemlerinin etkisi minimumdur; görsel istemlerin biraz daha fazladır.
- NMS davranışı: YOLOE tahmin sırasında otomatik olarak
agnostic_nms=Truekullanır ve sınıflar arasında ö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 yinelenen tespitleri önler.agnostic_nms=Falseifadesini açıkça ileterek bunu geçersiz kılabilirsiniz. - Toplu çıkarım: Doğrudan desteklenir (
model.predict([img1, img2])). Görüntüye özgü istemler için görüntüleri ayrı ayrı çalıştırın.
- Sınıf isimleri: Varsayılan YOLOE çıktıları LVIS kategorilerini kullanır; kendi etiketlerinizi belirtmek için
Ultralytics belgeleri daha fazla kaynak sağlar. YOLOE, tanıdık YOLO ekosistemi içinde güçlü açık dünya yeteneklerini kolayca keşfetmenizi sağlar.
Pro İpucu: YOLOE'nin sıfır-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ın. Tespit doğruluğunu artırmak için ortak eğitim etiketleriyle (LVIS kategorilerine bakın) hizalanan istem sözcüklerini kullanın.
Alıntılar ve Teşekkür
YOLOE araştırmanıza veya projenize 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 makaleye atıfta bulunun:
@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 kodu ve ek kaynaklara GitHub deposu üzerinden erişilebilir.
SSS
YOLOE, YOLO-World'den nasıl farklıdır?
Hem YOLOE hem de YOLO-World açık kelime dağarcığı tespiti sağlasa da, YOLOE birkaç avantaj sunar. YOLOE, YOLO-Worldv2'den 3 kat daha az eğitim kaynağı kullanırken ve 1.4 kat daha hızlı çalışırken, LVIS üzerinde +3.5 AP daha yüksek doğruluk elde eder. YOLOE ayrıca üç istem modunu (metin, görsel ve dahili kelime dağarcığı) desteklerken, YOLO-World öncelikle metin istemlerine odaklanır. Ek olarak YOLOE, yerleşik örnek segmentasyonu yeteneklerini içerir ve ek yük olmaksızın tespit edilen nesneler için piksel hassasiyetinde maskeler sağlar.
YOLOE'yi normal bir YOLO modeli olarak kullanabilir miyim?
Evet, YOLOE performans kaybı olmadan standart bir YOLO modeli gibi çalışabilir. Kapalı küme modunda (istemler olmadan) kullanıldığında, YOLOE'nin açık kelime dağarcığı modülleri standart tespit başlığına yeniden parametrelendirilir ve eşdeğer YOLO11 modelleriyle aynı hız ve doğruluğu sağlar. Bu, YOLOE'yi son derece çok yönlü kılar—onu maksimum hız için geleneksel bir dedektör olarak kullanabilir ve ardından sadece gerektiğinde açık kelime dağarcığı moduna geçebilirsiniz.
YOLOE ile ne tür istemler kullanabilirim?
YOLOE üç tür istemi destekler:
- Metin istemleri: Doğal dili kullanarak nesne sınıflarını belirtin (örneğin, "person", "traffic light", "bird scooter")
- Görsel istemler: Tespit etmek istediğiniz nesnelerin referans görüntülerini sağlayın
- Dahili kelime dağarcığı: Dış istemler olmadan YOLOE'nin 1200+ kategorilik yerleşik kelime dağarcığını kullanın
Bu esneklik, YOLOE'yi modeli yeniden eğitmeden çeşitli senaryolara uyarlamanıza olanak tanır ve tespit gereksinimlerinin sık sık değiştiği dinamik ortamlar için özellikle kullanışlıdır.
YOLOE örnek segmentasyonunu nasıl yönetir?
YOLOE, tespit başlığını bir maske tahmin dalı ile genişleterek örnek segmentasyonunu doğrudan mimarisine entegre eder. Bu yaklaşım YOLOv8-Seg'e benzer ancak her türlü istemli 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ı tespit 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 istemlerle çıkarımı nasıl yönetir?
Tıpkı YOLO-World gibi YOLOE, verimliliği artırmak için çevrimdışı bir kelime dağarcığı kullanan bir "istem-ve-tespit" stratejisini destekler. Başlıklar veya belirli nesne kategorileri gibi özel istemler önceden kodlanır ve çevrimdışı kelime dağarcığı yerleştirmeleri (embeddings) olarak saklanır. Bu yaklaşım, yeniden eğitim gerektirmeden tespit sürecini kolaylaştırır. Modeli belirli tespit görevlerine uyarlamak için bu istemleri model içinde dinamik olarak ayarlayabilirsiniz:
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()