《Feature Pyramid Networks for Object Detection》
- FPN构建了一个可以进行端到端训练的特征金字塔。
- 通过CNN网络的层次结构高效的进行强特征计算。
- 通过结合bottom-up与top-down方法获得较强的语义特征,提高目标检测和实例分割在多个数据集上面的性能表现。
1. 图像金字塔
我们输入一张图片,获取多张不同尺度的图像,我们将这些尺度的图像的4个顶点连接起来,就可以构造出一个类似类似真实金字塔的一个图像金字塔,如图1-1。
图1-1 图像金字塔
图像金字塔多用于图像融合。虽然这种方法也可以用在深度神经网络上,但是它需要大量的运算和大量的内存。而我们的特征金字塔可以在速度和准确率之间进行权衡,并且可以得到更加鲁棒的语义信息。
2. 4种特征金字塔
图2-1 4种pyramid
图(a):特征图像金字塔。先对原始图像构造图像金字塔,然后在图像金字塔的每一层提取特征,进行相应的预测。这种方法,缺点是计算量很大,需要大量的内存。优点是可以获得较好的检测精度。
图(b):卷积神经网络特征提取。卷积网络进行卷积和池化操作。卷积神经网络的浅层的更关注细节信息,高层的更加关注语义信息,而高层的语义信息能够帮助我们准确的检测出目标,因此我们通常都利用最后一个卷积层上的feature map来预测。它的缺点是仅仅关注最后一层特征进行分类,而忽视了其他层的特征,浅层提取的那些细节信息的丢失则会导致一些小目标无法检测出来。优点是速度快,需要的内存少。
图2-2 浅层的更关注细节信息,高层的更加关注语义信息
图(c):金字塔特征等级。利用低层特征和高层特征,分别在不同的层同时进行预测。一幅图可能具有多个不同大小的目标,区分不同的目标可能需要不同的特征,对于大的目标我们仅仅需要高层特征就可以检测到,对于复杂目标我们需要更复杂的特征才能检测到(比如既有大目标也有小目标也许是浅层高层都要结合起来才能办到)。它的设计思想是在原始图像上面进行深度卷积,分别在不同的层同时进行预测,这样就同时利用浅层特征和高层特征。它的缺点是获得的特征都是弱特征,浅层高层的特征没有融合起来。优点是每层单独预测,提高检测性能。
图(d):特征金字塔网络。利用更高层的特征构建金字塔,这样做是为了使用更加鲁棒的信息,同时将处理过的低层特征和处理过的高层特征进行累加,保证融合的特征具备语义信息和细节信息。
3. FPN的结构
图3-1 FPN结构图
由图3-1所示,FPN的处理过程为:
左侧在输入图片上进行深度卷积改变了输入的深度,然后下采样缩小输入尺寸。对layer5进行1×1的卷积改变深度,再上采样扩大尺寸成为layer4(与layer2相同尺寸),layer2进行1×1的卷积改变深度(与layer4相同的深度),再与layer4对应像素相加成为了layer3。layer3上采样扩大尺寸(与layer1相同尺寸),然后layer1进行1×1的卷积改变深度(与layer3相同的深度),与layer3相加成为了layer6。
layer4,layer3,layer6是融合之后的特征,既有高层特征也融合了浅层特征。
图3-2 FPN结构图详细
4. FPN+Faster RCNN
将FPN产生的P2,P3,P4,P5送入RPN操作(Faster RCNN不使用P6),由于这些特征尺寸是不同的,对于实际的物体检测算法,需要在特征图上进行RoI(Region of Interests,感兴趣区域)提取,而FPN有4个输出的特征图,选择哪一个特征图上面的特征也是个问题。FPN给出的解决方法是,对于不同大小的RoI,使用不同的特征图,大尺度的RoI在深层的特征图上进行提取,如P5,小尺度的RoI在浅层的特征图上进行提取,如P2。
这里通过下面的公式将特定尺寸的proposal box与FPN产生的4个feature map中尺寸最适合的对应起来,即让感受野更接近对象尺寸的feature map预测该对象 ,其中224为backbone在ImageNet上预训练的尺寸(原图reshape的尺寸),w和h为proposal box的长和宽,k表示适合尺寸为w和h的propsal box的feature map的位置,即4个feature map为P2、P3、P4、P5的下标,k0为proposal box大致为224*224时对应feature map位置值。
proposal box?? k0??