ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 机器学习

  • 计算机视觉

    • 目标检测常用数据集及转换方式
    • YOLOv8 快速入门
    • YOLOv8『小目标』检测指南
      • 前言
      • 处理方案
        • 降低版本
        • 替代方案
        • YOLOv8 变体
        • Python 脚本
        • Yolo 命令行
      • 实战演练
      • 原因总结
      • 参考文章
    • YOLOv8 目标检测及图片裁剪
    • YOLOv8 断点续训
    • labelimg yolo 数据集生成及划分
    • 『LabelImg』使用小技巧
    • labelimg IndexError 错误
    • Flappy Bird AI 模型训练实战
    • YOLOv8 常用转换脚本
    • YOLOv8
    • 中秋特别版『贪吃蛇』,但是『AI』
    • GPU 查询和抢占
    • 『SAHI』大图片小目标检测切片辅助超推理库
  • 软件体系架构

  • 基础课程
  • 计算机视觉
ReturnTmp
2023-09-15
目录

YOLOv8『小目标』检测指南

# 前言

目前博主课题组在进行物体部件的异常检测项目,项目中需要先使用 YOLOv8 进行目标检测,然后进行图像切割,最后采用 WinCLIP 模型 进行部件异常检测

但是在实际操作过程中出现问题, YOLOv8 模型目标检测在大目标精确度不错,但是在小目标检测中效果极差

我们之前的解决方案是扩大异常部件的目标检测范围,易于检测。但是缺点是会增大异常检测的识别难度,需要对异常检测模型进行处理,暂时放弃

因此我们着重将目标放在如何修改 YOLOv8 ,使其具有处理小目标的能力,这是本文的重点内容

博主刚刚接触这方面的知识,如有缺漏还望各位指出

这里列出 YOLO discard 官网,如果有问题可以直接在里面提问:https://discord.gg/zSq8rtW

image-20230916154516702

# 处理方案

# 降低版本

首先我们知道较新的版本不一定在所有方面都更好,如果可以的话可以降低版本至 YOLOv7、YOLOv5 等,他们的解决方案可能会相对多些。没有降低版本的打算可以继续向下看

# 替代方案

YOLOv8 官网关于小物体检测的 issues:Small object under 15px detection · Issue #981 · ultralytics/ultralytics (github.com) (opens new window)

首先我们知道 YOLO 是基于COCO数据集的,该数据集几乎没有小物体,所有不是很适配小目标,我们可以展示一些负面数据,或是关闭增强来适配小目标,但是效果不会很好(参考 issue)

所以我们可以使用其他算法、模型来专门处理小物体检测,下面是一些可选的模型和算法

SAHI 算法:obss/sahi: Framework agnostic sliced/tiled inference + interactive ui + error analysis plots (github.com) (opens new window)

Detectron2 平台:facebookresearch/detectron2: Detectron2 is a platform for object detection, segmentation and other visual recognition tasks. (github.com) (opens new window)

# YOLOv8 变体

YOLOv8-P2 是 YOLOv8 型号的变体,旨在提高检测小物体的性能。与原始 YOLOv8 模型相比,它包括额外的特征金字塔级别,这使其能够更准确地检测和定位较小的对象。

我们可以使用如下代码来指定 YOLOv8-P2 模型

# Python 脚本

model = YOLO('yolov8s-p2.yaml').load('yolov8s.pt')
1

# Yolo 命令行

yolo train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
1

上面这句话使用yolov8s-p2.yaml 指定网络体系结构,并指定 yolov8s.pt 包含在训练期间学习的权重。

# 实战演练

训练车辆部件命令行

yolo train data=datasets/TVDSDataSet/data.yaml model=yolov8x-p2.yaml pretrained=yolov8x.pt epochs=40 lr0=0.01 batch=8 device=0,1,2,3
1

val_batch2_labels

正常情况下我们检测的小目标效果就会很好了,但是如上图所见,很遗憾小目标检测结果失败了,不过我们项目属于特殊情况,后面我会说明原因

# 原因总结

首先我们查看 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
1

也就是说我们的输入图片训练的尺寸就是 640 x 640,当然可以自己设置,但是我自己测试大概设置设置到 1200 的时候就会爆内存,不能再增加

但是我的正常输入图片尺寸长宽比十分大,图片尺寸基本都是 20000 x 1000。也就说正常训练阶段图片会被压缩为 640 x 640。对于小目标检测相当不友好(我查阅 YOLO 官网发现,似乎建议训练图片长宽比最多不能超过 20,我的图片基本都是卡的极限)

# 参考文章

YOLOv8 for small objects (insects) : computervision (reddit.com) (opens new window)

Small object under 15px detection · Issue #981 · ultralytics/ultralytics (github.com) (opens new window)

编辑 (opens new window)
上次更新: 2023/10/14, 10:01:13
YOLOv8 快速入门
YOLOv8 目标检测及图片裁剪

← YOLOv8 快速入门 YOLOv8 目标检测及图片裁剪→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式