اقتصاص الكائنات باستخدام Ultralytics YOLOv8
ما هو اقتصاص الكائن؟
اقتصاص الكائن باستخدام Ultralytics YOLOv8 يتضمن عزل واستخراج كائنات محددة تم اكتشافها من صورة أو مقطع فيديو. ال YOLOv8 يتم استخدام إمكانات النموذج لتحديد الكائنات وتحديدها بدقة ، مما يتيح الاقتصاص الدقيق لمزيد من التحليل أو المعالجة.
شاهد: اقتصاص الكائنات باستخدام Ultralytics YOLOv8
مزايا اقتصاص الكائن؟
- التحليل المركز: YOLOv8 يسهل اقتصاص الكائنات المستهدفة ، مما يسمح بالفحص المتعمق أو معالجة العناصر الفردية داخل المشهد.
- انخفاض حجم البيانات: من خلال استخراج الكائنات ذات الصلة فقط ، يساعد اقتصاص الكائنات في تقليل حجم البيانات ، مما يجعلها فعالة للتخزين أو الإرسال أو المهام الحسابية اللاحقة.
- دقة محسنة: YOLOv8، تضمن دقة الكشف عن الكائنات أن تحافظ الكائنات التي تم اقتصاصها على علاقاتها المكانية ، مع الحفاظ على سلامة المعلومات المرئية للتحليل التفصيلي.
صور
أمتعة المطار |
---|
حقائب الاقتصاص في الحزام الناقل المطار باستخدام Ultralytics YOLOv8 |
اقتصاص الكائن باستخدام YOLOv8 مثل
import os
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
model = YOLO("yolov8n.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 معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
max_det |
int |
300 |
الحد الأقصى لعدد الاكتشافات المسموح بها لكل صورة. يحد من العدد الإجمالي للكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة. |
vid_stride |
int |
1 |
خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. قيمة 1 تعالج كل إطار ، القيم الأعلى تتخطى الإطارات. |
stream_buffer |
bool |
False |
يحدد ما إذا كان يجب تخزين كل الإطارات مؤقتا عند معالجة تدفقات الفيديو (True )، أو إذا كان يجب أن يعيد النموذج أحدث إطار (False ). مفيد للتطبيقات في الوقت الحقيقي. |
visualize |
bool |
False |
ينشط تصور ميزات النموذج أثناء الاستدلال ، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment |
bool |
False |
يتيح زيادة وقت الاختبار (TTA) للتنبؤات ، مما قد يؤدي إلى تحسين متانة الكشف على حساب سرعة الاستدلال. |
agnostic_nms |
bool |
False |
تمكين منع عدم الحد الأقصى (NMS) اللاأدري للفئة ، والذي يدمج المربعات المتداخلة لفئات مختلفة. مفيد في سيناريوهات الكشف متعددة الفئات حيث يكون تداخل الفئة شائعا. |
classes |
list[int] |
None |
تصفية التوقعات إلى مجموعة من معرفات الفئة. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعددة الفئات. |
retina_masks |
bool |
False |
يستخدم أقنعة تجزئة عالية الدقة إذا كانت متوفرة في النموذج. يمكن أن يؤدي ذلك إلى تحسين جودة القناع لمهام التجزئة ، مما يوفر تفاصيل أدق. |
embed |
list[int] |
None |
يحدد الطبقات التي سيتم استخراج متجهات المعالم أو الدمجات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه. |
الأسئلة المتداولة
ما هو اقتصاص الكائنات في Ultralytics YOLOv8 وكيف يعمل؟
اقتصاص الكائنات باستخدام Ultralytics YOLOv8 يتضمن عزل واستخراج كائنات محددة من صورة أو مقطع فيديو استنادًا إلى قدرات الكشف YOLOv8. تتيح هذه العملية إجراء تحليل مركّز وتقليل حجم البيانات وتحسين الدقة من خلال الاستفادة من YOLOv8 لتحديد الأجسام بدقة عالية واقتصاصها وفقًا لذلك. للحصول على برنامج تعليمي متعمق، راجع مثال اقتصاص الكائنات.
لماذا يجب استخدام Ultralytics YOLOv8 لاقتصاص الكائنات بدلاً من الحلول الأخرى؟
Ultralytics YOLOv8 نظرًا لدقته وسرعته وسهولة استخدامه. فهو يسمح باكتشاف الكائنات واقتصاصها بشكل مفصّل ودقيق، وهو أمر ضروري للتحليل المركّز والتطبيقات التي تحتاج إلى تكامل عالٍ للبيانات. وعلاوةً على ذلك، يتكامل YOLOv8 بسلاسة مع أدوات مثل OpenVINO و TensorRT لعمليات النشر التي تتطلب قدرات في الوقت الفعلي والتحسين على أجهزة متنوعة. استكشف الفوائد في الدليل الخاص بتصدير النماذج.
كيف يمكنني تقليل حجم بيانات مجموعة البيانات الخاصة بي باستخدام اقتصاص الكائنات؟
من خلال استخدام Ultralytics YOLOv8 لاقتصاص الكائنات ذات الصلة فقط من الصور أو مقاطع الفيديو الخاصة بك، يمكنك تقليل حجم البيانات بشكل كبير، مما يجعلها أكثر كفاءة للتخزين والمعالجة. تتضمن هذه العملية تدريب النموذج على اكتشاف كائنات محددة ثم استخدام النتائج لاقتصاص هذه الأجزاء وحفظها فقط. لمزيد من المعلومات حول استغلال إمكانيات Ultralytics YOLOv8 ، تفضل بزيارة دليل البدء السريع.
هل يمكنني استخدام Ultralytics YOLOv8 لتحليل الفيديو في الوقت الفعلي واقتصاص الأجسام؟
نعم، يمكن للنموذج Ultralytics YOLOv8 معالجة موجزات الفيديو في الوقت الفعلي لاكتشاف الأجسام واقتصاصها ديناميكيًا. إن قدرات الاستدلال عالية السرعة التي يتمتع بها النموذج تجعله مثاليًا للتطبيقات في الوقت الفعلي مثل المراقبة والتحليل الرياضي وأنظمة الفحص الآلي. راجع أوضاع التتبع والتنبؤ لفهم كيفية تنفيذ المعالجة في الوقت الفعلي.
ما هي متطلبات الأجهزة اللازمة لتشغيل YOLOv8 بكفاءة في اقتصاص الكائنات؟
Ultralytics YOLOv8 تم تحسينه لكلٍ من بيئات CPU و GPU ، ولكن لتحقيق الأداء الأمثل، خاصةً للاستدلال في الوقت الحقيقي أو الاستدلال بكميات كبيرة، يوصى باستخدام GPU مخصص (على سبيل المثال، NVIDIA تسلا، سلسلة RTX). للنشر على الأجهزة خفيفة الوزن، فكر في استخدام CoreML لـ iOS أو TFLite لـ Android. يمكن العثور على مزيد من التفاصيل حول الأجهزة والتنسيقات المدعومة في خيارات نشر النموذج لدينا.
تم الإنشاء 2024-01-09، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (8)، رضوان منور (2)، إيفور زو331 (1)، أيوش إكسل (1)