İçeriğe geç

YOLO-Dünya Modeli

YOLO-Dünya Modeli gelişmiş, gerçek zamanlı bir Ultralytics YOLOv8-Açık Kelime Tespiti görevleri için temelli yaklaşım. Bu yenilik, tanımlayıcı metinlere dayalı olarak bir görüntü içindeki herhangi bir nesnenin tespit edilmesini sağlar. Rekabetçi performansı korurken hesaplama taleplerini önemli ölçüde düşüren YOLO-World, çok sayıda görme tabanlı uygulama için çok yönlü bir araç olarak ortaya çıkmaktadır.

YOLO-Dünya Modeli mimarisine genel bakış



İzle: YOLO Özel veri kümesi üzerinde dünya eğitim iş akışı

Genel Bakış

YOLO-World, genellikle kapsamlı hesaplama kaynakları gerektiren hantal Transformer modellerine dayanan geleneksel Açık Kelime tespit modellerinin karşılaştığı zorlukların üstesinden gelir. Bu modellerin önceden tanımlanmış nesne kategorilerine bağımlılığı, dinamik senaryolardaki kullanımlarını da kısıtlamaktadır. YOLO-Dünya, YOLOv8 çerçevesini açık kelime algılama yetenekleriyle yeniden canlandırarak, sıfır çekim senaryolarında çok çeşitli nesneleri benzersiz bir verimlilikle tanımlamada mükemmel olmak için geniş veri kümeleri üzerinde görme dili modelleme ve ön eğitim kullanır.

Temel Özellikler

  1. Gerçek Zamanlı Çözüm: CNN'lerin hesaplama hızından yararlanan YOLO-World, hızlı sonuçlara ihtiyaç duyan sektörlere hitap eden hızlı bir açık kelime tespit çözümü sunar.

  2. Verimlilik ve Performans: YOLO-World, performanstan ödün vermeden hesaplama ve kaynak gereksinimlerini azaltır, SAM gibi modellere sağlam bir alternatif sunar, ancak hesaplama maliyetinin bir kısmıyla gerçek zamanlı uygulamalara olanak tanır.

  3. Çevrimdışı Kelime Dağarcığı ile Çıkarım: YOLO-World, verimliliği daha da artırmak için çevrimdışı bir kelime dağarcığı kullanan bir "önce sor sonra tespit et" stratejisi sunar. Bu yaklaşım, başlıklar veya kategoriler de dahil olmak üzere apriori olarak hesaplanan özel istemlerin çevrimdışı kelime dağarcığı katıştırmaları olarak kodlanıp saklanmasını sağlayarak algılama sürecini kolaylaştırır.

  4. Tarafından desteklenmektedir YOLOv8: Üzerine inşa edilmiştir Ultralytics YOLOv8, YOLO-World, açık kelime tespitini benzersiz bir doğruluk ve hızla kolaylaştırmak için gerçek zamanlı nesne tespitindeki en son gelişmelerden yararlanır.

  5. Benchmark Mükemmelliği: YOLO-World, standart kıyaslamalarda hız ve verimlilik açısından MDETR ve GLIP serisi dahil olmak üzere mevcut açık kelime dedektörlerinden daha iyi performans göstererek YOLOv8'un tek bir NVIDIA V100 GPU üzerindeki üstün yeteneğini ortaya koyuyor.

  6. Çok Yönlü Uygulamalar: YOLO-World'ün yenilikçi yaklaşımı, mevcut yöntemlere göre büyüklük sırasına göre hız iyileştirmeleri sağlayarak çok sayıda görme görevi için yeni olasılıkların kilidini açar.

Mevcut Modeller, Desteklenen Görevler ve Çalışma Modları

Bu bölümde, önceden eğitilmiş belirli ağırlıklarıyla birlikte mevcut modeller, destekledikleri görevler ve desteklenen modlar için ✅ ve desteklenmeyen modlar için ❌ ile gösterilen Çıkarım, Doğrulama, Eğitim ve Dışa Aktarma gibi çeşitli çalışma modlarıyla uyumlulukları ayrıntılı olarak açıklanmaktadır.

