تخطي إلى المحتوى

نموذج YOLO-World

يقدم نموذج YOLO-World أسلوبًا متقدمًا للكشف عن الكائنات في الوقت الفعلي يعتمد على Ultralytics YOLOv8 لمهام الكشف عن المفردات المفتوحة. يمكّن هذا الابتكار من الكشف عن أي كائن داخل الصورة بناءً على نصوص وصفية. من خلال تقليل المتطلبات الحسابية بشكل كبير مع الحفاظ على الأداء التنافسي، يظهر YOLO-World كأداة متعددة الاستخدامات للعديد من التطبيقات القائمة على الرؤية.



شاهد: سير عمل تدريب YOLO World على مجموعة بيانات مخصصة

نظرة عامة على بنية نموذج YOLO-World

نظرة عامة

يعالج YOLO-World التحديات التي تواجهها نماذج الكشف التقليدية ذات المفردات المفتوحة، والتي غالبًا ما تعتمد على نماذج Transformer المرهقة التي تتطلب موارد حسابية كبيرة. كما أن اعتماد هذه النماذج على فئات الكائنات المحددة مسبقًا يحد من فائدتها في السيناريوهات الديناميكية. يحيي YOLO-World إطار عمل YOLOv8 بإمكانيات الكشف عن المفردات المفتوحة، باستخدام نمذجة اللغة المرئية والتدريب المسبق على مجموعات بيانات واسعة للتفوق في تحديد مجموعة واسعة من الكائنات في سيناريوهات التصوير الصفري بكفاءة لا مثيل لها.

الميزات الرئيسية

  1. حل في الوقت الفعلي: من خلال تسخير السرعة الحسابية للشبكات العصبية التلافيفية (CNNs)، يقدم YOLO-World حلاً سريعًا لاكتشاف المفردات المفتوحة، ويلبي احتياجات الصناعات التي تحتاج إلى نتائج فورية.

  2. الكفاءة والأداء: يقلل YOLO-World بشكل كبير من المتطلبات الحسابية ومتطلبات الموارد دون التضحية بالأداء، مما يوفر بديلاً قويًا لنماذج مثل SAM ولكن بجزء بسيط من التكلفة الحسابية، مما يتيح تطبيقات في الوقت الفعلي.

  3. الاستدلال باستخدام المفردات غير المتصلة بالإنترنت: يقدم YOLO-World إستراتيجية "موجه ثم اكتشف"، باستخدام مفردات غير متصلة بالإنترنت لزيادة تحسين الكفاءة. يمكّن هذا النهج من استخدام مطالبات مخصصة يتم حسابها مسبقًا، بما في ذلك التسميات التوضيحية أو الفئات، ليتم ترميزها وتخزينها كـتضمينات للمفردات غير المتصلة بالإنترنت، مما يبسط عملية الكشف.

  4. مدعوم بواسطة YOLOv8: استنادًا إلى Ultralytics YOLOv8، تستفيد YOLO-World من أحدث التطورات في الكشف عن الكائنات في الوقت الفعلي لتسهيل الكشف عن المفردات المفتوحة بدقة وسرعة لا مثيل لهما.

  5. التميز في الأداء المعياري: يتفوق YOLO-World على كاشفات المفردات المفتوحة الحالية، بما في ذلك سلسلة MDETR و GLIP، من حيث السرعة والكفاءة في المعايير القياسية، مما يعرض قدرة YOLOv8 الفائقة على وحدة معالجة الرسومات NVIDIA V100 واحدة.

  6. تطبيقات متعددة الاستخدامات: يفتح نهج YOLO-World المبتكر إمكانيات جديدة لعدد كبير من مهام الرؤية، مما يوفر تحسينات في السرعة بترتيب حجمي أكبر من الطرق الحالية.

النماذج المتاحة والمهام المدعومة وأنماط التشغيل

يوضح هذا القسم بالتفصيل النماذج المتاحة مع الأوزان المدربة مسبقًا الخاصة بها، والمهام التي تدعمها، وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال و التحقق من الصحة و التدريب و التصدير، ويشار إليها بـ ✅ للأوضاع المدعومة و ❌ للأوضاع غير المدعومة.

ملاحظة

