admin 管理员组文章数量: 887007
基于深度学习的目标检测算法调研
文章目录
- 0 目标检测的任务概述
- 1 基于深度学习的「目标检测」算法
- 1.1 两刀流 R-CNN
- 1.1.1 R-CNN / 2013
- 1.1.2 SPP Net / 2014
- 1.1.3 Fast R-CNN / 2015
- 1.1.4 Faster R-CNN / 2015
- 1.1.5 Mask R-CNN / 2017
- 1.1.6 二刀流小结
- 1.2 一刀流 YOLO
- 1.2.1 YOLO / 2015
- 1.2.2 SSD / 2015
- 1.2.3 YOLO9000 / 2016
- 2 总结
- 参考:
0 目标检测的任务概述
如何从图像中解析出可供计算机理解的信息,是机器视觉的中心问题。理解图像,有三个主要的层次:
- 一是分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别(string)来描述图片。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。
- 二是检测(Detection)。检测则关注特定的物体目标,要求同时获得这一目标的类别信息和位置信息。相比分类,检测需要从背景中分离出感兴趣的目标,并确定这一目标的类别和位置。
- 三是分割(Segmentation)。分割包括语义分割(semantic segmentation)和实例分割(instance segmentation),前者要求分离开具有不同语义的图像部分,而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。
1 基于深度学习的「目标检测」算法
深度学习时代来临后,「目标检测」算法大家族主要划分为两大派系,一个是 R-CNN 系两刀流派
,另一个则是以 YOLO 为代表的一刀流派
。下面分别解释一下 两刀流
和 一刀流
:
两刀流
顾名思义,两刀解决问题。其实两刀流
更符合人们解决图像问题的思路:
- 生成候选区域(Region Proposal)
- 放入分类器分类并微调边框位置
这种流派的算法都离不开 Region Proposal(候选区域生成) ,即是优点也是缺点,主要代表人物就是 R-CNN 系。
一刀流
顾名思义,一刀解决问题,直接对预测的目标物体进行回归。
回归解决问题简单快速,主要代表人物是 YOLO
和 SSD
。
两种流派的不同:
- 两刀流主要倾向准,
- 一刀流主要倾向快。
无论 两刀流
还是 一刀流
,他们都是在同一个天平下选取一个平衡点、或者选取一个极端—— 要么准,要么快。
1.1 两刀流 R-CNN
R-CNN 其实是一个很大的家族,桃李满天下。在此,我们只探讨 R-CNN 直系亲属,他们的发展顺序如下:
R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN`
下面对其分别简单介绍:
1.1.1 R-CNN / 2013
论文:Rich feature hierarchies for accurate object detection and semantic segmentation
罗斯的这篇论文,这个模型,是利用卷积神经网络来做「目标检测」的开山之作,其意义深远不言而喻。
解决问题一、速度
传统的区域选择使用滑窗,每滑一个窗口检测一次,相邻窗口信息重叠高,检测速度慢。R-CNN 使用一个启发式方法(Selective search),先生成候选区域再检测,降低信息冗余程度,从而提高检测速度。
解决问题二、特征提取
传统的手工提取特征鲁棒性差,限于如颜色、纹理等 低层次(Low level)的特征。使用CNN 提取高维特征,免去手工提取特征工作。
1.1.2 SPP Net / 2014
论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
尽管 之前提出的 R-CNN 效果不错,但是他还有两个硬伤:
硬伤一、算力冗余
先生成候选区域,再对区域进行卷积,这里有两个问题:其一是候选区域会有一定程度的重叠,对相同区域进行重复卷积;其二是每个区域进行新的卷积需要新的存储空间。
何恺明等人意识到这个可以优化,于是把先生成候选区域再卷积,变成了先卷积后生成区域。“简单地”改变顺序,化腐朽为神奇,不仅减少存储量而且加快了训练速度。
硬伤二、图片缩放
由于FC Layer(全连接层)需要确定输入维度。
无论是剪裁(Crop)还是缩放(Warp)等预处理,在很大程度上会丢失图片原有的信息导致训练效果不好,如上图所示。把一座高塔缩放成一个胖胖的塔,人看到也没很大把握直接下结论。
何恺明等人发现了这个问题,他们在输入全连接层前定义一个特殊的池化层,将输入的任意尺度 feature maps 组合成特定维度的输出,这个组合可以是不同大小的拼凑,如同拼凑七巧板般。
SPP Net 的出现,不仅减少了计算冗余,更重要的是打破了固定尺寸输入这一束缚。
1.1.3 Fast R-CNN / 2015
论文:Fast R-CNN
此时,R-CNN的原作者自己 也按耐不住了——自己家的孩子,自己养大——于是。憋出了一个大招 Fast R-CNN
。
取这个名字的意思就是“一代更比一代强”,相对于原来的 Slow R-CNN,做了速度上的优化——就是快。
在这篇论文中,引用了 SPP Net
的工作,并且致谢其第一作者何恺明。
纵观全文,最大的建树就是将原来的串行结构改成并行结构。
原来的 R-CNN 是先对候选框区域进行分类,判断有没有物体,如果有则对 Bounding Box 进行精修 回归 。
这是一个串联式的任务,那么势必没有并联的快,所以 rbg 就将原有结构改成并行——在分类的同时,对 Bbox 进行回归。
这一改变将 Bbox 和 Clf 的 loss 结合起来变成一个 Loss 一起训练,并吸纳了 SPP Net 的优点,最终不仅加快了预测的速度,而且提高了精度。
1.1.4 Faster R-CNN / 2015
论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
在 Faster R-CNN 前,我们生产候选区域都是用的一系列启发式算法,基于 Low Level 特征生成区域。这样就有两个问题:
第一个问题 是生成区域的靠谱程度随缘,而 两刀流 算法正是依靠生成区域的靠谱程度——生成大量无效区域则会造成算力的浪费、少生成区域则会漏检;
第二个问题 是生成候选区域的算法是在 CPU 上运行的,而我们的训练在 GPU 上面,跨结构交互必定会有损效率。
于是乎,任少卿等人提出了一个 Region Proposal Networks
的概念,利用神经网络自己学习去生成候选区域。
这种生成方法同时解决了上述的两个问题,神经网络可以学到更加高层、语义、抽象的特征,生成的候选区域的可靠程度大大提高;可以从上图看出 RPNs 和 RoI Pooling 共用前面的卷积神经网络——将 RPNs 嵌入原有网络,原有网络和 RPNs 一起预测,大大地减少了参数量和预测时间。
将 两刀流
的两刀并入同一个网络,这一操作足够载入史册了。
1.1.5 Mask R-CNN / 2017
论文:Mask R-CNN
时隔一年,何恺明团队再次更新了 R-CNN
家族,改进 Faster R-CNN
并使用新的 backbone 和 FPN 创造出了 Mask R-CNN
。
我们纵观发展历史,发现 SPP Net 升级为 Fast R-CNN 时结合了两个 loss ,也就是说网络输入了两种信息去训练,结果精度大大提高了。何恺明他们就思考着再加一个信息输入,即图像的 Mask ,信息变多之后会不会有提升呢?
加一条通道
于是乎 Mask R-CNN 就这样出来了,不仅可以做「目标检测」还可以同时做「语义分割」,将两个计算机视觉基本任务融入一个框架。没有使用什么 trick ,性能却有了较为明显的提升,这个升级的版本让人们不无啧啧惊叹。
1.1.6 二刀流小结
从结构上讲
一开始的串行到并行,从单一信息流到三条信息流。
从最开始 50s 一张图片的到最后 200ms 一张图片,甚至可以达到 6 FPS 的高精度识别,无不彰显着人类的智慧。
1.2 一刀流 YOLO
一刀流最核心的还是利用了分类器优秀的分类效果,首先给出一个大致的范围(最开始就是全图)进行分类,然后不断迭代这个范围直到一个精细的位置,这样做的优点就是快,但是会有许多漏检。
1.2.1 YOLO / 2015
论文:YOLO
YOLO 就是使用回归这种做法的典型算法。
首先将图片 Resize 到固定尺寸,然后通过一套卷积神经网络,最后接上 FC 直接输出结果,这就他们整个网络的基本结构。
更具体地做法,是将输入图片划分成一个 SxS 的网格,每个网格负责检测网格里面的物体是啥,并输出 Bbox Info 和 置信度。这里的置信度指的是 该网格内含有什么物体 和 预测这个物体的准确度。
这个想法其实就是一个简单的分而治之想法,将图片卷积后提取的特征图分为 SxS 块,然后利用优秀的分类模型对每一块进行分类,将每个网格处理完使用 NMS (非极大值抑制)的算法去除重叠的框,最后得到我们的结果。
1.2.2 SSD / 2015
YOLO 这样做的确非常快,但是问题就在于这个框有点大,就会变得粗糙——小物体就容易从这个大网中漏出去,因此对小物体的检测效果不好。
所以 SSD 就在 YOLO 的主意上添加了 Faster R-CNN 的 Anchor 概念,并融合不同卷积层的特征做出预测。
我们从上图就可以很明显的看出这是 YOLO 分治网络 和 Faster R-CNN Anchor 的融合,这就大大提高了对小物体的检测。这里作者做实验也提到和 Faster R-CNN 一样的结果,这个 Anchor 的数量和形状会对性能造成较大的影响。
除此之外,和 YOLO 最大的区别是,SSD 没有接 FC 减少了大量的参数量、提高了速度。
1.2.3 YOLO9000 / 2016
论文:YOLO9000: Better, Faster, Stronger
到了 SSD
,回归方法的目标检测应该独步武林了,但是 YOLO
的作者不服气,升级做了一个 YOLO9000
——号称可以同时识别 9000 类物体的实时监测算法。
YOLO9000
更像是 SSD 加了一些 Trick :
- Batch Normalization
- High resolution classifier 448*448 pretrain
- Convolution with anchor boxes
- Dimension clusters
- Multi-Scale Training every 10 batch {320,……608}
- Direct location prediction
- Fine-Grained Features
- 加了 BN 层,扩大输入维度,使用了 Anchor,训练的时候数据增强…
所以YOLO9000 和 SSD 可以归为一类。
2 总结
在「目标检测」中有两个指标:快(Fast) 和 准(Accurate)。
一刀流代表的是快,但是最后在快和准中找到了平衡,第一是快,第二是准。
两刀流代表的是准,虽然没有那么快但是也有 6 FPS 可接受的程度,第一是准,第二是快。
两类算法都有其适用的范围,比如说实时快速动作捕捉,一刀流更胜一筹;复杂、多物体重叠,两刀流当仁不让。没有不好的算法,只有合适的使用场景。
此外,后面的论文中可以看到,两种类型的模型也在互相吸收彼此的优点,这也使得两者的界限更为模糊。
参考:
- 《基于深度学习的「目标检测」算法综述》
- 《干货 | 目标检测入门,看这篇就够了》
本文标签: 基于深度学习的目标检测算法调研
版权声明:本文标题:基于深度学习的目标检测算法调研 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732360338h1535036.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论