Faster R-CNN

1.Fast R-CNN的问题

Fast R-CNN中最大的问题就是使用Selective Search来生成区域候选框,这极大地降低了整个算法的速度。

2.Faster R-CNN怎么解决问题

Faster R-CNN的网络结构如下图所示,可以简单的看成是RPN网络+Fast R-CNN网络,用区域生成网络来代替SS算法生成区域候选框。
在这里插入图片描述
(1)首先输入任意size的图片。
(2)图片经过卷积层得到特征图
(3)特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用NMS,输出其Top-N得分的区域建议并输出给ROI池化层。
(4)将卷积得到的特征图和RPN网络的区域建议输出同时输入ROI池化层,提取对应区域建议的特征。
(5)将得到的区域建议特征通过全连接层后,输出该区域的分类得分和回归后的bounding box。
整个过程的算法流程图如下所示:
在这里插入图片描述

3.算法过程解释分析

(1)RPN网络结构?实现什么功能?
RPN网络结构如下图所示:
在这里插入图片描述
如上图所示:RPN在CNN卷积层后增加滑动窗口以及两个卷积层/全连接层完成区域建议功能,第一个全连接层将特征图每个滑窗位置编码成一个特征向量,第二个全连接层对应每个滑窗位置输出K个区域得分和K个回归后的区域建议,并对得分区域进行NMS操作,输出得分Top-N(文中为300)区域。本质上实现了Selective Search的功能。
【注】:论文中说上述的两个卷积层/全连接层实际上是全连接层,但是网络在所有滑窗位置共享全连接层,可以很自然的用n×n(文中n=3)的卷积核和两个并行的1×1的卷积核实现。
(2)Anchors是什么?作用是什么?
Anchors是一组大小固定的参考窗口:三种尺度{128×128、256×256、512×512}×三种长宽比{1:1、1:2、2:1},如下图所示,表示RPN网络中对特征图滑窗时每个滑窗位置所对应的原图区域中9种可能的大小。其作用相当于是模板,对任意图像任意滑窗位置都是这9种模板。继而根据图像大小计算滑窗中心点对应原图区域的中心点,通过中心点和size就可以得到滑窗位置和原图位置的映射关系,由此原图位置并根据和Ground Truth重复率打上标签,让RPN网络学习该Anchors是否有物体即可。
在这里插入图片描述
接下来作者说采用Anchor的方法具有平移不变性,即如果在图像中评议了物体,建议框也会跟着平移。作为比较,MultiBox方法采用k均值聚类的方法生成800个Anchors,但是这种方法不具备平移不变性。
与此同时,作者还论证了这种平移不变性会减少模型的size,也就是模型的参数较少,较少的参数在小数据集上减少了过拟合的风险。
(3)如何处理多尺度长宽比问题?
文中简述了两种方法:第一种是用图像金字塔的方法,对伸缩到不同size的图像进行特征提取,这种方法的缺点就是费时;第二种方法是滤波器金字塔,对输入图像采用不同size的滤波器进行卷积操作。这两种操作都需要枚举图像或者滤波器size。
作者提出了一种Anchors金字塔的方法来解决多尺度长宽比问题。在RPN网络中对特征图滑窗时,对滑窗位置中心进行多尺度多长宽比的采样,并对多尺度长宽比的anchor box区域进行分类和回归,利用Anchors金字塔就仅仅依赖于单一尺度的图像和特征图以及单一大小的卷积核,就可以解决多尺度多长宽比的问题。
(4)和传统的滑窗法相比,RPN网络有什么优势?
传统的滑窗法是训练一个能检测物体的网络,然后对整张图片进行滑窗判断,由于无法判断建议框的尺度和长宽比,所以需要多次缩放,这样找出一张图片有物体的区域就变得很慢。
虽然RPN网络也是采用滑窗的方法,但是滑动窗口实际上是在特征图上进行的,特征图的维度较原始图形降低了很多倍(有很多pooling操作),RPN采用9种不同尺度和长宽比的anchors,同时最后进行了bounding box回归,即使是这9种anchors外的区域也能得到一个跟目标比较近的建议框。

4.训练过程

(1)RPN网络、Fast R-CNN网络预训练

RPN网络和Fast R-CNN网络被ImageNet网络进行了有监督的预训练,利用其训练好的参数进行初始化,对于新增加的层,用标准差为0.01,均值为0的高斯分布随机初始化。

(2)RPN网络微调训练

① SGD mini-batch采样方式

同Fast R-CNN网络一样,采用image-centric”方式进行采样,即采用层次采样,先对图像取样,在对anchors取样,同一张图像的anchors共享计算和内存。每个mini-batch包含从一张图像中随机提取的256个anchors,正负样本比例为1:1来计算一个mini-batch的损失函数。

② 训练超参数的选择

在PASCAL VOC数据集上前60k次迭代学习率为0.001,后20k次迭代学习率为0.0001;动量设置为0.9,权重衰减设置为0.0005。

③ 损失函数

在介绍损失函数之前,先对每一个anchor设置一个二进制类别标签(是否为物体)。我们将如下两类anchors设置为正标签:
(A)和一个Ground Truth具有最高IOU的的anchors
(B)和任何Ground Truth的IOU>0.7的anchors
但事实上我们采用第一种方式设置正标签,同时我们将与Ground Truth的IOU<0.3的anchors设置为负标签。
有了上述定义,我们定义一张图片的多任务损失函数为:
L ( { p i } , { t i } ) = 1 N a b c ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\})=\frac{1}{N_{abc}}\sum_{i}L_{cls}(p_i,p_i^*)+λ\frac{1}{N_{reg}}\sum_{i}{p_i^*L_{reg}(t_i,t_i^*)} L({ pi},{ ti})=Nabc1iLcls(pi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值