【前言】:公众号的AI初学者友好互助小组已经创建啦,公众号后台回复【加群】能够直接加入。群里都是些一块儿学习的朋友,你们学习路上,结个伴。node
【求大佬】:有没有对推荐算法熟悉又愿意写文章的大佬?联系我~
web
【公众号资源汇总】:炼丹图书馆 | AI初学者所须要的资料合集(视频+PDF下载)
算法
文章共3200字,预计阅读时间12min
微信
什么是EfficientNet网络
模型复合缩放方法app
把问题用数学来描述机器学习
实验内容编辑器
模型复合缩放方法svg
EfficientNet的基线模型模块化
英语过关的小伙伴也许能够挑战一下?哈哈
模型扩展Model scaling一直以来都是提升卷积神经网络效果的重要方法。
好比说,ResNet能够增长层数从ResNet18扩展到ResNet200。此次,咱们要介绍的是最新的网络结构——EfficientNet,就是一种标准化的模型扩展结果,经过下面的图,咱们能够i只管的体会到EfficientNet b0-b7在ImageNet上的效果:对于ImageNet历史上的各类网络而言,能够说EfficientNet在效果上实现了碾压
什么是EfficientNet
通常咱们在扩展网络的时候,通常经过调成输入图像的大小、网络的深度和宽度(卷积通道数,也就是channel数)。在EfficientNet以前,没有研究工做只是针对这三个维度中的某一个维度进行调整,由于没钱啊!!有限的计算能力,不多有研究对这三个维度进行综合调整的。
EfficientNet的设想就是可否设计一个标准化的卷积网络扩展方法,既能够实现较高的准确率,又能够充分的节省算力资源。于是问题能够描述成,如何平衡分辨率、深度和宽度这三个维度,来实现拘拿及网络在效率和准确率上的优化
模型复合缩放方法
-
compound scaling methd
EfficientNet给出的解决方案是提出了这个模型复合缩放方法

图a是一个基线网络,也就是咱们所说的baseline,图b,c,d三个网络分别对该基线网络的宽度、深度、和输入分辨率进行了扩展,而最右边的e图,就是EfficientNet的主要思想,综合宽度、深度和分辨率对网络进行符合扩展。
把问题用数学来描述
首先,咱们把整个卷积网络称为N,他的第i个卷积层能够看做下面的函数映射:

Yi是输出张量,Xi是输入张量,假设这个Xi的维度是<Hi,Wi,Ci>(这里省略了Batch的维度),那么这个整个卷积网络N,是由k个卷积层组成的,所以能够表示为:

一般状况,一个神经网络会有多个相同的卷积层存在,所以,咱们称多个结构相同的卷积层为一个stage。举个例子:ResNet能够分为5个stage,每个stage中的卷积层结构相同(除了第一层为降采样层),前四个stage都是baseblock,第五个stage是fc层。如今构建神经网络也讲究模块化嘛。
总之,咱们以stage为单位,将上面的卷积网络N改为为:其中,下表1...s表示stage的讯号,Fi表示对第i层的卷积运算,Li的意思是Fi在第i个stage中有Li个同样结构的卷积层。<Hi, Wi, Ci>表示第i层输入的shape。为了减少搜索空间,做者先固定了网络的基本结构,而只改变上面公式中的三个缩放维度。还记得以前咱们提升的分辨率,宽度,深度吗?
-
Li就是深度,Li越大重复的卷积层越多,网络越深; -
Ci就是channel数目,也就是网络的宽度 -
Hi和Wi就是图片的分辨率
就算如此,这也有三个参数要调整,搜索空间也是很是的大,所以EfficientNet的设想是一个卷积网络全部的卷积层必须经过相同的比例常数进行统一扩展 ,这句话的意思是,三个参数乘上常熟倍率。因此个一个模型的扩展问题,就用数学语言描述为:

其中,d、w和r分别表示网络深度、宽度和分辨率的倍率。这个算式表现为在给定计算内存和效率的约束下,如何优化参数d、w和r来实现最好的模型准确率。
实验内容
上面问题的难点在于,三个倍率之间是由内在联系的,好比更高分辨率的图片就须要更深的网络来增大感觉野的捕捉特征。所以做者作了两个实验(实际应该是作了不少的实验)来讲明:(1) 第一个实验,对三个维度固定了两个,只方法其中一个,获得的结果以下:

从左到右分别是只放大了网络宽度(width,w为放大倍率)、网络深度(depth,d为放大倍率)和图像分辨率(resolution, r为放大倍率)。咱们能够看到,单个维度的放大最高精度只有80左右,本次实验,做者得出一个管带你:三个维度中任一维度的放大均可以带来精度的提高,可是随着倍率的愈来愈大,提高愈来愈小。
(2)因而做者作了第二个实验,尝试在不一样的d,r组合下变更w,获得下图:从实验结果来看,最高精度相比以前已经有所提高,突破了80大关。并且组合不一样,效果不一样。做者又获得了一个观点:获得了更高的精度以及效率的关键是平衡网络的宽度,网络深度,网络分辨率三个维度的缩放倍率
模型复合缩放方法
这时候做者提出了这个方法 EfficientNet的规范化复合调参方法使用了一个复合系数
,来对三个参数进行符合调整:其中的
都是常数,能够经过网格搜索得到。复合系数经过人工调节。考虑到若是网络深度翻番那么对应的计算量翻番,网络宽度和图像分辨率翻番对应的计算量会翻4番,卷积操做的计算量与
成正比,。在这个约束下,网络的计算量大约是以前的
倍
以上就是EfficientNet的复合扩展的方式,可是这仅仅是一种模型扩展方式,咱们尚未讲到EfficientNet究竟是一个什么样的网络。
EfficientNet的基线模型
EfficientNet使用了MobileNet V2中的MBCConv做为模型的主干网络,同时也是用了SENet中的squeeze and excitation方法对网络结构进行了优化。
总之呢,综合了MBConv和squeeze and excitation方法的EfficientNet-B0的网络结构以下表所示:
对于EfficientNet-B0这样的一个基线网络,如何使用复合扩展发对该网络进行扩展呢?这里主要是分两步走:还记得这个规划问题吗?
(1)第一步,先将复合系数
固定为1,先假设有两倍以上的计算资源能够用,而后对
进行网络搜索。对于EfficientNet-B0网络,在约束条件为
时, 分别取1.2,1.1和1.15时效果最佳。第二步是固定 ,经过复合调整公式对基线网络进行扩展,获得B1到B7网络。因而就有了开头的这一张图片,EfficientNet在ImageNet上的效果碾压,并且模型规模比此前的GPipe小了8.4倍。

普通人来训练和扩展EfficientNet实在过于昂贵,因此对于咱们来讲,最好的方法就是迁移学习,稍后我会写一个Pytorch如何使用EfficientNet进行迁移学习的教程:
- END -<<小白学图像>>
小白学目标检测 | RCNN, SPPNet, Fast, Faster
小白学图像 | BatchNormalization详解与比较
<<小白学算法>>
<<小白学机器学习>>
【小白学ML】随机森林 全解 (从bagging到variance)
SVM三合一 | SVM优化推导 + 拉格朗日算子讲解(KKT条件) + hingeLoss
评价指标 | 详解F1-score与多分类MacroF1&MicroF1
<<小白学推荐>>
有没有推荐大佬。求合做。推荐板块我写不下去了(哭)
<<小白面经>>
<<小白学杂七杂八>>
公众号回复【入群】,加入AI爱好者大学生交流群。你缺乏的可能只是一块儿前行的同伴~
本文分享自微信公众号 - 机器学习炼丹术(liandanshu)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。