码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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)

    首先我们知道 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')
    
    • 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)

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

    本文由博客一文多发平台 OpenWrite 发布!

  • 相关阅读:
    1014 Waiting in Line
    【Spring系列】Spring事务实现方式及其传播性
    promise笔记(三)
    嵌入式操作系统的特点
    【学习笔记35】JavaScript计算两个指定日期的时间差
    几个强力的nodejs库
    HBase学习笔记(2)—— API使用
    探讨javascript的程序性能
    【Unity实战】手戳一个自定义角色换装系统——2d3d通用
    [QT] QMap使用详解
  • 原文地址:https://blog.csdn.net/m0_63748493/article/details/132921304
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号