R-FCN: Object Detection via Region-based Fully Convolutional Networks
R-FCN 的网络结构:
不同于之前的fast/faster R-CNN的region-based,paper中的new network是shared, fully convolutional 的网络结构。
Paper是奔着节约计算的角度,因为r-cnn 系列的网络结构分为两部分,一部分是Shared Conv层,另一部分是针对region proposal的Conv+FC层,fast RCNN和faster RCNN做的工作是延长Shared Conv,缩小非共享的后面部分。
R-FCN做的是将regional proposal后面的Conv基本转移到Shared Conv部分。 减少Conv计算。
随着网络深度的增加,网络对location的敏感度也越来越低,这就是 translation-invariance。
1, structure
本paper做的跟faster RCNN的区别是:将Conv5层ROI-pooling之后的pooled feature maps ,不要再针对每一个ROI之后再进行Conv计算了。而是,将Conv5层进行fully convolutional layer, 得到 K^2*(c+1) x w x h的feature maps, 然后对该feature map 进行position-sensitive pooling 得到 k x k x (c+1) 大小的score map,之后做 average pooling (voting)得到 (c+1)的vector就可以放进 softmax判断了,所以,feature map后面的不涉及到Conv层,计算量很小。
2, position-sensitive score maps
Position-sensitive score maps: 对最后一层Conv层得到的feature maps,对于每一个wxh 大小的RoI rectangle,一个bin的大小是 w/k * h/k , 最后产生 k^2 个bin,对于 (i,j)个bin,产生score maps的操作公式是:
上面所说的是针对category,而针对bounding boxes,类似,直接将C+1变为4即可, bounding box t = (tx, ty, tw, th)
3, training:
对于每一个ROI,loss是 cross-entropy loss和box regression loss的总和
Training method在本算法中可以很容易采用online hard example mining (OHEM), 对于一张image的N个proposals,选择loss最大的B个proposal进行backpropagation,因为per-RoI的计算量极小可以忽略。
R-FCN的特点:
(1), 所有可以学习的参数都是都是 convolutional 且针对 fully feature maps
(2), RoI-pooling之后的score maps之后的计算没有参数
(3),R-FCN的最后一个Conv层,其channel数跟 类别数C和 spatial grid describing relative positions K 相关,
总结:
(1), R-FCN可以说是faster-RCNN的一个再次升级
(2), 但是R-FCN的position-sensitive scores maps看起来适用性有限,paper也只给出了resnet101的版本而没有vgg或者googlenet作为baseline。