热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

[YOLO专题27]:YOLOV5小目标检测遇到的问题与常见解决办法

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[YOLO专题-27]:YOLO V5 小目标检测遇到的问题与常见解决办法相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了[YOLO专题-27]:YOLO V5 小目标检测遇到的问题与常见解决办法相关的知识,希望对你有一定的参考价值。






作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122348281



目录

第1章 前言:

第2章 小目标检测常见问题

2.1 大小目标混合的场合

2.2 只有小目标的场合

第3章 小目标检测困难的原因

3.1 模型对小目标总数的支持不够

3.2 小目标漏检率太高

3.3 解决问题的基本思路

第4章 小目标检测可能的解决之道:输入图片

4.1 目标数量超标

4.2 目标像素太少

第5章 小目标检测可能的解决之道:预测模型

5.1 针对目标数量超标的问题

5.2 针对目标像素太少的问题:统一模型

5.3 针对目标像素太少的问题:分离模型




第1章 前言:

在实际应用中,有时候,在一张图片中有大目标,也有小目标,且小目标的数量可能远远大于大目标的数量,同一个模型要检测大目标和小目标时,对小目标的检测效果往往不尽如人意。

本文就是探讨小目标检测的问题以及可能的解决办法。



第2章 小目标检测常见问题


2.1 大小目标混合的场合

在这种场合中,一张图片上有少数的大目标,有小目标。

常见的问题有:

(1)能够准确地检测到大目标,但检测不到小目标

(2)小目标的recall 率很低,大量的小目标检测不到,被遗漏

(3)小目标的数量太多,模型对小目标总是的支持不够



2.2 只有小目标的场合

在这种场合中,一张图片上全是小目标。

(1)小目标的recall 率很低,大量的小目标检测不到,被遗漏

(2)小目标的数量太多,模型对小目标总数的支持不够



第3章 小目标检测困难的原因

在找到或提供解决办法之前,首先弄清楚不同问题原因。


3.1 模型对小目标总数的支持不够

这种情况来自两个主要方面的原因:

(1)图片本身:单张图片的目标太多

有时候,单张图片中小目标的数量太多,比如细胞的图片,一张图片中,包含了上百万个细胞,这就不是模型本身的问题了,而是图片的问题。

(2)模型本身:模型设计的限制

模型对单张图片支持的目标的数量受限于模型本身的设计,如果图片中目标的数量超出了模型支持的最大数量,自然会出现模型对小目标总数支持不够的问题。



3.2 小目标漏检率太高

这种情况,单张图片中小目标的数量完全满足模型设计的要求,这时候,依然会出现大量小目标检测不到的情况。这里也分为两种原因:

(1)图片本身

小目标包含的像素少,比如,一张尺寸为640 * 640的图片, 大目标的像素通常大于 100 * 100,这种情形下。而小目标的像素通常只有10*10个像素点,甚至更少。

从上图中可以看出,小目标与大目标在长度和宽度尺寸上相差超过10倍以上,像素点(面积)相差上百倍。

像素点越少,目标图片,经过卷积后的特征就更少了,那么用于目标检测和分类的特征就更少了。

能够提供的原始信息越少,则被漏检的可能性就越大。


(2)模型本身

通常情况下,模型是通过卷积来提取原始图片像素中包含的特征的,感受野就反应了单个高层特征的信息与原始像素之间的对应关系,在网络卷积核确定的情况下,随着网络层数的增加,单个高层特征反应原始图片像素的范围就越大,视野就越宽,高层信息越是能够反应原始图片中物体的宏观轮廓。如下图所示:


然后,随着网络层数的增加和感受野的变大,微观的信息就会丢失, 这样对于小目标的信息就会聚合到一个点,小目标原本包含的像素就少,随着感受野的增加,聚合后的特征就更少了,比如10*10像素的小目标,经过卷积后的特征可能就只有1*1,甚至出现多个10*10像素的小目标,经过多次卷积核,合并成了一个特征。这样,小目标就无法识别。

因此,深层的多次卷积,对于小目标的微观特征实际上是不利的。



3.3 解决问题的基本思路

综上所述,要解决小目标检测问题,需要从两个角度来解决

(1)输入图片

(2)预测模型



第4章 小目标检测可能的解决之道:输入图片


4.1 目标数量超标

(1)先把图片切分成多张图片,然后对每张图片单独进行检测,最后进行汇总

这种方法的难点是:需要处理好图片与图片之间的切割线上的目标,因此需要通过一定的重叠区来解决。



4.2 目标像素太少

(1)局部放大

通剪切的方式获取包含小目标的一片图片,然后对剪切后的图片进行像素增强,最后对增强后的图片进行目标检测。这种方法优点类似现实生活发现小目标的方法:先聚焦聚焦,然后放大,再进行鉴别。

这种方法的难点是:如何剪切包含小目标的图片,依据什么原则来截取大图片的区域。计算机如何知道那片区域包含小目标?区域的大小、边界如何确定?


(2)整体增强


  • 对整张图片进行数据增强,甚至增加图片的尺寸
  • 通过高倍的照相机获取高分辨率的图片

这种方法的问题是:连同大目标一并进行了增强,导致整张图片的像素变得非常大,而对于大目标而言,这种增强是没有意义的,导致预测的时间变长。

 在高分辨率的情况下,小目标也具备清晰的特征和较多的像素。


(3)增加没有目标的背景图片

通过明确的告诉网络,什么是没有目标的背景,什么是目标,这样通过背景与目标的反差,就能够区分出图片中微小的物体。

这种地面上没叶子的图片就可以作为背景,以区分地面与地面上小目标:叶子。



第5章 小目标检测可能的解决之道:预测模型


5.1 针对目标数量超标的问题

通过修改或选择支持更多目标的模型,支持的目标越多,模型所需要的内存越大。



5.2 针对目标像素太少的问题:统一模型

这种方式下,大目标和小目标处于相同的图片上,采用相同的图片训练同一个模型。

训练出来的模型,同时识别大目标与小目标。

为了能够更好的识别小目标,可以采用的方法有:

(1)降低网络的层数:避免多个小目标经过多层卷积核混合在一起,无法区分。

(2)减少卷积核的尺寸:编码小目标的所有像素卷积成一个特征。

(3)减小步长:避免跳过部分小目标的像素提取。

总之,为了迎合小目标的识别,需要牺牲对大目标的更高层次的抽象。



5.3 针对目标像素太少的问题:分离模型

针对大目标和小目标,采用不同的模型数据集进行训练和预测。

(1)识别大目标时:


  • 不识别小目标,小目标作为背景
  • 尽可能采用大型、深层次网络提取

(2)识别小目标时:


  • 不识别大目标、大目标作为背景
  • 尽可能采用小型、浅层次网络提取特征
  • 训练图片,可以是原始图片,也可以是从原始图片截取的包含小目标的图片。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122348281





推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 大连微软技术社区举办《.net core始于足下》活动,获得微软赛百味和易迪斯的赞助
    九月十五日,大连微软技术社区举办了《.net core始于足下》活动,共有51人报名参加,实际到场人数为43人,还有一位专程从北京赶来的同学。活动得到了微软赛百味和易迪斯的赞助,场地也由易迪斯提供。活动中大家积极交流,取得了非常成功的效果。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 家装日记六:家具采购和瓷砖选择
    本文记录了作者进行家装的过程,包括家具采购和瓷砖选择。作者介绍了自己家的装修风格以及选择烤漆家具和红白系列的原因。作者还提到了装修风格以简约为主,不可以太花哨的要求。最后,作者提到了价格较贵的问题。 ... [详细]
author-avatar
Dr_H-鄧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有