跳至内容

使用对象裁剪Ultralytics YOLO11

什么是对象裁剪?

对象裁剪 Ultralytics YOLO11对象裁剪是指从图像或视频中分离并提取特定的检测对象。YOLO11 模型功能可用于准确识别和划分物体,从而实现精确裁剪,以便进一步分析或处理。



观看: 使用对象裁剪Ultralytics YOLO

对象裁剪的优势?

  • 重点分析:YOLO11 方便对目标对象进行裁剪,可对场景中的单个项目进行深入检查或处理。
  • 减少数据量:通过只提取相关对象,对象裁剪有助于最大限度地减少数据量,从而提高数据存储、传输或后续计算任务的效率。
  • 更高的精度:YOLO11 的物体检测 精度可确保裁剪后的物体保持空间关系,为详细分析保留完整的视觉信息。

视觉效果

机场行李
使用机场行李传送带制作行李箱Ultralytics YOLO11
使用机场传送带裁剪行李箱Ultralytics YOLO11

使用YOLO11 进行对象裁剪示例

import os

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

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

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

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

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_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 高精度识别对象并进行相应裁剪,从而实现集中分析、减少数据量并提高精度。有关深入教程,请参阅对象裁剪示例

为什么要使用Ultralytics YOLO11 而不是其他解决方案进行对象裁剪?

Ultralytics YOLO11 因其精度高、速度快、使用方便而脱颖而出。它可以进行详细、准确的对象检测和裁剪,这对于需要高数据完整性的重点分析和应用来说至关重要。此外,YOLO11 还能与OpenVINO 和TensorRT 等工具无缝集成,满足在不同硬件上部署实时功能和优化的要求。在模型导出指南中了解更多优势。

如何使用对象裁剪减少数据集的数据量?

通过使用Ultralytics YOLO11 只裁剪图像或视频中的相关对象,可以大大缩小数据大小,提高存储和处理效率。这一过程包括训练模型来检测特定对象,然后利用检测结果只裁剪和保存这些部分。有关利用Ultralytics YOLO11 功能的更多信息,请访问我们的快速入门指南

能否使用Ultralytics YOLO11 进行实时视频分析和对象裁剪?

是的,Ultralytics YOLO11 可以处理实时视频馈送,动态检测和裁剪物体。该模型的高速推理能力使其成为监控、运动分析和自动检测系统等实时应用的理想选择。查看跟踪和预测模式,了解如何实现实时处理。

有效运行YOLO11 进行对象裁剪的硬件要求是什么?

Ultralytics YOLO11 已针对CPU 和GPU 环境进行了优化,但要获得最佳性能,尤其是实时或大容量推理,建议使用专用GPU (如NVIDIA Tesla、RTX 系列)。要在轻量级设备上部署,可考虑使用CoreML foriOS 或 TFLite forAndroid 。有关支持的设备和格式的更多详情,请参阅我们的模型部署选项

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

评论