[Day 12] 从 tensorflow.keras 开始的 MobileNet 生活

0. 进度条

模型 进度
VGG Net 完成
ResNet 完成
DensNet 完成
MobileNet 此篇
EfficientNet 未完成

0.1 前言

火云邪神曾说:「天下武功,唯快不破」,/images/emoticon/emoticon18.gif
但那些又宽又深的网路,训练时间和推论时间都极长,
我们要如何把它们放在手机等移动设备上呢?
所以科学家们开始反其道而行,
模型不再是以「大大大」为唯一目标,
有另外一个目标出现了:要小要快要轻。
而MobileNet就是着名的轻量化模型架构,
其论文开宗明义地说:

This paper describes an efficient network architecture
and a set of two hyper-parameters in order to build very small, low latency models
that can be easily matched to the design requirements for
mobile and embedded vision applications.


1. MobileNet v1

00

1.1 深度可分离卷积(Depthwise Separable Convolution)

  • 标准的卷积是对影像的三个维度长、宽、通道数(H,W,C)同时做卷积运算,
    若有K个(D,D)卷积核,则所需参数量为DxDxCxK。
  • 深度可分离卷积分成两步骤:
    1. 深度卷积:先分别对单个通道做卷积,这样会改变图的解析度,但通道数(维度)保持不变。
    2. 逐点卷积:用1x1卷积核对C方向做卷积,不会改变解析度,但会改变通道数(维度)。
      若有K个(D,D)卷积核,则所需参数量为(DxD+C)xK,在C变大时,会省下不少参数量。
  • 经过计算,在3通道的彩色图片中,只要D>=2就可以减少参数量。

如下图所示:
01
论文中也统计了各种类型的网路层所需参数量的比例:
02

1.2 Width Multiplier: 瘦模型

宽度乘子(α):把输入/输出通道数缩小,论文设置倍率是(0.25, 0.5, 0.75, 1.0)之一。

1.3 Resolution Multiplier: 窄模型

解析度乘子(ρ):减少输入/输出的解析度,论文设置解析度为(224, 192, 160, 128)之一。

论文在ImageNet上做实验(α从左到右分别是0.25, 0.5, 0.75, 1.0)。
去比较这4种设置的模型准确率。
基本上只是证实了一件事:

在都是深度可分离卷积的设计下,又宽又胖的模型还是比较强
但是模型基本上都很轻量化,最大的也仅有 4M 个参数。
而且解析度提高所增多的参数量较提高宽度来的少。

03


2. 结语

MobileNet参数量极少是一大卖点。

模型 参数量
ResNet50 v1 23M
DensNet121 7M
MobileNet v1 3M

只是他的准确率不怎麽好看。

模型 首发年分 ImageNet test top-5 error
AlexNet 2012 15.32%
VGG 2014 6.8%
GoogleNet 2014 6.67%
ResNet 2015 3.57%
ResNeXt 2016 3.03%
SENet 2017 2.25%
MobileNet 2017 10.5%

你全都要?

那有没有参数量和MobileNet差不多,
但是准确率能和state-of-the-art也差不多的架构呢?
有的!明天让我来为你介绍...

3. 参考资料

  1. https://arxiv.org/abs/1704.04861

<<:  sed - 4 Write commands

>>:  Day 15 实作调色盘App(3/3)

Day3 阿里云使用须知与中国网路

前言:   随着网路时代普及生活化,各国政府对IT资讯产业也推行了相当多的管理法案以维护网际网路使用...

入门魔法 - JavaScript 是什麽?

前情提要 「我有问题!」 艾草:「来,请说。」 「JavaScript 到底是什麽?」 艾草:「就程...

AE-LED流动效果3-Day21

接续昨天的练习~ 1.一开始所有图形会在同一个位置,不是我们想要的效果,所以把将时间轴往左移,让所有...

多容器编排与管理 Docker Compose简介

上篇回顾 设定档格式 YAML Docker太多文章介绍了, 小弟我K8S也没那麽熟稔 就介绍自己熟...