热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

YOLOv5超详细的入门级教程(思考篇)(一)——关于遮挡问题与小目标检测问题

一些拙见,欢迎大家在评论区指出问题,交流讨论。1.Introduction还是这张老图,16年到18年CVPR和ICCV的高频词词云。从2

一些拙见,欢迎大家在评论区指出问题,交流讨论。



1. Introduction

目标检测
还是这张老图,16年到18年CVPR和ICCV的高频词词云。从2012年进入深度学习时代开始,目标检测、图像分割这样的视觉基本任务到现在已经火了有10年已久了(如果算上传统图像处理的方法,那么目标检测到现在已经被集中攻克22年了)。

最新出炉的18篇CVPR2021oral,里面值得注意的一点就是3D目标检测的研究。比如3D场景理解、3D中摄像机重定位、3D分割与运动估计、单目3D目标检测、3D点云注册和检测、3D物体渲染…(18篇里好几篇都是新颖的3D目标检测任务),可以看出来2D大家已经研究腻了(或者说是放弃了),其中一个新的方向就是,开始集中火力攻克3D目标检测的问题。目前我也有研究一些关于3D点云目标检测的内容,可以参考我的其他博客。

BUT!!!这18篇新的CVPR2021oral里面,有这样一篇,开放世界中的目标检测。该模型的任务是:1)在没有明确监督的情况下,将尚未引入该对象的对象识别为“未知”,以及2)当逐渐接收到相应的标签时,逐步学习这些已识别的未知类别,而不会忘记先前学习的类别。简单来说,识别现实世界中的所有物体,并且能够逐渐学习认知新的未知物体。我的理解就是,可以识别更多的物体,接收标签来学习对象的类别,降低训练成本。

那么2D目标检测的一些瓶颈究竟在哪,以下是我目前能总结出来的点。


  • 识别更多的物体。早在YOLO9000这篇论文里,作者就提出了利用词树的方法来实现能够识别更广泛类别物体的目标检测。
  • 遮挡问题。我认为MSCOCO数据集识别准确率难以上升的一个关键性要素就是大量的遮挡。
  • 小目标检测问题。
  • …待补充

接下来我将简单介绍一下关于遮挡和小目标检测问题的相关内容。


2. 遮挡问题

在YOLOv5中,引入了许多方法,在nms阶段进行遮挡问题的处理。我觉得这个出发点很高效,毕竟在模型设计和训练阶段去解决遮挡问题需要研究非常多的内容,还不一定能解决问题。但是在利用更好的非极大值抑制算法时,能够大大提升遮挡物体的查全率。

最初我在利用YOLOv5进行NEU-DET实验时,就发现最终结果总是有重复检测的部分。所以如何解决遮挡问题(保留更多的框)的同时,减少重复检测(保留更少的框),也是我认为nms优化算法的一个值得研究的点。

Yolov4在CIOU_Loss的基础上采用DIOU_nms的方式,可以看出,采用DIOU_nms,下方中间箭头的黄色部分,原本被遮挡的摩托车也可以检出。
在这里插入图片描述
在YOLOv5中使用DIOU_loss,对于一些遮挡重叠的目标,确实会有一些改进。
在这里插入图片描述


3. 小目标检测

另外一个让人痛心的问题就是小目标检测。不训不知道,一训吓一跳,利用yolov3训练出的模型识别小物体的效果真的是太太太太差劲了。

目标检测发展很快,但对于小目标的检测还是有一定的瓶颈,特别是大分辨率图像小目标检测。比如7920 * 2160,甚至16000 * 16000的图像。

这么看来,博主的任务还不是非常困难。背景是这样的:船厂给的6000 *2000 分辨率的x光胶片,焊缝在图片的正中间,所占的空间位置已经很小了。但是我们要识别的是缺陷啊喂!!!缺陷可太小了,博主拿肉眼识别都极其困难(心疼船厂的工人几秒)!首先先数据增强一下,增大一下前景背景的对比度,不然眼睛就要瞎掉了。其次,缺陷的形状也是五花八门。所以上升到识别缺陷的形状这种任务,还是分割来做比较合适。

在这里插入图片描述
像上图这种遥感图像识别的简直是炼狱级的吧。

那么是什么因素使得小目标检测如此困难的呢?


  • 小目标尺寸。以网络的输入608*608为例,yolov3、yolov4,yolov5中下采样都使用了5次,因此最后的特征图大小是19*19,38*38,76*76。三个特征图中,最大的76*76负责检测小目标,而对应到608608上,每格特征图的感受野是608/76=8*8大小。再将608608对应到76802160上,以最长边7680为例,7680/6088=101。即如果原始图像中目标的宽或高小于101像素,网络很难学习到目标的特征信息。(PS:这里忽略多尺度训练的因素及增加网络检测分支的情况)

  • 高分辨率。在很多遥感图像中,长宽比的分辨率比7680*2160更大,比如上面的16000*16000,如果采用直接输入原图的方式,很多小目标都无法检测出。

  • 显卡爆炸。很多图像分辨率很大,如果简单的进行下采样,下采样的倍数太大,容易丢失数据信息。但是倍数太小,网络前向传播需要在内存中保存大量的特征图,极大耗尽GPU资源,很容易发生显存爆炸,无法正常的训练及推理。

如何解决呢?

我的一个思路就是把图像做分割,一张张送进去识别呗,数据集还变大了。
果不其然,别人也这么想的,并且都做出来了。

2018年YOLT算法You only look twice,改变一下思维,对大分辨率图片先进行分割,变成一张张小图,再进行检测。

为了避免两张小图之间,一些目标正好被分割截断,所以两个小图之间设置overlap重叠区域,比如分割的小图是960*960像素大小,则overlap可以设置为960*20%=192像素。

每个小图检测完成后,再将所有的框放到大图上,对大图整体做一次nms操作,将重叠区域的很多重复框去除。(按照在大图上裁剪的位置,直接回归到大图即可。)

在这里插入图片描述
坏处就是增加了计算量,我们选用更轻的网络来balance一下吧~


References


  1. 目标检测一卷到底之后,终于有人为它挖了个新坑|CVPR2021 Oral
    https://bbs.cvmart.net/articles/4394/created_at

  2. 一文概览 CVPR2021 最新18篇 Oral 论文
    https://yongqi.blog.csdn.net/article/details/114528731

  3. You only look twice.
    https://arxiv.org/abs/1805.09512


推荐阅读
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 脑机接口和卷积神经网络的初学指南(一)
    脑机接口和卷积神经网络的初学指南(一) ... [详细]
  • 老电影和图片变清晰的秘密!分辨率提升400%的AI算法
    老电影和图片变清晰的秘密!分辨率提升400%的AI算法-如上图,从100x133pix→400x532pix,除了肉眼可见的清晰,拥有可以将分辨率提升400%的技术到底意味着什么 ... [详细]
author-avatar
soseast9975
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有