Faster R-CNN
文章目录
- 摘要
- Abstract
- 1. 引言
- 2. 框架
- 2.1 RPN
- 2.1.1 网络结构
- 2.1.2 损失函数
- 2.1.3 训练细节
- 2.2 训练过程
- 3. 创新点和不足
- 3.1 创新点
- 3.2 不足
- 参考
- 总结
摘要
Faster R-CNN是针对Fast R-CNN缺点改进的目标检测模型。为了解决候选区域生成耗时长的问题,Faster R-CNN提出了候选区域网络RPN,RPN首先能利用与检测网络Fast R-CNN共享的卷积网络来得到图片的特征图,然后利用 3 × 3 3\times3 3×3的滑动窗口生成以滑动窗口为中心、不同尺度和横纵比的锚点区域,接着把滑动窗口映射成一个维度为512的特征向量,最后特征向量被送入两个平行的子层,一个用于分类任务,另一个用于边界框回归任务。由于滑动窗口把512维的特征向量映射到颜色通道的缘故,滑动窗口、分类层和回归层均可以由卷积层来实现,因此RPN另一个显著的优点是,它是一个全卷积网络,能处理不同形状的输入并且高效地捕获图片的特征。此外,RPN使用不同尺度和横纵比来生成锚点区域,再通过训练锚点区域到真实区域的映射来生成不同形状的候选区域。尽管RPN具备以上的优点,但是它也引入了一个问题——RPN和Fast R-CNN无法联合训练,只能交替优化。
Abstract
Faster R-CNN is an object detection model improved from Fast R-CNN to address its drawbacks. To solve the problem of slow region proposal generation, Faster R-CNN introduces the Region Proposal Network (RPN). RPN first uses the convolutional network shared with the detection network Fast R-CNN to obtain feature maps of the image. Then, it employs a 3 × 3 3\times3 3×3 sliding window to generate anchor regions of different scales and aspect ratios centered around the sliding window. The sliding window is then mapped into a 512-dimensional feature vector, which is passed through two parallel sub-layers: one for classification and the other for bounding box regression. Since the sliding window maps the 512-dimensional feature vector to the color channels, the sliding window, classification layer, and regression layer can all be implemented using convolutional layers. Therefore, another significant advantage of RPN is that it is a fully convolutional network, capable of handling input of varying shapes and efficiently capturing image features. Furthermore, RPN generates anchor regions at different scales and aspect ratios, and through training, it maps anchor regions to the ground truth to generate candidate regions of various shapes. Despite these advantages, RPN introduces a problem—RPN and Fast R-CNN cannot be jointly trained and must be optimized alternately.
1. 引言
尽管Fast R-CNN在保证识别准确率的情况下加速了预测的过程,但候选区域生成耗时长的问题仍然没有解决。Fast R-CNN依赖选择性搜索来生成候选区域,这个生成方法使用CPU来计算候选区域,没有利用GPU来加速候选区域的计算。因此Faster R-CNN提出了与检测网络共享图像卷积特征的候选区域网络RPN来生成候选区域。
2. 框架
Faster R-CNN由两部分组成:RPN和Fast R-CNN,其中RPN负责生成候选区域,Fast R-CNN负责检测任务。
2.1 RPN
2.1.1 网络结构
RPN的输入可以是任意尺寸的图片,最终的输出为一系列带有得分的候选区域的集合。RPN使用VGG16的前17层得到图片的特征图,然后在特征图上滑动一个大小为
3
×
3
3\times 3
3×3,步长为1的窗口,把窗口内的特征图映射成一个维度为512的特征向量(下图中的256维向量对应于原文使用的另一个卷积神经网络模型),最后把这个特征向量送入两个全连接层,一个全连接层进行边界框回归,而另一个全连接层进行分类。
RPN通过移动锚点区域生成候选区域,每个锚点区域都是以滑动窗口为中心的,并与尺度和横纵比相关联。原文使用了3个尺度
128
×
128
128\times128
128×128、
256
×
256
256\times256
256×256、
512
×
512
512\times512
512×512(这3个尺度对应的是原图)和3个横纵比
1
:
2
1:2
1:2、
1
:
1
1:1
1:1、
2
:
1
2:1
2:1,如此便能产生9个锚点区域。RPN在每个滑动窗口的位置同时预测
k
=
9
k=9
k=9个锚点区域,因此边界框回归层有
4
×
9
=
36
4\times9=36
4×9=36个输出,分类层有
2
×
9
=
18
2\times9=18
2×9=18个输出。对于每个候选区域,分类层分别估计每个锚点区域中含有物体的可能性和不含物体的可能性,而边界框回归层计算每个锚点区域的偏移量。
滑动窗口可以用卷积核大小为
3
×
3
3\times3
3×3、过滤器个数为512和步长为1的卷积层来实现,分类任务的全连接层可以用卷积核大小为
1
×
1
1\times1
1×1、过滤器个数为
2
×
9
=
18
2\times9=18
2×9=18和步长为1的卷积层来实现,边界框回归任务的全连接层可以用卷积核大小为
1
×
1
1\times1
1×1、过滤器个数为
4
×
9
=
36
4\times9=36
4×9=36和步长为1的卷积层来实现。因此RPN是一个全卷积神经网络。
下面举个例子来理解一下RPN的计算过程。假设一张图片经过VGG16前17层计算后得到的特征图大小为
36
×
36
36\times36
36×36,通道数默认为512。它经过一个卷积核大小为
3
×
3
3\times3
3×3,过滤器个数为512和步长为1的卷积层并经过ReLU激活后的特征图大小为
34
×
34
34\times34
34×34,通道数仍为512,其中特征图中每个
1
×
1
1\times1
1×1的正方形在颜色通道是一个512维的特征向量。分类层和回归层需要对这个
34
×
34
34\times34
34×34的特征图应用
1
×
1
1\times1
1×1大小的卷积核,并根据各自不同的要求使用不同数量的过滤器,即可完成对每个滑动窗口的9个锚点区域的分类和回归任务。
2.1.2 损失函数
对于每个锚点区域,如果它与真实区域有最高的IOU或者IOU大于0.7,则它的标签为1即物品;如果它与所有真实区域的IOU小于0.3,则它的标签为0即背景。计算IOU时,需要把在经过VGG16前17层后特征图上的锚点区域(锚点区域可能会超出特征图范围,如此需要把它裁剪到特征图范围内)缩放回原图再计算。
在单个图片上的损失函数为:
L
(
{
p
i
}
,
{
t
i
}
)
=
1
N
c
l
s
∑
i
L
c
l
s
(
p
i
,
p
i
∗
)
+
λ
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_{i}L_{cls}(p_i, p_i^*)+\frac{\lambda}{N_{reg}}\sum_{i}p_i^*L_{reg}(t_i, t_i^*).
L({pi},{ti})=Ncls1i∑Lcls(pi,pi∗)+Nregλi∑pi∗Lreg(ti,ti∗).
其中
i
i
i是一个批量中锚点区域的索引,
p
i
p_i
pi是锚点区域
i
i
i是物品的概率,
p
i
∗
p_i^*
pi∗是锚点区域
i
i
i的标签,
t
i
t_i
ti是预测边界框的四元组向量,
t
i
∗
t_i^*
ti∗是标签为1的锚点区域对应的真实区域四元组。
分类损失为
L
c
l
s
(
p
i
,
p
i
∗
)
=
p
i
∗
l
o
g
(
p
i
)
+
(
1
−
p
i
∗
)
l
o
g
(
1
−
p
i
)
L_{cls}(p_i, p_i^*)=p_i^* log(p_i) + (1-p_i^*)log(1-p_i)
Lcls(pi,pi∗)=pi∗log(pi)+(1−pi∗)log(1−pi)。回归损失为
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
R
R是Smooth L1函数,
s
m
o
o
t
h
L
1
(
x
)
=
{
0.5
x
2
,
i
f
∣
x
∣
<
1
,
∣
x
∣
−
0.5
,
其他
.
smooth_{L_1}(x)=\left\{\begin{aligned}0.5x^2\quad,&if |x|\lt1,\\|x|-0.5,&其他.\end{aligned}\right.
smoothL1(x)={0.5x2,∣x∣−0.5,if∣x∣<1,其他.,
t
i
=
[
x
−
x
a
w
a
,
y
−
y
a
h
a
,
l
o
g
(
w
w
a
)
,
l
o
g
(
h
h
a
)
]
t_i=[\frac{x-x_a}{w_a}, \frac{y-y_a}{h_a}, log(\frac{w}{w_a}), log(\frac{h}{h_a})]
ti=[wax−xa,hay−ya,log(waw),log(hah)],
t
i
∗
=
[
x
∗
−
x
a
w
a
,
y
∗
−
y
a
h
a
,
l
o
g
(
w
∗
w
a
)
,
l
o
g
(
h
∗
h
a
)
]
t_i^*=[\frac{x^*-x_a}{w_a}, \frac{y^*-y_a}{h_a}, log(\frac{w^*}{w_a}), log(\frac{h^*}{h_a})]
ti∗=[wax∗−xa,hay∗−ya,log(waw∗),log(hah∗)],
[
x
,
y
,
w
,
h
]
[x, y, w, h]
[x,y,w,h]是预测区域的四元组,
[
x
a
,
y
a
,
w
a
,
h
a
]
[x_a, y_a, w_a, h_a]
[xa,ya,wa,ha]是锚点区域的四元组,
[
x
∗
,
y
∗
,
w
∗
,
h
∗
]
[x^*, y^*, w^*, h^*]
[x∗,y∗,w∗,h∗]是真实区域的四元组。
2.1.3 训练细节
每个批次以1:1的比例在一张图片上采样标签为1和0的锚点区域来计算损失,批次大小为256。如果标签为1的锚点区域小于128,则用标签为0的锚点区域填充,直至批次大小为256。
2.2 训练过程
由于Fast R-CNN依赖生成的候选区域来训练,因此RPN和Fast R-CNN无法联合训练。原文使用了四部训练法,它通过交替优化来学习两者共享的特征。
第一步,使用在ImageNet上预训练的VGG16,再微调RPN来进行候选区域生成任务。第二步,使用第一步的RPN生成的候选区域来训练Fast
R-CNN。第三步,使用Fast R-CNN和RPN共享的卷积网络来初始化RPN中共享的卷积网络,固定共享的层,只微调RPN中独有的层。第四步,固定Fast R-CNN和RPN共享的卷积网络,只微调全连接层。
3. 创新点和不足
3.1 创新点
相较于传统耗时长的选择性搜索,Faster R-CNN提出了RPN来进行候选区域生成,RPN可以利用与Faster R-CNN共享的卷积网络得到图片的卷积特征图,避免了重复计算。由于滑动窗口把512维的特征向量映射到颜色通道的缘故,滑动窗口、分类层和回归层均可以由卷积层来实现,因此RPN是一个全卷积网络,能处理不同形状的输入并且高效地捕获图片的特征。此外RPN可以使用不同尺度和横纵比在卷积特征图上生成锚点区域,以满足不同形状边界框的需要。
不同于之前的边界框回归任务,RPN边界框回归使用的特征大小相同,均为
3
×
3
3\times3
3×3,并且每个边界框回归器只负责一个尺度和横纵比。
3.2 不足
由于Fast R-CNN依赖RPN生成的候选区域,Faster R-CNN中的RPN和Fast R-CNN无法联合训练,这是一个显著的问题。
参考
Shaoqing Ren, Kaiming He, Ross Girshick, Jian Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.
总结
Faster R-CNN由两部分模型组成——RPN和Fast R-CNN,RPN负责候选区域的生成,Fast R-CNN负责检测任务。RPN首先利用VGG16前17层得到图片的卷积特征图,然后以窗口大小为 3 × 3 3\times3 3×3的滑动窗口生成以滑动窗口为中心、不同尺度和横纵比的锚点区域,接着利用卷积核大小为 3 × 3 3\times3 3×3、过滤器个数为512和步长为1的卷积层把滑动窗口内的特征图映射成颜色通道上的特征向量,最后利用卷积核大小为 1 × 1 1\times1 1×1、过滤器个数不同的分类层和回归层分别得到每个滑动窗口上的所有锚点区域包含或不包含物体的得分和边界框的偏移量。尽管RPN的引入解决了候选区域生成耗时长的问题,但它同时也带来了一个问题——RPN和Fast R-CNN无法联合训练,只能交替优化。