- 论文链接:https://arxiv.org/pdf/1506.01497.pdf
- 论文题目:Faster R-CNN: Towards Real-Time Object
Detection with Region Proposal Networks
Faster R-CNN
INTRODUCTION
最近在目标检测领域的发展来自于region proposal方法以及R-CNN的成功。尽管R-CNN其最原始的版本运算量很大,但是由于预测框上的共享卷积大大降低了其运算量。最新的R-CNN典型代表Fast R-CNN就在使用很深网络的同时达到了实时检测的速率,前提是忽略掉region proposals的时间。现在选取预测框(候选区域)是检测系统的计算瓶颈。
Region proposal方法典型地依赖于廉价的特征和经济的推荐策略。Selective Search,一种最流行的方法,基于低维的人工特征来贪婪地合并超像素。然而当与高效的检测网络比较的时候,Selective Search就量级上的慢了,平均在CPU上2秒处理一张图片。EdgeBoxes最近提供了很好的在速度和预测框质量上的平衡,0.2秒一张图片。尽管如此,对于检测网络来说region proposal步骤依然消耗了太多的时间。
注意到fast R-CNN在region proposal占用了CPU时,充分利用GPU进行网络运算,这使得这种时间比较变得不公平。一种明显的提高选取预测框计算速率的做法就是让proposal也在GPU上运作。这可能是一种有效的工程解决方法,但是这种方法会忽略掉检测网络的下游,导致失去共享运算的重要时机。
在本文中,我们提供一种算法上的改变—用一个深度卷积网络来计算proposals—这将引入一种简练的且高效的解决办法,对于检测网络的运算来说proposal的计算量将不值一提。由此我们提出一种新的Region Proposal Networks(RPNs)网络模型,它和state-of-the-art的目标检测网络共享卷积层。通过共享卷积层,使得计算proposals的边际成本非常小(10ms一张图片)。
我们发现基于区域的检测器所使用的卷积特征图,比如Fast R-CNN,也是能够用来生成候选框的。在这些卷积特征的基础上,我们通过添加额外的一些卷积层来构建出RPN,这些卷积层可以同时对候选框进行回归,还可以得到在每个位置上对应原图大小的框里的objectness scores(也就是该框里是否有物体的分数)。RPN是全卷积网络,可以端对端的进行训练,尤其是对于生成检测框的任务。
图1:不同的处理多尺度及不同大小图像的策略。(a)建立图像和特征图的金字塔,然后让分类器在所有图上面跑。(b)用不同尺寸 /大小的卷积核在特征图上跑。(c)我们在回归方程中使用推荐框的金字塔。
RPN就是设计来高效地预测不同比例和纵横比的候选框的。对比当下盛行的方法,使用图像金字塔(图1,a)或者卷积核金字塔(图1,b),我们提出新的“anchor”框可以同时处理不同大小和纵横比的推荐框,这避免了对于不同大小比例的不管是图像还是卷积核的枚举。
为了统一RPN和fast R-CNN,我们设计了一种训练策略,也就是在固定候选框的情况下对于预测候选框任务和目标检测任务我们进行交替fine-tuning。这样的策略会很快收敛并且会生成一个带有共享卷积特征的统一网络。
在PASCAL VOC的检测基准数据上对我们的模型进行了评估,结果是带有RPNs的Fast R-CNNs会得到比运用Selective Search的Fast R-CNNs更好的结果。此外,我们的模型几乎摒弃了Selective Search带来的运算量—跑proposals的时仅仅只有10ms。运用很深的网络模型,我们的检测模型在GPU上依然可以以5fps(包括所有的步骤)的帧数运行,因此这是一个在速度和准确率上都可以运用于实际的一个检测模型。
RELATED WORK
Object Proposals。这里有大量的文献关于生成目标候选框的方法。广泛运用的方法有基于合并超像素的(如Selective Search,CPMC,MCC)和基于滑动窗口的(如objectness in windows,EdgeBoxes)。目标候选框能够适用于作为一个外部的模块独立于检测器。(R-CNN,Fast R-CNN)。
Deep Networks for Object Detection。R-CNN网络利用CNN进行端对端的训练来对候选框进行背景或者物体的分类。R-CNN主要是作为一个分类器,并不用来预测目标框(除了最后对目标框进行再次的精细回归)。很多文章都提出了利用深度网络预测目标框。在OverFeat中,针对单一物体定位任务,训练一个全连接层来预测box的坐标。然后将全连接层转换为一个卷积网络就可以来检测多种特定类物体。MultiBox方法就是从一个最后一层全连接层同时预测出多个类不可知的框的网络中生成候选框,是从OverFeat的单一框方式中泛化而来。这些类不可知的框被用来作为R-CNN的预测框。MultiBox预测框网络被应用于单一裁剪图像或多种裁剪图像,这与我们的全卷积策略相反。MultiBox没有在预测框网络和检测网络之间共享特征。我们会在本文后续部分结合我们的方法更加深入的讨论OverFeat和MultiBox。与我们同时进行的,Deepmask是以分割的思想来学习预测框。
共享卷积运算得到了越来越多的关注,尤其是对于增加视觉识别任务的效率,并非准确性。OverFeat是通过计算图像金字塔的卷积特征来完成分类,定位和检测。对于共享卷积特征图的自适应大小pooling(SPP)也是为了有效的进行基于区域的目标检测和语义分割。Fast R-CNN能够端对端的在共享卷积特征上完成检测器的训练并且展示出一定的准确性和速度。
FASTER R-CNN
我们的物体检测系统,叫做Faster R-CNN,是由两个模块构成。第一个模块是深度全卷积网络用来处理候选框,第二个模块是Fast R-CNN检测器用来使用经过处理的候选框。整个系统是一个单独统一的物体检测网络(如图2)。使用最新流行的术语就是带有“注意力”机制的神经网络,RPN模块告诉Fast R-CNN模块应该看向哪里。下面两节会分别介绍RPN的设计和特性以及我们使用的训练共享特征的两个模块的策略算法。
图2:Faster R-CNN是一个独立统一的物体检测网络。RPN模块是作为这个统一网络的“attention”(告诉网络应该看哪里)。
Region Proposal Networks
一个区域候选网络(RPN)将一个任意大小的图片作为输入然后输出一系列矩形物体候选框,每个框都带有一个objectness score。我们使用一个全卷积网络来实现这个过程。因为我们最终的目标是要和Fast R-CNN物体检测网络共享计算,我们假设两个网络模块可以共享一些公有的网络层。在我们的实验中,我们探究了ZFnet(5个共享卷积层)和VGG16(13个共享卷积层)。
为了生成候选区域,我们在最后的共享卷积层的输出特征图上滑动一个小的网络。这个小网络将输入特征图上
n
×
n
n \times n
n×n 大小的窗口作为输入。每个滑动窗口都被映射为一个低维的特征(ZF网络是256维,VGG网络是512维,随后跟上ReLU)。这个低维特征被输入到两个同胞的全连接层中—一个是框回归层(box-regression layer),另一个是框分类层(box-classification layer)。在本文中,我们取
n
=
3
n=3
n=3,注意到我们在输入图像上的有效感受野是很大的(171和228像素分别对于ZF和VGG)。我们在图三上展示了单一位置上的这个迷你网络。注意到因为这个迷你网络是以滑动窗口的形式在运作,所以这个全连接层的权重其实在所有空间位置上都是共享的。那么这个结构自然就可以通过一个
n
×
n
n \times n
n×n的卷积层带两个同胞
1
×
1
1 \times 1
1×1卷积层来实现(一个负责reg,一个负责cls)。
图3:Region Proposal Network(RPN)
Anchors
在每个滑动窗口位置,我们同时预测多个候选区域,这里我们定义一个参数
k
k
k来表示每个位置的最大可能预测框数。所以reg层就有
4
k
4k
4k个输出用来编码
k
k
k个框的4个标识(中心坐标
x
x
x,
y
y
y,图像宽
w
w
w,图像高
h
h
h),cls层输出
2
k
2k
2k个scores用来预测每个预测框是否是物体的概率值。这
k
k
k个预测框被
k
k
k个reference boxes所参数化,我们称之为anchors。一个anchor居中于正在滑动的窗口,并且会与一个比例和纵横比相关联(如图三)。默认的我们使用3个大小比例和3个纵横比,这样在每个位置上就会生成
k
=
9
k=9
k=9个anchors。对于一个
W
×
H
W \times H
W×H(典型的是~2400)的卷积特征图来说,总共这就会有
W
H
k
WHk
WHk个anchors。
Translation-Invariant Anchors
我们方法的一个重要的性质就是平移不变性,对于anchors和相对于anchor来计算预测框的方程来说都是。如果在图像中我们将物体进行了位置上的平移,那么预测框也应该进行同样的平移,并且同样的方程可以在任意位置上进行预测。这样的平移不变性在我们的方法中得以保证。作为对比,MultiBox方法使用k-means生成800个anchors,但是它们不具备平移不变性。所以MultiBox不能保证如果物体进行了平移是否会生成同样的预测框。
同时,平移不变性也减小了模型大小。MultiBox全连接输出层的维度为
(
4
+
1
)
×
800
(4+1)\times800
(4+1)×800,而我们的卷积输出层维度仅仅只有
(
4
+
2
)
×
9
(4+2)\times9
(4+2)×9,当我们有
k
=
9
k=9
k=9个anchor时。最后,我们的输出层就有
2.8
×
1
0
4
2.8\times10^4
2.8×104个参数(这是对于VGG16来说,
512
×
(
4
+
2
)
×
9
512\times(4+2)\times9
512×(4+2)×9),这比MultiBox的输出层参数小了两个量级,MultiBox输出层有
6.1
×
1
0
6
6.1\times10^6
6.1×106个参数(MultiBox使用GoogleNet,
1536
×
(
4
+
1
)
×
800
1536\times(4+1)\times800
1536×(4+1)×800)。就算考虑特征映射层,我们的预测框网络也依然比MultiBox参数少了一个量级。所以我们认为我们的方法对于小数据集来说更加不容易过拟合,如PASCAL VOC。
Multi-Scale Anchors as Regression References
我们展现了一种新的处理多尺寸(纵横比)的策略来设计anchors。如图1,这里有两种流行的多尺度预测的方法。第一种基于图像/特征图的金字塔,比如DPM和基于CNN的方法。图片被resize到多种尺寸,然后对每个尺寸的图片都进行特征图计算(HOG和很多深度卷积特征)。这种方法通常来说是有效的但是很花时间。第二种方法在特征图上使用多尺寸(纵横比)的滑动窗口,比如DPM中,就分别使用不同卷积核处理不同纵横比的问题(如
5
×
7
5\times7
5×7和
7
×
5
7\times5
7×5)。如果使用这种方式来处理多尺度问题,可以被认为是使用“卷积核金字塔”(图1b)。第二种方法往往可以与第一种方法联合使用。
比较起来,我们的anchor-based方法是建立一个anchors金字塔,这种方法更加高效。我们的方法对于不同尺寸和纵横比的anchor框进行边框分类和回归。这都仅仅依赖于单一尺寸的图像和特征图,并且使用单一尺寸的卷积核(特征图上的窗口滑动)。在表一中我们展示了实验结果。
因为这种基于anchors的多尺度设计,我们可以对单一尺度图片使用Fast R-CNN进行卷积特征提取。这个多尺度anchor设计是共享特征的核心,也正是因此没有在处理多尺度问题上引入多余的计算。
表一:Faster R-CNN在PASCAL VOC 2007测试集上使用不同anchor设定的检测结果。网络是VGG16。训练数据是VOC 2007 trainval。默认设置是使用3种大小,3种纵横比。
Loss Function
对于训练RPN,对于每个anchor我们赋予一个二分类标签(是物体或不是物体)。对于两种anchor我们赋予正标签:(i)与一个ground-truth框重叠最高的IoU(Intersection-over-Union)的anchor,或者(ii)与任意ground-truth框重叠IoU超过0.7的anchor。注意到一个单一ground-truth框可能会给多个anchors赋予正标签。通常第二个条件就足够定义正样本了;但是我们仍然采用条件一的原因是在某些极端情况下,条件二可能找不到任何的正样本。对于非正样本如果他们对于所有的ground-truth框的IoU都小于0.3,那么我们就对其赋予负样本。非正负样本的anchors对训练没有任何作用。
有了这些定义,我们使用Fast R-CNN的多任务损失函数作为目标函数。对于单一图像的我们的损失函数定义如下:
(1)
L
(
{
p
i
}
,
{
t
i
}
)
=
1
N
c
l
s
∑
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_{cls}}\sum_iL_{cls}(p_i,p^*_i)+\lambda\frac{1}{N_{reg}}\sum_ip^*_iL_{reg}(t_i,t^*_i) \ \ \tag 1
L({pi},{ti})=Ncls1i∑Lcls(pi,pi∗)+λNreg1i∑pi∗Lreg(ti,ti∗) (1)
这里,
i
i
i是一个mini-batch里每个anchor的下标,
p
i
p_i
pi是anchor
i
i
i是物体的预测概率。如果anchor是正样本,ground-truth标签
p
i
∗
p^*_i
pi∗为1,如果anchor是负样本那么ground-truth标签就是0。
t
i
t_i
ti是一个表征预测框的4个参数化标识的向量,
t
i
∗
t^*_i
ti∗是正样本anchor的ground-truth边框。分类loss
L
c
l
s
L_{cls}
Lcls是两个类的log loss。对于回归loss,我们使用
L
r
e
g
(
t
i
,
t
i
∗
)
=
R
(
t
i
−
t
i
∗
)
L_{reg}(t_i,t^*_i)=R(t_i-t^*_i)
Lreg(ti,ti∗)=R(ti−ti∗),这里R是鲁棒损失函数(在Fast R-CNN里定义的smooth L1)。
p
i
∗
L
r
e
g
p^*_iL_{reg}
pi∗Lreg项仅包括正样本(
p
i
∗
=
1
p^*_i=1
pi∗=1)带来的回归误差,因为负样本没有ground-truth。cls和reg层分别输出
{
p
i
}
\{p_i\}
{pi}和
{
t
i
}
\{t_i\}
{ti}。
这两项loss分别使用
N
c
l
s
N_{cls}
Ncls和
N
r
e
g
N_{reg}
Nreg进行归一化,然后再使用参数
λ
\lambda
λ进行平衡。在我们当前的实施中(已经发行的代码),方程(1)中的cls项是通过mini-batch大小进行归一化(如
N
c
l
s
=
256
N_{cls}=256
Ncls=256),reg项是通过anchor框大小进行归一化(如
N
r
e
g
2400
N_{reg}~2400
Nreg 2400)。默认设置
λ
=
10
\lambda=10
λ=10,因此cls和reg项近似权重相等。通过实验我们发现实验结果对于参数
λ
\lambda
λ不是特别敏感,很大范围的
λ
\lambda
λ效果都可以。我们还注意到上述的归一化也不是必要的或者说可以被简化。
对于边框回归,我们采用下面4个标识进行表征:
(2)
t
x
=
(
x
−
x
a
)
/
w
a
,
t
y
=
(
y
−
y
a
)
/
h
a
,
t
w
=
log
(
w
/
w
a
)
,
t
h
=
log
(
h
/
h
a
)
,
t
x
∗
=
(
x
∗
−
x
a
)
/
w
a
,
t
y
∗
=
(
y
∗
−
y
a
)
/
h
a
,
t
w
∗
=
log
(
w
∗
/
w
a
)
,
t
h
∗
=
log
(
h
∗
/
h
a
)
,
t_x=(x-x_a)/w_a, \ \ t_y=(y-y_a)/h_a, \\ t_w=\log(w/w_a), \ \ t_h=\log(h/h_a), \\ t^*_x=(x^*-x_a)/w_a, \ \ t^*_y=(y^*-y_a)/h_a, \\ t^*_w=\log(w^*/w_a), \ \ t^*_h=\log(h^*/h_a), \tag 2
tx=(x−xa)/wa, ty=(y−ya)/ha,tw=log(w/wa), th=log(h/ha),tx∗=(x∗−xa)/wa, ty∗=(y∗−ya)/ha,tw∗=log(w∗/wa), th∗=log(h∗/ha),(2)
这里
x
,
y
,
w
,
h
x,y,w,h
x,y,w,h表征框的中心坐标和它的宽和高。参数
x
,
x
a
,
x
∗
x,x_a,x^*
x,xa,x∗分别是预测框,anchor框和ground-truth框(
y
,
w
,
h
y,w,h
y,w,h同理)。这可以被认为是从一个anchor框到附近的ground-truth框进行边框回归。
尽管如此,我们实现边框回归还是利用了之前Fast R-CNN里的RoI-based方法,只不过采取了不同的形式来完成。在Fast R-CNN里,边框回归是在由任意大小RoI上池化得到的特征上进行的,并且回归权重对于所有大小区域是共享的。而我们的结构中,用于回归的特征都来自于特征图上的相同大小(
3
×
3
3\times3
3×3)。为了解决多种大小的问题,需要学习一系列(
k
k
k个)边框回归器。每个边框回归器负责一种大小和纵横比,这
k
k
k个回归器并不共享权重。尽管特征是固定尺寸,但由于anchor的设计,我们仍然可以预测多种大小的框。
Training RPNs
RPN网络可以通过反向传播和SGD进行端对端的训练。我们依从Fast R-CNN里的“image-centric”采样策略来训练这个网络。每一个mini-batch来由一张图片的正负样本组成。虽然可以使用所有anchors来优化损失函数,但是这样会导致结果偏向于负样本,因为它们远多于正样本。所以,我们在一个图片上随机采样256个anchors然后计算这个mini-batch的损失函数,这里采样的正负样本数要高达
1
:
1
1:1
1:1。如果一张图像的正样本少于128个,那么我们就对这个mini-batch填充负样本。
我们采用零均值,0.01标准差的高斯分布来初始化所有新加入的层的权值。对于其他层(如共享的卷积层)使用预训练模型进行初始化。使用0.001的学习率训练60k个mini-batches,再对后面的20k个mini-batches使用0.0001学习率进行训练。使用带有0.9的momentum和0.0005的权值衰减。
Sharing Features for RPN and Fast R-CNN
目前我们已经描述了是如何训练一个网络来生成候选区域,还没有考虑基于区域的物体检测CNN运用这些候选框的部分。接下来我们介绍学习一个包含RPN和Fast R-CNN的统一网络的算法。
RPN和Fast R-CNN分开训练,会以不同的方式修改卷积层参数。因此我们需要开发一种策略能够允许两个网络共享卷积层,而不是分成两个网络来学习。我们讨论了以下三种方法来进行特征共享:
(i)Alternating training。这种方案,我们首先训练RPN,然后使用预测框去训练Fast R-CNN。然后再使用被Fast R-CNN调整过的网络去初始化RPN,上述过程不断往复迭代。这是本篇所有实验的解决方法。
(ii)Approximate joint training。这种方案,在训练过程中,将RPN和Fast R-CNN网络合并为一个网络如图2。在每个SGD周期,前向传播生成预测框,然后当训练Fast R-CNN检测器的时候,这些生成的预测框就被看作是固定的,提前训练好的。反向传播照常进行,对于共享层,来自RPN和Fast R-CNN的反向残差信号进行结合。这个方案实施起来比较简单。但是这个方案忽略了来自预测框坐标的导数,这同样也是网络响应的一部分,所以这种方案是近似的。在我们的实验中,我们发现解析器生成了相近的结果,但是训练时间相比于第一种方案减少了25%-50%。
(iii)Non-approximate joint training。之前讨论过,由RPN预测的边框同样是输入的方程。Fast R-CNN中的RoI池化层是同时接收卷积特征和预测框作为输入的,所以理论上有效的反向传播解析器应该包括边框坐标的梯度。这些梯度在第二种方案中被忽略了。在本方案中,我们需要一个关于边框坐标可微的RoI池化层。这个问题可以被一种叫做“RoI warping”的层来解决,但这已经超出了本文的讨论范围。
4-Step Alternating Training。在本文中,我们采用一种实用的4步训练算法来通过交替优化学习共享特征。第一步,我们像Training RPNs章节里介绍的来训练RPN。这个网络采用ImageNet预训练模型进行初始化,然后对于区域预测任务进行端对端的精细调节。第二步,使用第一步生成的预测框对一个单独的Fast R-CNN检测网络进行训练,这个检测网络同样使用ImageNet预训练模型进行初始化。在这个时候这两个网络并没有共享卷积层。第三步,使用检测网络来初始化RPN的训练,但是要固定共享卷积层的参数,只精细调节只属于RPN的部分。现在这两个网络共享了卷积层。最后我们同样的精细调节只属于Fast R-CNN的部分。这样两个网络就共享了卷积层并且形成一个统一的网络。相似的交替训练可以迭代很多次,但是我们发现提升非常微小。
Implementation Details
我们训练和测试两个网络都是使用单一尺寸的图片。我们重新放缩图像使得其较短边变为600像素(
s
=
600
s=600
s=600)。多尺度特征提取(使用图像金字塔)可能会提高准确率,但是这会影响速率。在重新缩放的图像上,对于ZFnet和VGGnet来说最后一层卷积层的总步长将是16个像素,因此对于缩放前的典型的PASCAL图像来说是10个像素(
600
/
16
=
375
/
10
600/16=375/10
600/16=375/10)。如此大的步长都能取得很好的结果,那么对于更小的步长可能结果会更好。
对于anchors,我们使用3个尺寸的box大小,
12
8
2
,
25
6
2
,
51
2
2
128^2,256^2,512^2
1282,2562,5122像素,并且3个纵横比
1
:
1
1:1
1:1,
1
:
2
1:2
1:2,
2
:
1
2:1
2:1。这些超参数我们并没有仔细的选择,在下一章节,我们会提供模型简化实验来查看效果。我们的方案并不使用图像金字塔或者卷积核金字塔来进行多尺度区域预测,这为我们省去了大量的时间。表二展示了利用ZFnet学习到的对于每种anchor的预测框的平均大小。注意到我们的算法是允许预测框大于潜在感受野。这样的预测是可能的—如果只有物体的中间部分是可视的,那么我们可以大致推测一个物体的大小范围。
表二:使用ZFnet对于每个anchor学习到的预测框的平均大小(
s
=
600
s=600
s=600)
对于超出图像边界的anchor框我们需要小心处理。在训练过程中,我们忽略所有超过边界的框,所以它们对loss不会有任何贡献。对于典型的
1000
×
600
1000\times600
1000×600的图像,这里大约总共会有20000(
≈
60
×
40
×
9
\approx60\times40\times9
≈60×40×9)个anchors。将超出边界的anchors忽略的话,一张图像将只有6000个anchors用于训练。如果跨越边界的异常值在训练时不被忽略的话,那么它们会在目标函数中引入很大且很难矫正的误差项,会导致训练无法收敛。然而在测试过程中,我们仍对整张图像应用全卷积RPN。这可能会生成跨边界的预测框,我们将其沿图像边界进行剪裁。
有些RPN预测框会与别的预测框高度重叠。为了减小冗余,我们采用非极大值抑制算法(NMS,non-maximum suppression)对预测框进行处理,基于它们的cls得分。我们固定NMS的IoU阈值为0.7,这将再次减少我们的anchors,大约每张图片会留下2000左右个anchors。需要注意的是,NMS并不会损害我们测试的最终准确率。在NMS之后,我们再选出排名top-N的预测框用于检测。接下来,我们将使用2000个RPN预测框训练Fast R-CNN,但是使用不同数量的预测框进行测试评估。
EXPERIMENTS
Experiments on PASCAL VOC
我们在PASCAL VOC 2007测试基准上评估了我们的方法。这个数据集包含5000张trainval图片和5000张test图片涵盖了20个目标类。我们也提供了一些在PASCAL VOC 2012数据集上的测试的模型结果。对于ImageNet预训练数据集,我们采用了ZFnet的“快速”版本,它有5个卷积层,3个全连接层。开源的VGG-16模型有13个卷积层和3个全连接层。我们主要使用平均精度均值(mAP,mean Average Precision)来评估检测。
我们使用多种区域预测方法来对Fast R-CNN进行训练和预测,结果如表三。使用的网络是ZFnet。对于SS,我们通过“快速”模式生成2000个候选框。对于EB,我们用默认EB0.7的IoU设定来生成候选框。在Fast R-CNN的框架下,SS的mAP是58.7%,EB的mAP是58.6%,而RPN得到了很具有竞争力的结果,mAP是59.9%用到了300个预测框。比起SS和EB,RPN得到了一个更快的检测系统,这都得益于共享卷积计算,更少的预测框同样也在全连接层减少了运算量。
Ablation Experiments on RPN. 为了探究RPN的行为,我们构建了一系列模型简化实验。首先,我们探究在RPN和Fast R-CNN中共享卷积层的效果。为了实现,我们在4步训练的第二步停下,不进行共享。使用两个单独的网络会稍微降低我们的结果(58.7%)。我们发现这可能是因为在第三步,当我们经过探测器精细调节的特征被用来精细调节RPN时,预测框的预测质量会上升。
然后,我们解耦合在训练Fast R-CNN检测网络时RPN的影响。为了达成这个目的,我们使用2000个SS生成的预测框和ZFnet训练Fast R-CNN模型。我们固定检测器然后通过改变测试时的候选区域来评估检测mAP。在这些模型简化实验中,RPN不与检测器共享特征。
在测试时使用300个RPN预测框来代替SS输出mAP 56.8%。mAP的降低是因为训练和测试所用预测框的不一致。
奇怪的是,RPN仍然有具有竞争力的结果(55.1%)当使用排好序的top-100预测框进行测试,这说明排好序的top RPN预测框是相对精确的。更极端一点,使用排好序的top-6000 RPN预测框(不经过NMS)有mAP(55.2%),这说明NMS基本不损伤mAP,并且还可能降低false alarms。
然后,我们分开探究了RPN的cls和reg输出所扮演的角色,在测试的时候分别关闭其中一边。在测试时,当cls层被移除(没有NMS/ranking),我们随机从候选框中采样N个候选框。当N=1000时,mAP基本不变,55.8%,但是当N=100时,mAP就会明显降低,44.6%。这就说明cls得分能够帮助选择质量好的框,这对模型输出非常重要。
另一方面,在测试时,我们移除reg层(预测框变为anchor框,也就是没有边框回归),mAP掉到52.1%。这说明高质量的预测框主要是归功于经过回归后的边框。尽管anchor框多个比例和多个尺度,但是这不足以完成精确的检测。
我们还评估了使用更强大的网络结构来单独训练RPN所带来的影响。我们使用VGG-16来训练RPN,然后仍然使用上述的SS+ZF的检测器。mAP从56.8%(使用RPN+ZF)提升到了59.2%(使用RPN+VGG)。这是一个很有希望的结果,因为这说明RPN+VGG的预测框质量要好于RPN+ZF。因为RPN+ZF的效果和SS相近(都是58.7%,当训练和测试使用一致的proposals),我们就可以大概想象RPN+VGG会比SS有更好的效果,接下来的实验验证了这个猜想。
表三:使用PASCAL VOC 2007 test set的检测结果(在VOC 2007 trainval训练)。检测器是带ZF的Fast R-CNN,但是在训练和测试时是使用多种proposal方法。
在此分享一篇比较好的解释Faster R-CNN的博客(是博主看了很多篇之后个人觉得最好的一篇,当然如果要完全理解Faster R-CNN还是需要看github上的源码的。)
http://lib.csdn.net/article/computervison/67828