使用对象裁剪Ultralytics YOLO11
什么是对象裁剪?
对象裁剪 Ultralytics YOLO11对象裁剪是指从图像或视频中分离并提取特定的检测对象。YOLO11 模型功能可用于准确识别和划分物体,从而实现精确裁剪,以便进一步分析或处理。
观看: 使用对象裁剪Ultralytics YOLO
对象裁剪的优势?
- 重点分析:YOLO11 方便对目标对象进行裁剪,可对场景中的单个项目进行深入检查或处理。
- 减少数据量:通过只提取相关对象,对象裁剪有助于最大限度地减少数据量,从而提高数据存储、传输或后续计算任务的效率。
- 更高的精度: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:0 或 0 ).允许用户选择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 。有关支持的设备和格式的更多详情,请参阅我们的模型部署选项。