Not

Tüm YOLOv8-World ağırlıkları doğrudan resmi YOLO-World deposundan taşınarak mükemmel katkıları vurgulanmıştır.

Model Tipi Önceden Eğitilmiş Ağırlıklar Desteklenen Görevler Çıkarım Doğrulama Eğitim İhracat
YOLOv8s-Dünya yolov8s-world.pt Nesne Algılama
YOLOv8s-worldv2 yolov8s-worldv2.pt Nesne Algılama
YOLOv8m-Dünya yolov8m-world.pt Nesne Algılama
YOLOv8m-worldv2 yolov8m-worldv2.pt Nesne Algılama
YOLOv8l-Dünya yolov8l-world.pt Nesne Algılama
YOLOv8l-worldv2 yolov8l-worldv2.pt Nesne Algılama
YOLOv8x-Dünya yolov8x-world.pt Nesne Algılama
YOLOv8x-worldv2 yolov8x-worldv2.pt Nesne Algılama

COCO Veri Setinde Sıfır Atış Transferi

Model Tipi mAP mAP50 mAP75
yolov8s-Dünya 37.4 52.0 40.6
yolov8s-worldv2 37.7 52.2 41.0
yolov8m-Dünya 42.0 57.0 45.6
yolov8m-worldv2 43.0 58.4 46.8
yolov8l-Dünya 45.7 61.3 49.8
yolov8l-worldv2 45.8 61.3 49.8
yolov8x-Dünya 47.0 63.0 51.2
yolov8x-worldv2 47.1 62.8 51.4

Kullanım Örnekleri

YOLO-World modellerini Python uygulamalarınıza entegre etmek kolaydır. Ultralytics , geliştirmeyi kolaylaştırmak için kullanıcı dostu Python API ve CLI komutları sağlar.

Tren Kullanımı

İpucu

Kullanmanızı şiddetle tavsiye ederiz yolov8-worldv2 Özel eğitim için model, çünkü deterministik eğitimi destekler ve ayrıca onnx/tensorrt gibi diğer formatları dışa aktarmak kolaydır.

Nesne algılama, nesne algılayıcı ile basittir. train yöntemi, aşağıda gösterildiği gibi:

Örnek

PyTorch ön eğitimli *.pt modellerin yanı sıra yapılandırma *.yaml dosyalar şu dosyalara aktarılabilir YOLOWorld() sınıfında bir model örneği oluşturmak için python:

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

Kullanım Tahmini

Nesne algılama, nesne algılayıcı ile basittir. predict yöntemi, 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

Bu kod parçacığı, önceden eğitilmiş bir modeli yüklemenin ve bir görüntü üzerinde tahmin çalıştırmanın basitliğini göstermektedir.

Val Kullanımı

Bir veri kümesi üzerinde model doğrulaması aşağıdaki şekilde 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

Parça Kullanımı

Bir video/görüntü üzerinde YOLO-World modeli ile nesne takibi 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

# 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/file.mp4"

Not

Ultralytics tarafından sağlanan YOLO-World modelleri, çevrimdışı kelime dağarcıklarının bir parçası olarak COCO veri küm esi kategorileriyle önceden yapılandırılmış olarak gelir ve anında uygulama için verimliliği artırır. Bu entegrasyon, YOLOv8-World modellerinin ek kurulum veya özelleştirme gerektirmeden COCO veri setinde tanımlanan 80 standart kategoriyi doğrudan tanımasını ve tahmin etmesini sağlar.

İstemleri ayarlayın

YOLO-Dünya istemi sınıf adlarına genel bakış

