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 dilimodelleme 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 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.
-
Ç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 ile basit bir şekilde 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ümesi 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 kontrol edin 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:
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:
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)