Object Detection中的 FPN 算法学习

Object Detection中的 FPN 算法学习

https://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf https://blog.csdn.net/Quincuntial/article/details/80152306 https://github.com/unsky/FPN

背景

在物体识别中,识别不同尺度的物体是计算机视觉的基本挑战。为了更好地识别不同尺度的物体,人们形成了不同的解决方案。利用不同特征层的不同语义信息(特征金字塔)来识别不同尺度的物体成为了解决方案的基础。

什么是特征金字塔?

特征金字塔是从一张图片中提取不同特征得到的不同结果,因为提取出来的结果,按照大小顺序排列后,和金字塔很像,都叫特征金字塔(我的拙见)。有关详细信息,请参阅以下论文中给出的图片。
Object Detection中的 FPN 算法学习
可见,形成特征金字塔的方式不止一种。
1、如图(a),可以先对图片进行不同尺度的缩放,再进行特征提取,从而所得的特征图不一样大小,形成特征金字塔。这种属于由图像金字塔形成特征金字塔(一般这种计算量较大,目前使用较少)。
2、如图(b),也可以就对原始图片进行特征提取,在提取所得的特征图上再进行特征提取,这样也可以得到不同的特征图,形成特征金字塔(一般现在使用的为这种方式)

那什么是FPN?

一个简短的结论

上面我们说过了特征金字塔是什么,而FPN也是属于特征金字塔当中的一种。如图(d),只不过实现的方式不一样。FPN先是从图片自下向上的形成尺度的特征图,这样就得到了不同语义信息的特征图(通常低层的特征语义信息比较少,但是高分辨率、目标位置准确;高层的特征语义信息比较丰富,但是低分辨率、目标位置比较粗略),如果单一的使用这些单个的特征图进行预测(如图c),或者仅仅使用最顶层的特征图进行预测(如图d),都没有将高层语义和底层语义进行融合,没有更好的实现信息的融合。FPN就是将高层语义和底层语义进行融合(如图d),这样融合之后再在每一层进行输出预测,就能更准的实现目标检测。

具体方法

如图d,具体可以分为两个步骤:
1、自下向上的过程:先使用卷积对图片进行特征提取,在提取所得的特征图上再多次的使用卷积提取特征,以获得不同尺度的特征图。
2、自上向下的融合过程:从最顶层的特征图开始,先输出预测结果,然后进行上采样,将尺度扩充到可以与下一层的特征图进行融合的尺度,再输出预测,再进行上采样…融合…预测…上采样…
具体融合过程如图:
Object Detection中的 FPN 算法学习
横向连接和自上而下的路径被说明,通过添加合并。使任何层的输出都具有丰富的语义信息。

FPN算法的优点

和如图 a、b、c 相比,FPN拥有一些优点:
1、和 a 相比,a 使用图像金字塔构建特征金字塔。每个图像尺度上的特征都是独立计算的,速度很慢。且,在图像金字塔上端对端地训练深度网络在内存方面是不可行的,FPN使用不同尺度的特征图是自下向上所得,速度上快很多。
2、和 b 相比,b只使用单一尺度特征进行更快的检测。单一尺度没有多尺度融合的预测效果更佳。准确度没有FPN高。
3、和 c 相比,c 好像它是一个特征化的图像金字塔,特征化图像金字塔的每个层次都具有明显的局限性。底层和高层的信息也没有进行融合。准确度没有FPN高。

FPN展示了如何创建网络中的特征金字塔,可以用来代替特征化的图像金字塔,而不牺牲表示能力,速度或内存。

SPP的代码实现

具体代码实现请参考以上代码链接。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年3月16日 下午5:30
下一篇 2022年3月16日 下午5:49

相关推荐