اقتصاص الكائنات باستخدام Ultralytics YOLO11
ما هو اقتصاص الكائن؟
Object cropping with Ultralytics YOLO11 involves isolating and extracting specific detected objects from an image or video. The YOLO11 model capabilities are utilized to accurately identify and delineate objects, enabling precise cropping for further analysis or manipulation.
شاهد: Object Cropping using Ultralytics YOLO
مزايا اقتصاص الكائن؟
- Focused Analysis: YOLO11 facilitates targeted object cropping, allowing for in-depth examination or processing of individual items within a scene.
- انخفاض حجم البيانات: من خلال استخراج الكائنات ذات الصلة فقط ، يساعد اقتصاص الكائنات في تقليل حجم البيانات ، مما يجعلها فعالة للتخزين أو الإرسال أو المهام الحسابية اللاحقة.
- Enhanced Precision: YOLO11's object detection accuracy ensures that the cropped objects maintain their spatial relationships, preserving the integrity of the visual information for detailed analysis.
صور
أمتعة المطار |
---|
Suitcases Cropping at airport conveyor belt using 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 معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
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 وكيف يعمل؟
Object cropping using Ultralytics YOLO11 involves isolating and extracting specific objects from an image or video based on YOLO11's detection capabilities. This process allows for focused analysis, reduced data volume, and enhanced precision by leveraging YOLO11 to identify objects with high accuracy and crop them accordingly. For an in-depth tutorial, refer to the object cropping example.
لماذا يجب استخدام Ultralytics YOLO11 لاقتصاص الكائنات بدلاً من الحلول الأخرى؟
Ultralytics YOLO11 stands out due to its precision, speed, and ease of use. It allows detailed and accurate object detection and cropping, essential for focused analysis and applications needing high data integrity. Moreover, YOLO11 integrates seamlessly with tools like OpenVINO and TensorRT for deployments requiring real-time capabilities and optimization on diverse hardware. Explore the benefits in the guide on model export.
كيف يمكنني تقليل حجم بيانات مجموعة البيانات الخاصة بي باستخدام اقتصاص الكائنات؟
By using Ultralytics YOLO11 to crop only relevant objects from your images or videos, you can significantly reduce the data size, making it more efficient for storage and processing. This process involves training the model to detect specific objects and then using the results to crop and save these portions only. For more information on exploiting Ultralytics YOLO11's capabilities, visit our quickstart guide.
هل يمكنني استخدام Ultralytics YOLO11 لتحليل الفيديو في الوقت الفعلي واقتصاص الأجسام؟
Yes, Ultralytics YOLO11 can process real-time video feeds to detect and crop objects dynamically. The model's high-speed inference capabilities make it ideal for real-time applications such as surveillance, sports analysis, and automated inspection systems. Check out the tracking and prediction modes to understand how to implement real-time processing.
ما هي متطلبات الأجهزة اللازمة لتشغيل YOLO11 بكفاءة من أجل اقتصاص الكائنات؟
Ultralytics YOLO11 is optimized for both CPU and GPU environments, but to achieve optimal performance, especially for real-time or high-volume inference, a dedicated GPU (e.g., NVIDIA Tesla, RTX series) is recommended. For deployment on lightweight devices, consider using CoreML for iOS or TFLite for Android. More details on supported devices and formats can be found in our model deployment options.