YOLOv8『小目标』检测指南

2023-09-16 17:21:17

前言

目前博主课题组在进行物体部件的异常检测项目,项目中需要先使用 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')
Yolo 命令行
yolo train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

上面这句话使用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

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

也就是说我们的输入图片训练的尺寸就是 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 发布!

更多推荐

职业了解|03师范生的编制教师之路

“初闻不解曲中意,再闻已是曲中人”。每个行业有一个共性在于,外面的人想进去,里面的人想出来。时代变化,不同的行业的细则也在变化。十五年前,有谁会预计计算机会这么火爆呢?估计大概率只会被认为计算机属于不务正业。而现在,宇宙的尽头是编制。但编制是否真的十全十美呢?本文讲述一个小学在编教师的心声。1、为什么想到读师范生我高考

基于CNN-LSTM的时序预测MATLAB实战

一、算法原理1.1CNN原理卷积神经网络具有局部连接、权值共享和空间相关等特性。卷积神经网络结构包含卷积层、激活层和池化层。(a)二维卷积层将滑动卷积滤波器应用于输入。该层通过沿输入垂直和水平方向移动滤波器对输入进行卷积,并计算权重与输入的点积,然后加入一个偏置项。具体表达式为:卷积层的功能是对输入数据进行特征提取。其

基于R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

APSIM(AgriculturalProductionSystemssIMulator)模型是世界知名的作物生长模拟模型之一。APSIM模型有Classic和NextGeneration两个系列模型,能模拟几十种农作物、牧草和树木的土壤-植物-大气过程,被广泛应用于精细农业、水肥管理、气候变化、粮食安全、土壤碳周转、

1、MongoDb综述

1.MongoDb综述1.1.什么是NosqlNoSQL:NotOnlySQL,本质也是一种数据库的技术,相对于传统数据库技术,它不会遵循一些约束,比如:sql标准、ACID属性,表结构等。Nosql优点l满足对数据库的高并发读写l对海量数据的高效存储和访问l对数据库高扩展性和高可用性l灵活的数据结构,满足数据结构不固

zabbix

zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbixserver与可选组件zabbixagent。通过C/S模式采集数据

stable diffusion在建筑行业应用

AI建筑研究室-帆哥投稿视频-AI建筑研究室-帆哥视频分享-哔哩哔哩视频点击观看AI建筑研究室-帆哥的全部投稿视频,在这里可以查看AI建筑研究室-帆哥最新发布、最多播放和最多收藏的视频。https://space.bilibili.com/2161614/videoHD▎ChatGPT接入自研AI工具集,为设计生产赋能

wkeOnDownload2与mbOnDownloadInBlinkThread

背景:最近开始实习(打工)生涯。需求:使用miniblink,显示网页,点击下载链接,可以实现下载。寻求大佬帮助,得到了wke.h版本的下载相关的代码。这里进行一些简单的分析:实际语句:wkeOnDownload2(webView,onDownloadCallback,nullptr);通过调用该函数实现:点击链接,实

SpringMVC之自定义注解

目录前言一、自定义注解1.Java注解简介2.注解的用处3.为什么要用注解4.自定义注解的应用场景5.注解的分类6.如何定义并使用自定义注解7.自定义注解三种使用案例案例一:案例二:案例三:二、Aop自定义注解的应用1.自定义注解类2.切面类3.Controller层前言随着Web开发的发展,越来越多的企业开始使用Sp

基于springboot+vue的便利店信息管理系统

博主主页:猫头鹰源码博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询文末联系获取项目介绍:本系统适合选题:便利店、便利店管理、商店管理等。系统采用springb

C++之operator()和构造函数区别与总结(二百三十)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:理解C+

MYSQL--事务

目录一、事物的概念:二、事务的ACID特点:1.原子性:2.一致性:3.隔离性:4.持久性:三、隔离性:1.事务之间的相互影响:(1)脏读:(2)不可重复读:(3)幻读:(4)丢失更新:2.Mysql的隔离级别:3.隔离级别作用范围:四、事务控制语句:1.commit提交事务:2.ROLLBACK回滚:3.使用回滚点:

热文推荐