3.2.4 Feature Pyramid Networkd(FPN)
FPN要解决的一个痛点是:检测不同尺度的目标(尤其是小目标)是很困难的。,其目的是实现多个尺度的anchor输入到同一个特征提取CNN中,得到相同大小的输出特征图。
主要的思想是图像金字塔。
图1 左:图像金字塔;右:特征金字塔1) 数据流
图2 FPNFPN两个路径:
- 自底向上(bottom-up)。空间分辨率变小,语义增强;
- 自顶向下(top-down)。空间分辨率变大,语义减弱。
结合底层分辨率高,高层分辨率低、语义高的特点,文章介绍了SSD(Single Shot MultiBox Detector)的小目标检测效果比较差的原因。所利用的特征图如图4所示。
图4 SSD结构FPN提供了自顶向下的路径,基于语义较丰富的层从上向下来构建分辨率较高的层。如下图所示。
图5 FPN自顶向下的路径(不含skip connection)上面的方法会导致目标位置不准确,因此仿照ResNet的shortcut思想,增加了跳跃连接(skip connection)。
2) 自底向上
图6 增加skip connection如上图左边虚线框所示为自底向上。每个卷积层减小特征图尺寸。
3) 自顶向下
如上图右边虚线框所示为自顶向下。每个卷积层增加特征图尺寸和同样大小特征图相加。
这种方法的优点是即充分利用了高层语义信息,又提高了图像分辨率,可用于实现:
- RPN
- Faster R-CNN的分类和bbox回归
4) FPN用于RPN
FPN得到由卷积得到一系列的特征(P2、P3、P4和P5等)。根据这些特征分别有的卷积运算得到用于分类的bbox回归的结果。其实如果这里做的很好,还要用Fast R-CNN做分类干嘛,这就是one-stage检测算法了。
后面如果有时间,我会介绍下yolo系列和ssd系列的典型算法。
5) FPN用于Faster R-CNN
Fast R-CNN的步骤:
- S1 :输入一张图片;
- S2:使用backbone卷积网络,得到一组特征;
- S3:使用Region Proposal,选出候选区域;
- S4:根据候选区域位置,选择特征映射中候选区域对应位置的特征;
- S5:使用ROI pooling将这些区域转换为相同尺寸的特征图;
- S6:使用相同大小的特征图,来进行分类和bbox回归。
Faster R-CNN的步骤(对比与Fast R-CNN的不同):
- S1:FPN提取特征(Faster R-CNN产生多个特征图,Fast R-CNN产生一个特征图);
- S2:使用RPN来选出候选区域;
- S3:根据候选区域,来从一组特征中选择对应位置的特征区域(Faster R-CNN采用的原则是候选区域越大,就选择越高层的特征映射,具体计算公式为)。
- S4:使用ROI pooling将这些区域转换为相同尺寸的特征图;
- S5:使用相同大小的特征图,来进行分类和bbox回归。
6) 实验结果
图10 实验结果比对
网友评论