YOLO-World çerçevesi, özel istemler aracılığıyla sınıfların dinamik olarak belirlenmesine olanak tanıyarak kullanıcıların yeniden eğitim almadan modeli kendi özel ihtiyaçlarına göre uyarlamalarını sağlar. Bu özellik, modeli yeni etki alanlarına veya başlangıçta eğitim verilerinin bir parçası olmayan belirli görevlere uyarlamak için özellikle yararlıdır. Kullanıcılar, özel istemler belirleyerek modelin ilgi nesnelerine odaklanmasını sağlayabilir ve böylece tespit sonuçlarının uygunluğunu ve doğruluğunu artırabilir.

Örneğin, uygulamanız yalnızca 'kişi' ve 'otobüs' nesnelerinin algılanmasını 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 da bir modeli kaydedebilirsiniz. Bunu yaparak YOLO-World modelinin özel kullanım durumunuz için özelleştirilmiş bir versiyonunu oluşturursunuz. Bu işlem, özel sınıf tanımlarınızı doğrudan model dosyasına yerleştirerek modeli başka ayarlamalar yapmadan belirttiğiniz sınıflarla kullanıma hazır hale getirir. Özel YOLOv8 modelinizi kaydetmek ve yüklemek için aşağıdaki adımları izleyin:

Örnek

Önce 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 önceden eğitilmiş diğer YOLOv8 modelleri gibi davranır, ancak önemli bir farkla: artık yalnızca tanımladığınız sınıfları tespit etmek için optimize edilmiştir. Bu özelleştirme, özel 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 Sözcük Dağarcığı ile Tasarruf Yapmanın Faydaları

  • Verimlilik: İlgili nesnelere odaklanarak algılama sürecini kolaylaştırır, hesaplama yükünü azaltır ve çıkarımı hızlandırır.
  • Esneklik: Kapsamlı yeniden eğitime veya veri toplamaya gerek kalmadan modelin yeni veya niş tespit 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ığı ile 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, en son teknoloji ürünü nesne algılama modellerini belirli görevler için özelleştirmenin güçlü bir yolunu sunarak gelişmiş yapay zekayı daha erişilebilir ve daha geniş bir pratik uygulama yelpazesine uygulanabilir hale getirir.

Resmi sonuçları sıfırdan yeniden üretin (Deneysel)

Veri kümelerini hazırlayın

  • Tren verileri
Veri Seti Tip Örnekler Kutular Ek Açıklama Dosyaları
Objects365v1 Algılama 609k 9621k objects365_train.json
GQA Topraklama 621k 3681k final_mixed_train_no_coco.json
Flickr30k Topraklama 149k 641k final_flickr_separateGT_train.json
  • Val verileri
Veri Seti Tip Ek Açıklama Dosyaları
LVIS minival Algılama minival.txt

Sıfırdan eğitim başlatın

Not

WorldTrainerFromScratch yolo-dünya modellerinin hem algılama veri kümeleri hem de topraklama veri kümeleri üzerinde aynı anda eğitilmesine izin verecek şekilde son derece ö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.models.yolo.world.train_world import WorldTrainerFromScratch
from ultralytics import YOLOWorld

data = dict(
    train=dict(
        yolo_data=["Objects365.yaml"],
        grounding_data=[
            dict(
                img_path="../datasets/flickr30k/images",
                json_file="../datasets/flickr30k/final_flickr_separateGT_train.json",
            ),
            dict(
                img_path="../datasets/GQA/images",
                json_file="../datasets/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)

Atıflar ve Teşekkür

Tencent AILab Computer Vision Center 'a YOLO-World ile gerçek zamanlı açık kelime dağarcığı nesne tespiti konusundaki öncü çalışmaları için teşekkürlerimizi 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'de mevcuttur. Projenin kaynak koduna ve ek kaynaklara GitHub depoları üzerinden erişilebilir. Alanı ilerletme ve değerli görüşlerini toplulukla paylaşma konusundaki kararlılıklarını takdir ediyoruz.



Oluşturuldu 2024-02-14, Güncellendi 2024-05-02
Yazarlar: RizwanMunawar (2), glenn-jocher (3), Burhan-Q (1), Laughing-q (4)

Yorumlar