IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 目标检测算法——EfficientDet(EfficientNet+BiFPN) -> 正文阅读

[人工智能]目标检测算法——EfficientDet(EfficientNet+BiFPN)


下面借这篇blog记录一些阅读笔记,如果问题,恳请指出。


paper:EfficientDet: Scalable and Efficient Object Detection

第一次看见这个目标检测算法的时候觉得名字有点熟悉,然后找回之前的论文一看,果然作者是同一个人,都是来自Mingxing Tan。

在之前的学习笔记中,我同样的介绍了两个backbone:EfficientNetv1,EfficientNetv2,这两个backbone的主要解决的问题就是如何统一缩放神经网络的深度,宽度与分辨率,如何统筹好这三个因素从而在一些列不同的移动设备的限制上获得最佳的选择方案。

之前的两篇学习笔记链接如下:
轻量级网络——EfficientNet
轻量级网络——EfficientNetV2

简答回顾:
1)EfficientNetv1
在EfficientNet中,作者将网络层抽象成了一个数学公式使之成为一个优化问题,对卷积网络按深度,宽度与分辨率三个因素进行一系列的缩放,获得了b0-b7一共8个基准。

2)EfficientNetv2
而在v2的版本中,作者稍稍改变了每层网络堆叠的block,使用Fused-MBConv与MBConv的结合版本。但是主要的优化对象是精准度,参数效率与训练效率,并使用Progressive Learning优化训练过程。

而此paper的名字同样是EfficientDet,也就是作者将之前的思想用在了目标检测任务上。

1. Introduction


paper中指出,EfficientDet想要解决的问题是:是否有可能在广泛的资源限制范围内(例如,从3B到300B FLOPs)构建一个既具有更高精度又具有更好效率的可扩展检测架构?当设计网络结构时主要存在以下两个挑战:

  • Challenge 1:高效的多尺度特征融合
    在融合不同输入特征的同时,以往的大部分作品都是简单的不加区分的进行相加;然而,由于这些不同的输入特征具有不同的分辨率,我们观察到它们通常对融合输出特征的贡献是不相等的。为了解决这个问题,我们提出了一种简单而高效的加权双向特征金字塔网络(BiFPN),它引入了可学习的权重来学习不同输入特征的重要性,同时重复应用自顶向下和自底向上的多尺度特征融合。

  • Challenge 2:模型的缩放
    以往的一些工作主要依赖于更大的backbone网络,或者是更大的输入图像尺寸以获得高精度。但是,在考虑准确性和效率时,缩放特征网络和类/边界框预测网络也很关键。然后作者提出了一种用于目标检测的复合缩放方法,该方法联合缩放所有主干、特征网络、盒/类预测网络的分辨率/深度/宽度。

在这里插入图片描述
可以看见,EfficientDet的准确率确实达到了那时的SOTA。不仅仅是准确率是最高,而且模型的参数,与浮点运算也要比其他的检测网络要小。同时在GPU/CPU上的速度也比以前的检测器快4倍至11倍。paper中还指出,通过简单的修改,EfficientDet用于语义分割的表现也要比DeepLabV3+要好。

在之后yolov4登场时,EfficientDet的准确率还是不逊色与yolov4的。虽然,在检测的速度上是远比不过yolov4.各有各的优缺点。
在这里插入图片描述

2. BiFPN


BiFPN的本文中提出的最重要的一个结构。在此之前介绍一下其他的特征金字塔网络(FPN)结构:

  • FPN:提出了一种自上而下的方法来组合多尺度特征
  • PANet:在FPN之上增加了一个额外的自下而上的路径聚合网络
  • STDL:提出了一个利用跨尺度特征的尺度转换模块
  • M2det:提出一种融合多尺度特征的U形模块
  • G-FRNet:介绍用于控制要素间信息流的门单元
  • NAS-FPN:利用神经架构搜索来自动设计特征网络拓扑结构
  • BiFPN:高效的双向跨尺度连接和加权特征融合

2.1 Cross-Scale Connections

