faster缺点:1.不是全卷积,roi出来后是两个fc层,这样会丧失平移变性。

       2.每个roi都要单独经过两个fc层,也就是分别进行分类和回归,耗时

也有种说法是roi-pooling后导致平移变性丧失,这个地方还要深入思考

resnet在以faster结构为检测框架的时候,是stage4和之前作特征提取层backbone,roi-pooling后用stage5替代了两层fc,这样能增加平移变性,精度增加,但是时间上还是耗时,因为每个roi都要单独经过stage5的卷积然后分类、回归

roi-wise,个人感觉应该就和element-wise意思差不多,也就是每个roi单独的

 

rfcn提到:By analogy, it appears natural to use all convolutional layers to construct the shared, convolutional subnetwork in the object detection architecture, leaving the RoI-wise subnetwork no hidden layer. However, as empirically investigated in this work, this naïve solution turns out to have considerably inferior detection accuracy that does not match the network’s superior classification accuracy. To remedy this issue, in the ResNet paper [9] the RoI pooling layer of the Faster R-CNN detector [18] is unnaturally inserted between two sets of convolutional layers — this creates a deeper RoI-wise subnetwork that improves accuracy, at the cost of lower speed due to the unshared per-RoI computation.

直接用全卷积还不行,因为高的分类准确率和低的检测准确率不match

 

rfcn相当于既增加检测准确率(或者说平移变性),又缩短耗时。rfcn是全卷积的,并且每个roi不用单独进行fc或者卷积计算,而是直接从共享的sensetive score map上获得相关信息

 

light-head rfcn:

two stage网络结构包括两部分:ROI warping和 R-CNN subnet,ROI warping成为body,R-CNN subnet称为head

rfcn的sensetive score map的channel数是class*k*k,如果81类就是3969个channel。light-head rfcn将class*k*k降到n*k*k,n是任一值(论文中取10,也就是channel数变成7*7*10),改变之后导致无法像rfcn那样预测不同的class了(rfcn通过psroi-pooling后vote),个人觉得psroi-pooling出来是一个7*7*10的feature map,7*7是width和height,10这个channel和类别数无关了。所以psroi-pooling出来的cube接了一个fc,生成1*2048的vector,然后再通过两个fc分别生成cls(1*class)和bouding box regression(4*class)的vector进行预测,这个和faster是一样的。

代码部分:

head头的设计:rfcn light-head rfcn_ide

light-head rcnn

 

为什么score sensetive map可以work???