RCNN、Faster-RCNN、Faster-RCNN
算法模型专栏开始,力争用最通俗的说法来解释,参考各类资料暂时删去了损失函数的计算以及比较繁琐难懂的概念,如有错误理解之处望指出!
首先给定几个概念,不熟悉卷积基本概念的暂且看下:
基础概念:
先来个全彩GoogleNet/Inception模型
解释下1*1卷积的作用:
增加非线性:相当于全连接层,加入激活函数后使得网络复杂性增加
特征降维:控制卷积核数量达到通道数大小放缩
空洞卷积:又称扩张卷积,引入扩张率,更大的感受野。通常用在目标分割中小物体的识别。
转置卷积:卷积逆过程,又称为反卷积,小图片放大为大图。
全卷积网络(FCN):一个设计好的网络可以输入任意大小的图片。
交并比IOU = 两个物体交集/两个物体并集
mAP:平均准确率均值,准确率与召回率曲线图
非极大值抑制(NMS):如字面意思
RCNN:
下面正式介绍RCNN模型:
RCNN有两种方法获取候选区域:
基于区域生成(Region Proposal)方法,selective search就是其中的一种,简称SS算法。
滑动窗口方法,传统图像检测使用的。
SS算法步骤:
1.计算机区域集R的每个相邻区域的相似度S={s1,s2,s3...},相似度包括图片的颜色、尺寸、纹理等。
while S != 0 //只要S不为空集就一直循环
2.找出相似度最高的2个区域,合并为Rt,添加到R中
3.从S中一处与步骤2中有关的子集
4.重新计算Rt与所有子集相似度
算法流程:
1.选取一个model(VGG等后续介绍)
2.去掉最后一个全连接层,分类从1000种变为N+1,微调(final-tuning)
3.pool5后为FC6层,对每一个候选区域去进行特征提取,计算区域大小,一次向前运算(注意是每一个候选区域进行一次!),
第五个池化层,也就是pool5的 输出(候选框提取到的特征)保存到主硬盘中。
4.开始训练,pool5输出的特征训练SVM分类器,用来二分类判断候选框里的物体类别。
(二分类就是解决是否、有无物体的问题,输出1代表是/有,0为否/无)。进行测试:每个类别对应一个SVM,判断是否属于这个类别。
(SVM分类器后续文章详细说明)
5.依然是pool5输出的特征旋律一个回归器(dx,dy,dw,dh),回归器用来调整候选框位置。
dx、dy代表候选框水平和垂直位移,dw、dh代表宽高缩放
模型结构如下图:
Bbox reg预测候选框位置,SVM判断种类。值得注意的是Bbox reg在神经网络之外。
RCNN的缺点:2k个候选区域都要经过一次CNN,即上述的算法流程第三步,这会导致运行速度慢,由此出现Spp-Net,在RCNN的基础上改进,原图只要做一次CNN操作就可以得到候选区域的特征。下面介绍具体的改进方法——特征映射。
特征映射:输入图片的某个位置的特征反应在特征图上也是相同位置。如图:
SS算法中提供2000个候选区域的位置记录,通过比例映射到第五个卷积层中输出特征图,提取候选区域的特征图,将特征图送入金字塔池化层中计算。
接下里又引出金字塔池化层,可简单理解为采集到不同大小尺寸的特征图汇聚到同一个池化层中一次性计算出候选区域特征,Spp-Net图片检测速度比RCNN快了100倍。
Fast-RCNN:
借鉴了Spp-Net的思想后,Fast-RCNN出现了,先看模型结构图:
介绍下图中的术语:
ROI Pooling(Regions of interest...):这是Spp-Net金字塔池化层的简单形式,只使用一种固定大小的max-pooling。将每个候选区域均分为M*N块,每块进行max-pooling。将特征图上大小不一的候选区域转变为统一的数据送入到下一层。
softmax逻辑回归:把输出的映射到[0,1],并且归一化保证和为1,从而使得多分类的概率之和也刚好为1。举个例子:假设这个模型可以预测四个种类分别为鸡、鸭、狗、猪,那么最终输出y=(鸡的概率+鸭的概率+狗的概率+猪的概率)=1。softmax替代了RCNN中的SVM二分类。
FC:全连接层,该层的作用是做分类,从前面的卷积层中得到的高维数据铺平输入到分类器中。
Fast-RCNN相对于RCNN的创新之处:前面提到了RCNN的Bbox reg也就是候选框位置预测是在神经网络之外计算的,而Fast-RCNN则把Bbox reg与分类器都置于神经网络内组合成multitask模型,可共享卷积特征,速度优化明显。
不足之处:SS计算,也就是区域生成的方法仍然在神经网络之外进行,未来改进这个不足,推出了Faster-RCNN。
Faster-RCNN:
Faster-RCNN可近似理解为"区域生成网络+Fast-RCNN",加入了专门生成候选区域的神经网络RPN(Region Proposal Network)
先看Faster-RCNN结构:
可以看出结构上在Fast-RCNN之上加入了RPN,classification loss与Bbox regression loss是分类与位置的损失,feature map是特征图。卷积输出得到特征图后分两部分,一部分直接ROI Pooling生成统一的候选区域输出,另一部分经过RPN,RPN结构图如下:
RPN中softmax预测anchor是前景还是背景的概率,并不预测物体属于哪一类。
- 点赞
- 收藏
- 关注作者
评论(0)