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

YOLO-النموذج العالمي

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



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

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

لمحة عامة

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

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

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

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

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

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

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

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

النماذج المتوفرة والمهام المدعومة وأوضاع التشغيل

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

ملاحظة

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

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

نقل الطلقات الصفرية على مجموعة بيانات COCO

نوع الموديل mAP mAP50 mAP75
yolov8s-العالم 37.4 52.0 40.6
yolov8s-العالمv2 37.7 52.2 41.0
yolov8m-العالم 42.0 57.0 45.6
yolov8m-العالمv2 43.0 58.4 46.8
yolov8l-العالم 45.7 61.3 49.8
yolov8l-العالمv2 45.8 61.3 49.8
yolov8x-العالم 47.0 63.0 51.2
yolov8x-العالمv2 47.1 62.8 51.4

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

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

استخدام القطار

نصيحة

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

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

مثال على ذلك

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

مثال على ذلك

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-نموذج العالم على فيديو/صور على النحو التالي:

مثال على ذلك

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"

ملاحظة

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

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

YOLO-نظرة عامة على أسماء فئات العالم الموجه

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

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

مثال على ذلك

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

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

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

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

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

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

  • بيانات القطار
مجموعة البيانات النوع العينات الصناديق ملفات التعليقات التوضيحية
كائنات365v1 الكشف 609k 9621k كائنات365_تدريب_365.json
GQA التأريض 621k 3681k final_mixed_train_train_no_coco.json
فليكر 30 ك التأريض 149k 641k final_flickr_flickr_separateGT_train.json
  • بيانات فال
مجموعة البيانات النوع ملفات التعليقات التوضيحية
LVIS مينيفال الكشف مينيفال.txt

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

ملاحظة

WorldTrainerFromScratch مخصص بشكل كبير للسماح بتدريب yolo-نماذج العالم على كل من مجموعات بيانات الكشف ومجموعات بيانات التأريض في وقت واحد. لمزيد من التفاصيل يرجى مراجعة 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="../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)

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

نعرب عن امتناننا لمركز 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-نموذج العالم -نموذج العالم هو نهج متقدم للكشف عن الأجسام في الوقت الحقيقي يعتمد على 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-يوفر العالم العديد من المزايا مقارنةً بنماذج الكشف عن المفردات المفتوحة التقليدية:

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

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

يعد تدريب نموذج YOLO-World على مجموعة البيانات الخاصة بك أمرًا مباشرًا من خلال واجهة برمجة التطبيقات Python المتوفرة أو الأوامر 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-العالم yolov8s-العالم.pt اكتشاف الكائن
YOLOv8s-العالمv2 yolov8s-Worldv2.pt اكتشاف الكائن
YOLOv8m-العالم yolov8m-العالم.pt اكتشاف الكائن
YOLOv8m-العالمv2 yolov8m-Worldv2.pt اكتشاف الكائن
YOLOv8l-العالم yolov8l-العالم.pt اكتشاف الكائن
YOLOv8l-العالمv2 yolov8l-Worldv2.pt اكتشاف الكائن
YOLOv8x-العالم yolov8x-العالم.pt اكتشاف الكائن
YOLOv8x-العالمv2 yolov8x-Worldv2.pt اكتشاف الكائن

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

لإعادة إنتاج النتائج الرسمية من الصفر، تحتاج إلى إعداد مجموعات البيانات وتشغيل التدريب باستخدام الكود المقدم. يتضمّن إجراء التدريب إنشاء قاموس بيانات وتشغيل train طريقة مع مدرب مخصص:

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)
📅 تم إنشاؤها قبل 9 أشهر ✏️ تم التحديث منذ 1 شهر

التعليقات