传统的自上而下的FPN本质上受到单向信息流的限制。为了解决这个问题,PANet增加了一个额外的自下而上的路径聚合网络。PANet取得了比FPN和NAS-FPN更好的精度,但代价是更多的参数和计算。所以,BiFPN会在PANet的基础上进行一些改动:
在这里插入图片描述

  1. 移除那些只有一条输入边的节点,这是因为如果一个节点只有一条输入边而没有特征融合,那么它对以融合不同特征为目标的特征网络的贡献就比较小。这可以简化我们的双向网络。

  2. 如果原始输入节点和输出节点处于同一水平,我们会在它们之间增加一条额外的边,以便在不增加太多成本的情况下融合更多的特征。

  3. 与PANet只有一条自上而下和一条自下而上的路径不同,BiFPN将每条双向(自上而下&自下而上)路径视为一个特征网络层,并多次重复同一层,以实现更高级别的特征融合。如何确定层数数量是另外一个问题。

所以,总的网络结构如下所示,不断堆叠BiFPN层的EfficientDet模型:(注意注释:基于不同的资源约束,BiFPN层和分裂类与回归参数网络预测层被重复多次)
在这里插入图片描述

2.2 Weighted Feature Fusion

当融合不同分辨率的要素时,一种常见的方法是首先将它们调整到相同的分辨率,然后对它们进行求和。所有以前的方法都一视同仁地对待所有输入特征。

然而,作者观察到,由于不同的输入特征具有不同的分辨率,因此它们对输出特征的贡献通常是不相等的。为了解决这个问题,paper建议为每个输入增加一个额外的权重,并让网络学习每个输入特征的重要性。

作者提出了三种加权融合的方法:

  1. Unbounded fusion

O = ∑ i w i ? I i O = \sum_{i} w_{i}·I_{i} O=i?wi??Ii?
其中 w i w_{i} wi?是一个可学习的权重,可以是标量(每个特征)、矢量(每个通道)或多维张量(每个像素)。

作者发现了一个在最小计算成本下,可以媲美其他精确度的参数。但由于标量权重是无界的,它可能会导致训练不稳定。因此,我们采用权重归一化来限定每个权重的取值范围。

  1. Softmax-based fusion

O = ∑ i e w i ∑ j e w j ? I i O = \sum_{i} \frac{e^{wi}}{\sum_{j} e^{wj}}·I_{i} O=i?j?ewjewi??Ii?
另一个直观的想法是将softmax应用于每个权重,这样所有权重都被归一化为一个概率,其值范围从0到1,表示每个输入的重要性。然而,额外的softmax会导致GPU硬件速度显著下降。

  1. Fast normalized fusion

O = ∑ i w i ∈ + ∑ j w j ? I i O = \sum_{i} \frac{w_{i}}{∈ + \sum_{j} w_{j}}·I_{i} O=i?+j?wj?wi???Ii?
其中 w i ≥ 0 wi≥ 0 wi0是通过在每个wi后应用Relu来确保的。以及 ∈ = 0.0001 ∈= 0.0001 =0.0001是避免数值不稳定的小数值。

类似地,每个归一化权重的值也落在0和1之间,但是由于这里没有softmax操作,所以效率要高得多。实验结果研究表明,这种快速融合方法具有与基于softmax的融合非常相似的学习行为和准确性,但在图形处理器上运行速度高达30%

总结:
最终的BiFPN集成了双向跨尺度连接和快速归一化融合(Fast normalized fusion)。作为一个具体的例子,这里描述了图2(d)所示的BiFPN的两个融合特征:
在这里插入图片描述
其中, P 6 t d P^{td}_{6} P6td?是自上而下路径上第6级的中间特征,有一个输入来自与Pin 6,而另外一个输入来自Pin 7,而由于P7与P6的特征矩阵尺度是不一样的,所以需要进行下采样。

P 6 o u t P^{out}_{6} P6out?是自下而上路径上第6级的输出特征。有衣蛾输入来自Pin 6,还有一个输入是Ptd 6,最后一个输入是来自Pout 5,一共有三个输入。其中的P5与P6的特征矩阵尺度同样是不一样的,所以需要进行上采样。

w与w’表示不同的权值矩阵,其他所有其他特征都以类似的方式构造。

3. EfficientDet


paper提出了一种新的用于目标检测的复合缩放方法,该方法使用简单的复合系数 φ φ φ来联合缩放主干、BiFPN、类/盒网络和分辨率的所有维度。

  1. Backbone network

