跳至内容

使用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 或用于实时馈送的设备 ID。支持多种格式和来源,可灵活应用于不同类型的输入
conf float 0.25 设置检测的最小置信度阈值。如果检测到的对象置信度低于此阈值,则将不予考虑。调整该值有助于减少误报。
iou float 0.7 非最大抑制 (NMS) 的交叉重叠(IoU) 阈值。较低的数值可以消除重叠的方框,从而减少检测次数,这对减少重复检测非常有用。
imgsz int or tuple 640 定义用于推理的图像大小。可以是一个整数 640 或一个(高度、宽度)元组。适当调整大小可以提高检测效率 精确度 和处理速度。
half bool False 启用精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低。
device str None 指定用于推理的设备(例如:......)、 cpu, cuda:00).允许用户选择CPU 、特定GPU 或其他计算设备执行模型。
batch int 1 指定推理的批量大小(仅当来源为 目录、视频文件或 .txt 文件).更大的批次规模可以提供更高的吞吐量,缩短推理所需的总时间。
max_det int 300 每幅图像允许的最大检测次数。限制模型在单次推理中可以检测到的物体总数,防止在密集场景中产生过多的输出。
vid_stride int 1 视频输入的帧间距。允许跳过视频中的帧,以加快处理速度,但会牺牲时间分辨率。数值为 1 时会处理每一帧,数值越大越跳帧。
stream_buffer bool False 决定是否对接收到的视频流帧进行排队。如果 False,旧帧会被丢弃,以容纳新帧(针对实时应用进行了优化)。如果为 "真",则在缓冲区中排队等待新帧,确保不会跳过任何帧,但如果推理的 FPS 低于流的 FPS,则会造成延迟。
visualize bool False 在推理过程中激活模型特征的可视化,从而深入了解模型 "看到 "了什么。这对调试和模型解释非常有用。
augment bool False 可对预测进行测试时间增强(TTA),从而在牺牲推理速度的情况下提高检测的鲁棒性。
agnostic_nms bool False 启用与类别无关的非最大抑制 (NMS),可合并不同类别的重叠方框。这在多类检测场景中非常有用,因为在这种场景中,类的重叠很常见。
classes list[int] None 根据一组类别 ID 过滤预测结果。只有属于指定类别的检测结果才会返回。这对于在多类检测任务中集中检测相关对象非常有用。
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 文档

📅 11 个月前创建✏️ 2 个月前更新

评论