论文阅读和代码实现EfficientDet(BiFPN)

BiFPN 采用双向特征融合,让 P3 和 P4 不仅能获取来自 Backbone 的信息,还可以有效吸收 P5 的高级语义特征,增强小目标的判别能力

通过 加权特征融合(Weighted Feature Fusion),BiFPN 让 P3 层能够 自动调整不同特征层的贡献,避免直接相加造成的特征信息失真

Abstract

模型效率在计算机视觉中变得越来越重要。 在本文中,我们系统地研究了对象检测的神经网络体系结构设计选择,并提出了一些关键优化以提高效率。 首先,我们提出了一个加权双向特征金字塔网络(BIFPN),它允许简单且快速的多尺度特征融合; 其次,我们提出了一种复合缩放方法,该方法均匀地缩放了所有骨干,功能网络和框/类预测网络的分辨率,深度和宽度。 基于这些优化和更好的骨干,我们开发了一个新的对象探测器家族,称为EfficientDet,该家族在广泛的资源约束范围内始终如一地提高效率要比先前的更好。代码可在automl/efficientdet at master google/automl

多尺度特征表示

对象检测的主要困难之一是有效地表示和处理多尺度特征。作为开创性的作品之一,特征金字塔网络(FPN)[23]提出了一种自上而下的途径,以结合多尺度功能。遵循此想法,PANet [26]在FPN顶部添加了一个额外的自下而上路径聚合网络。STDL [43]提出了一个比例转移模块来利用跨尺度功能。 M2DET [42]为融合多尺度功能提出了一个U形模块,而G-FRNET [2]引入了用于控制跨特征信息流的门单元。NAS-FPN [10]利用神经体系结构搜索自动设计特征网络拓扑。 尽管NAS-FPN在搜索过程中需要成千上万的GPU小时,尽管它可以实现更好的性能,并且由此产生的功能网络是不规则的,因此很难解释。 在本文中,我们旨在以更直观和原则性的方式优化多尺度功能融合。

BiFPN

传统 FPN 存在的问题

FPN(Feature Pyramid Network)在目标检测任务中广泛用于多尺度特征融合,但存在如下缺陷:

  1. 单向信息流限制 :传统 FPN 采用 自上而下(top-down) 的信息传递方式,这意味着低层的高分辨率特征不能直接影响高层的低分辨率特征,而高层特征的信息也不能直接向底层回流。
  2. 特征加权不均衡:FPN 直接对不同层次的特征进行相加,但不同分辨率的特征信息贡献程度不同,直接相加可能导致某些层次的特征被过度强化或削弱。
  3. 计算效率低:NAS-FPN(Neural Architecture Search-based FPN)虽然可以自动搜索最优的 FPN 结构,但搜索过程计算开销巨大,并且最终生成的架构复杂难以解释。

BiFPN 的优化策略

BiFPN(加权双向特征金字塔网络) 通过以下方式改进 FPN:

  • 引入双向信息流 (Bidirectional Fusion):不仅采用传统的 自上而下(top-down) 信息流,还增加了 自下而上(bottom-up) 的路径,增强不同层级特征的交互。
  • 删除单输入节点(Removing Nodes with One Input):对于仅有一个输入的特征节点,直接删除,以减少计算冗余。
  • 增加跨尺度残差连接(Extra Cross-scale Residual Connections):如果某个特征层的输入和输出在相同尺度上,增加额外的连接,以增强信息流动。
  • 加权特征融合 (Weighted Feature Fusion):为每个融合的特征分配一个 可学习的权重参数 ,让网络自动学习每个层级特征的重要性,而不是简单求和。
  • 传统FPN计算方式:

    分别表示l层的输出特征、输入特征和l+1层采样使保持尺度不变,这样简单相加没有考虑不同尺度特征的重要性。

跨尺度连接

  1. 首先,我们删除只有一个输入边缘的节点。 我们的直觉很简单:如果一个节点只有一个没有特征融合的输入边缘,那么它将对旨在融合不同功能的特征网络的贡献更少。(如果一个节点只是负责处理上一层特征不进行任何融合就直接去掉)
  2. 其次,如果它们处于同一级别,则从原始输入节点中添加了一个额外的优势,以便在不增加成本的情况下融合更多功能;(类似于残差连接)
  3. 第三,与PANet [26]不同,只有一个自上而下和一个自下而上的路径,我们将每个双向(自上而下和自下而上)路径视为一个特征网络层,并多次重复相同的层以启用更多的高级特征融合。
  • BiFPN的加强特征融合

EfficientDet 的复合缩放策略



主要是在网络深度、分辨率、网络宽度等方面的一些策略,不过多介绍。

BiFPN的代码实现

dart 复制代码
class BiFPN_Concat(nn.Module):
    def __init__(self, dimension=1):
        super(BiFPN_Concat2, self).__init__()
        self.d = dimension
        self.w = nn.Parameter(torch.ones(2, dtype=torch.float32), requires_grad=True)
        self.epsilon = 0.0001

    def forward(self, x):
        w = self.w
        weight = w / (torch.sum(w, dim=0) + self.epsilon)  # 将权重进行归一化
        # Fast normalized fusion
        x = [weight[0] * x[0], weight[1] * x[1]]
        return torch.cat(x, self.d)
相关推荐
dundunmm12 小时前
【论文阅读】ACE: Explaining cluster from an adversarial perspective
论文阅读
勤奋的小笼包12 小时前
论文阅读笔记:《Curriculum Coarse-to-Fine Selection for High-IPC Dataset Distillation》
论文阅读·人工智能·笔记
图灵学术计算机论文辅导20 小时前
从 “看懂图” 到 “读懂视频”:多模态技术如何用文本反哺视觉?
论文阅读·人工智能·学习·考研·计算机视觉·目标跟踪
张较瘦_20 小时前
[论文阅读] 人工智能 + 教学 | 从代码到职业:用机器学习预测竞赛程序员的就业潜力
论文阅读·人工智能·机器学习
s1ckrain21 小时前
【论文阅读】Transformer Feed-Forward Layers Are Key-Value Memories
论文阅读·深度学习·语言模型·transformer
有Li1 天前
探索医学领域多模态人工智能的发展图景:技术挑战与临床应用的范围综述|文献速递-医学影像算法文献分享
论文阅读·人工智能·医学生
元让_vincent2 天前
论文Review LIO Multi-session Voxel-SLAM | 港大MARS出品!体素+平面特征的激光SLAM!经典必读!
论文阅读·平面·自动驾驶·激光点云·激光slam
星夜Zn3 天前
生成式人工智能展望报告-欧盟-04-社会影响与挑战
论文阅读·人工智能·大语言模型·发展报告·ai社会影响
s1ckrain3 天前
【论文阅读】Editing Large Language Models: Problems, Methods, and Opportunities
论文阅读·人工智能·语言模型·大模型可解释性
勤奋的小笼包3 天前
论文阅读笔记:《Dataset Condensation with Distribution Matching》
论文阅读·人工智能·笔记