整个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−layercls−layer:对于base产生的W∗H∗1024W∗H∗1024的输出,进行使用kernel size = 1,filters = (C+1)∗K2(C+1)∗K2的卷积操作,来得到一个[W]∗[H]∗[(C+1)∗K2][W]∗[H]∗[(C+1)∗K2]的结果
reg−layerreg−layer:则是用1∗11∗1conv获得K∗K∗4K∗K∗4channel的输出
从中抽取ROI对应相关的区域,尺度即为w∗hw∗h,进行Position Sensitive的卷积
KK指示将RoI分割为个小bin,每一个尺寸为wK∗hKwK∗hK
RoI的每一个小bin都对应(C+1)(C+1)个score map,在每张score map上只取与这个bin相关的[wK]∗[hK][wK]∗[hK]部分,最后在这(C+1)(C+1)个wK∗hKwK∗hK的区域上进行pooling,此处的相关性保留了位置信息,得到(C+1)(C+1)的向量
左上角的bin代表该ROI包含object左上部分属于不同类别的概率
不同位置进行拼接,整体最后得到[K]∗[K]∗[(C+1)][K]∗[K]∗[(C+1)]的输出
reg部分也进行psroi pooling,平均池化。
投票
k*k个bin直接进行求和或投票(每个类单独做)得到每一类的score,并进行softmax得到每类的最终得分,并用于计算损失