Bỏ để qua phần nội dung

Làm mờ đối tượng bằng cách sử dụng Ultralytics YOLOv8 🚀

Object Blurring là gì?

Làm mờ đối tượng với Ultralytics YOLOv8 Liên quan đến việc áp dụng hiệu ứng làm mờ cho các đối tượng được phát hiện cụ thể trong hình ảnh hoặc video. Điều này có thể đạt được bằng cách sử dụng YOLOv8 Mô hình hóa khả năng để xác định và thao tác các đối tượng trong một cảnh nhất định.

Ưu điểm của Object Blurring?

  • Bảo vệ quyền riêng tư: Làm mờ đối tượng là một công cụ hiệu quả để bảo vệ quyền riêng tư bằng cách che giấu thông tin nhạy cảm hoặc nhận dạng cá nhân trong hình ảnh hoặc video.
  • Tập trung chọn lọc: YOLOv8 cho phép làm mờ có chọn lọc, cho phép người dùng nhắm mục tiêu các đối tượng cụ thể, đảm bảo cân bằng giữa quyền riêng tư và lưu giữ thông tin hình ảnh có liên quan.
  • Xử lý thời gian thực: YOLOv8Hiệu quả của nó cho phép làm mờ đối tượng trong thời gian thực, làm cho nó phù hợp với các ứng dụng yêu cầu cải tiến quyền riêng tư nhanh chóng trong môi trường động.

Làm mờ đối tượng bằng cách sử dụng YOLOv8 Ví dụ

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

Lập luận model.predict

Tên Kiểu Mặc định Sự miêu tả
source str 'ultralytics/assets' Thư mục nguồn cho hình ảnh hoặc video
conf float 0.25 Ngưỡng tin cậy đối tượng để phát hiện
iou float 0.7 giao điểm trên ngưỡng hợp nhất (IoU) cho NMS
imgsz int or tuple 640 Kích thước hình ảnh dưới dạng vô hướng hoặc danh sách (h, w), tức là (640, 480)
half bool False sử dụng độ chính xác một nửa (FP16)
device None or str None thiết bị để chạy, tức là thiết bị cuda = 0/1/2/3 hoặc thiết bị = CPU
max_det int 300 Số lần phát hiện tối đa trên mỗi hình ảnh
vid_stride bool False Sải bước tốc độ khung hình video
stream_buffer bool False đệm tất cả các khung hình phát trực tuyến (True) hoặc trả về khung hình gần đây nhất (False)
visualize bool False Trực quan hóa các tính năng của mô hình
augment bool False Áp dụng tăng cường hình ảnh cho các nguồn dự đoán
agnostic_nms bool False NMS bất khả tri lớp
classes list[int] None Lọc kết quả theo lớp, tức là lớp = 0 hoặc lớp = [0,2,3]
retina_masks bool False Sử dụng mặt nạ phân đoạn có độ phân giải cao
embed list[int] None Trả về các vectơ / nhúng tính năng từ các lớp đã cho


Đã tạo 2024-01-09, Cập nhật 2024-01-15
Tác giả: glenn-jocher (2), AyushExel (1), RizwanMunawar (1)

Ý kiến