اقتصاص الكائنات باستخدام Ultralytics YOLO11
ما هو اقتصاص الكائن؟
اقتصاص الكائنات باستخدام Ultralytics YOLO11 يتضمن عزل واستخراج كائنات محددة مكتشفة من صورة أو فيديو. يتم استخدام إمكانيات نموذج YOLO11 لتحديد الأجسام وتحديدها بدقة، مما يتيح الاقتصاص الدقيق لإجراء مزيد من التحليل أو المعالجة.
شاهد: اقتصاص الكائنات باستخدام Ultralytics YOLO
مزايا اقتصاص الكائنات؟
- التحليل المُركّز: YOLO11 يسهّل التحليل المُركّز: اقتصاص العناصر المستهدفة، مما يسمح بفحص أو معالجة متعمقة للعناصر الفردية داخل المشهد.
- تقليل حجم البيانات: من خلال استخراج الكائنات ذات الصلة فقط، يساعد اقتصاص الكائنات في تقليل حجم البيانات، مما يجعلها فعالة للتخزين أو النقل أو المهام الحسابية اللاحقة.
- دقة محسّنة: تضمن دقة الكشف عن الأجسام في YOLO11 أن تحافظ الأجسام التي تم اقتصاصها على علاقاتها المكانية، مما يحافظ على سلامة المعلومات المرئية للتحليل التفصيلي.
المرئيات
أمتعة المطار |
---|
اقتصاص الحقائب في الحزام الناقل بالمطار باستخدام Ultralytics YOLO11 |
مثال اقتصاص الكائن باستخدام YOLO11
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolo11n.pt")
names = model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
os.mkdir(crop_dir_name)
# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
idx = 0
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
results = model.predict(im0, show=False)
boxes = results[0].boxes.xyxy.cpu().tolist()
clss = results[0].boxes.cls.cpu().tolist()
annotator = Annotator(im0, line_width=2, example=names)
if boxes is not None:
for box, cls in zip(boxes, clss):
idx += 1
annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])
crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)
cv2.imshow("ultralytics", im0)
video_writer.write(im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
video_writer.release()
cv2.destroyAllWindows()
الحجج model.predict
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
source |
str |
'ultralytics/assets' |
يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليل، أو عنوان URL، أو معرّف جهاز للبث المباشر. يدعم مجموعة واسعة من التنسيقات والمصادر، مما يتيح التطبيق المرن عبر أنواع مختلفة من المدخلات. |
conf |
float |
0.25 |
تعيين الحد الأدنى لعتبة الثقة للاكتشافات. سيتم تجاهل الكائنات المكتشفة بثقة أقل من هذه العتبة. يمكن أن يساعد ضبط هذه القيمة في تقليل النتائج الإيجابية الخاطئة. |
iou |
float |
0.7 |
عتبة التقاطع فوق الاتحاد (IoU) للقمع غير الأقصى (NMS). تؤدي القيم المنخفضة إلى عدد أقل من الاكتشافات عن طريق التخلص من المربعات المتداخلة، وهو أمر مفيد لتقليل التكرارات. |
imgsz |
int or tuple |
640 |
يحدد حجم الصورة للاستدلال. يمكن أن يكون عددًا صحيحًا واحدًا 640 لتغيير حجم المربع أو (الارتفاع، العرض) المربّع أو (الارتفاع، العرض). يمكن أن يحسن التحجيم المناسب من الكشف الدقة وسرعة المعالجة. |
half |
bool |
False |
تمكين الاستدلال بنصف الدقة (FP16)، والذي يمكن أن يسرّع استدلال النموذج على وحدات معالجة الرسومات المدعومة بأقل تأثير على الدقة. |
device |
str |
None |
يحدد جهاز الاستدلال (على سبيل المثال, cpu , cuda:0 أو 0 ). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
batch |
int |
1 |
يحدد حجم الدُفعة للاستدلال (يعمل فقط عندما يكون المصدر هو دليل أو ملف فيديو أو .txt الملف). يمكن أن يوفر حجم الدفعة الأكبر إنتاجية أعلى، مما يقلل من إجمالي الوقت اللازم للاستدلال. |
max_det |
int |
300 |
الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من العدد الإجمالي للأجسام التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة. |
vid_stride |
int |
1 |
خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. القيمة 1 تعالج كل إطار، والقيم الأعلى تتخطى الإطارات. |
stream_buffer |
bool |
False |
يحدد ما إذا كان سيتم وضع الإطارات الواردة في قائمة الانتظار لبث الفيديو. في حالة False ، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسّن لتطبيقات الوقت الحقيقي). إذا كان 'صحيح'، يتم وضع الإطارات الجديدة في قائمة انتظار في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكن سيتسبب في حدوث تأخير في التأخير إذا كان معدل الإطارات في الثانية في الاستدلال أقل من معدل الإطارات في الثانية في الدفق. |
visualize |
bool |
False |
يُفعّل تصور ميزات النموذج أثناء الاستدلال، مما يوفر نظرة ثاقبة لما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment |
bool |
False |
تمكين زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن من قوة الكشف على حساب سرعة الاستدلال. |
agnostic_nms |
bool |
False |
تمكين الكبت غير الفئوي غير الفئوي (NMS)، الذي يدمج المربعات المتداخلة من فئات مختلفة. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا. |
classes |
list[int] |
None |
تصفية التنبؤات إلى مجموعة من معرّفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعدد الفئات. |
retina_masks |
bool |
False |
إرجاع أقنعة تجزئة عالية الدقة. الأقنعة التي تم إرجاعها (masks.data ) ستطابق حجم الصورة الأصلية إذا تم تمكينها. أما إذا تم تعطيلها، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال. |
embed |
list[int] |
None |
يحدد الطبقات التي يتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه. |
project |
str |
None |
اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ في حالة save ممكّنة. |
name |
str |
None |
اسم عملية تشغيل التنبؤ. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ في حالة save ممكّنة. |
الأسئلة الشائعة
ما هو اقتصاص الكائنات في Ultralytics YOLO11 وكيف يعمل؟
اقتصاص الكائنات باستخدام Ultralytics YOLO11 يتضمن عزل واستخراج كائنات محددة من صورة أو مقطع فيديو استنادًا إلى قدرات الكشف YOLO11. تسمح هذه العملية بإجراء تحليل مركّز وتقليل حجم البيانات وتعزيز الدقة من خلال الاستفادة من YOLO11 لتحديد الأجسام بدقة عالية واقتصاصها وفقًا لذلك. للحصول على برنامج تعليمي متعمق، راجع مثال اقتصاص الكائنات.
لماذا يجب استخدام Ultralytics YOLO11 لاقتصاص الكائنات بدلاً من الحلول الأخرى؟
Ultralytics YOLO11 نظرًا لدقته وسرعته وسهولة استخدامه. فهو يسمح باكتشاف الكائنات واقتصاصها بشكل مفصّل ودقيق، وهو أمر ضروري للتحليل المركّز والتطبيقات التي تحتاج إلى تكامل عالٍ للبيانات. وعلاوةً على ذلك، يتكامل YOLO11 بسلاسة مع أدوات مثل OpenVINO و TensorRT لعمليات النشر التي تتطلب قدرات في الوقت الفعلي والتحسين على أجهزة متنوعة. استكشف الفوائد في الدليل الخاص بتصدير النماذج.
كيف يمكنني تقليل حجم بيانات مجموعة البيانات الخاصة بي باستخدام اقتصاص الكائنات؟
من خلال استخدام Ultralytics YOLO11 لاقتصاص الكائنات ذات الصلة فقط من الصور أو مقاطع الفيديو الخاصة بك، يمكنك تقليل حجم البيانات بشكل كبير، مما يجعلها أكثر كفاءة للتخزين والمعالجة. تتضمن هذه العملية تدريب النموذج على اكتشاف كائنات محددة ثم استخدام النتائج لاقتصاص هذه الأجزاء وحفظها فقط. لمزيد من المعلومات حول استغلال إمكانيات Ultralytics YOLO11 ، تفضل بزيارة دليل البدء السريع.
هل يمكنني استخدام Ultralytics YOLO11 لتحليل الفيديو في الوقت الفعلي واقتصاص الأجسام؟
نعم، يمكن للنموذج Ultralytics YOLO11 معالجة موجزات الفيديو في الوقت الفعلي لاكتشاف الأجسام واقتصاصها ديناميكيًا. إن قدرات الاستدلال عالية السرعة التي يتمتع بها النموذج تجعله مثاليًا للتطبيقات في الوقت الفعلي مثل المراقبة والتحليل الرياضي وأنظمة الفحص الآلي. تحقق من أوضاع التتبع والتنبؤ لفهم كيفية تنفيذ المعالجة في الوقت الفعلي.
ما هي متطلبات الأجهزة اللازمة لتشغيل YOLO11 بكفاءة في اقتصاص الكائنات؟
Ultralytics YOLO11 تم تحسينه لكلٍ من بيئات CPU و GPU ، ولكن لتحقيق الأداء الأمثل، خاصةً للاستدلال في الوقت الحقيقي أو الاستدلال بكميات كبيرة، يوصى باستخدام GPU مخصص (على سبيل المثال، NVIDIA تسلا، سلسلة RTX). للنشر على الأجهزة خفيفة الوزن، فكر في استخدام CoreML لـ iOS أو TFLite لـ Android. يمكن العثور على مزيد من التفاصيل حول الأجهزة والتنسيقات المدعومة في خيارات نشر النموذج لدينا.