一些拙见,欢迎大家在评论区指出问题,交流讨论。
还是这张老图,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目标检测的一些瓶颈究竟在哪,以下是我目前能总结出来的点。
在YOLOv5中,引入了许多方法,在nms阶段进行遮挡问题的处理。我觉得这个出发点很高效,毕竟在模型设计和训练阶段去解决遮挡问题需要研究非常多的内容,还不一定能解决问题。但是在利用更好的非极大值抑制算法时,能够大大提升遮挡物体的查全率。
最初我在利用YOLOv5进行NEU-DET实验时,就发现最终结果总是有重复检测的部分。所以如何解决遮挡问题(保留更多的框)的同时,减少重复检测(保留更少的框),也是我认为nms优化算法的一个值得研究的点。
Yolov4在CIOU_Loss的基础上采用DIOU_nms的方式,可以看出,采用DIOU_nms,下方中间箭头的黄色部分,原本被遮挡的摩托车也可以检出。
在YOLOv5中使用DIOU_loss,对于一些遮挡重叠的目标,确实会有一些改进。
另外一个让人痛心的问题就是小目标检测。不训不知道,一训吓一跳,利用yolov3训练出的模型识别小物体的效果真的是太太太太差劲了。
目标检测发展很快,但对于小目标的检测还是有一定的瓶颈,特别是大分辨率图像小目标检测。比如7920 * 2160,甚至16000 * 16000的图像。
这么看来,博主的任务还不是非常困难。背景是这样的:船厂给的6000 *2000 分辨率的x光胶片,焊缝在图片的正中间,所占的空间位置已经很小了。但是我们要识别的是缺陷啊喂!!!缺陷可太小了,博主拿肉眼识别都极其困难(心疼船厂的工人几秒)!首先先数据增强一下,增大一下前景背景的对比度,不然眼睛就要瞎掉了。其次,缺陷的形状也是五花八门。所以上升到识别缺陷的形状这种任务,还是分割来做比较合适。
像上图这种遥感图像识别的简直是炼狱级的吧。
那么是什么因素使得小目标检测如此困难的呢?
我的一个思路就是把图像做分割,一张张送进去识别呗,数据集还变大了。果不其然,别人也这么想的,并且都做出来了。
2018年YOLT算法,改变一下思维,对大分辨率图片先进行分割,变成一张张小图,再进行检测。
为了避免两张小图之间,一些目标正好被分割截断,所以两个小图之间设置overlap重叠区域,比如分割的小图是960960像素大小,则overlap可以设置为96020%=192像素。
每个小图检测完成后,再将所有的框放到大图上,对大图整体做一次nms操作,将重叠区域的很多重复框去除。(按照在大图上裁剪的位置,直接回归到大图即可。)
坏处就是增加了计算量,我们选用更轻的网络来balance一下吧~