今天我们不教程序,而是想带大家读一篇关於模型的论文,那为什麽会有这一Part呢?以前小编也不喜欢读Paper,觉得了解理论很浪费时间,会实做比较重要,但慢慢到了一些更进阶的专案时,你会发现懂得越少,就会越不了解怎麽增进自己的模型,所以读Paper也算是找灵感的一种方式,那麽今天就带大家一起读这篇MobileNets的论文。
近年来神经网路一直在不断的进步,但很多模型都只专注於准确度的提升,而忽略了让网路更有效率的提升速度和大小,在真实世界中,很多识别任务是需要在计算量受限的装置或平台上应用的,像是自动驾驶、机器人等等。
然而很多小型网路的论文又只注重在规模,而忽略了速度,这篇论文提出的MobileNets,就是兼顾了大小与速度的模型,并追求能在行动装置(Mobile)上实行。
MobileNet主要是透过架构上的改变去降低它的模型大小和计算量,我们先来看一下一般的Convolution Layer是怎麽运作的:
图片来源:https://medium.com/daai/哇-convolution-neural-network-卷积神经网络-这麽特别-36d02ce8b5fe
上图中可以看到,一般的Convolution是将每个Channel都乘上Filter得到结果最後叠在一起成为Feature map,接着我们来看看MobileNet的作法。
MobileNet将卷积层拆分为两部分,Depthwise Convolution以及Pointwise Convolution,其概念是在不影响网路输出结构下减少运算量。
与一般的卷积运算不同,Depthwise Convolution针对输入资料的每一个Channel都建立一个kk的Filter,各自分开做Convolution。
而为了维持输出的维度不变,在做完Depthwise Convolution後每个Channel再去乘上一个11的Filter做卷积,叠起来後就会得到一样的Feature map。
图片来源:https://www.cnblogs.com/shine-lee/p/10243114.html
下图是一般卷积运算(左)与Depthwise Seprarable Convolution(右)的架构差异,Depthwise Seprarable Convolution看似比较复杂,结构上比一般的卷积运算来的深,但其实运算量的差异是相反过来的。
一般卷积计算量:
W_in * H_in * Nch* k * k * Nk
Depthwise Seprarable Convolution计算量:
W_in * H_in * Nch* k * k + Nch*Nk * W_in * H_in
差异:
除了架构上的优化,MobileNet还有两个超参数可以调整,分别是Width Multiplier以及Resolution Multiplier。
用来让模型缩得更小,方法是对网路的输入输出层的通道数乘上一个alpha值,值介於[0,1],较常见的值有1、0.75、0.5、0.25,输入通道M会变为Malpha;输出通道N会变为Nalpha,因此这个参数可以使计算量减少alpha^2,虽然这麽做也会导致准确度跟着下降,因此使用上还是要拿捏一下。
这也是一个控制模型大小的参数,方法是将输入图像缩小,降低计算量,常见的缩放值有[224,192,160,128],这麽做所降低的计算量为p^2,但参数量并不会减少。
首先是比较使用Depthwise Seprarable Convolution(下)与使用一般的Convolution(上),下图中可以看到无论是参数量还是计算量,使用Depthwise Seprarable Convolution都有非常显着的进步,而且准确率这方面是差不多的。
下图是MobileNet与其他几个较着名的模型的比较,可以看到在维持准确率的同时,相较於其他网路MobileNet不论是计算量还是模型大小都表现得很出色。
论文也提供了几个研究,像是准确度与计算量、准确度与模型参数量的相关性,就像我们前面讲的,计算量越高、参数量越高,准确率就会越高。
这篇论文提出了使用Depthwise Seprarable Convolution的新模型MobileNets,并且提供了两个超参数去配合执行环境调整模型,研究结果也得知,MobileNets相较於其他模型,拥有速度更快,尺寸更小的优势,实现了将深度学习模型部属到一些行动装置上。
>>: DAY26 Aidea专案实作-AOI瑕疵检测(1/4)
今天的实作内容主要根据教学网站进行。 接下来两天的主要内容是将Django部属到正式环境,让使用者可...
Call by Value 传值 Call by Reterence 传参照 Call by Sh...
React Native 我的安装步骤: Node.js,我使用 Homebrew 来安装,所以会先...
既然我们已经理解、实作完基本的状态机了,我们今天来多看看一些状态图,并且思索在现实世界中,我们还缺少...
完成付款请求之後,接下来是准备好接收金流商回传资讯的 Response 类别,目前外挂的资料夹结构如...