当看完的时候,我感觉Kaiming He和rbg大神对Detection方向的贡献,会导致很多在读博士转行。。。哈哈哈哈哈
Feature Pyramid Networks for Object Detection是何恺明大神和rbg大神通力合作的产物,他俩在MSRA的时候就经常一些发文章,去年转到Facebook之后又在一起了
- RNN/SPPNet/Fast R-CNN的proposals提取方式都是通过Selective search方式生成,一幅图片大约生成2k个proposal,耗时0.3s左右(too slow)
- Faster R-CNN使用RPN(anchor)的机制提取proposals,速度上提升了不少,但drawback是容易错过对小物体的Detection,于是大神们提出了一种综合考量不同尺度的feature map,进而提取proposals的方法。
- Object Detection方法大都使用了图像金字塔的方法(瞬间想起来SSD,就是融合了con_4及其之后的feature),在这一过程中,有很多不同的图像金字塔使用方式,先贴张图大致说明下:
fig.1
- 图片说明:fig.1(a)是使用不同scale的图像,速度较慢,貌似是2012年之前的通俗做法,现在基本被舍弃掉了吧;fig.1(b)这是使用最后一层feature map,Faster R-CNN就是采用这种方法,虽然比较快,但不利于小物体的检测;fig.1(c)了解到CNN本身就是金字塔结构,于是对每层feature map都进行预测,速度还可以;fig.1(d)就是FPN啦,其综合考量高分别率+低语义信息的底层feature map和低分别率+高语义信息的高层feature map。速度和准确度都较好。
- 粗浅看来,感觉这篇论文说白就是一个大trick:首先进行正常的CNN(CNN过程中将那些feature map大小不变的层称为一个stage,stage_m 和stage_n的feature map 大小是的关系),一次前向(我们称为bottom-up过程)完成之后,要进行一次top-down的操作,而后进行合并:
- bottom-up:feedforward computation,我们将卷积过程中feature map大小不变的层称为一个stage,两个相邻stage的feature map大小通常是2倍关系,We denote the output of these last residual blocks as {C2 , C3 , C4 , C5 } for conv2, conv3, conv4, and conv5 outputs;
- top-down:upsampling的过程,通过线性插值方式插入数值,得到P2 , P3 , P4 , P5然后和C2 , C3 , C4 , C5进行element-wise进行相加;
- 相加之后,为了消除直接相加带来的影响,再经过一个3 x 3的卷积;
- 最后我们使用P2 , P3 , P4 , P5预测proposals
- 下面展示一下FPN key block结构:
然后我们再看一下网络的整体结构:这里在进行相加的时候,为了保证channel数目一致,需要经过1 x 1的卷积,,图中没画出来。
- 此时的FPN就可以代替RNP产生proposals了,相比RPN,FPN拥有更多尺度的proposals,毕竟综合了多语义,多分别率的feature map。
- 而后大神还做了很多实验,比如①横向连接+没有upsampling②没有横向连接+upsampling③横向连接+upsampling 就为了证明③是最好的
- 主要更新应用和实验部分:
- 将FPN应用到RPN上,RPN请参见之前的一篇博客Faster R-CNN中RPN和anchor解释 ,RPN是一种size的feature map,采用多种尺度的anchor(包括3种size的anchor,每种size的anchor又有3种不同的长宽比,共有9种);引入FPN之后,一种size的feature map只有一种size的anchor,同时每种anchor也有3重不同的长宽比,FPN的P2, P3, P4, P5, P6分别对应32^2 , 64^2 , 128^2 , 256^2 , 512^2 piexl 的area,所以整个image我们共有15中不同的anchor,关于正负样本的定义和之间也是一样的:①如果一个anchor和一个ground turth的IOU>0.7,则标为正样本;②如果一个anchor和ground turth<0.3,则标为负样本,结余之间的anchors之间忽略掉
- 将FPN应用到Fast R-CNN上,现在就有一个问题,如何确定不同尺度的ROI采用哪一层的feature map呢?横空出现一个公式让你计算:,其中224为ImageNet的原始输入大小,w和h为ROI的长和宽,为基准,定为4。
- 实验:
-
图片说明:是否使用横向连接/top-down?以及在small/middle/large上面的检测效果。
- 后面的实验做很充分。。。。。
作者:gengmiao 时间:2018.05.11,原创文章,转载请保留原文地址、作者等信息