图像处理中,融合不同尺度的特征是提高图像效果的重要手段,在卷积中:
✅浅层特征:浅层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。
✅高层特征:高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。
如何将两者高效融合,是改善模型的关键。
BiFPN
✅论文地址:
https://arxiv.org/abs/1901.01892
✅代码地址:
https://github.com/google/automl/tree/master/efficientdet(Google官方)
BiFPN来自论文:《EfficientDet: Scalable and efficient object detection 》。
✅EfficientDet的方法和创新性围绕两个关键挑战:
1️⃣更好地融合多层特征。这个毋庸置疑,肯定是从 FPN 发展过来的,至于 Bi 就是双向,原始的FPN实现的自顶向下(top-down)融合,所谓的BiFPN就是两条路线既有top-down也有down-top。在融合过程中,之前的一些模型方法没有考虑到各级特征对融合后特征的共享度问题,即之前模型认为各级特征的贡献度相同,而本文作者认为它们的分辨率不同,其对融合后特征的贡献度不同,因此在特征融合阶段引入了weight。
2️⃣模型缩放。这个主要灵感来自于 EfficientNet,即在基线网络上同时对多个维度进行缩放(一般都是放大),这里的维度体现在主干网络、特征网络、以及分类/回归网络全流程的整体架构上整体网络由主干网络、特征网络以及分类/回归网络组成,可以缩放的维度比 EfficientNet 多得多,所以用网络搜索方式不合适了,作者提出一些启发式方法。
BiFPN的思想其实是基于路径增强FPN(PANet)的思想,在自顶向下特征融合之后紧接着自底向上再融合一遍。在图2中文章列举了三类FPN以及BiFPN。图2(a) 是传统FPN,图2(b)是PANet,图2(c)是利用网络自动搜索的方式生成的不规则特征融合模块,且这个模块可以重复叠加使用【即堆叠同样的模块,不停地使用相同的结构融合多层特征】。可以看到,PANet可以看做一个双向FPN。
✅BiFPN针对PANet的改进点主要有三个:
1️⃣削减了一些边。BiFPN删除了只有一个入度的节点,因为这个节点和前一个节点的信息是相同的【因为没有别的新的信息传进来】,这样就祛除了一些冗余计算。
2️⃣增加了一些边。BiFPN增加了一些跳跃连接【可以理解为residual连接,图2(d)中横向曲线3个连接】,这些连接由同一层的原始特征节点【即没有经历自顶向下融合的特征】连接到输出节点【参与自底向上特征融合】。
3️⃣将自顶向下和自底向上融合构造为一个模块,使其可以重复堆叠,增强信息融合【有了一种递归神经网络的赶脚】。PANet只有一层自顶向下和一层自底向上。
深层特征一直上采样与浅层特征融合,上采样完成之后,再由浅层特征一直下采样与深层特征融合。并且网络在原始FPN+PAN结构的基础上增加了两条横向连接路径,用于将主干网络提取的特征融入待检测特征图。这种改进方式可在不增加太多计算量的前提下,使待检测特征图融合更多特征信息,增强特征图的表达能力,提高检测器性能。这形成了一个双向跨尺度连接的结构,通过自上而下与自下而上两条特征融合路径,将深层特征与浅层特征跨尺度融合。这种设计方式增进了不同网络层级的特征图之间的信息传递,有效改善了因特征图分辨率改变,带来的图像特征信息丢失的问题。改进后的Neck网络能融合更多位置、细节信息,使网络更好的关注到小目标所在区域。
注:本文仅用于学术分享,如有侵权,请联系后台作删文处理。
最后:
如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!