two stage 、one stage 的目标检测算法

AI 科技评论按:本文作者,首发于作者的知乎专栏「炼丹师备忘录」,AI 科技评论获其授权转发 。
目前目标检测领域的深度学习方法主要分为两类:two stage 的目标检测算法;one stage 的目标检测算法 。前者是先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类;后者则不用产生候选框,直接将目标边框定位的问题转化为回归问题处理 。正是由于两种方法的差异,在性能上也有不同,前者在检测准确率和定位精度上占优,后者在算法速度上占优 。

two stage 、one stage 的目标检测算法

文章插图
目标检测算法脉络
1. two stage 的方法
在早期深度学习技术发展进程中,主要都是围绕分类问题展开研究,这是因为神经网络特有的结构输出将概率统计和分类问题结合,提供一种直观易行的思路 。国内外研究人员虽然也在致力于将其他如目标检测领域和深度学习结合,但都没有取得成效,这种情况直到 R-CNN 算法出现才得以解决 。
1.1 R-CNN
2014 年加州大学伯克利分校的 Ross B.提出 R-CNN 算法,其在效果上超越同期的 Yann Lecun 提出的端到端方法算法,其算法结构也成为后续 two stage 的经典结构 。R-CNN 算法利用选择性搜索( )算法评测相邻图像子块的特征相似度,通过对合并后的相似图像区域打分,选择出感兴趣区域的候选框作为样本输入到卷积神经网络结构内部,由网络学习候选框和标定框组成的正负样本特征,形成对应的特征向量,再由支持向量机设计分类器对特征向量分类,最后对候选框以及标定框完成边框回归操作达到目标检测的定位目的 。虽然 R-CNN 算法相较于传统目标检测算法取得了 50%的性能提升,但其也有缺陷存在:训练网络的正负样本候选区域由传统算法生成,使得算法速度受到限制;卷积神经网络需要分别对每一个生成的候选区域进行一次特征提取,实际存在大量的重复运算,制约了算法性能 。
two stage 、one stage 的目标检测算法

文章插图
图1.1 R-CNN
1.2 SPP-Net
two stage 、one stage 的目标检测算法

文章插图
图1.2layer
针对卷积神经网络重复运算问题,2015 年微软研究院的何恺明等提出一种 SPP-Net 算法,通过在卷积层和全连接层之间加入空间金字塔池化结构()代替 R-CNN 算法在输入卷积神经网络前对各个候选区域进行剪裁、缩放操作使其图像子块尺寸一致的做法 。利用空间金字塔池化结构有效避免了 R-CNN 算法对图像区域剪裁、缩放操作导致的图像物体剪裁不全以及形状扭曲等问题,更重要的是解决了卷积神经网络对图像重复特征提取的问题,大大提高了产生候选框的速度,且节省了计算成本 。但是和 R-CNN 算法一样训练数据的图像尺寸大小不一致,导致候选框的 ROI 感受野大,不能利用 BP 高效更新权重 。
1.3 Fast R-CNN
针对 SPP-Net 算法的问题,2015 年微软研究院的 Ross B.又提出一种改进的 Fast R-CNN 算法,借鉴 SPP-Net 算法结构,设计一种 ROI的池化层结构,有效解决 R-CNN 算法必须将图像区域剪裁、缩放到相同尺寸大小的操作 。提出多任务损失函数思想,将分类损失和边框回归损失结合统一训练学习,并输出对应分类和边框坐标,不再需要额外的硬盘空间来存储中间层的特征,梯度能够通过 RoI层直接传播 。但是其仍然没有摆脱选择性搜索算法生成正负样本候选框的问题 。
two stage 、one stage 的目标检测算法

文章插图
图1.3 Fast R-CNN
1.4R-CNN
为了解决 Fast R-CNN 算法缺陷,使得算法实现 two stage 的全网络结构,2015 年微软研究院的任少庆、何恺明以及 Ross B等人又提出了R-CNN 算法 。设计辅助生成样本的 RPN()网络,将算法结构分为两个部分,先由 RPN 网络判断候选框是否为目标,再经分类定位的多任务损失判断目标类型,整个网络流程都能共享卷积神经网络提取的的特征信息,节约计算成本,且解决 Fast R-CNN 算法生成正负样本候选框速度慢的问题,同时避免候选框提取过多导致算法准确率下降 。但是由于 RPN 网络可在固定尺寸的卷积特征图中生成多尺寸的候选框,导致出现可变目标尺寸和固定感受野不一致的现象 。