【MobileNetsv1】: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

MobileNets:用于移动视觉应用的高效卷积神经网络

https://arxiv.org/pdf/1704.04861.pdf%EF%BC%89
2017
Andrew G. Howard Menglong Zhu Bo Chen Dmitry Kalenichenko
Weijun Wang Tobias Weyand Marco Andreetto Hartwig Adam


摘要

我们提供了一种称为MobileNets的高效模型类,用于移动和嵌入式视觉应用。 MobileNets基于一种简化的架构,使用深度可分离卷积来构建轻量级深度神经网络。我们引入了两个简单的全局超参数,可以有效地权衡延迟和准确性。这些超参数允许模型构建者根据问题的约束条件选择适合其应用程序的正确大小的模型。我们进行了大量的资源和准确性权衡实验,并在ImageNet分类任务上展现出与其他流行模型相比的较强表现。然后,我们展示了MobileNets在包括对象检测、细粒度分类、面部属性和大规模地理定位等各种应用和用例中的有效性。


1.介绍

自从AlexNet [19]通过赢得ImageNet挑战赛:ILSVRC 2012 [24]而普及了深层卷积神经网络以来,卷积神经网络已成为计算机视觉中无处不在的东西。总体趋势是为了实现更高的准确性而制作更深和更复杂的网络[27、31、29、8]。然而,提高准确性的这些进步未必能使网络在大小和速度方面更加高效。在许多现实世界的应用程序中,如机器人、自动驾驶汽车和增强现实,识别任务需要在计算资源有限的平台上及时完成

本文描述了一种高效的网络架构和一组两个超参数,以构建非常小型、低延迟的模型,这些模型可以轻松地匹配移动和嵌入式视觉应用的设计要求。第2节回顾了构建小型模型的先前工作。第3节介绍了MobileNet架构和两个超参数宽度乘数和分辨率乘数,以定义更小更高效的MobileNets。第4节描述了在ImageNet以及各种不同应用和用例中的实验。第5节总结和结束。

aaaaAAaaaa可爱的小猫咪"

Figure 1. MobileNet models can be applied to various recognition tasks for efficient on device intelligence.


2. 先前工作

近期文献中对构建小型和高效的神经网络的兴趣正在增加,例如[16、34、12、36、22]。许多不同的方法可以一般性地归为压缩预训练网络或直接训练小型网络两类。本文提出了一类网络架构,使模型开发者可以特定选择与其应用程序的资源限制(延迟、大小)相匹配的小型网络。MobileNets主要关注优化延迟,但也产生小型网络。许多有关小型网络的论文只关注大小,而不考虑速度。

MobileNets主要是由最初在[26]中引入并随后在Inception模型[13]中使用以减少前几层计算的深度可分离卷积构建的。扁平化网络[16]将完全分解的卷积用于网络构建,并展示了极度因式分解网络的潜力。独立于本文,因子化网络[34]引入了类似的因式卷积和拓扑连接的使用。随后,Xception网络[3]演示了如何扩大深度可分离滤波器以超过Inception V3网络的性能。另一个小型网络是Squeezenet [12],它使用瓶颈方法设计了一个非常小的网络。其他降低计算量的网络包括结构变换网络[28]和深煎卷积神经网络[37]。

获得小型网络的另一种方法是缩小,因式分解或压缩预训练网络。文献中提出了基于产品量化[36]、哈希[2]、剪枝、向量量化和霍夫曼编码[5]等压缩方法。此外,已经提出各种因式分解来加速预训练网络[14、20]。训练小型网络的另一种方法是蒸馏[9],它使用更大的网络来教授较小的网络。它与我们的方法相辅相成,并在第4节的一些用例中进行了介绍。另一种新兴的方法是低位网络[4、22、11]。


3. MobileNet 架构

本节中,我们首先描述了 MobileNet 架构的核心层,即深度可分离卷积。然后,我们描述了 MobileNet 网络结构,并总结了两个模型缩小超参数:宽度乘数和分辨率乘数。

3.1. 深度可分离卷积


MobileNet 模型基于深度可分离卷积构建,这是一种将标准卷积分解为深度卷积和 1×1 的点卷积的因式分解卷积形式。对于 MobileNets,深度卷积将单个滤波器应用于每个输入通道。然后,点卷积应用 1×1 卷积来组合深度卷积的输出。标准卷积在一步中过滤和组合输入,深度可分离卷积将其分成两个层,一个用于过滤,一个用于组合。这种因式分解的效果是大幅度降低计算量和模型大小。图 2 显示了标准卷积如何被分解为深度卷积和 1 × 1 点卷积。

标准卷积层将 D F × D F × M D_F×D_F×M DF×DF×M特征图 F 作为输入并产生一个 D F × D F × N D_F×D_F×N DF×DF×N 特征图 G,其中 D F D_F DF 是输入特征图的空间宽度和高度(假设为正方形),M 是输入通道数(输入深度), D G D_G DG 是输出特征图的空间宽度和高度,N 是输出通道数(输出深度)。

标准卷积层由大小为 D K × D K × M × N D_K ×D_K ×M×N DK×DK×M×N的卷积核 K 参数化,其中 D K D_K DK 是内核的空间维度,假定为正方形,M 是输入通道数,N 是输出通道数,如前所述。

在假定步长为 1 和填充的情况下,标准卷积的输出特征图计算如下:

G k , l , n = ∑ i , j , m K i , j , m , n ⋅ F k + i − 1 , l + j − 1 , m (1) G _ { k ,l , n } = \sum _ { i , j , m } K _ { i , j , m, n } ·F _ { k + i -1 , l+j -1 , m }\tag{1} Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,m(1)

标准卷积的计算成本为:

D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F (2) D _ { K } \cdot D _ { K } \cdot M \cdot N \cdot D _ { F } \cdot D _ { F }\tag{2} DKDKMN

猜你喜欢

转载自blog.csdn.net/wagnbo/article/details/131176772