重庆网站建设费用,5分钟宣传片报价明细,深圳市住房和建设局网站住房,蓝田微网站建设前言
目前博主课题组在进行物体部件的异常检测项目#xff0c;项目中需要先使用 YOLOv8 进行目标检测#xff0c;然后进行图像切割#xff0c;最后采用 WinCLIP 模型 进行部件异常检测
但是在实际操作过程中出现问题#xff0c; YOLOv8 模型目标检测在大目标精确度不错项目中需要先使用 YOLOv8 进行目标检测然后进行图像切割最后采用 WinCLIP 模型 进行部件异常检测
但是在实际操作过程中出现问题 YOLOv8 模型目标检测在大目标精确度不错但是在小目标检测中效果极差
我们之前的解决方案是扩大异常部件的目标检测范围易于检测。但是缺点是会增大异常检测的识别难度需要对异常检测模型进行处理暂时放弃
因此我们着重将目标放在如何修改 YOLOv8 使其具有处理小目标的能力这是本文的重点内容 博主刚刚接触这方面的知识如有缺漏还望各位指出 这里列出 YOLO discard 官网如果有问题可以直接在里面提问https://discord.gg/zSq8rtW 处理方案
降低版本
首先我们知道较新的版本不一定在所有方面都更好如果可以的话可以降低版本至 YOLOv7、YOLOv5 等他们的解决方案可能会相对多些。没有降低版本的打算可以继续向下看
替代方案
YOLOv8 官网关于小物体检测的 issuesSmall object under 15px detection · Issue #981 · ultralytics/ultralytics (github.com)
首先我们知道 YOLO 是基于COCO数据集的该数据集几乎没有小物体所有不是很适配小目标我们可以展示一些负面数据或是关闭增强来适配小目标但是效果不会很好参考 issue
所以我们可以使用其他算法、模型来专门处理小物体检测下面是一些可选的模型和算法
SAHI 算法obss/sahi: Framework agnostic sliced/tiled inference interactive ui error analysis plots (github.com)
Detectron2 平台facebookresearch/detectron2: Detectron2 is a platform for object detection, segmentation and other visual recognition tasks. (github.com)
YOLOv8 变体
YOLOv8-P2 是 YOLOv8 型号的变体旨在提高检测小物体的性能。与原始 YOLOv8 模型相比它包括额外的特征金字塔级别这使其能够更准确地检测和定位较小的对象。
我们可以使用如下代码来指定 YOLOv8-P2 模型
Python 脚本
model YOLO(yolov8s-p2.yaml).load(yolov8s.pt)Yolo 命令行
yolo train datacoco128.yaml modelyolov8n.yaml pretrainedyolov8n.pt epochs100 imgsz640上面这句话使用yolov8s-p2.yaml 指定网络体系结构并指定 yolov8s.pt 包含在训练期间学习的权重。
实战演练
训练车辆部件命令行
yolo train datadatasets/TVDSDataSet/data.yaml modelyolov8x-p2.yaml pretrainedyolov8x.pt epochs40 lr00.01 batch8 device0,1,2,3正常情况下我们检测的小目标效果就会很好了但是如上图所见很遗憾小目标检测结果失败了不过我们项目属于特殊情况后面我会说明原因
原因总结
首先我们查看 yolo 参数配置中的 imgsz官方解释如下
imgsz: 640 # (int | list) input images size as int for train and val modes, or list[w,h] for predict and export modes也就是说我们的输入图片训练的尺寸就是 640 x 640当然可以自己设置但是我自己测试大概设置设置到 1200 的时候就会爆内存不能再增加
但是我的正常输入图片尺寸长宽比十分大图片尺寸基本都是 20000 x 1000。也就说正常训练阶段图片会被压缩为 640 x 640。对于小目标检测相当不友好我查阅 YOLO 官网发现似乎建议训练图片长宽比最多不能超过 20我的图片基本都是卡的极限
参考文章
YOLOv8 for small objects (insects) : computervision (reddit.com)
Small object under 15px detection · Issue #981 · ultralytics/ultralytics (github.com) 本文由博客一文多发平台 OpenWrite 发布