تم ترحيل جميع أوزان YOLOv8-World مباشرة من مستودع YOLO-World الرسمي، مما يسلط الضوء على مساهماتهم الممتازة.

نوع النموذج الأوزان المدربة مسبقًا المهام المدعومة الاستدلال التحقق التدريب تصدير
YOLOv8s-world yolov8s-world.pt الكشف عن الكائنات
YOLOv8s-worldv2 yolov8s-worldv2.pt الكشف عن الكائنات
YOLOv8m-world yolov8m-world.pt الكشف عن الكائنات
YOLOv8m-worldv2 yolov8m-worldv2.pt الكشف عن الكائنات
YOLOv8l-world yolov8l-world.pt الكشف عن الكائنات
YOLOv8l-worldv2 yolov8l-worldv2.pt الكشف عن الكائنات
YOLOv8x-world yolov8x-world.pt الكشف عن الكائنات
YOLOv8x-worldv2 yolov8x-worldv2.pt الكشف عن الكائنات

نقل بدون تلقيم على مجموعة بيانات COCO

الأداء

نوع النموذج 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

أمثلة الاستخدام

من السهل دمج نماذج YOLO-World في تطبيقات Python الخاصة بك. توفر Ultralytics واجهة برمجة تطبيقات Python سهلة الاستخدام وأوامر CLI لتبسيط عملية التطوير.

تدريب الاستخدام

نصيحة

نوصي بشدة باستخدام yolov8-worldv2 نموذج للتدريب المخصص، لأنه يدعم التدريب الحتمي ويسهل أيضًا تصدير تنسيقات أخرى مثل onnx/tensorrt.

اكتشاف الأجسام مباشر مع train دالة (method)، كما هو موضح أدناه:

مثال

PyTorch مدربة مسبقًا *.pt بالإضافة إلى نماذج التهيئة *.yaml يمكن تمرير الملفات إلى YOLOWorld() class لإنشاء مثيل نموذج في 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

استخدام التوقع

أصبح اكتشاف الأجسام أمرًا مباشرًا باستخدام predict دالة (method)، كما هو موضح أدناه:

مثال

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

يوضح هذا المقتطف بساطة تحميل نموذج مدرب مسبقًا وتشغيل تنبؤ على صورة.

استخدام التحقق

تبسيط عملية التحقق من صحة النموذج على مجموعة البيانات على النحو التالي:

مثال

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

تتبع الاستخدام

يتم تبسيط تتبع الأجسام باستخدام نموذج YOLO-World على مقطع فيديو / صور على النحو التالي:

مثال

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"

ملاحظة

تأتي نماذج YOLO-World التي توفرها Ultralytics مهيأة مسبقًا بفئات مجموعة بيانات COCO كجزء من مفرداتها غير المتصلة بالإنترنت، مما يعزز الكفاءة للتطبيق الفوري. يتيح هذا التكامل لنماذج YOLOv8-World التعرف والتنبؤ مباشرةً بالفئات القياسية الـ 80 المحددة في مجموعة بيانات COCO دون الحاجة إلى إعداد أو تخصيص إضافي.

تعيين المطالبات

نظرة عامة على أسماء فئات مطالبات YOLO-World

يسمح إطار عمل YOLO-World بتحديد الفئات ديناميكيًا من خلال مطالبات مخصصة، مما يمكّن المستخدمين من تصميم النموذج وفقًا لاحتياجاتهم الخاصة دون الحاجة إلى إعادة التدريب. هذه الميزة مفيدة بشكل خاص لتكييف النموذج مع مجالات جديدة أو مهام محددة لم تكن في الأصل جزءًا من بيانات التدريب. من خلال تعيين مطالبات مخصصة، يمكن للمستخدمين بشكل أساسي توجيه تركيز النموذج نحو الأجسام محل الاهتمام، مما يعزز أهمية ودقة نتائج الكشف.

على سبيل المثال، إذا كان تطبيقك يتطلب فقط اكتشاف كائنات 'person' و 'bus'، فيمكنك تحديد هذه الفئات مباشرةً:

مثال

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()

