DAY25 轻量级模型-MobileNets

今天我们不教程序,而是想带大家读一篇关於模型的论文,那为什麽会有这一Part呢?以前小编也不喜欢读Paper,觉得了解理论很浪费时间,会实做比较重要,但慢慢到了一些更进阶的专案时,你会发现懂得越少,就会越不了解怎麽增进自己的模型,所以读Paper也算是找灵感的一种方式,那麽今天就带大家一起读这篇MobileNets的论文。

论文载点


一、介绍

近年来神经网路一直在不断的进步,但很多模型都只专注於准确度的提升,而忽略了让网路更有效率的提升速度和大小,在真实世界中,很多识别任务是需要在计算量受限的装置或平台上应用的,像是自动驾驶、机器人等等。
然而很多小型网路的论文又只注重在规模,而忽略了速度,这篇论文提出的MobileNets,就是兼顾了大小与速度的模型,并追求能在行动装置(Mobile)上实行。


二、架构

MobileNet主要是透过架构上的改变去降低它的模型大小和计算量,我们先来看一下一般的Convolution Layer是怎麽运作的:
https://ithelp.ithome.com.tw/upload/images/20210914/20140427gYiQUyncXF.png
图片来源:https://medium.com/daai/哇-convolution-neural-network-卷积神经网络-这麽特别-36d02ce8b5fe

上图中可以看到,一般的Convolution是将每个Channel都乘上Filter得到结果最後叠在一起成为Feature map,接着我们来看看MobileNet的作法。
MobileNet将卷积层拆分为两部分,Depthwise Convolution以及Pointwise Convolution,其概念是在不影响网路输出结构下减少运算量。

Depthwise Convolution

与一般的卷积运算不同,Depthwise Convolution针对输入资料的每一个Channel都建立一个kk的Filter,各自分开做Convolution。

Pointwose Convolution

而为了维持输出的维度不变,在做完Depthwise Convolution後每个Channel再去乘上一个11的Filter做卷积,叠起来後就会得到一样的Feature map。
https://ithelp.ithome.com.tw/upload/images/20210914/20140427G2ivjs5Bi3.png
图片来源:https://www.cnblogs.com/shine-lee/p/10243114.html

比较

下图是一般卷积运算(左)与Depthwise Seprarable Convolution(右)的架构差异,Depthwise Seprarable Convolution看似比较复杂,结构上比一般的卷积运算来的深,但其实运算量的差异是相反过来的。
https://ithelp.ithome.com.tw/upload/images/20210914/20140427o5ADoDYf3L.png
一般卷积计算量:
W_in * H_in * Nch* k * k * Nk

Depthwise Seprarable Convolution计算量:
W_in * H_in * Nch* k * k +  Nch*Nk * W_in * H_in

差异:
https://ithelp.ithome.com.tw/upload/images/20210914/20140427raZaaY6Skq.png


三、超参数

除了架构上的优化,MobileNet还有两个超参数可以调整,分别是Width Multiplier以及Resolution Multiplier。

Width Multiplier

用来让模型缩得更小,方法是对网路的输入输出层的通道数乘上一个alpha值,值介於[0,1],较常见的值有1、0.75、0.5、0.25,输入通道M会变为Malpha;输出通道N会变为Nalpha,因此这个参数可以使计算量减少alpha^2,虽然这麽做也会导致准确度跟着下降,因此使用上还是要拿捏一下。

下图为论文实验的数据(Mult-Adds为计算量)

https://ithelp.ithome.com.tw/upload/images/20210914/20140427JcWfGe7mvw.png

Resolution Multiplier

这也是一个控制模型大小的参数,方法是将输入图像缩小,降低计算量,常见的缩放值有[224,192,160,128],这麽做所降低的计算量为p^2,但参数量并不会减少。

下图为论文实验的数据(Mult-Adds为计算量)

https://ithelp.ithome.com.tw/upload/images/20210914/20140427ONK5l05cwf.png


四、研究结果

首先是比较使用Depthwise Seprarable Convolution(下)与使用一般的Convolution(上),下图中可以看到无论是参数量还是计算量,使用Depthwise Seprarable Convolution都有非常显着的进步,而且准确率这方面是差不多的。
https://ithelp.ithome.com.tw/upload/images/20210914/20140427zDqZgnQ3pR.png
下图是MobileNet与其他几个较着名的模型的比较,可以看到在维持准确率的同时,相较於其他网路MobileNet不论是计算量还是模型大小都表现得很出色。
https://ithelp.ithome.com.tw/upload/images/20210914/2014042798ChGUB6ur.png
论文也提供了几个研究,像是准确度与计算量、准确度与模型参数量的相关性,就像我们前面讲的,计算量越高、参数量越高,准确率就会越高。
https://ithelp.ithome.com.tw/upload/images/20210914/20140427NHMLBIS9Qn.png
https://ithelp.ithome.com.tw/upload/images/20210914/20140427fM7VdNTrLj.png


五、结论

这篇论文提出了使用Depthwise Seprarable Convolution的新模型MobileNets,并且提供了两个超参数去配合执行环境调整模型,研究结果也得知,MobileNets相较於其他模型,拥有速度更快,尺寸更小的优势,实现了将深度学习模型部属到一些行动装置上。


<<:  DAY24 迁移式学习与预训练模型

>>:  DAY26 Aidea专案实作-AOI瑕疵检测(1/4)

Day26 - 部属到正式环境 (1)

今天的实作内容主要根据教学网站进行。 接下来两天的主要内容是将Django部属到正式环境,让使用者可...

[Day25] 求值策略

Call by Value 传值 Call by Reterence 传参照 Call by Sh...

[ 卡卡 DAY 3 ] - React Native 环境建立轻松上手

React Native 我的安装步骤: Node.js,我使用 Homebrew 来安装,所以会先...

Day11 - 状态机与现实世界的落差 - 1: Action? Side Effect

既然我们已经理解、实作完基本的状态机了,我们今天来多看看一些状态图,并且思索在现实世界中,我们还缺少...

Day24 - 铁人付外挂实作付款类别(三)- 接收回传资料

完成付款请求之後,接下来是准备好接收金流商回传资讯的 Response 类别,目前外挂的资料夹结构如...