تعتيم الكائن باستخدام Ultralytics YOLOv8 🚀
ما هو تعتيم الكائن؟
تعتيم الكائن باستخدام Ultralytics YOLOv8 يتضمن تطبيق تأثير تمويه على كائنات محددة تم اكتشافها في صورة أو فيديو. يمكن تحقيق ذلك باستخدام YOLOv8 قدرات نموذجية لتحديد الكائنات ومعالجتها داخل مشهد معين.
مزايا طمس الكائن؟
- حماية الخصوصية: يعد تعتيم الكائن أداة فعالة لحماية الخصوصية عن طريق إخفاء المعلومات الحساسة أو الشخصية في الصور أو مقاطع الفيديو.
- التركيز الانتقائي: YOLOv8 يسمح بالتعتيم الانتقائي ، مما يمكن المستخدمين من استهداف كائنات محددة ، مما يضمن التوازن بين الخصوصية والاحتفاظ بالمعلومات المرئية ذات الصلة.
- المعالجة في الوقت الحقيقي: YOLOv8، تتيح الكفاءة تعتيم الكائن في الوقت الفعلي، مما يجعله مناسبا للتطبيقات التي تتطلب تحسينات خصوصية سريعة في البيئات الديناميكية.
تعتيم الكائن باستخدام YOLOv8 مثل
from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors
import cv2
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 أو الجهاز = وحدة المعالجة المركزية |
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 |
إرجاع متجهات / تضمينات المعالم من طبقات معينة |