يمكنك أيضًا حفظ نموذج بعد تعيين فئات مخصصة. من خلال القيام بذلك، فإنك تقوم بإنشاء نسخة من نموذج YOLO-World المتخصص لحالة الاستخدام الخاصة بك. تقوم هذه العملية بتضمين تعريفات الفئات المخصصة الخاصة بك مباشرة في ملف النموذج، مما يجعل النموذج جاهزًا للاستخدام مع الفئات المحددة الخاصة بك دون مزيد من التعديلات. اتبع هذه الخطوات لحفظ وتحميل نموذج YOLOv8 المخصص الخاص بك:

مثال

قم أولاً بتحميل نموذج YOLO-World، وتعيين فئات مخصصة له وحفظه:

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")

بعد الحفظ، يتصرف نموذج custom_yolov8s.pt مثل أي نموذج YOLOv8 مُدرَّب مسبقًا ولكنه يختلف اختلافًا رئيسيًا: فهو مُحسَّن الآن لاكتشاف الفئات التي حددتها فقط. يمكن أن يؤدي هذا التخصيص إلى تحسين أداء الاكتشاف وكفاءته بشكل كبير لسيناريوهات التطبيق المحددة الخاصة بك.

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()

فوائد الحفظ باستخدام مفردات مخصصة

  • الكفاءة: يبسط عملية الكشف من خلال التركيز على الكائنات ذات الصلة، وتقليل النفقات الحسابية وتسريع الاستدلال.
  • المرونة: يسمح بسهولة تكييف النموذج مع مهام الكشف الجديدة أو المتخصصة دون الحاجة إلى إعادة تدريب أو جمع بيانات مكثفة.
  • البساطة: يبسط النشر عن طريق إلغاء الحاجة إلى تحديد الفئات المخصصة بشكل متكرر في وقت التشغيل، مما يجعل النموذج قابلاً للاستخدام مباشرةً مع المفردات المضمنة فيه.
  • الأداء: يعزز دقة الكشف للفئات المحددة من خلال تركيز انتباه النموذج وموارده على التعرف على الكائنات المحددة.

توفر هذه الطريقة وسيلة قوية لتخصيص أحدث نماذج اكتشاف الكائنات لمهام محددة، مما يجعل الذكاء الاصطناعي المتقدم أكثر سهولة وقابلية للتطبيق على نطاق أوسع من التطبيقات العملية.

إعادة إنتاج النتائج الرسمية من البداية (تجريبي)

إعداد مجموعات البيانات

  • تدريب البيانات
مجموعة البيانات النوع عينات المربعات ملفات التعليقات التوضيحية
Objects365v1 اكتشاف 609k 9621k objects365_train.json
GQA التأريض 621k 3681k final_mixed_train_no_coco.json
Flickr30k التأريض 149k 641k final_flickr_separateGT_train.json
  • بيانات التحقق
مجموعة البيانات النوع ملفات التعليقات التوضيحية
LVIS minival اكتشاف minival.txt

إطلاق التدريب من البداية

ملاحظة

WorldTrainerFromScratch تم تخصيصه بشكل كبير للسماح بتدريب نماذج yolo-world على كل من مجموعات بيانات الكشف ومجموعات بيانات التأريض في وقت واحد. لمزيد من التفاصيل، يرجى التحقق من ultralytics.model.yolo.world.train_world.py.

مثال

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)

الاقتباسات والشكر والتقدير

نتقدم بجزيل الشكر إلى مركز رؤية الكمبيوتر التابع لمختبر Tencent AILab لعملهم الرائد في الكشف عن الكائنات في الوقت الفعلي والمفتوح باستخدام YOLO-World:

@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}
}

للمزيد من القراءة، يتوفر الإصدار الأصلي لورقة YOLO-World على arXiv. يمكن الوصول إلى شفرة المصدر الخاصة بالمشروع وموارد إضافية عبر مستودع GitHub الخاص بهم. نحن نقدر التزامهم بتطوير هذا المجال ومشاركة رؤاهم القيمة مع المجتمع.

الأسئلة الشائعة

ما هو نموذج YOLO-World وكيف يعمل؟

