整个R-FCN的结构
- 一个base的conv网络如ResNet101
- 一个RPN(Faster RCNN来的)
- 一个position sensitive的prediction层
- 一个position sensitive的bbox reg层
- 最后的ROI pooling+投票的决策层
共有C个类别
Base的输出进入两条支路
一条进入取Faster R-CNN一样的RPN得到RoI
一条进入FCN网络
创新-FCN:
使得模型保持对于位置的敏感性
cls−layer
c
l
s
−
l
a
y
e
r
:对于base产生的
W∗H∗1024
W
∗
H
∗
1024
的输出,进行使用kernel size = 1,filters =
(C+1)∗K2
(
C
+
1
)
∗
K
2
的卷积操作,来得到一个
[W]∗[H]∗[(C+1)∗K2]
[
W
]
∗
[
H
]
∗
[
(
C
+
1
)
∗
K
2
]
的结果
reg−layer
r
e
g
−
l
a
y
e
r
:则是用
1∗1
1
∗
1
conv获得
K∗K∗4
K
∗
K
∗
4
channel的输出
从中抽取ROI对应相关的区域,尺度即为
w∗h
w
∗
h
,进行Position Sensitive的卷积
K
K
指示将RoI分割为个小bin,每一个尺寸为
wK∗hK
w
K
∗
h
K
RoI的每一个小bin都对应
(C+1)
(
C
+
1
)
个score map,在每张score map上只取与这个bin相关的
[wK]∗[hK]
[
w
K
]
∗
[
h
K
]
部分,最后在这
(C+1)
(
C
+
1
)
个
wK∗hK
w
K
∗
h
K
的区域上进行pooling,此处的相关性保留了位置信息,得到
(C+1)
(
C
+
1
)
的向量
左上角的bin代表该ROI包含object左上部分属于不同类别的概率
不同位置进行拼接,整体最后得到
[K]∗[K]∗[(C+1)]
[
K
]
∗
[
K
]
∗
[
(
C
+
1
)
]
的输出
reg部分也进行psroi pooling,平均池化。
投票
k*k个bin直接进行求和或投票(每个类单独做)得到每一类的score,并进行softmax得到每类的最终得分,并用于计算损失