EfficientDet: 基于 EfficientNet 和 BiFPN 的目标检测

简述

EfficientNet 是最近推出的一个很强大的 Backbone,

EfficientDet 是基于 BiFPN + EfficientNet + Scalable 的目标检测网络, 是目前屠榜的存在

 

EfficientDet 论文原文: https://arxiv.org/pdf/1911.09070

 

BiFPN

(A) FPN (特征金字塔) 采用自顶向下的方式来堆叠特征

(B) PANet 和 FPN 相比加多了一个自下而上的路径

(C) NAS-FPN 是通过深度学习搜索出来的网络, 他长得非常的混乱, 但是已经有了跨层思想了

(D) BiFPN 是作者提出的一种新架构, 与 PANet 相比, 它增加了跨层链接 (紫色箭头), 与 NAS-FPN 相比, 它更简洁高效

跨层连接在 NAS-FPN 中已经使用了, 我们不多解释.

BiFPN 的一大特性是 Weighted Feature Fusion, 即给不同尺度加权值. 传统做法是直接堆叠不同尺度的特征, 而 BiFPN 让网络自行学习不同输入特征的权重.

文中提到了三种 Fusion

Unbounded fusion

    \[ \sum_i w_i * I_i \]

w_i 是可学习权重

Softmax-based fusion

    \[ \sum_i \frac{e^{w_i}}{\sum_j e^{w_j}} * I_i \]

w_i 和 w_j 是可学习权重

Fast normalized fusion

    \[ \sum_i \frac{w_i}{\epsilon+ \sum_j w_j} * I_i \]

w_i 和 w_j 是可学习权重, ϵ (epislon) = 0.0001 是一个非常小的数字来保证分母不为 0)

在实验中, 作者发现 Unbounded fusion 效果拉跨, Softmax-based fusion GPU 速度感人, 而 Fast normalized fusion 比 Softmax-based fusion 快很多, 而且精度没有什么差距.

作者最终选择了 Softmax-based fusion

 

Scalable Architecture

为了实现速度和精度的平衡, 作者在不同等级的 (d0 – d7) backbone 上选择了不同个数的组件. 公式如下:

  1. BiFPN network:  [公式] , [公式]
  2. Box/class prediction network: [公式] , [公式]
  3. Input image resolution:  [公式]

 

最后得到以下架构

 

实验结果

 

总结

EfficientDet 是一个优雅的目标检测网络, 与 YoloV4 / V5 这种一堆 trick 堆在一起的东西相比, 不仅精度更高, 还简洁了无数倍.

PyTorch 实现: Yet-Another-EfficientDet-Pytorch

冷月版权所有, 严禁转载
冷月小站 » EfficientDet: 基于 EfficientNet 和 BiFPN 的目标检测

1 评论

  1. 3080好用被

发表评论