نموذج YOLO-World هو أسلوب متقدم للكشف عن الكائنات في الوقت الفعلي يعتمد على إطار عمل Ultralytics YOLOv8. يتفوق في مهام الكشف عن المفردات المفتوحة من خلال تحديد الكائنات داخل الصورة بناءً على نصوص وصفية. باستخدام نمذجة الرؤية واللغة والتدريب المسبق على مجموعات بيانات كبيرة، يحقق YOLO-World كفاءة وأداءً عاليين مع تقليل المتطلبات الحسابية بشكل كبير، مما يجعله مثاليًا للتطبيقات في الوقت الفعلي في مختلف الصناعات.

كيف يتعامل YOLO-World مع الاستدلال باستخدام مطالبات مخصصة؟

يدعم YOLO-World استراتيجية "المطالبة ثم الكشف"، التي تستخدم مفردات غير متصلة بالإنترنت لتعزيز الكفاءة. يتم ترميز المطالبات المخصصة مثل التسميات التوضيحية أو فئات الكائنات المحددة مسبقًا وتخزينها كـ تضمينات للمفردات غير المتصلة بالإنترنت. يبسط هذا النهج عملية الكشف دون الحاجة إلى إعادة التدريب. يمكنك تعيين هذه المطالبات ديناميكيًا داخل النموذج لتخصيصه لمهام كشف معينة، كما هو موضح أدناه:

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()

لماذا يجب علي اختيار YOLO-World على نماذج الكشف التقليدية مفتوحة المفردات؟

يوفر YOLO-World العديد من المزايا مقارنة بنماذج الكشف التقليدية ذات المفردات المفتوحة:

  • أداء في الوقت الفعلي: يستفيد من السرعة الحسابية للشبكات العصبية التلافيفية (CNNs) لتقديم اكتشاف سريع وفعال.
  • الكفاءة ومتطلبات الموارد المنخفضة: يحافظ YOLO-World على الأداء العالي مع تقليل كبير في المتطلبات الحسابية ومتطلبات الموارد.
  • مطالبات قابلة للتخصيص: يدعم النموذج إعداد المطالبات الديناميكية، مما يسمح للمستخدمين بتحديد فئات الكشف المخصصة دون إعادة التدريب.
  • التميز في الأداء المعياري: يتفوق على كاشفات المفردات المفتوحة الأخرى مثل MDETR و GLIP في كل من السرعة والكفاءة في المعايير القياسية.

كيف يمكنني تدريب نموذج YOLO-World على مجموعة البيانات الخاصة بي؟

يعد تدريب نموذج YOLO-World على مجموعة البيانات الخاصة بك أمرًا مباشرًا من خلال Python API أو أوامر CLI المتوفرة. إليك كيفية بدء التدريب باستخدام Python:

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)

أو باستخدام واجهة الأوامر (CLI):

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

ما هي نماذج YOLO-World المدربة مسبقًا المتوفرة والمهام التي تدعمها؟

تقدم Ultralytics نماذج YOLO-World متعددة مدربة مسبقًا تدعم مهامًا وأوضاع تشغيل متنوعة:

نوع النموذج الأوزان المدربة مسبقًا المهام المدعومة الاستدلال التحقق التدريب تصدير
YOLOv8s-world yolov8s-world.pt الكشف عن الكائنات
YOLOv8s-worldv2 yolov8s-worldv2.pt الكشف عن الكائنات
YOLOv8m-world yolov8m-world.pt الكشف عن الكائنات
YOLOv8m-worldv2 yolov8m-worldv2.pt الكشف عن الكائنات
YOLOv8l-world yolov8l-world.pt الكشف عن الكائنات
YOLOv8l-worldv2 yolov8l-worldv2.pt الكشف عن الكائنات
YOLOv8x-world yolov8x-world.pt الكشف عن الكائنات
YOLOv8x-worldv2 yolov8x-worldv2.pt الكشف عن الكائنات

كيف يمكنني إعادة إنتاج النتائج الرسمية لـ YOLO-World من البداية؟

لإعادة إنتاج النتائج الرسمية من البداية، تحتاج إلى تجهيز مجموعات البيانات وبدء التدريب باستخدام الكود المقدم. تتضمن عملية التدريب إنشاء قاموس بيانات وتشغيل train دالة (method) مع مدرب مخصص:

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)


📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ 19 يومًا

تعليقات