FPN网络结构
https://blog.csdn.net/u014380165/article/details/72890275
总结
作者提出的FPN(Feature Pyramid Network)同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。
1.FPN具体是怎么操作的。
作者的算法大致结构如下Fig3:一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。图中放大的区域就是横向连接,这里1*1的卷积核的主要作用是减少卷积核的个数,也就是减少了feature map的个数,并不改变feature map的尺寸大小。
自底向上其实就是网络的前向过程。在前向过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。
自顶向下的过程采用上采样(upsampling)进行,而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合(merge)。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。
具体怎么操作的
上采样的结果通过1*1的卷积核,然后和自底向上生成的相同大小得feature map进行融合(不是cancat,而是直接像素相加)。在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。
2.讲一下FPN为什么能提升小目标的准确率。
https://blog.csdn.net/WZZ18191171661/article/details/79494534
低层的特征语义信息比较少,但是目标位置准确;高层的特征语义信息比较丰富,但是目标位置比较粗略。原来多数的object detection算法都是只采用顶层特征做预测。FPN同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的。所以可以提升小目标的准确率。
3.FPN的特征融合具体是怎么做的。
4.FPN的特征融合为什么是相加操作呢。
https://zhuanlan.zhihu.com/p/35854548
CVPR 现场提问:
1. 不同深度的 feature map 为什么可以经过 upsample 后直接相加?
A:作者解释说这个原因在于我们做了 end-to-end 的 training,因为不同层的参数不是固定的,不同层同时给监督做 end-to-end training,所以相加训练出来的东西能够更有效地融合浅层和深层的信息。
2. 为什么 FPN 相比去掉深层特征 upsample(bottom-up pyramid) 对于小物体检测提升明显?(RPN 步骤 AR 从 30.5 到 44.9,Fast RCNN 步骤 AP 从 24.9 到 33.9)
A:对于小物体,一方面它提高了小目标的分辨率信息;
另一方面,如图中的挎包一样,从上到下传递过来的更全局的情景信息可以更准确判断挎包的存在及位置。
FPN的多尺度预测
https://blog.csdn.net/jesse_mx/article/details/54588085
PN是在一个13 * 13 * 256的特征图上应用9种不同尺度的anchor,本篇论文另辟蹊径,把特征图弄成多尺度的,然后固定每种特征图对应的anchor尺寸,很有意思。也就是说,作者在每一个金字塔层级应用了单尺度的anchor,{P2, P3, P4, P5, P6}分别对应的anchor尺度为{32^2, 64^2, 128^2, 256^2, 512^2 },当然目标不可能都是正方形,本文仍然使用三种比例{1:2, 1:1, 2:1},所以金字塔结构中共有15种anchors。这里,博主尝试画一下修改后的RPN结构(没有完整画出来,大概就是这样):
训练中,把重叠率(IoU)高于0.7的作为正样本,低于0.3的作为负样本。特征金字塔网络之间有参数共享,其优秀表现使得所有层级具有相似程度的语义信息。具体性能在实验中评估。
bbox对应哪个feature map的哪个anchor呢
ROIpooling选择:不同尺度的ROI,使用不同特征层作为ROI pooling层的输入,大尺度ROI可选择 P5层;小尺度ROI的特征层可以选择P4。那怎么判断ROI该用那个层的输出呢?
论文使用改进的公式计算:
224*224是ImageNet的标准输入,k0是基准值,设置为5,代表P5层的输出(原图大小就用P5层),w和h是ROI区域的长和宽,image_area是输入图片面积,roi_level既为选择的ROI层。
SSD是怎么做的呢
bbox对应每个feature map都会有一个target-anchor