将EfficientNet B0-B6的相同宽度/深度缩放系数重用
d e p t h : d = α ? w i d t h : w = β ? r e s o l u t i o n : r = γ ? s . t : α ? β 2 ? γ 2 ≈ 2 α ≥ 1 , β ≥ 1 , γ ≥ 1 \begin{aligned} depth:d &= α^{\phi} \\ width:w &= β^{\phi} \\ resolution:r &= \gamma^{\phi} \\ s.t: α·β^{2}·\gamma^{2} &≈ 2 \\ α≥1,β&≥1,\gamma≥1 \end{aligned} depthdwidthwresolutionrs.tα?β2?γ2α1β?=α?=β?=γ?21γ1?

  1. BiFPN network

线性增加BiFPN深度。对一系列值{1.2、1.25、1.3、1.35、1.4、1.45}执行网格搜索,并选择最佳值1.35作为BiFPN宽度比例因子。形式上,BiFPN的宽度和深度通过以下等式进行缩放。
W b i f p n = 64 ? ( 1.3 5 ? ) D b i f p n = 3 + ? \begin{aligned} W_{bi fpn} &= 64·(1.35^{\phi})\\ D_{bi fpn} &= 3 + \phi \end{aligned} Wbifpn?Dbifpn??=64?(1.35?)=3+??

  1. Box/class prediction network

将它们的宽度固定为始终与BiFPN相同,但是根据层数的增加会线性的增加。

D b o x = D c l a s s = 3 + [ ? / 3 ] \begin{aligned} D_{box} = D_{class} = 3 + [\phi/3] \end{aligned} Dbox?=Dclass?=3+[?/3]?

  1. Input image resolution

由于BiFPN中使用了3-7级特征,输入分辨率必须除以 2 7 = 128 2^{7} = 128 27=128,因此我们使用公式线性增加分辨率:

R i n p u t = 512 + ? ? 128 \begin{aligned} R_{input} = 512 + \phi·128 \end{aligned} Rinput?=512+??128?

根据以上的公式,只使用了一个参数 ? \phi ?,对整个目标检测网络的backbone,BiFPN,分类预测与边界框回归预测,以及图像的分辨率进行联合缩放。

φ是控制所有其他缩放尺寸的复合系数;BiFPN、箱/类网和输入大小分别使用以上等式按比例放大。
在这里插入图片描述
其中D7和D7x具有相同的BiFPN和head,但D7使用更高的分辨率,D7x使用更大的主干网络和多一个功能级别(从P3 to P8)。值得注意的是,我们的复合缩放是基于启发式的,可能不是最优的,但是我们将展示这个简单的缩放方法可以在一定程度上提高效率。

在这里插入图片描述
可以看见,EfficientDet在准确度上的提升还是很高。

4. Ablation Study

除了以上的对比试验,paper中还提到了一些其他的实验

4.1 Disentangling Backbone and BiFPN

paper中还探讨了backbone与特征提取部分BiFPN对准确度的作用如何。
在这里插入图片描述
可以看见,可以说是强强联合,backbone与BiFPN对准确度的提高均有作用。

4.2 BiFPN Cross-Scale Connections

paper还进行对BiFPN 特征融合的对比,分别与FPN,PANet,NAS-FPN进行对比。为了公平比较,这里我们重复它们中的每一个多个。这与BiFPN相同。我们使用相同的主干和类/盒预测网络,并且对所有实验使用相同的训练设置。
在这里插入图片描述
如图所示,传统的自上而下的FPN固有地受到单向信息流的限制,因此具有最低的精度。虽然重复的FPN+PANet实现了比NAS-FPN稍好的精度,但它也需要更多的参数和FLOPs。我们的BiFPN实现了与重复的FPN+PANet相似的精度,但使用的参数和FLOPs少得多。通过额外的加权特征融合,我们的BiFPN进一步用更少的参数和FLOPs达到了最好的精度。

总结:


EfficientDet使用了一个高效的backbone,既创造了一个新的多尺度特征融合网络BiFPN,并通过额外的可学习行的加权特征处理,实现了精确度上的提高。

展开阅读全文
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:10:51  更:2021-08-03 11:11:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 23:25:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码