YOLO-نموذج العالم
ال YOLO-نموذج العالم يقدم متقدمة، في الوقت الحقيقي Ultralytics YOLOv8نهج قائم على مهام الكشف عن المفردات المفتوحة. يتيح هذا الابتكار اكتشاف أي كائن داخل الصورة بناء على نصوص وصفية. من خلال خفض المتطلبات الحسابية بشكل كبير مع الحفاظ على الأداء التنافسي ، YOLO- يبرز العالم كأداة متعددة الاستخدامات للعديد من التطبيقات القائمة على الرؤية.
شاهد: YOLO سير عمل التدريب العالمي على مجموعة بيانات مخصصة
نظره عامه
YOLO-World tackles the challenges faced by traditional Open-Vocabulary detection models, which often rely on cumbersome Transformer models requiring extensive computational resources. These models' dependence on pre-defined object categories also restricts their utility in dynamic scenarios. YOLO-World revitalizes the YOLOv8 framework with open-vocabulary detection capabilities, employing vision-language modeling and pre-training on expansive datasets to excel at identifying a broad array of objects in zero-shot scenarios with unmatched efficiency.
الميزات الرئيسية
-
الحل في الوقت الحقيقي: تسخير السرعة الحسابية لشبكات CNN ، YOLOتقدم -World حلا سريعا للكشف عن المفردات المفتوحة ، يلبي احتياجات الصناعات التي تحتاج إلى نتائج فورية.
-
الكفاءة والأداء: YOLO- يخفض العالم المتطلبات الحسابية والموارد دون التضحية بالأداء ، مما يوفر بديلا قويا لنماذج مثل SAM ولكن بجزء بسيط من التكلفة الحسابية ، مما يتيح التطبيقات في الوقت الفعلي.
-
الاستدلال مع المفردات غير المتصلة بالإنترنت: YOLO-يقدم World استراتيجية "السرعة ثم الكشف" ، باستخدام مفردات غير متصلة بالإنترنت لتعزيز الكفاءة بشكل أكبر. يتيح هذا النهج استخدام المطالبات المخصصة المحسوبة مسبقا ، بما في ذلك التسميات التوضيحية أو الفئات ، ليتم ترميزها وتخزينها كتضمين مفردات غير متصلة بالإنترنت ، مما يبسط عملية الكشف.
-
يعمل بواسطة YOLOv8 مبني على:Ultralytics YOLOv8, YOLO-World تستفيد من أحدث التطورات في الكشف عن الأشياء في الوقت الفعلي لتسهيل اكتشاف المفردات المفتوحة بدقة وسرعة لا مثيل لها.
-
التفوق المعياري: YOLO-يتفوق العالم على أجهزة كشف المفردات المفتوحة الحالية، بما في ذلك سلسلة MDETR وسلسلة GLIP، من حيث السرعة والكفاءة على المعايير القياسية، مما يُظهر القدرة الفائقة YOLOv8 على جهاز NVIDIA V100 GPU واحد .
-
تطبيقات متعددة الاستخدامات: YOLO- يفتح النهج المبتكر في العالم إمكانيات جديدة للعديد من مهام الرؤية ، مما يوفر تحسينات في السرعة بأوامر من حيث الحجم مقارنة بالأساليب الحالية.
الطرز المتوفرة والمهام المدعومة وأوضاع التشغيل
يوضح هذا القسم تفاصيل النماذج المتوفرة مع أوزانها المحددة المدربة مسبقا، والمهام التي تدعمها، وتوافقها مع أوضاع التشغيل المختلفة مثل الاستدلال والتحقق من الصحة والتدريب والتصدير، المشار إليها ✅ بالأوضاع المدعومة والأوضاع ❌ غير المدعومة.
ملاحظه
كل ال YOLOv8- تم ترحيل الأوزان العالمية مباشرة من المسؤول YOLO- مستودع العالم ، مع تسليط الضوء على مساهماتهم الممتازة.
نوع الموديل | الأوزان المدربة مسبقا | المهام المدعومة | استدلال | التحقق | تدريب | تصدير |
---|---|---|---|---|---|---|
YOLOv8s-عالم | yolov8s-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-وورلد في 2 | yolov8s-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-عالم | yolov8m-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-وورلد في 2 | yolov8m-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-عالم | yolov8l-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-وورلد في 2 | yolov8l-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-عالم | yolov8x-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-وورلد في 2 | yolov8x-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
نقل طلقة صفرية على مجموعة بيانات COCO
نوع الموديل | خريطة | mAP50 | mAP75 |
---|---|---|---|
yolov8s-عالم | 37.4 | 52.0 | 40.6 |
yolov8s-وورلد في 2 | 37.7 | 52.2 | 41.0 |
yolov8m-عالم | 42.0 | 57.0 | 45.6 |
yolov8m-وورلد في 2 | 43.0 | 58.4 | 46.8 |
yolov8l-عالم | 45.7 | 61.3 | 49.8 |
yolov8l-وورلد في 2 | 45.8 | 61.3 | 49.8 |
yolov8x-عالم | 47.0 | 63.0 | 51.2 |
yolov8x-وورلد في 2 | 47.1 | 62.8 | 51.4 |
أمثلة الاستخدام
ال YOLO-نماذج العالم من السهل دمجها في الخاص بك Python التطبيقات. Ultralytics يوفر سهل الاستخدام Python واجهة برمجة التطبيقات و CLI أوامر لتبسيط التطوير.
استخدام القطار
بقشيش
نوصي بشدة باستخدام yolov8-worldv2
نموذج للتدريب المخصص ، لأنه يدعم التدريب الحتمي ويسهل أيضا تصدير تنسيقات أخرى ، أي onnx/tensorrt.
Object detection is straightforward with the train
الطريقة ، كما هو موضح أدناه:
مثل
PyTorch pretrained *.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")
توقع الاستخدام
اكتشاف الكائن واضح ومباشر مع 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()
يوضح هذا المقتطف بساطة تحميل نموذج مدرب مسبقا وتشغيل تنبؤ على صورة.
استخدام فال
يتم تبسيط التحقق من صحة النموذج على مجموعة البيانات على النحو التالي:
مثل
استخدام المسار
يتم تبسيط تتبع الكائنات باستخدام YOLO-نموذج العالم على فيديو/صور على النحو التالي:
مثل
ملاحظه
ال YOLO-نماذج عالمية مقدمة من Ultralytics تأتي مهيأة مسبقا مع فئات مجموعة بيانات COCO كجزء من مفرداتها غير المتصلة بالإنترنت ، مما يعزز الكفاءة للتطبيق الفوري. يسمح هذا التكامل ل YOLOv8- نماذج العالم للتعرف مباشرة على الفئات القياسية ال 80 المحددة في مجموعة بيانات COCO والتنبؤ بها دون الحاجة إلى إعداد أو تخصيص إضافي.
تعيين المطالبات
The YOLO-World framework allows for the dynamic specification of classes through custom prompts, empowering users to tailor the model to their specific needs without retraining. This feature is particularly useful for adapting the model to new domains or specific tasks that were not originally part of the training data. By setting custom prompts, users can essentially guide the model's focus towards objects of interest, enhancing the relevance and accuracy of the detection results.
على سبيل المثال ، إذا كان تطبيقك يتطلب فقط اكتشاف كائنات "شخص" و "ناقل" ، فيمكنك تحديد هذه الفئات مباشرة:
مثل
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-نموذج عالمي متخصص لحالة الاستخدام الخاصة بك. تقوم هذه العملية بتضمين تعريفات الفئة المخصصة الخاصة بك مباشرة في ملف النموذج، مما يجعل النموذج جاهزا للاستخدام مع الفئات المحددة دون مزيد من التعديلات. اتبع هذه الخطوات لحفظ وتحميل مخصص الخاص بك YOLOv8 نموذج:
مثل
أول تحميل أ YOLO-نموذج العالم ، تعيين فئات مخصصة له وحفظه:
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 نموذج ولكن مع اختلاف رئيسي: تم تحسينه الآن لاكتشاف الفئات التي حددتها فقط. يمكن أن يؤدي هذا التخصيص إلى تحسين أداء الكشف وكفاءته بشكل كبير لسيناريوهات التطبيق الخاصة بك.
فوائد الادخار باستخدام المفردات المخصصة
- الكفاءة: يبسط عملية الكشف من خلال التركيز على الكائنات ذات الصلة وتقليل النفقات الحسابية وتسريع الاستدلال.
- المرونة: يسمح بالتكيف السهل للنموذج مع مهام الكشف الجديدة أو المتخصصة دون الحاجة إلى إعادة تدريب مكثفة أو جمع البيانات.
- البساطة: يبسط النشر من خلال التخلص من الحاجة إلى تحديد الفئات المخصصة بشكل متكرر في وقت التشغيل ، مما يجعل النموذج قابلا للاستخدام مباشرة مع مفرداته المضمنة.
- Performance: Enhances detection accuracy for specified classes by focusing the model's attention and resources on recognizing the defined objects.
يوفر هذا النهج وسيلة قوية لتخصيص أحدث نماذج الكشف عن الكائنات لمهام محددة ، مما يجعل الذكاء الاصطناعي المتقدمة أكثر سهولة وقابلية للتطبيق على مجموعة واسعة من التطبيقات العملية.
إعادة إنتاج النتائج الرسمية من الصفر (تجريبي)
إعداد مجموعات البيانات
- بيانات القطار
مجموعة البيانات | نوع | العينات | مربعات | ملفات التعليقات التوضيحية |
---|---|---|---|---|
الكائنات365v1 | الكشف | 609k | 9621k | objects365_train.json |
جي كيو كيو | اسس | 621k | 3681k | final_mixed_train_no_coco.json |
فليكر 30 كيلو | اسس | 149k | 641k | final_flickr_separateGT_train.json |
- بيانات Val
مجموعة البيانات | نوع | ملفات التعليقات التوضيحية |
---|---|---|
LVIS مينيفال | الكشف | minival.txt |
إطلاق التدريب من الصفر
ملاحظه
WorldTrainerFromScratch
مخصص للغاية للسماح بالتدريب yolo-نماذج عالمية على كل من مجموعات بيانات الكشف ومجموعات بيانات التأريض في وقت واحد. مزيد من التفاصيل يرجى الخروج ultralytics.نموذج.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-عالم:
لمزيد من القراءة ، الأصل YOLO-ورقة العالم متاح على arXiv. يمكن الوصول إلى الكود المصدري للمشروع والموارد الإضافية عبر مستودع GitHub الخاص بهم. نحن نقدر التزامهم بتطوير المجال ومشاركة رؤاهم القيمة مع المجتمع.
الأسئلة المتداولة
ما هو نموذج YOLO-World وكيف يعمل؟
YOLO-نموذج العالم -نموذج العالم هو نهج متقدم للكشف عن الأجسام في الوقت الحقيقي يعتمد على Ultralytics YOLOv8 إطار العمل. وهو يتفوق في مهام الكشف عن المفردات المفتوحة من خلال تحديد الكائنات داخل الصورة بناءً على النصوص الوصفية. باستخدام نمذجة لغة الرؤية والتدريب المسبق على مجموعات البيانات الكبيرة، يحقق YOLO-World كفاءة وأداءً عاليًا مع انخفاض كبير في المتطلبات الحسابية، مما يجعله مثاليًا للتطبيقات في الوقت الفعلي في مختلف الصناعات.
كيف يتعامل YOLO-World مع الاستدلال مع المطالبات المخصصة؟
YOLO-World supports a "prompt-then-detect" strategy, which utilizes an offline vocabulary to enhance efficiency. Custom prompts like captions or specific object categories are pre-encoded and stored as offline vocabulary embeddings. This approach streamlines the detection process without the need for retraining. You can dynamically set these prompts within the model to tailor it to specific detection tasks, as shown below:
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-World والنماذج العالمية المتاحة والمهام التي تدعمها؟
Ultralytics تقدم نماذج متعددة مدربة مسبقاً YOLO-World تدعم مختلف المهام وأنماط التشغيل:
نوع الموديل | الأوزان المدربة مسبقا | المهام المدعومة | استدلال | التحقق | تدريب | تصدير |
---|---|---|---|---|---|---|
YOLOv8s-عالم | yolov8s-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8s-وورلد في 2 | yolov8s-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8m-عالم | yolov8m-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8m-وورلد في 2 | yolov8m-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8l-عالم | yolov8l-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8l-وورلد في 2 | yolov8l-worldv2.pt | كشف الكائن | ✅ | ✅ | ✅ | ✅ |
YOLOv8x-عالم | yolov8x-world.pt | كشف الكائن | ✅ | ✅ | ✅ | ❌ |
YOLOv8x-وورلد في 2 | 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)