欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

特征金字塔

最编程 2024-07-29 18:27:35
...

特征金字塔(Feature Pyramid Network)是用于检测不同尺度的对象的识别系统中的基本组件。多尺度上识别目标是计算机视觉的一个挑战,通过提取多尺度的特征信息进行融合,进而提高模型精度。目前多尺度物体检测主要面临的挑战:
1、如何学习具有强语义信息的多尺度特征表示?
2、如何设计通用的特征表示来解决物体检测中的多个子问题?如目标类别,定位,分割等?
3、如何高效计算多尺度的特征表示?

参考文献:FPN特征金字塔网络解读 - 简书 (jianshu.com)

Feature Pyramid Networks for Object Detection (简称FPN)

首先看几种卷积分类方式:

1.Featurized image pyramid图像金字塔

因为需要缩放原图然后进行卷积,这种卷积方式肯定是耗内存的,最不科学的。

2.Single feature map

 就是简单的分类网络,如AlexNet等。使用Single feature map的包括R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、YOLOv1以及R-FCN系列。他框不出来小物体。

3.Pyramidal feature hierarchy 

使用Pyramidal feature hierarchy的包括SSD。SSD没有上采样过程,因为是在原有特征图上预测的,所以也不会增加额外的计算开销,但作者认为SSD没有用到足够底层的特征,而越底层的特征对检测小物体越有利。SSD用的最底层的特征是conv4_3

总结:上面abc这三种卷积方式都不是特征理想,那么怎么才能兼顾准确率(检测小物体)和速度(开销)呢?

FPN的框架

 4.Feature Pyramid Network特征金字塔

参照d图及下图。特征金字塔网络相当于先进行传统的bottom-up自上而下的特征卷积(d图左侧),然后FPN试图融合左侧特征图的相邻的特征图。左侧模型叫bottom-up,右侧模型叫top-down,横向的箭头叫横向连接lateral connections这么做的目的是因为高层的特征语义多,低层的特征语义少但位置信息多。

 

具体做法是两个特征层的较高层特征2倍上采样(上采样方法很多,上采样几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素,总之是把feature大小扩大了一倍)。较低层特征通过1×1卷积改变一下低层特征的通道数,然后简单地把将P的上采样和1×1卷积后的结果对应元素相加。为什么横向连接要使用1×1卷积呢,为什么不能原地不动地拿过来呢?原来在于作者想用1×1改变通道数,以达到各个level处理结果的channel都为256-d,便于后面对加起来的特征进行分类。这段文字表述的即是下图。

 FPN只是提取特征的一种方法而已,这篇论文作者的应用于实验主要是在Faster R-CNN上进行的。

应用 

1.FPN for RPN

RPN即一个用于目标检测的一系列滑动窗口。具体地,RPN是先进行3×3,然后跟着两条并行的1×1卷积,分布产生前背景分类和框位置回归,我们把这个组合叫做网络头部network head

但是前背景分类与框位置回归是在anchor的基础上进行的,简言之即我们先人为定义一些框,然后RPN基于这些框进行调整即可。在SSD中anchor叫prior,更形象一些。为了回归更容易,anchor在Faster R-CNN中预测了3种大小scale,宽高3种比率ratio{1:1,1:2,2:1},共9种anchor框。

在FPN中我们同样用了一个3×3和两个并行的1×1,但是是在每个级上都进行了RPN这种操作。既然FPN已经有不同大小的特征scale了,那么我们就没必要像Faster R-CNN一样采用3种scale大小的anchor了,我们只要采用3种比率的框就行了。所以每个级level的anchor都是相同的scale。所以我们在​上分别定义anchor的scale为​,在每级level的​上有{1:1,1:2,2:1}三种宽高比率ratio的框。所以我们在特征金字塔上总共有15个anchor。