طمس الأجسام باستخدام Ultralytics YOLO11 🚀
ما هو تشويش الكائن؟
تمويه الأجسام باستخدام Ultralytics YOLO11 يتضمن تطبيق تأثير التعتيم على كائنات محددة مكتشفة في صورة أو فيديو. يمكن تحقيق ذلك باستخدام إمكانات نموذج YOLO11 لتحديد الأجسام داخل مشهد معين ومعالجتها.
شاهد: طمس الأجسام باستخدام Ultralytics YOLO11
مزايا طمس الكائنات؟
- حماية الخصوصية: يُعدّ تمويه الكائنات أداة فعالة لحماية الخصوصية من خلال إخفاء المعلومات الحساسة أو المعلومات الشخصية في الصور أو مقاطع الفيديو.
- التركيز الانتقائي: YOLO11 يسمح بالتشويش الانتقائي، مما يتيح للمستخدمين استهداف كائنات محددة، مما يضمن التوازن بين الخصوصية والاحتفاظ بالمعلومات المرئية ذات الصلة.
- المعالجة في الوقت الحقيقي: YOLO11 تمكّن كفاءة المعالجة في الوقت الحقيقي من تمويه الكائنات في الوقت الحقيقي، مما يجعلها مناسبة للتطبيقات التي تتطلب تحسينات على الخصوصية أثناء التنقل في البيئات الديناميكية.
طمس الكائن باستخدام YOLO11 مثال على ذلك
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))
# 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' |
يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة، أو ملف فيديو، أو دليل، أو عنوان 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 ؟
لتنفيذ تمويه الأجسام في الوقت الحقيقي باستخدام YOLO11 ، اتبع المثال Python المقدم. يتضمن ذلك استخدام YOLO11 لاكتشاف الأجسام و OpenCV لتطبيق تأثير التعتيم. إليك نسخة مبسطة:
import cv2
from ultralytics import YOLO
model = YOLO("yolo11n.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("YOLO11 Blurring", im0)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
ما هي فوائد استخدام Ultralytics YOLO11 لطمس الأجسام؟
Ultralytics YOLO11 العديد من المزايا لطمس الأجسام:
- حماية الخصوصية: إخفاء المعلومات الحساسة أو التي يمكن التعرف عليها بشكل فعال.
- تركيز انتقائي: استهداف كائنات محددة للتشويش، مع الحفاظ على المحتوى المرئي الأساسي.
- معالجة في الوقت الحقيقي: تنفيذ تشويش الكائنات بكفاءة في البيئات الديناميكية، ومناسبة لتحسينات الخصوصية الفورية.
لمزيد من التطبيقات الأكثر تفصيلاً، راجع قسم مزايا تمويه الأجسام.
هل يمكنني استخدام Ultralytics YOLO11 لتمويه الوجوه في الفيديو لأسباب تتعلق بالخصوصية؟
نعم، يمكن تهيئة Ultralytics YOLO11 لاكتشاف الوجوه في مقاطع الفيديو وتمويهها لحماية الخصوصية. من خلال التدريب أو استخدام نموذج مدرب مسبقًا للتعرف على الوجوه على وجه التحديد، يمكن معالجة نتائج الكشف باستخدام OpenCV لتطبيق تأثير التمويه. ارجع إلى دليلنا الخاص باكتشاف الأجسام باستخدام YOLO11 وقم بتعديل الكود لاستهداف اكتشاف الوجوه.
كيف يمكن مقارنة YOLO11 بنماذج أخرى لاكتشاف الأجسام مثل Faster R-CNN لتعتيم الأجسام؟
Ultralytics YOLO11 عادةً ما تتفوق على نماذج مثل Faster R-CNN من حيث السرعة، مما يجعلها أكثر ملاءمة للتطبيقات في الوقت الحقيقي. في حين أن كلا النموذجين يوفران اكتشافًا دقيقًا، إلا أن بنية YOLO11 مُحسّنة للاستدلال السريع، وهو أمر بالغ الأهمية لمهام مثل طمس الأجسام في الوقت الحقيقي. تعرف على المزيد حول الاختلافات التقنية ومقاييس الأداء في وثائقناYOLO11 .