İç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.



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

YOLO-Dünya Modeli mimarisine genel bakış

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 Dünya, standart ölçütlerde hız ve verimlilik açısından MDETR ve GLIP serisi de 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 koymaktadır.

  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 import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

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.

SSS

YOLO-World modeli nedir ve nasıl çalışır?

YOLO-World modeli, aşağıdakileri temel alan gelişmiş, gerçek zamanlı bir nesne algılama yaklaşımıdır Ultralytics YOLOv8 çerçeve. Açıklayıcı metinlere dayalı olarak bir görüntüdeki nesneleri tanımlayarak Açık Kelime Algılama görevlerinde üstünlük sağlar. Görme-dili modellemesi ve büyük veri kümeleri üzerinde ön eğitim kullanan YOLO-World, önemli ölçüde azaltılmış hesaplama talepleriyle yüksek verimlilik ve performans elde ederek çeşitli sektörlerdeki gerçek zamanlı uygulamalar için idealdir.

YOLO-World özel istemlerle çıkarımı nasıl ele alır?

YOLO-World, verimliliği artırmak için çevrimdışı bir kelime dağarcığı kullanan bir "önce sor sonra tespit et" stratejisini destekler. Altyazılar veya belirli nesne kategorileri gibi özel istemler önceden kodlanır ve çevrimdışı kelime katıştırmaları olarak saklanır. Bu yaklaşım, yeniden eğitime gerek kalmadan tespit sürecini kolaylaştırır. Aşağıda gösterildiği gibi, belirli algılama görevlerine uyarlamak için 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 tespit modelleri yerine YOLO-World'ü seçmeliyim?

YOLO-World, geleneksel Açık Kelime tespit modellerine göre çeşitli avantajlar sağlar:

  • Gerçek Zamanlı Performans: Hızlı ve 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 İstemler: Model, kullanıcıların yeniden eğitim almadan özel algılama sınıfları belirlemelerine olanak tanıyan dinamik istem ayarını destekler.
  • Benchmark Mükemmelliği: Standart ölçütlerde MDETR ve GLIP gibi diğer açık kelime dedektörlerinden hem hız hem de verimlilik açısından daha iyi performans gösterir.

Veri kümem üzerinde bir YOLO-World modelini nasıl eğitebilirim?

Veri setiniz üzerinde bir YOLO-World modelini eğitmek, sağlanan Python API 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 adresini kullanarak:

yolo train model=yolov8s-worldv2.yaml data=coco8.yaml epochs=100 imgsz=640

Mevcut önceden eğitilmiş YOLO-World modelleri ve bunların desteklediği görevler nelerdir?

Ultralytics çeşitli görevleri ve çalışma modlarını destekleyen önceden eğitilmiş birden fazla YOLO-World modeli sunar:

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

YOLO-World'ün resmi sonuçlarını sıfırdan nasıl yeniden oluşturabilirim?

Resmi sonuçları sıfırdan üretmek 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 yöntemini özel bir eğitmenle birlikte kullanın:

from ultralytics import YOLOWorld
from ultralytics.models.yolo.world.train_world import WorldTrainerFromScratch

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


Oluşturma 2024-02-14, Güncelleme 2024-07-04
Yazarlar: glenn-jocher (9), RizwanMunawar (3), Burhan-Q (1), Laughing-q (4)

Yorumlar