赞
踩
R-CNN系列算法详细解读文章:
R-CNN系列检测算法是两阶段检测算法,可大体分为三步:第一步从待检测图片中获得若干目标候选框(Region Proposal);第二步对每个候选框提取特征;最后对利用该特征对候选框做分类和边框回归。
获取目标候选框方法有如下四种,可分为:滑动窗口、规则块、选择性搜索及自动学习。
传统检测算法提取图像特征都是手工设计特征,比如:Haar、HOG,灰度共生矩阵、LBP、SIFT等等,这些特征在检测特定目标下可能有用,但扩大化到检测其他目标或许会失去效果,而且手工设计特征需要一定的专业性,要设计一个新的特征,需要的专业知识没有多年的经验是无法办到的。随着2012年AlexNet的出现,卷积神经网络的提取特征能力得到体现。R-CNN系列检测算法正是利用这一优势才得以在检测领域打败传统检测算法。
图像检测算法怎么和图像分类算法联系起来,一个简单的思想就是将图像“穷举分块”,然后对每一个子图像块进行是否是目标的分类,是目标,则可算检测到目标。这无疑会造成目标会有很多重叠的检测框,所以后面用nms算法去重。为了让最后的检测框更准,所以R-CNN又提出边框回归,后续基于R-CNN算法的改进都加入了边框回归。分类算法,从R-CNN及SPPNet的单独SVM,到Fast/Faster/Mask R-CNN的softmax;不同是的前者是独立模块,后者将分类和回归融合在一个网络中作为两个分支用多任务损失一起参与训练。
R-CNN算法用Selective Search的候选区域选择方式替换了经典的滑窗方式,使得候选框“少而精”(推理阶段取了2000个候选框),然后用AlexNet对2000个候选框依次做提取特征操作,将特征保持在磁盘空间里,最后用SVMs分类器输入候选框特征进行分类,bounding-box回归也是利用这些特征。R-CNN算法是特点是这些操作都是独立的,特征提取操作相对于后面的算法非常冗余。
SPPNet作者发现卷积层可以接受任意大小的输入并输出任意尺寸的特征图,但分类器(SVM/softmax)或者全连接层只能接受固定尺寸的输入。为了让卷积神经网络能接受任意大小的输入图像,提出SPP Layer(空间金字塔池化层),它能将任意输入大小图像在全连接层之前保证是一个固定长度的向量。所以SPP Layer是能在分类网络、检测网络中通用的,主要处理流程如下:
SPPNet相对于R-CNN的改进就是通过加入SPP Layer后将2000次提取特征的操作合并为1次操作,大大减少了推理时间,另外通过多尺度训练也增加了模型的鲁棒性。但候选框生成、提取特征、分类、bounding-box回归还是独立模块,训练和推理效率依然很低。
从算法框图可见,Fast R-CNN算法将特征提取、分类及bounding-box回归融合在一起了,采用多任务损失将分类和回归联合训练,训练和推理可以一步到位,不用存储特征占用额外的磁盘空间。另外Fast R-CNN也设计了RoI Pooling层(可视为单个级别的SPP层)应对不同大小的区域候选框用于生成固定大小的特征向量。针对候选框生成方面,依然采用SS算法(大部分的时间耗时在这里)。
基于Fast R-CNN的劣势提出改进,提出了RPN网络用于替换SS算法让其自动生成目标区域候选框。RPN网络在特征图上利用在3x3大小的滑窗内设定9个anchor,在anchor的基础上预测出目标区域候选框(RoI),通过RPN与Fast R-CNN共享特征提取部分的参数,达到统一训练/推理的目的,相对于SS加上Fast R-CNN大大减少了检测时间。
基于Faster R-CNN做出改进,Faster R-CNN的ROI Pooling层后基于每个候选框区域ROI的分类/回归计算都不是共享的,R-FCN将ROI Pooling层位置后移,整个R-FCN网络为全卷积网络,每个ROI区域完全共享计算,为了达到这一点,作者改进ROI Pooling使得其基于位置敏感。通过最后一个卷积层,得到k * k(C+1)个特征图,+1代表背景类,每个类别对应k * k个分数(每个类别可以拆分为k * k个部位,每个部位对应得分),带位置敏感的ROI Pooling将对应位置的特征图做pooling操作得到C+1个k * k的分数。每个k * k的分数做平均或者投票得到一个分数后,最终做softmax。
从算法框图可以看出,Mask R-CNN是 Faster R-CNN的基础上新增一个mask分支实现的,并且为了让RoI区域特征保持空间一致性,提出了RoIAlign替换了Faster R-CNN中的RoI Pooling,纠正了RoI Pooling在特征图上的取值偏移,使得检测分支和mask分支在特征图上的RoI区域和原图的RoI区域在空间位置上对齐,这也是Mask R-CNN在检测领域比Faster R-CNN更高的原因之一。
算法 | 候选框生成 | 特征提取 | 分类 | 回归 | 特点 |
---|---|---|---|---|---|
R-CNN | SS | AlexNet | SVMs | L2回归偏移量 | 四个模块独立,需要额外的特征存储,特征提取重复操作 |
SPPNet | SS | ZF-5 | SVMs | L2回归偏移量 | 提出SPP层,使得特征提取合并为一次操作,但四个模块依然独立,需要额外的特征存储 |
Fast R-CNN | SS | VGG-16 | Softmax | smoothL1回归偏移量 | 将特征提取、分类、回归融合在一起,用多任务训练,提出RoI池化层,SS模型依然耗时严重 |
Faster R-CNN | RPN | ZF-5/VGG-16 | Softmax | smoothL1回归偏移量 | 提出RPN网络自动生成区域候选框,将RPN与Fast RCNN网络融合,形成端到端推理 |
R-FCN | RPN | ResNet 101 | softmax | smoothL1回归偏移量 | 将RoI池化层后移,提出区域敏感的RoI池化,形成全卷积网络,使得基于不同RoI也可以共享计算,提升了训练/推理速度 |
Mask R-CNN | RPN | ResNet50/101 | Softmax | smoothL1回归偏移量 | 提出RoI Align层,减少RoI区域特征在空间位置上偏移,新增Mask分支,对目标定位有一定积极作用 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。