انتقل إلى المحتوى

تعتيم الكائن باستخدام Ultralytics YOLOv8 🚀

ما هو تعتيم الكائن؟

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



شاهد: طمس الأجسام باستخدام Ultralytics YOLOv8

مزايا طمس الكائن؟

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

تعتيم الكائن باستخدام YOLOv8 مثل

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

# Blur ratio
blur_ratio = 50

# Video writer
video_writer = cv2.VideoWriter("object_blurring_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

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):
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
            blur_obj = cv2.blur(obj, (blur_ratio, blur_ratio))

            im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = blur_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' الدليل المصدر للصور أو مقاطع الفيديو
conf float 0.25 عتبة ثقة الكائن للكشف
iou float 0.7 التقاطع على عتبة الاتحاد (IoU) ل NMS
imgsz int or tuple 640 حجم الصورة كعدد قياسي أو قائمة (H ، W) ، أي (640 ، 480)
half bool False استخدام نصف الدقة (FP16)
device None or str None الجهاز المراد تشغيله عليه، أي cuda الجهاز=0/1/2/3 أو الجهاز=cpu
max_det int 300 الحد الأقصى لعدد الاكتشافات لكل صورة
vid_stride bool False خطوة معدل إطارات الفيديو
stream_buffer bool False التخزين المؤقت لجميع إطارات البث (صواب) أو إرجاع أحدث إطار (خطأ)
visualize bool False تصور ميزات النموذج
augment bool False تطبيق تكبير الصورة على مصادر التنبؤ
agnostic_nms bool False NMS اللاأدري الطبقي
classes list[int] None تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3]
retina_masks bool False استخدام أقنعة تجزئة عالية الدقة
embed list[int] None إرجاع متجهات / تضمينات المعالم من طبقات معينة

الأسئلة المتداولة

ما هو تمويه الكائن مع Ultralytics YOLOv8 ؟

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

كيف يمكنني تنفيذ تمويه الأجسام في الوقت الحقيقي باستخدام YOLOv8 ؟

لتنفيذ تمويه الأجسام في الوقت الحقيقي باستخدام YOLOv8 ، اتبع المثال Python المقدم. يتضمن ذلك استخدام YOLOv8 لاكتشاف الأجسام و OpenCV لتطبيق تأثير التعتيم. إليك نسخة مبسطة:

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break

    results = model.predict(im0, show=False)
    for box in results[0].boxes.xyxy.cpu().tolist():
        obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]
        im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])] = cv2.blur(obj, (50, 50))

    cv2.imshow("YOLOv8 Blurring", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

ما هي فوائد استخدام Ultralytics YOLOv8 لطمس الأجسام؟

Ultralytics YOLOv8 العديد من المزايا لطمس الأجسام:

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

لمزيد من التطبيقات الأكثر تفصيلاً، راجع قسم مزايا تمويه الأجسام.

هل يمكنني استخدام Ultralytics YOLOv8 لتمويه الوجوه في الفيديو لأسباب تتعلق بالخصوصية؟

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

كيف يمكن مقارنة YOLOv8 بنماذج الكشف عن الأجسام الأخرى مثل Faster R-CNN لتعتيم الأجسام؟

Ultralytics YOLOv8 عادةً ما تتفوق على نماذج مثل Faster R-CNN من حيث السرعة، مما يجعلها أكثر ملاءمة للتطبيقات في الوقت الحقيقي. في حين أن كلا النموذجين يوفران اكتشافًا دقيقًا، إلا أن بنية YOLOv8 مُحسّنة للاستدلال السريع، وهو أمر بالغ الأهمية لمهام مثل طمس الأجسام في الوقت الحقيقي. تعرف على المزيد حول الاختلافات التقنية ومقاييس الأداء في وثائقناYOLOv8 .



تم الإنشاء 2024-01-09، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (6)، رضوان منور (1)، إيفور زو331 (1)، أيوش إكسل (1)

التعليقات