Fast RCNN
1. Introduction
1.1 R-CNN
R-CNN
存在以下几个问题:
- Training is a multi-stage pipeline: 训练分多步,每次训练需要fine tuning一个预训练网络,然后
region proposals
要通过selective search
算法获取,还有针对每一个类别都训练一个SVM
分类器,最后还要用regressor
对bounding box
进行回归 - Training is expensive in space and time: 时间和内存消耗比较大,在训练
SVM
分类器和bounding box
回归器时需要用网络提取的特征作为输入,特征保存在磁盘上再读入的时间消耗是比较大的 - Object detection is slow: 测试时比较慢,每张图片的每个
region proposals
都要卷积,重复操作太多
1.2 Contributions
- 更好的检测效果相较于RCNN和SPPNet
- 训练是单阶段的,使用多任务损失,即分类损失和回归损失组合在一起
- 训练可以更新所有的网络层
- 不需要磁盘来存储特征
2. Architecture
Fast RCNN步骤如下:
- 利用
selective search
算法提取region proposals
候选区域 - 将整张图片输入
C
N
N
CNN
CNN网络中,提取特征,获得
feature maps
- 将
region proposals
候选区域映射到feature maps
上,得到RoI projection
- 通过
ROI Pooling Layer
将RoI projection
变成固定大小的特征图 - 将固定大小的特征图通过一系列
FC
层得到固定长度的特征向量输入到softmax
和bbox regressor
中。利用softmax loss
分类损失和smoothL1 loss
回归损失进行联合训练
3. ROI Pooling Layer
RoI池化层使用最大池化将任何有效区域内的特征转化成一个小的带有固定空间范围HxW(比如下图2x2)的特征图
4. Multi-task Loss
4.1 分类损失
与RCNN不同,Fast RCNN使用softmax作为分类器,其真实类别为
u
u
u的损失定义如下
L
c
l
s
(
p
,
u
)
=
−
l
o
g
p
u
L_{cls}(p,u)=-logp_u
Lcls(p,u)=−logpu
其中
p
u
p_u
pu代表预测为类别
u
u
u的概率
4.2 回归损失
类别
u
u
u的真实边界框定义为:
v
=
(
v
x
,
v
y
,
v
w
,
v
h
)
v=(v_x, v_y, v_w, v_h)
v=(vx,vy,vw,vh);类别
u
u
u的预测边界框定义为:
t
u
=
(
t
x
u
,
t
y
u
,
t
w
u
,
t
h
u
)
t^u=(t_x^u, t_y^u, t_w^u,t_h^u)
tu=(txu,tyu,twu,thu)。对于回归损失定义如下:
L
l
o
c
(
t
u
,
v
)
=
∑
i
∈
{
x
,
u
,
w
,
h
}
s
m
o
o
t
h
L
1
(
t
i
u
−
v
i
)
L_{loc}(t^u, v)=\sum_{i \in \{x,u,w,h\}}smooth_{L1}(t_i^u-v_i)
Lloc(tu,v)=i∈{x,u,w,h}∑smoothL1(tiu−vi)
其中:
s
m
o
o
t
h
L
1
(
x
)
=
{
0.5
x
2
i
f
∣
x
∣
<
1
∣
x
∣
−
0.5
o
t
h
e
r
w
i
s
e
smooth_{L1}(x) = \begin{cases} 0.5 x^2 & if \quad |x| < 1 \\ |x|-0.5 & otherwise \end{cases}
smoothL1(x)={0.5x2∣x∣−0.5if∣x∣<1otherwise
4.3 联合损失
L
(
p
,
u
,
t
u
,
v
)
=
L
c
l
s
(
p
,
u
)
+
λ
[
u
≥
1
]
L
l
o
c
(
t
u
,
v
)
L(p,u, t^u, v)=L_{cls}(p, u) + \lambda[u \geq 1]L_{loc}(t^u, v)
L(p,u,tu,v)=Lcls(p,u)+λ[u≥1]Lloc(tu,v)
其中中括号项代表这样一个函数:当
u
≥
1
u ≥ 1
u≥1时,返回1,否则返回0。根据约定代表全部剩余一切的背景类标注成
u
=
0
u=0
u=0。所以对于背景而言,没有标注框信息,因而
L
l
o
c
L_{loc}
Lloc就忽略了。
5. Fast RCNN网络结构
论文中还有采用SVD分解改进全连接层,Mini-Batch 采样和RoI 反向传播,在此只介绍较为重要的部分。
参考资料: