结构虽简单,但性能强悍——3个小型卷积神经网络简介

简介: 本文介绍了三种小型结构的卷积神经网络,在稍微降低性能的前提下,大大降低了计算复杂度。此外,无需使用高性能计算机即可进行仿真运行,适合初学者仿真体验。

       人工智能、深度学习太火了,火到哪一个领域都有讨论的声音。稍微对深度学习有所了解的人们,尤其是对于计算机视觉领域有所涉猎的人们,当一听到深度学习、卷积神经网络时,脑海里不由得自动脑补这样一幅画面——一台满和负载嗡嗡响的GPU服务器、一台满屏代码不断跳跃的显示屏以及坐在电脑前不断尝试不同卷积神经网络模型的科研人员。这幅场景在各个实验室不断的重复出现,那是不是玩人工智能和深度学习一定都是这样呢?答案是不一定。虽然大多数卷积神经网络都是由于其大型结构而取得非常好的性能,但是这些模型对计算能力有比较高的要求。有些人员只想尝试应用下卷积神经网络、体验下效果,这个时候难道也得配一台高性能计算的服务器吗?如果是这种情况的话,本文将告诉你三种卷积神经网络,这些卷积神经网络在你老的台式机(哪怕是没有GPU)、甚至是你的手机上都能够仿真运行,为你节省一大笔开销,是不是很期待?下面一窥这三种卷积神经网络模型的结构及其性能分析。

MobileNet

文章链接:https://arxiv.org/abs/1704.04861
       MobileNet使用深度可分离卷积(depthwise separable Convolutions),这种卷积块结构首先由Xception引入。深度可分离卷积由两部分组成,分别为深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)。
       假设二维特征图(feature map)进行标准卷积操作,输入特征图经过卷积操作后进行输出,如图所示,其计算复杂度为$D_f^2*M*N*D_k^2$。其中输入特征图的维度为$Df$,$M$和$N$分别表示输入通道数以及输出通道数,$D_k$是卷积核大小。

1


       深度卷积在每个输入通道上分别映射一个卷积。因此,其输出通道数与输入通道数相同,其计算成本是$D_f*M*D_k$。

2


       最后的操作是逐点卷积。它是1×1内核大小的卷积,它将由深度卷积创建的特征简单地结合起来,其计算成本是$M*N*D_f$。

3


       深度可分离卷积的计算代价是由深度卷积和逐点卷积两部分代价组成。与一般的卷积操作相比,深度可分离卷积降低了原始计算复杂度的$(1/N+1/D_k^2)$。假设卷积核大小为3x3,则仿真运算量降低了8倍。
       MobileNet同时也提供了两个参数以允许进一步减少运算量。其中一个参数为 瘦身乘子(width multiplier)其取值范围为0~1,用来减少网络的通道数,每一层减少$alpha*N$个通道,该参数能被用来权衡模型性能与仿真等待时间。另外一个参数为 分辨率乘子(resolution multiplier),该参数将缩放输入图像的尺寸,尺寸范围为224~128之间。由于MobileNet使用全局平均池化代替全连接,你可以使用224x22$图像训练该网络,并将训练好的的网络应用于128x128大小的图像上!

ShuffleNet

文章链接:https://arxiv.org/abs/1707.01083
       ShuffleNet原创了三种混洗单元(Shuffle unit),如下图所示每个单元都是由逐群卷积(pointwise group convolution)和信道混洗(channel shuffle)组成。

4


       一个组卷积包含几个卷积,每一组获取部分输入信道。下图是一个组卷积过程,有3组,每一组有3个输入信道。

5


       这种结构极大的降低了计算代价。假设,如果有4个输入信道和8个输出信道,从中选择2组,每组有2个输入信道和4个输出信道。当只有一组时,其计算代价为$D_f^2*D_k^2*4*8$;当有2组时,其计算代价为$D_f^2*D_k^2*2*4$或者$D_f^2*D_k^2*4*4$。至少是减少了2倍的计算代价。在作者的文章中,当组数为8时取得了最好的结果,因此降低计算量是非常重要的。

EffNet

文章链接:https://arxiv.org/abs/1801.06434
       EffNet为空间可分离卷积(spatial separable convolutions),这与MobileNet的深度可分离卷积非常相似。

6


       如图所示,可分离深度卷积以蓝色矩形块表示,它是由一个行内核(1x3)、可分类池化以及列内核(3x1)的深度卷积组成。
       正常深度为3x3的卷积核的计算代价为$3^2*D_f^2*M$。第一个深度为1x3卷积核的计算代价为$3*D_f^2*M$,可分离池化操作将特征图高度减半,具有边际成本。第二个深度为3x1的卷积核的计算代价为$3*D_f^2/2*M$。这样一来,总的计算代价为$1.5*(3*D_f^2*M)$,是原先的一半!
       此外,EffNet相较于MobileNet和ShuffleNet的一个优化操作是在开始时没有“标准卷积”。

7


       MobileNet和ShuffleNet都避免更换第一层,因为它们觉得该层的计算量已经很小了。虽然我尊重这种说法,但我认为每一个优化都是重要的。在优化了网络的其它层之后,第一层适当地变大。实验结果表明,用EffNet块替换第一层后,降低了每个层计算量的30%。

总结

       MobileNet、ShuffleNet以及EffNet这三种卷积神经网络结构都是通过优化计算量构想出来的。每个都用自己的版本取代了经典卷积结构。

  • MobileNetGithub)深度可分离卷积使用一个深度卷积与逐点卷积结构,此外,引入了两超参数,分别为瘦身乘子和分辨率乘子,都是用来减少特征映射空间的维数。
  • ShuffleNetGithub)每组采用逐点卷积,为了结合每个组所产生的特征,引入了混洗层(shuffle layer)。
  • EffNetGithub)使用空间可分离卷积,只是一个简单的深度卷积被分为沿着X轴和Y轴,二者中间有一个池化层。

    8

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

作者信息

Arthur Douillard,深度学习工程师
个人主页:https://www.linkedin.com/in/arthurdouillard/
本文由阿里云云栖社区组织翻译。
文章原标题《3 Small But Powerful Convolutional Networks》,译者:海棠,审校:Uncle_LLD
文章为简译,更为详细的内容,请查看原文

相关文章
|
7天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
62 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
10天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
25 3
图卷积网络入门:数学基础与架构设计
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
11天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
41 7
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
52 7
|
13天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
17 1
|
19天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
20天前
|
机器学习/深度学习 人工智能 网络架构
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
37 1
|
22天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。