YOLO11解决方案之对象裁剪探索

概述

Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。

对象裁剪是指从图像或视频中分离并提取特定的检测对象,YOLO11 模型功能可用于准确识别和划分物体,从而实现精确裁剪,以便进一步分析或处理。使用YOLO11 可以方便的对目标对象进行裁剪,可对场景中的单个项目进行深入检查或处理,同时可以显著降低数据量,方便传输和存储。

演示代码

Ultralytics提供了演示代码,展示如何使用距离计算解决方案。

复制代码
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# Initialize object cropper object
cropper = solutions.ObjectCropper(
    
    model="yolo11n.pt",  # model for object cropping i.e yolo11x.pt.
    classes=[0, 2],  # crop specific classes i.e. person and car with COCO pretrained model.
    # conf=0.5,  # adjust confidence threshold for the objects.
    # crop_dir="cropped-detections",  # set the directory name for cropped detections
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = cropper(im0)

    # print(results)  # access the output

cap.release()
cv2.destroyAllWindows()  # destroy all opened windows

ObjectCropper参数

基本参数

参数 类型 默认值 说明
model str None Ultralytics YOLO 模型文件的路径。
crop_dir str "cropped-detections" 用于存储裁剪检测数据的目录名称。

可视化参数:

参数 类型 默认值 说明
show bool False 在这个方案中,show参数没有作用。

工作原理

ObjectCropper 类的工作原理是对图像中被检测到的物体,根据边框信息,裁剪下来,并保存为独立的图像文件。这个类比较简单。

复制代码
class ObjectCropper(BaseSolution):
    """
   这个类继承自BaseSolution类,根据检测到的边框,把物体裁剪下来保存为独立的文件。
   Attributes:
        crop_dir (str): 指定裁剪图片的保存路径
        crop_idx (int): 裁剪对象的数据
        iou (float): IoU阈值.
        conf (float): 置信度阈值.

    Methods:
        process: 对输入的图像中的检测物体进行裁剪并保存


    def __init__(self, **kwargs):
        
        super().__init__(**kwargs)

        self.crop_dir = self.CFG["crop_dir"]  # Directory for storing cropped detections
        if not os.path.exists(self.crop_dir):
            os.mkdir(self.crop_dir)  # Create directory if it does not exist
        if self.CFG["show"]:
            self.LOGGER.warning(
                f"show=True disabled for crop solution, results will be saved in the directory named: {self.crop_dir}"
            )
        self.crop_idx = 0  # Initialize counter for total cropped objects
        self.iou = self.CFG["iou"]
        self.conf = self.CFG["conf"]

    def process(self, im0):
        
        results = self.model.predict(
            im0, classes=self.classes, conf=self.conf, iou=self.iou, device=self.CFG["device"]
        )[0]

        for box in results.boxes:
            self.crop_idx += 1
            save_one_box(
                box.xyxy,
                im0,
                file=Path(self.crop_dir) / f"crop_{self.crop_idx}.jpg",
                BGR=True,
            )

        # Return SolutionResults
        return SolutionResults(plot_im=im0, total_crop_objects=self.crop_idx)

效果展示

这里使用演示代码和测试视频,展示裁剪的物体图片。

裁剪图片保存在指定目录下:

相关推荐
昨日之日200617 小时前
Wan2.2-S2V - 音频驱动图像生成电影级质量的数字人视频 ComfyUI工作流 支持50系显卡 一键整合包下载
人工智能·音视频
深圳市快瞳科技有限公司17 小时前
小场景大市场:猫狗识别算法在宠物智能设备中的应用
算法·计算机视觉·宠物
一个天蝎座 白勺 程序猿18 小时前
Python爬虫(47)Python异步爬虫与K8S弹性伸缩:构建百万级并发数据采集引擎
爬虫·python·kubernetes
XiaoMu_00119 小时前
基于Django+Vue3+YOLO的智能气象检测系统
python·yolo·django
SEO_juper19 小时前
大型语言模型SEO(LLM SEO)完全手册:驾驭搜索新范式
人工智能·语言模型·自然语言处理·chatgpt·llm·seo·数字营销
攻城狮7号20 小时前
腾讯混元翻译模型Hunyuan-MT-7B开源,先前拿了30个冠军
人工智能·hunyuan-mt-7b·腾讯混元翻译模型·30个冠军
zezexihaha20 小时前
从“帮写文案”到“管生活”:个人AI工具的边界在哪?
人工智能
算家云20 小时前
nano banana官方最强Prompt模板来了!六大场景模板详解
人工智能·谷歌·ai大模型·算家云·ai生图·租算力,到算家云·nano banana 提示词
暴躁的大熊20 小时前
AI助力决策:告别生活与工作中的纠结,明析抉择引领明智选择
人工智能
Gyoku Mint20 小时前
提示词工程(Prompt Engineering)的崛起——为什么“会写Prompt”成了新技能?
人工智能·pytorch·深度学习·神经网络·语言模型·自然语言处理·nlp