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ışı
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
-
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.
-
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.
-
Ç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.
-
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.
-
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.
-
Ç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')
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()
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
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
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-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.
Ö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:
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)