就上一篇博客如何写论文、读(分享汇报)论文,在《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》进行实践。
《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》是一篇由Mingxing Tan和Quoc V. Le等人于2019年提出的论文,主要关注卷积神经网络(CNN)的模型缩放问题。
论文原文
论文代码
任务是什么:
论文的主要任务是:
1. 在移动设备和边缘设备日益增多的时代,期望实现更好的性能、高效且轻量的网络。
2. 探索卷积神经网络(ConvNets)的模型缩放方法。在计算资源有限的情况下,通过重新思考模型缩放的方式来 提高卷积神经网络的效率和性能。
为什么会有这个任务:
1. 获得一个好的效果又很多方法,比如提出一些新的架构或者跳跃链接这种idea。
2. 也可以通过模型缩放获取更大更深的模型
1) 模型深度和通道数: 自从AlexNet赢得2012的ImageNet竞赛,ConvNets随着变得更大获得了更高的精度,GoogleNet使用6.8M的参数获得了74.8%的top-1精度,SENet使用145M参数获得了82.7%的top-1精度。GPipe进一步提高了精度,通过将baseline模型放大四倍,使用了557M的参数获得了84.3%的top-1验证精度:它如此的大以至于需要将网络划分使用特定的并行化手段训练,然后将每一部分传递到一个不同的加速器。另一个我们常听到的ResNet可以通过使用更多层(加深层数18->200)把ResNet-18放大到ResNet-200
2) 分辨率: imageNet模型通常是224*224,inception v3使用299*299。
3. 不像常规的ConvNet设计,主要专注于寻找最好的层架构Fi(大多数网络,例如resnet,倾向于向体系结构中假如新的想法,比如skip connection、同时使用不同的卷积核)。模型缩放试图扩大网络长度(Li),宽度(Ci),和分辨率(Wi),不改变Fi在基线网络中的预定义。通过固定Fi(Fi其实是可以任意选择基础网络),模型缩放简化了新的资源约束的设计问题,但它仍然是一个较大的设计空间来探索每一层的不同的Li, Ci,Hi, Wi。为了进一步减少设计空间(简化设计),我们限制了所有层必须以恒定的比例均匀缩放。我们的目标是对任何给定的资源约束最大化模型的准确性
在本文中,我们系统地研究了模型的缩放,并确定了仔细平衡网络的深度、宽度(通道数)和分辨率(the input image size)可以导致更好的性能。
基于这一观察结果,我们提出了一种新的尺度方法,该方法使用简单而高效的复合系数均匀地调整深度/宽度/分辨率的所有维度。我们证明了该方法在放大图上的有效性手机网和ResNet。
现有方法面临的问题:
1. 深度网络的参数过多,模型压缩是一种通用的方法减小模型大小——平衡精度和效率。
2. 传统的模型缩放方法通常是在固定的资源预算下开发ConvNets,然后在有更多资源的情况下,按照某一个维度(深度、宽度或分辨率)进行缩放,以提高模型的准确率。在之前大多单独放大这三个维度中的一个:
1) 宽度:
· 更宽的网络可以捕捉到更细粒度的特征从而易于训练。然而,非常宽而又很浅的网络在捕捉高层次特征时有困难,我们的实验结果(图中左分图)表明了当网络随着w变大时,精度很快饱和了。
· 如果只增加网络宽度,而不增加网络深度和分辨率,那么网络可能会遇到梯度消失(gradient vanishing)或过拟合(overfitting)的问题;
2) 深度:
· 直觉上更深的网络可以捕获到更丰富和更复杂的特征,在新任务上也可以泛化的更好。但是深层网络的精度回报减弱了展示了我们在使用不同的深度系数d缩放网络的研究结果,更近一步的表明了精度回报的减弱问题。
· 如果只增加网络深度,而不增加网络宽度和分辨率,那么网络可能会遇到信息瓶颈(information bottleneck)或欠拟合(underfitting)的问题;
3) 分辨率:
· 使用更高分辨率的输入图像,ConvNets可能可以捕捉到更细粒度的模式。从最早的 224x224,现在有些ConvNets为了获得更高的精度选择使用 229x229 或者 331x331。目前,GPipe使用 480x480 的分辨率获得了最先进的ImageNet精度,更好的精度比如 600x600 也被广泛使用在目标检测网络中。图中右分图展示了缩放网络分辨率对精度的影响,同样可以看到在非常高的分辨率时网络精度回报会减弱。
· 如果只增加分辨率,而不增加网络深度和宽度,那么网络可能会遇到计算冗余(computational redundancy)或特征稀疏(feature sparsity)的问题。
对这些单个维度的缩放结果,得到观察一:对网络深度、宽度和分辨率中的任何温度进行缩放都可以提高精度,但是当模型足够大时,这种放大的收益会减弱。
3. 当时,神经网络结构搜索在设计高效的ConvNets越来越流行,并且通过广泛搜索网络宽度、深度、卷积核类型和大小得到了比手动设计的模型更高的精度。但人们不知道怎么将这个技术应用在更大的模型,因为在巨大的空间中进行搜索(便利),成本是很大的。
4. 又,我们不通过搜索,而是任意放大两个或者三个维度来获得更大网络,尽管这么做也是也是可能的,但是任意缩放也同样需要繁琐的人工调参同时可能产生的是一个次优的精度和效率。
5. 本篇论文旨在研究效率设计更大规模的ConvNets(effeicientNet),上面提到了,我们不可能直接搜索处一个很大的模型,那为了实现这个目标,我们采用模型缩放。大型模型大多聚焦于先发现好的基础网络层 ,然后再利用模型缩放在不改变预先在baseline网络Fi定义好的前提下扩展网络深度 、宽度 、分辨率 。模型缩放简化了资源约束条件,但是它仍然有一个比较大的搜索空间:从小变大三个维度都要怎么做,是否存在一个原则性的放大CNN的方法实现更好的精度和效率?
针对问题,提出的方法:
新的缩放方法
1. 上面提到,模型缩放简化了资源约束条件,但是它仍然有一个比较大的搜索空间。
2. 为了更进一步减小设计空间,我们限制所有层都统一以一个常量比例缩放,我们的目标是在给定资源预算下最大化模型精度。
3. 主要困难在于最优的d、w、r相互依赖,且各值在不同的资源约束下发生变化。由于这一困难,传统的方法主要在一个维度上缩放网络。
4. 我们经验上可以观察到不同缩放维度之间是不独立的,直观上来讲,对于分辨率更高的图像,我们应该增加网络深度,因为需要更大的感受野来帮助捕获更多像素点的类似特征,同时也应该增加网络宽度来获得更细粒度的特征。这些直觉指导着我们去协调平衡不同缩放维度而不是传统的单个缩放维度。
5. (这块先不说了,有点不太清楚)为了验证我们的直觉,我们在不同的网络深度和分辨率下比较了宽度变化(一条线不同的点)的影响,如果我们在 d=1.0 和 r=1.0 时仅仅缩放网络宽度,精度很快就饱和了。但是在d=2.0 和 r=2.0时在相同的FLOPS(计算成本)下宽度缩放就可以获得更好的精度。这图中也没有【2.0,2.0】啊,不懂。反正她的意思就是得平衡:为了追求更好的精度和效率,在连续网络缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的。(观察二)
这三个维度的复合缩放同时进行,以实现对模型整体的均衡优化。动机在于确保在每个维度上的缩放都不会使模型过于复杂,同时充分利用有限的计算资源。
6. 之前的一些工作已经开始在追去任意缩放网络深度和宽度,但是他们仍然需要复杂的人工微调。
7. 论文提出了一种新的模型缩放方法。该方法使用一个简单而有效的复合系数,通过对网络的深度(d)、宽度(w)和分辨率(r)进行均衡调整,以实现更高效的模型。为什么这么做?作者通过系统地研究不同维度的缩放对模型性能的影响,实验发现在保持相同的模型复杂度下,平衡地缩放所有维度可以获得更好的结果。具体步骤包括:
1) 这里的 α、β、γ 都是由原来的小模型上做微小的网格搜索决定(三个变量都给一些范围,然后搜索哪个好)的常量系数这里的 都是由一个很小范围的网络搜索得到的常量,直观上来讲, 是一个特定的系数,可以控制用于资源的使用量, 决定了具体是如何分配资源(就像fy=1,即资源扩大2倍,那谁增加的多谁增加的少就由决定,体现在三个数值的大小)的。里面的两个约束条件怎么来的?
1. 常规卷积的计算量是和 成正比的,加倍深度(α)会使得FLOPS加倍,但是加倍宽度(β)和分辨率(γ)会使得FLOPS加4倍。由于卷积ops经常在CNN中占据了大部分计算量,使用等式(3)缩放ConvNet将会使得整体计算量近似增加 倍。在本篇论文中,我们对任意 增加了约束 ,保证整体的计算量以 增长。
2. 资源增多了,直觉应该是每个维度都会增大以适配资源。
2) 如何实现这个复合缩放方法呀
1. α、β、γ是用网格搜索的方法来确定的。网格搜索是一种自动化的参数优化技术,它通过遍历给定的参数范围,找到最优的参数组合。EfficientNet的作者使用了网格搜索来寻找最佳的α、β、γ,使得模型在给定的资源限制下达到最高的准确率。
2. 三个数对应的fai次幂向下取余(直接int())(毕竟α、β、γ,你的模型深度宽度和分辨率可不能)
3. 值得注意的是,直接在一个大模型上搜索得到 可能会导致一个更好的表现,但是搜索成本会很高,我们的方法解决了这个问题——STEP 1时只在小的baseline网络中做了一次搜索得到 ,然后对于其他的模型都使用的是相同的 ,只是通过 来调整模型的大小和FLOPS。
新的baseline网络
1. 因为模型缩放不改变baseline网络中的基础网络层,所以有一个好的baseline网络是很重要的,我们使用之前的ConvNets对我们的缩放方法做了评估,但是为了更好验证我们的缩放方法的高效性,我们也提出 了一种基于移动应用的baseline模型——EfficientNet。
2. 受到MnasNet的启发,我们也开发了一种多目标的神经网络结构搜索(Nas)同时优化精度和FLOPS,我们的搜索空间和MnasNet相同。同时我们的优化目标为 ,这里的 分别是模型m的精度和计算量,T是目标计算量, w=-0.07是一个超参数用来权衡精度和FLOPS。不像MnasNet中的优化目标,这里优化的是FLOPS而不是延迟,因为我们没有说是要在特定的硬件平台上做加速。模型由Block组成,每个Block里面的Layer是重复的,我们确定那些是值得搜索的参数,然后设计合理的loss函数进行搜索最优结构。
3. 我们的搜索方法得到了一个高效的网络,我们称之为EfficientNet-B0,因为我们使用的搜索空间和MnasNet相似,所以得到的网络结构也很相似,不过我们的EfficientNet-B0稍微大了点,因为我们的FLOPS预算也比MnasNet中大(400M)。下图展示了EfficientNet-B0的结构,它的主要构建块就是移动倒置瓶颈MBConv,其网络结构如下:
4. trick
1) MBConv(mobilenet v2)
2) Squeeze-and-excitation optimization
· 对于一个H✖️W✖️C的输入,对H✖️W进行平均池化(即channel方向),得到1✖️1✖️C的向量,然后对其进行更新并经过一个sigmoid激活使其变为[0,1]内的数,再乘回yu
这个操作有点类似attention,它的核心是我们应该注意哪一个通道,提出他的论文也实验证明是挺有用的,同时平均池化,对应相乘,它的计算代价也不大
3) Stochastic depth
1. 随机消失一些层,保留传递其残差链接
得到effecient后,如何应用缩放呢,以分辨率的变化为例,B0是224,B1的fi是0.5,所以B1对应使用的图片分辨率是 int ( 224 * (1.15**0.5) )= 240 与代码一致,单也不是严格按这个公式来的,比如B2, (224*1.15**1)=258,代码是160, B2, (224*1.15**2)=296,代码是300
实验结果:
1. 首先将缩放方法应用到MobileNets和ResNets中,Table 3展示了以不同的方法缩放的ImageNet结果。与其他单一维度的缩放方法相比,我们的复合缩放方法精度提高了。
2. 本文提出的模型在imageNet上的效果(本文的方法和其他方法的优势,体现网络搜索在相近的性能下,参数量和计算量的优势)
作者设计了一个新的baseline网络,并将模型利用提出的缩放方法进行扩大,得到一系列网络,他们的精度和效率比之前所有的卷积网络都好,尤其是我们的EfficientNet-B7在ImageNet上获得了最先进的 84.4%的top-1精度 和 97.1%的top-5精度,同时比之前最好的卷积网络大小缩小了8.4倍、速度提高了6.1倍。
3. 我们的EfficientNets也可以很好的迁移,并且在CIFAR-100(91.7%)、Flowers(98.8%)、以及其他3个迁移学习数据集实现了最先进的精度。在8个数据集中的5个实现了新的最先进的精度,平均参数减少了9.6倍,右边是最好报告中的结果对比。
4. 对于Imagenet提出的模型在其他数据集上与effecientNet的对比
5. EffecientNet不同的缩放方法在ImageNet Top1的准确率对比
6. (另一个挺好看的可以体现方法有效性的途径)具有不同缩放方法的模型的类激活图(CAM),越明亮代表模型越关注的区域,论文提出的复合缩放方法允许缩放模型(最后一列)关注具有更多对象细节的更相关区域。而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象。
总结
论文通过在ImageNet数据集上进行实验证明,EfficientNet在相同计算复杂度下,相对于先前的模型在准确性和性能方面取得了显著的提升。具体来说,EfficientNet在相同FLOPs(浮点运算数)情况下,相较于其他流行的网络(如ResNet、MobileNet)在 ImageNet上取得了更好的性能。这表明EfficientNet在保持高效性的同时,能够有效提高模型的性能。文章来源:https://www.toymoban.com/news/detail-772190.html
综合来看,EfficientNet通过复合缩放的方式重新思考了模型的设计,取得了在资源受限环境下更为出色的性能,成为轻量级深度学习模型设计的一个重要参考。文章来源地址https://www.toymoban.com/news/detail-772190.html
到了这里,关于论文阅读《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!