YOLO-World Modeli
YOLO-World Modeli, Açık Kelime Dağarcığı Algılama görevleri için gelişmiş, gerçek zamanlı bir Ultralytics YOLOv8 tabanlı yaklaşım sunar. Bu yenilik, tanımlayıcı metinlere dayalı olarak bir görüntüdeki herhangi bir nesnenin algılanmasını sağlar. YOLO-World, rekabetçi performansı korurken hesaplama taleplerini önemli ölçüde azaltarak, çok sayıda vizyon tabanlı uygulama için çok yönlü bir araç olarak ortaya çıkıyor.
İzle: Özel veri kümesinde YOLO World eğitim iş akışı
Genel Bakış
YOLO-World, genellikle kapsamlı hesaplama kaynakları gerektiren hantal Transformer modellerine dayanan geleneksel Açık Kelime Dağarcığı algılama modellerinin karşılaştığı zorlukların üstesinden gelir. Bu modellerin önceden tanımlanmış nesne kategorilerine bağımlılığı, dinamik senaryolardaki faydalarını da kısıtlar. YOLO-World, YOLOv8 çerçevesini açık kelime dağarcığı algılama yetenekleriyle yeniden canlandırıyor, vizyon-dil modellemesi kullanıyor ve benzersiz verimlilikle sıfır atış senaryolarında çok çeşitli nesneleri belirlemede mükemmel olmak için geniş veri kümeleri üzerinde ön eğitim alıyor.
Temel Özellikler
-
Gerçek Zamanlı Çözüm: CNN'lerin hesaplama hızından yararlanan YOLO-World, acil sonuçlara ihtiyaç duyan sektörlere hitap eden hızlı bir açık kelime dağarcığı algılama çözümü sunar.
-
Verimlilik ve Performans: YOLO-World, performanstan ödün vermeden hesaplama ve kaynak gereksinimlerini azaltır ve SAM gibi modellere göre daha düşük bir hesaplama maliyetiyle sağlam bir alternatif sunarak gerçek zamanlı uygulamaları mümkün kılar.
-
Çevrimdışı Kelime Dağarcığı ile Çıkarım: YOLO-World, verimliliği daha da artırmak için çevrimdışı bir kelime dağarcığı kullanan bir "istem-sonra-tespit et" stratejisi sunar. Bu yaklaşım, algılama sürecini kolaylaştırmak için önceden hesaplanmış özel istemlerin (altyazılar veya kategoriler dahil) kodlanıp çevrimdışı kelime dağarcığı gömüleri olarak saklanmasını sağlar.
-
YOLOv8 ile Güçlendirilmiştir: Ultralytics YOLOv8 üzerine inşa edilen YOLO-World, benzersiz doğruluk ve hızla açık kelime dağarcığı algılamayı kolaylaştırmak için gerçek zamanlı nesne algılamadaki en son gelişmeleri kullanır.
-
Benchmark Mükemmelliği: YOLO-World, standart benchmarklarda hız ve verimlilik açısından MDETR ve GLIP serisi de dahil olmak üzere mevcut açık kelime dağarcığı dedektörlerinden daha iyi performans göstererek YOLOv8'in tek bir NVIDIA V100 GPU'daki üstün yeteneğini sergiliyor.
-
Çok Yönlü Uygulamalar: YOLO-World'ün yenilikçi yaklaşımı, mevcut yöntemlere göre kat kat hız iyileştirmeleri sağlayarak çok sayıda vizyon görevi için yeni olanakların kilidini açar.
Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları
Bu bölüm, belirli önceden eğitilmiş ağırlıklarıyla birlikte mevcut modelleri, destekledikleri görevleri ve Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi çeşitli çalışma modlarıyla uyumluluklarını ayrıntılı olarak açıklar; ✅ desteklenen modları ve ❌ desteklenmeyen modları gösterir.
Not
Tüm YOLOv8-World ağırlıkları, mükemmel katkılarını vurgulayarak doğrudan resmi YOLO-World deposundan taşınmıştır.
Model Türü | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa aktar |
---|---|---|---|---|---|---|
YOLOv8s-world | yolov8s-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-worldv2 | yolov8s-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-world | yolov8m-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-worldv2 | yolov8m-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-world | yolov8l-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-worldv2 | yolov8l-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-world | yolov8x-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-worldv2 | yolov8x-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
COCO Veri Kümesinde Sıfır Atış Transferi
Performans
Model Türü | mAP | mAP50 | mAP75 |
---|---|---|---|
yolov8s-world | 37.4 | 52.0 | 40.6 |
yolov8s-worldv2 | 37.7 | 52.2 | 41.0 |
yolov8m-world | 42.0 | 57.0 | 45.6 |
yolov8m-worldv2 | 43.0 | 58.4 | 46.8 |
yolov8l-world | 45.7 | 61.3 | 49.8 |
yolov8l-worldv2 | 45.8 | 61.3 | 49.8 |
yolov8x-world | 47.0 | 63.0 | 51.2 |
yolov8x-worldv2 | 47.1 | 62.8 | 51.4 |
Kullanım Örnekleri
YOLO-World modellerinin python uygulamalarınıza entegre edilmesi kolaydır. Ultralytics, geliştirmeyi kolaylaştırmak için kullanıcı dostu Python API'si ve CLI komutları sağlar.
Eğitim Kullanımı
İpucu
Özel eğitim için yolov8-worldv2
modelini kullanmanızı şiddetle tavsiye ederiz, çünkü deterministik eğitimi destekler ve ayrıca onnx/tensorrt gibi diğer formatlara aktarılması kolaydır.
Nesne algılama ile basittir. train
metodu ile aşağıda gösterildiği gibi:
Örnek
PyTorch önceden eğitilmiş *.pt
modellerin yanı sıra yapılandırma *.yaml
dosyaları YOLOWorld()
python'da bir model örneği oluşturmak için sınıfa geçirilebilir:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a pretrained YOLOv8s-worldv2 model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640
Tahmin Kullanımı
Nesne algılama predict
metodu ile aşağıda gösterildiği gibi:
Örnek
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.pt") # or select yolov8m/l-world.pt for different sizes
# Execute inference with the YOLOv8s-world model on the specified image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
# Perform object detection using a YOLO-World model
yolo predict model=yolov8s-world.pt source=path/to/image.jpg imgsz=640
ile basittir. Bu kod parçacığı, önceden eğitilmiş bir modeli yüklemenin ve bir görüntü üzerinde tahmin yürütmenin basitliğini gösterir.
Değerlendirme Kullanımı
Bir veri kümesi üzerinde model doğrulaması aşağıdaki gibi kolaylaştırılmıştır:
Örnek
from ultralytics import YOLO
# Create a YOLO-World model
model = YOLO("yolov8s-world.pt") # or select yolov8m/l-world.pt for different sizes
# Conduct model validation on the COCO8 example dataset
metrics = model.val(data="coco8.yaml")
# Validate a YOLO-World model on the COCO8 dataset with a specified image size
yolo val model=yolov8s-world.pt data=coco8.yaml imgsz=640
İzleme Kullanımı
Bir video/resim üzerindeki YOLO-World modeli ile Nesne takibi aşağıdaki gibi basitleştirilmiştir:
Örnek
from ultralytics import YOLO
# Create a YOLO-World model
model = YOLO("yolov8s-world.pt") # or select yolov8m/l-world.pt for different sizes
# Track with a YOLO-World model on a video
results = model.track(source="path/to/video.mp4")
# Track with a YOLO-World model on the video with a specified image size
yolo track model=yolov8s-world.pt imgsz=640 source="path/to/video.mp4"
Not
Ultralytics tarafından sağlanan YOLO-World modelleri, çevrimdışı kelime dağarcıklarının bir parçası olarak COCO veri kümesi kategorileriyle önceden yapılandırılmış olarak gelir ve bu da anında uygulama için verimliliği artırır. Bu entegrasyon, YOLOv8-World modellerinin ek kurulum veya özelleştirme gerektirmeden COCO veri kümesinde tanımlanan 80 standart kategoriyi doğrudan tanımasına ve tahmin etmesine olanak tanır.
İstemleri ayarlayın
YOLO-World çerçevesi, özel istemler aracılığıyla sınıfların dinamik olarak belirtilmesine olanak tanır ve kullanıcıların modeli yeniden eğitmeden kendi özel ihtiyaçlarına göre uyarlamalarını sağlar. Bu özellik, özellikle modeli yeni alanlara veya başlangıçta eğitim verilerinin bir parçası olmayan belirli görevlere uyarlamak için kullanışlıdır. Kullanıcılar, özel istemler ayarlayarak, modelin odağını ilgi nesnelerine yönlendirerek algılama sonuçlarının alaka düzeyini ve doğruluğunu artırabilir.
Örneğin, uygulamanız yalnızca 'kişi' ve 'otobüs' nesnelerini algılamayı gerektiriyorsa, bu sınıfları doğrudan belirtebilirsiniz:
Örnek
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt") # or choose yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Execute prediction for specified categories on an image
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Özel sınıflar ayarladıktan sonra bir modeli de kaydedebilirsiniz. Bunu yaparak, YOLO-World modelinin özel kullanım durumunuz için uzmanlaşmış bir sürümünü oluşturursunuz. Bu işlem, özel sınıf tanımlarınızı doğrudan model dosyasına gömer ve modeli, belirtilen sınıflarınızla daha fazla ayarlama yapmadan kullanıma hazır hale getirir. Özel YOLOv8 modelinizi kaydetmek ve yüklemek için şu adımları izleyin:
Örnek
Öncelikle bir YOLO-World modeli yükleyin, bunun için özel sınıflar ayarlayın ve kaydedin:
from ultralytics import YOLO
# Initialize a YOLO-World model
model = YOLO("yolov8s-world.pt") # or select yolov8m/l-world.pt
# Define custom classes
model.set_classes(["person", "bus"])
# Save the model with the defined offline vocabulary
model.save("custom_yolov8s.pt")
Kaydettikten sonra, custom_yolov8s.pt modeli diğer önceden eğitilmiş YOLOv8 modelleri gibi davranır, ancak önemli bir farkla: artık yalnızca tanımladığınız sınıfları algılamak için optimize edilmiştir. Bu özelleştirme, belirli uygulama senaryolarınız için algılama performansını ve verimliliğini önemli ölçüde artırabilir.
from ultralytics import YOLO
# Load your custom model
model = YOLO("custom_yolov8s.pt")
# Run inference to detect your custom classes
results = model.predict("path/to/image.jpg")
# Show results
results[0].show()
Özel Kelime Hazinesiyle Kaydetmenin Faydaları
- Verimlilik: İlgili nesnelere odaklanarak, hesaplama yükünü azaltarak ve çıkarımı hızlandırarak algılama sürecini kolaylaştırır.
- Esneklik: Kapsamlı bir yeniden eğitim veya veri toplamaya gerek kalmadan modelin yeni veya niş algılama görevlerine kolayca uyarlanmasını sağlar.
- Basitlik: Çalışma zamanında özel sınıfları tekrar tekrar belirtme ihtiyacını ortadan kaldırarak dağıtımı basitleştirir ve modeli gömülü kelime dağarcığıyla doğrudan kullanılabilir hale getirir.
- Performans: Modelin dikkatini ve kaynaklarını tanımlanan nesneleri tanımaya odaklayarak belirtilen sınıflar için algılama doğruluğunu artırır.
Bu yaklaşım, belirli görevler için son teknoloji nesne algılama modellerini özelleştirmenin güçlü bir yolunu sağlayarak gelişmiş yapay zekayı daha geniş bir pratik uygulama yelpazesine daha erişilebilir ve uygulanabilir hale getirir.
Resmi sonuçları sıfırdan yeniden oluşturun (Deneysel)
Veri kümelerini hazırlayın
- Eğitim verisi
Veri Kümesi | Tür | Numuneler | Kutular | Açıklama Dosyaları |
---|---|---|---|---|
Objects365v1 | Algılama | 609k | 9621k | objects365_train.json |
GQA | Grounding | 621k | 3681k | final_mixed_train_no_coco.json |
Flickr30k | Grounding | 149k | 641k | final_flickr_separateGT_train.json |
- Val verisi
Veri Kümesi | Tür | Açıklama Dosyaları |
---|---|---|
LVIS minival | Algılama | minival.txt |
Eğitimi sıfırdan başlatın
Not
WorldTrainerFromScratch
YOLO-World modellerini hem algılama veri kümeleri hem de topraklama veri kümeleri üzerinde aynı anda eğitmek için yüksek düzeyde özelleştirilmiştir. Daha fazla ayrıntı için lütfen göz atın: ultralytics.model.yolo.world.train_world.py.
Örnek
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = dict(
train=dict(
yolo_data=["Objects365.yaml"],
grounding_data=[
dict(
img_path="flickr30k/images",
json_file="flickr30k/final_flickr_separateGT_train.json",
),
dict(
img_path="GQA/images",
json_file="GQA/final_mixed_train_no_coco.json",
),
],
),
val=dict(yolo_data=["lvis.yaml"]),
)
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)
Alıntılar ve Teşekkürler
Tencent AILab Bilgisayar Görü Merkezi'ne YOLO-World ile gerçek zamanlı açık kelime dağarcığı nesne algılamadaki öncü çalışmaları için minnettarlığımızı sunarız:
@article{cheng2024yolow,
title={YOLO-World: Real-Time Open-Vocabulary Object Detection},
author={Cheng, Tianheng and Song, Lin and Ge, Yixiao and Liu, Wenyu and Wang, Xinggang and Shan, Ying},
journal={arXiv preprint arXiv:2401.17270},
year={2024}
}
Daha fazla okuma için, orijinal YOLO-World makalesi arXiv üzerinde mevcuttur. Projenin kaynak koduna ve ek kaynaklara GitHub deposu aracılığıyla erişilebilir. Alanı geliştirmeye ve değerli içgörülerini toplulukla paylaşmaya olan bağlılıklarını takdir ediyoruz.
SSS
YOLO-World modeli nedir ve nasıl çalışır?
YOLO-World modeli, Ultralytics YOLOv8 çerçevesini temel alan gelişmiş, gerçek zamanlı bir nesne algılama yaklaşımıdır. Tanımlayıcı metinlere dayalı olarak bir görüntüdeki nesneleri tanımlayarak Açık Kelime Dağarcığı Algılama görevlerinde mükemmeldir. YOLO-World, vizyon-dil modellemesi ve büyük veri kümeleri üzerinde ön eğitim kullanarak, önemli ölçüde azaltılmış hesaplama talepleriyle yüksek verimlilik ve performans elde eder ve bu da onu çeşitli sektörlerdeki gerçek zamanlı uygulamalar için ideal kılar.
YOLO-World, özel istemlerle çıkarımı nasıl yönetir?
YOLO-World, verimliliği artırmak için çevrimdışı bir kelime dağarcığı kullanan bir "önce istem, sonra algıla" stratejisini destekler. Başlıklar veya belirli nesne kategorileri gibi özel istemler önceden kodlanır ve çevrimdışı kelime dağarcığı gömme olarak saklanır. Bu yaklaşım, yeniden eğitim gerektirmeden algılama sürecini kolaylaştırır. Aşağıda gösterildiği gibi, belirli algılama görevlerine uyacak şekilde bu istemleri model içinde dinamik olarak ayarlayabilirsiniz:
from ultralytics import YOLOWorld
# Initialize a YOLO-World model
model = YOLOWorld("yolov8s-world.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()
Neden geleneksel Açık Kelime Dağarcığı algılama modelleri yerine YOLO-World'ü seçmeliyim?
YOLO-World, geleneksel Açık Kelime Dağarcığı algılama modellerine göre çeşitli avantajlar sağlar:
- Gerçek Zamanlı Performans: Hızlı, verimli algılama sunmak için CNN'lerin hesaplama hızından yararlanır.
- Verimlilik ve Düşük Kaynak Gereksinimi: YOLO-World, hesaplama ve kaynak taleplerini önemli ölçüde azaltırken yüksek performansı korur.
- Özelleştirilebilir İstekler: Model, kullanıcıların yeniden eğitim yapmadan özel algılama sınıfları belirtmesine olanak tanıyan dinamik istek ayarını destekler.
- Kıyaslama Mükemmelliği: Standart kıyaslamalarda hem hız hem de verimlilik açısından MDETR ve GLIP gibi diğer açık kelime dağarcığı dedektörlerinden daha iyi performans gösterir.
Veri kümem üzerinde bir YOLO-World modelini nasıl eğitirim?
YOLO-World modelini veri kümeniz üzerinde eğitmek, sağlanan Python API'si veya CLI komutları aracılığıyla basittir. Python kullanarak eğitime nasıl başlayacağınız aşağıda açıklanmıştır:
from ultralytics import YOLOWorld
# Load a pretrained YOLOv8s-worldv2 model
model = YOLOWorld("yolov8s-worldv2.pt")
# Train the model on the COCO8 dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
Veya CLI kullanılarak:
yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640
Mevcut önceden eğitilmiş YOLO-World modelleri ve desteklenen görevleri nelerdir?
Ultralytics, çeşitli görevleri ve çalışma modlarını destekleyen birden fazla önceden eğitilmiş YOLO-World modeli sunar:
Model Türü | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Çıkarım | Doğrulama | Eğitim | Dışa aktar |
---|---|---|---|---|---|---|
YOLOv8s-world | yolov8s-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-worldv2 | yolov8s-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-world | yolov8m-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-worldv2 | yolov8m-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-world | yolov8l-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-worldv2 | yolov8l-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-world | yolov8x-world.pt | Nesne Algılama | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-worldv2 | yolov8x-worldv2.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
YOLO-World'ün resmi sonuçlarını sıfırdan nasıl yeniden üretebilirim?
Resmi sonuçları sıfırdan yeniden oluşturmak için, veri kümelerini hazırlamanız ve sağlanan kodu kullanarak eğitimi başlatmanız gerekir. Eğitim prosedürü, bir veri sözlüğü oluşturmayı ve train
özel bir eğitmenle yöntemi:
from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch
data = {
"train": {
"yolo_data": ["Objects365.yaml"],
"grounding_data": [
{
"img_path": "flickr30k/images",
"json_file": "flickr30k/final_flickr_separateGT_train.json",
},
{
"img_path": "GQA/images",
"json_file": "GQA/final_mixed_train_no_coco.json",
},
],
},
"val": {"yolo_data": ["lvis.yaml"]},
}
model = YOLOWorld("yolov8s-worldv2.yaml")
model.train(data=data, batch=128, epochs=100, trainer=WorldTrainerFromScratch)