FPN
动机
FPN网络提出就是为了缓解目标检测任务中scale多样性时,各个scale的物体该怎样更好的检出的问题。
方法概要
- 看上图中的(d)就可以看出FPN的基本运行原理了,前向过程通过下采样降低分辨率,然后再进行上采样,过程中融合来自上游高分辨率的feature,得到增强后的featuremap,这样一个优点在于低分辨率的featuremap更多的语义信息可以被呈递到高分辨率,比较浅层的featuremap中,让size较大的featuremap回归预测小目标物体时有更多的feature可以使用,更加准确。
- FPN非常类似SSD多尺度回归的方式,但将整个特征提取部分升级了。金字塔的每个level都要进行回归预测,这个和SSD是一样的,同时再每个level上也分别设置了不同大小的anchor来专门分拣物体。
细节及注意事项
FPN本身不是检测算法,只是一个特征提取器。它需要和其他检测算法结合才能使用。下面介绍FPN如何应用于区域选择网络(RPN)和物体检测网络(Fast RCNN)。
FPN应用于RPN
Faster RCNN中的RPN是通过最后一层的特征来做的。最后一层的特征经过3x3卷积,得到256个channel的卷积层,再分别经过两个1x1卷积得到类别得分和边框回归结果。这里将特征层之后的RPN子网络称之为网络头部(network head)。对于特征层上的每一个点,作者用anchor的方式预设了9个框。这些框本身包含不同的尺度和不同的长款比例。
FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{322、642、1282、2562、512^2}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。
另外,上述5个网络头部的参数是共享的。作者通过实验发现,网络头部参数共享和不共享两种设置得到的结果几乎没有差别。这说明不同层级之间的特征有相似的语义层次。这和特征金字塔网络的原理一致。
评价
挺好的,没啥说的,只不过yolov4里面给FPN后面加了一部分PANet的内容,包含一些从高分辨率featuremap再次降采样到低分辨率,并融合高分辨率feature的操作。像后面的efficientNet里面特征的流动方式上,其实就只是改进和继承FPN的优点而已。