论文笔记:Light-Head R-CNN

论文笔记:Light-Head R-CNN_第1张图片
这是旷视科技+清华大学在2017发布的一篇文章

1.动机

two-stage算法主要有两部分组成:
(1)生成proposal(或说ROI)的过程(body)
(2)基于proposal(ROI)的recognition过程(head)

存在问题:
为了提高精度,head部分一般都包含很大的计算量,如faster RCNN和R-FCN

作者提出的解决方法
Light head
(1)thin feature map
(2)cheap RCNN subnet

two-stage网络大都可以分为两部分:ROI warping + R-CNN subnet。基本流程是:通过base feature extractor中某一层输出的feature map作为ROI warping的输入从而生成ROI,接着将ROI和feature map共同作为R-CNN subnet的输入完成分类和回归。其中,Faster RCNN在精度上,为了减少全连接层的计算量,使用了global average pool, 导致在一定程度上丢失位置信息;在速度上,每一个ROI都要通过R-CNN subnet做计算,这必将引起计算量过大,导致检测速度慢。而R-FCN share computation across ROIs。在精度上,也使用了global average pool;在速度上,需要一个维度非常大的score map,这在一定程度上也会降低检测速度。
论文笔记:Light-Head R-CNN_第2张图片

2.贡献点

(1)Thinner feature map
(2) Cheap RCNN subnet
(3) 速度+精度
论文笔记:Light-Head R-CNN_第3张图片

3. Light-Head R-CNN

①在R-FCN的基础上,light head RCNN中class≤10,也就是说score map维度变成了10pp=490(thinner feature map,原本coco上class=81),因此降低了PSROI pooling和fc层的计算量;
②使用了large separable convolution代替11convolution,示意图如图所示,作者借鉴了Inception V3 的思想,将kk的卷积转化为1k和k1,同时采用图中左右两边的方法,最后通过padding融合feature map,得到size不变的特征图。论文笔记:Light-Head R-CNN_第4张图片
③将490维特征图和ROI作为PSROI 的输入则得到10维p*p的特征图,如果将490维特征图和ROI 作为ROI pooling的输入,则得到490维特征图,所以图中写了10 or 490。
④因为class更改为了10,所以没办法直接进行分类,所以接了个fc层做channel变换,再进行分类和回归。最终Light head rcnn的RCNN subnet部分却是先使用了一个2048channel的fc,再接81channel的fc用于分类(对于分类层来说)论文笔记:Light-Head R-CNN_第5张图片

4.实验方法和结果

4.1 baseline

论文笔记:Light-Head R-CNN_第6张图片
①B1:标准的R-FCN;
②B2:对R-FCN做一些“增强”
1.image短边resize为800,长边resize为1200,并在RPN部分设置5个scales{322,642,1282,2562,512^2}
2.在RCNN部分回归的loss总是小于分类的loss,所以将回归的loss翻倍
3.根据loss排序选取loss最大的256个samples用于反向传播

4.2Thinner feature maps(without large separable convolution )

论文笔记:Light-Head R-CNN_第7张图片

4.3Thinner feature maps +large separable convolution论文笔记:Light-Head R-CNN_第8张图片
4.4 +light head RCNN subnet

论文笔记:Light-Head R-CNN_第9张图片

4.5 Some improvements

论文笔记:Light-Head R-CNN_第10张图片

4.6 速度对比

论文笔记:Light-Head R-CNN_第11张图片

你可能感兴趣的:(论文笔记)