| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深度学习分类模型 EfficientNet阅读笔记 -> 正文阅读 |
|
[人工智能]深度学习分类模型 EfficientNet阅读笔记 |
文章目录前言今天开始复习下 EfficientNet 图像分类模型,之前有读过,但是已经忘的差不多了,所以在这里记下笔记,方便以后回顾。 论文标题: EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 摘要(Abstract)卷积神经网络是基于固定资源限制的开发,如果有更多资源,可以对其进行扩展得到更高的准确率。论文中,系统研究了模型扩展并且证实:认真平衡网络深度,宽度和分辨率可以获得更好的性能。基于这一发现,论文提出一种新的扩展方法:通过使用一个简单但是高效的组合系数(compound coefficient)来统一扩展深度、宽度、分辨率的维度。论文在扩展的MobileNets和ResNet 模型上验证这一方法的有效性。 更进一步,论文使用了神经网络架构搜索设计了一个新的基线网络,对它进行扩展可以得到模型家族 - EfficientNets。EfficientNets比之前的卷积神经网络获得更好的准确率和效率。尤其是,论文提出的EfficientNet-B7在ImageNet数据集上top-1准确率为84.3%,是当时最优结果;在推理上,比当时已有最优模型快6.1倍,模型小8.4倍。EfficientNets的迁移能力也很好,在CIFAR-100数据集上实现最优准确率-91.7%, 在Flowers数据集上准确率达到98.8%,在其它3个迁移学习数据集上有更少的参数。 源码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet. (这里的宽度代表通道数, 深度代表网络模型层数,分辨率表示特征图的大小,即特征图的宽度和高度) 1. 介绍(Introduction)扩展卷积神经网络的方法被广泛用于提高网络准确率,例如:通过对ResNet使用更多的层(深度),即从ResNet-18到ResNet-200,确实提高了模型准确率;通过扩展一个基线模型到4倍大小,GPipe在ImageNet top-1准确率达到84.3%。然而,这种卷积神经网络的扩展方法一直以来都不能被人较好的理解并且有很多方法可以实现它。最常用的扩展方法就是扩展深度或者宽度。另一个较少用,但是逐渐流行的扩展方法就是增加图像分辨率。之前的工作中,一般都是扩展这三个维度中的一个。尽管任意扩展其中的两个或者三个也是可能的,但是这种任意扩展需要耐心地人工调整,并且通过仅能获得次优的准确率和效率。 这篇论文则研究并思考了扩展卷积神经网络这一过程。论文特别探索这一中心问题:有没有什么指导方法能够扩展卷积神经网络来实现更好的准确率和效率? 论文的研究表明:平衡网络宽度/深度/分辨率的所有温度是至关重要的,令人感到惊喜的是这**种平衡可以通过简单地通过一个常量比率扩展这三个维度中的每一个来实现。**基于这个发现,论文提出了一个简单但是有效的 组合扩展方法。不像传统实践那样:任意扩展这三个维度,论文的方法是使用固定的扩展系数集合来统一扩展网络的宽度、深度和分辨率。比如,可以使用 2 N 2^N 2N倍的计算资源,可以分别简单增加网络深度、宽度和图像大小的 α N \alpha ^N αN倍, β N \beta ^N βN倍、 γ N \gamma ^N γN倍。这里的 α , β , γ \alpha,\beta,\gamma α,β,γ表示常量系数,它们是通过在原始小模型上进行小的网格搜索得到的。Figure.2揭示了论文方法和传统方法的区别。 这种组合扩展方法是有意义的,因为如果输入图像更大,网络需要更多的层来增加感受野范围,需要更多的通道来在更大的图像上捕获到更多的细粒度特征。事实上,之前的理论和经验结果表明在网络深度和宽度间存在明确的关系,论文中首先需要量化网络深度、宽度和分辨率这三个维度的关系。 论文证实:论文中的扩展方法在MobileNets和ResNet上表现不错。需要注意的是,模型扩展的有效性重度依赖与基线网络;更进一步,论文使用了神经架构搜索来开发一个新的基线网络,对它进行扩展得到一个新的模型家族-EfficientNets。Figure.1总结了在ImageNet数据集上性能,从图中可以看出,EfficientNets超过了其它卷积神经网络。尤其是EfficientNet-B7超过了GPipe模型的准确率,但是却仅用了8.4 倍小的参数量,在推理上快6.1倍。与被广泛使用的ResNet-50相比,EfficientNet-B4 提升了top-1准确率从76.3%到83.0%(+6.7%)却有相似的计算量(FLOPS)。除了在ImageNet数据集上,EfficientNets在迁移学习上也表现不错,在8个被广泛使用的数据集上,其中有5个EfficientNets的准确率达到最优,同时和其它卷积神经网络相比,参数量减少了21倍。 2. 相关工作(Related Work)这一章节主要从卷积神经网络的准确率、效率以及模型扩展三个方面描述了现有网络模型和技术发展情况,以此引出论文主要解决的问题:如何高效扩展卷积神经网络达到更好的效率和准确率。 3. 组合模型扩展(Compound Model Scaling)这一章节,论文将公式化扩展问题,研究不同的方法,并提出新的扩展方法。 3.1 问题公式化(Problem Formulation)一个卷积层
i
i
i被定义为一个函数:
Y
i
=
F
i
(
X
i
)
Y_{i} = F_{i}(X_{i})
Yi?=Fi?(Xi?),这里
F
i
F_{i}
Fi?表示操作函数(卷积+非线性激活+池化),
Y
i
Y_{i}
Yi?表示输出张量,
X
i
X_{i}
Xi?表示输入张量(形状为
<
H
i
,
W
i
,
C
i
>
<H_{i}, W_{i}, C_{i}>
<Hi?,Wi?,Ci?>,这里
H
i
,
W
i
H_{i},W_{i}
Hi?,Wi?表示空间维度,
C
i
C_{i}
Ci?表示通道维度。一个卷积网络
N
N
N可被表示为组合层的列表: 3.2 扩展维度(Scaling Dimensions)问题2 的主要困难在于要优化的参数
d
,
w
,
r
d,w,r
d,w,r是彼此依赖的并且在不同资源限制下这些值是不同的。由于这个难点,传统方法主要通过改变这些维度中的一个来扩展卷积网络。 Width(w)宽度:扩展网络宽度通常被用于比较小的模型。更宽的网络趋向于能够捕获更加细粒度的特征,并且训练更简单。然而,极其宽且浅的网络通常在捕获更高级别的特征方便比较困难。Figure.3(left)表明当网络变得的很宽时,准确率很快饱和。 Resolution ( r )分辨率:输入图像有更高分辨率,那么卷积网络能够捕获更多细粒度特征。从之前的神经网络输入图像分辨率为 224 × 224 224\times 224 224×224开始,现在的卷积网络趋向于使用 299 × 299 299\times 299 299×299,或者 331 × 331 331\times 331 331×331来获得更好的准确率。最忌,GPipe在ImageNet数据集上实现最优准确率,它使用输入图像为 480 × 480 480\times 480 480×480。更高的分辨率,例如 600 × 600 600\times 600 600×600,也被广泛用于目标检测卷积网络中。Figure.3(right)展示了扩展网络分辨率的结果:更高的分辨率确实提升了准确率,但是对于非常高的图像分辨率,准确率的收益减少。 上述分析得到第一个发现: 3.3 组合扩展(Compound Scaling)论文发现不同的扩展维度不是独立的。根据直觉知识:对于更高分辨率的图像,应该增加网络的深度,这样可以增加感受野以此来捕获图像中更过相似特征。同时,当分辨率更高时,也应该增加网络宽度,这样就可以获得更多细粒度特征。这些直觉知识表明:我们应该平衡不同扩展维度而不是仅扩展单一维度。
这些结果带来了第二个发现: 事实上,之前的论文中已经尝试平衡网络宽度和深度,到那时都要求人工调整。 在这篇论文中,提出一种新的组合扩展方法,使用一个组合系数
?
\phi
?来统一扩展网络的深度、宽度和分辨率: 4. EfficientNet架构(EfficientNet Architecture)因为模型扩展不会改变基线模型的层操作 F i ^ \hat{F_{i}} Fi?^?,因此有一个好的基线模型是非常重要的。论文将使用已有的卷积模型来评估论文提出的扩展方法,但是为了更好的证实论文扩张方法的有效性,论文也开发了一个新的仅有移动端模型大小的基线,叫做 E f f i c i e n t N e t EfficientNet EfficientNet。 受到Tan等人2019年发表的论文的鼓舞,论文通过使用一个多目标神经架构搜索(它优化了准确率和计算量)开发了这个基线模型。论文使用了和Tan等人提出的相同的搜索空间和相同的优化目标 A C C ( m ) × [ F L O P S ( m ) / T ] w ACC(m) \times [FLOPS(m)/T]^{w} ACC(m)×[FLOPS(m)/T]w,这里 A C C ( m ) ACC(m) ACC(m)和 F L O P S ( m ) FLOPS(m) FLOPS(m)表示模型 m m m的准确率和计算量, T T T是目标计算量, w = ? 0.07 w=-0.07 w=?0.07是用于控制准确率和计算量的一个平衡超参数。和Tan等人不同的是,论文优化 F L O P S FLOPS FLOPS而不是延迟,因为没有明确的硬件设备。论文的搜索产生了一个高效网络,被称为 E f f i c i e n t N e t ? B 0 EfficientNet-B0 EfficientNet?B0。因为和Tan等人使用相同的搜索空间,因此这个模型和MnasNet是相似的,当然EfficientNet-B0比MnasNet要大一些,由于有更大的计算量目标(FLOPS目标是400M)。Table.1展示了EfficientNet-B0的架构。它的主要构建块是移动端反向瓶颈MBConv,也添加了SE模块进行优化。 从基线模型
E
f
f
i
c
i
e
n
t
N
e
t
?
B
0
EfficientNet-B0
EfficientNet?B0开始,论文使用组合扩展方法来进行模型扩展,主要包括两步骤: STEP 2: 固定 α , β , γ \alpha, \beta,\gamma α,β,γ为常量,然后使用公式(3)通过不同的 ? \phi ?来扩展基线模型,获得EfficientNet-B1到EfficientNet-B7,如表Table.2所示。 (论文中没有提到对于 E f f i c i e n t N e t ? B 1 ? t o ? B 7 EfficientNet-B1\ to\ B7 EfficientNet?B1?to?B7对应的 ? \phi ?值到底是多少,可能要到源码中查看了)。 注意,直接在更大的模型上来搜索 α , β , γ \alpha,\beta,\gamma α,β,γ的值可能获得更好的结果,但是这样需要耗费更多搜索成本。论文的方法通过仅在小的极限模型上进行搜索来解决了这一问题(step1),然后在所有其它模型上使用相同的扩展系数(step2)。 5. 实验(Experiments)这一章节主要对已有的卷积网络和论文提出的EfficientNets进行对比实验,证实论文提出的扩展方法是目前的最优结果。 5.1 对MobileNets和ResNets进行扩展5.2 Efficientnet在ImageNet数据集上的结果5.3 EfficientNet在迁移学习上的结果
6.讨论(Discussion)
总结这篇论文主要提出一种针对特定资源限制,基于基线模型,通过使用组合扩展方法,对网络深度、宽度和分辨率同时扩展,可以得到准确率和效率更好的模型。 这篇论文没有提出什么新的概念,是针对已有的单一扩展方法的提升,能够针对资源限制情景即给定的基线模型,得到准确率和效率更优的结果。 到这里,这篇论文就结束了,如有错误,敬请原谅,谢谢大家! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/26 23:36:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |