| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices--Xiangyu Zhang -> 正文阅读 |
|
[人工智能]ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices--Xiangyu Zhang |
要解决的问题: 总之就是:1)使用分组卷积改善1x1卷积的计算量;2)使用Channel Shuffle克服分组卷积的通道信息闭塞问题。从而实现了高效且轻量的ShuffleNet。 0、摘要我们设计了一种针对有限算力(比如10~150MFLOPs)的移动设备的高效网络:ShuffleNet。 该网络使用两种新的操作:pointwise group convolution(点组卷积)和channel shuffle(通道混洗)。 我们再ImageNet分类任务和MS COCO目标叫测任务上实验并展示超越其他结构的表现。在ImageNet分类任务上比MobileNet更低的top1错误率(absolute 7.8%)。 在基于ARM的移动设备上,在相当的精度下,ShuffleNet实现了比AlexNet快13倍的速度。 1、引入目标 存在的问题 解决方法 但是pointwise group convolution存在副作用:只在各自对应的通道进行卷积,阻碍了通道间的交流。为了克服这一缺点,我们提出一种新颖的channel shuffle操作,去帮助信息流在通道间交流。 基于这两个技术,我们构建了高效的ShuffleNet网络,我们的ShuffleNet允许更多的特征图通道,帮助解码更多信息,这对于超小网络的性能极为关键。 表现 我们还研究了在实际硬件上的加速比,即基于ARM的现成计算核心。与Alexnet相比,ShuffleNet模型获得了~13倍的实际加速比(理论加速比为18倍),同时保持了相当的精度 2、相关工作高效模型设计
Group Convolution Channel Shuffle Operation 3、方法3.1 用于Group Convolution的Channel Shuffle我们注意到比如最先进的Xception和ResNeXt等引入深度可分离卷积或组卷积,实现了性能和计算代价的平衡。但是都没有考虑到1x1卷积本身的复杂性,再加上他们大量使用了1x1卷积,所以再计算代价上还有改进空间。 例如再ResNeXt中,只有3x3层配了group convolutions,所以每一个residual uint中pointwise convolutions占据了93.4%的MAdds。在小网络中,昂贵的pointwise convolution会导致满足复杂性约束(理解为有计算量限制)的信道数量有限,这可能会严重影响精度。 要解决这个问题,一个直接的解决方案是应用通道稀疏连接。比如group convolution也在1x1层上。通过保证每个卷积运算只在对应的输入通道组上进行,就会大大降低计算成本(这里需要理解分组卷积的原理:分组卷积(Group Converlution))。 但是分组卷积也有缺点,该层某个通道只与上层某几个通道相关,也就是某个通道的输出只来自一小部分的输入通道,这阻碍了通道组之间的信息交流。 如果我们允许分组卷积来获取不同组的输入数据,比如图1的(b),那么输出和输入通道就完全相关了。具体操作为将每一个通道组(同一种颜色为同一个通道组)再次划分为若干了子组,然后将不同子组feed到下一层的每一组中。比如有红绿蓝三个通道组,则将红通道组再次分成3个子组,分别feed到下一层的三个通道组。这种shuffle操作可以通过Channel Shuffle高效优雅地实现,如图1地(c)。 Channel Shuffle使得构建堆叠分组卷积层成为可能。 3.2 ShuffleNet Uint上面介绍了本文提出地骚操作,现在将他们打包成小块Uint,用来方便构建整体网络。 在a中,这是一个典型的深度可分离卷积(多了一个1x1卷积,应该是升维/降维作用)+残差连接。 在b中,我们使用分组卷积代替1x1卷积(让输出通道从跨上层全部通道变为跨上层局部组通道),降低1x1卷积的开销,同时加入Channel Shuffle实现跨通道信息交流。 c结构和b结构都是ShuffleNet uint,只不过结构b需要stride=1时使用,结构c需要stride=2时使用。
3.3 网络框架ShuffleNet网络结构如表1所示。该网络主要由一堆shufflenet uint组成,主要分为三个阶段的ShuffleNet uint堆栈组成(Stage2、Stage3、Stage4)。每个阶段中的第一个都是stride=2的块。其他阶段的其他超参数不变,并且下一个Stage的输出通道加倍。 为了将网络制定为所需要的复杂度,可以简单在通道数量上应用一个比例因子s。例如,我们将表1中的网络表示为ShuffleNet 1X,那么ShuffleNet sX表示将ShuffleNet中卷积核数量(通道数)乘以s倍,因此总体复杂度大约是ShuffleNet 1X的s平方倍(注意:后面实验对比网络会涉及到ShuffleNet sX的概念) 4、实验我们主要在ImageNet 2012分类数据集上评估模型。 4.1 消融实验4.1.1 Pointwise Group Convolutions为了评估Pointwise Group Convolutions的重要性,我们比较了具有相同复杂度的但分组凑够1~8的ShuffleNet模型。如果组数=1那就不涉及Pointwise Group Convolutions。实验结果见表2
对于模型越小,由分组获得的增益越大我们认为对于给定的复杂性约束,组卷积允许更多的特征图,所以假设性能的提高来自更宽(通道数)的特征图,而更小的网络包含更薄的特征图,所以分组后通道拓宽后增益更多(相当于都是增加5RMB,你越穷则收益率越高)。 对于ShuffleNet 0.5X的当g=8时表现更差了,作者认为是分组太多,输出通道和上层的跨通道联系更少,可能会损害其表示能力(也就是之前和上层所有特征都打招呼,现在只能和上层几个打招呼) 4.1.2 Channel Shuffle vs. No Shuffle混洗操作的目的是实现多个组卷积层的跨组信息流。表3比较了有/无信道混洗的ShuffleNet结构(例如,组号被设置为3或8)的性能。这些评价是在三种不同的复杂程度下进行的。显然,频道混洗持续提高不同设置的分类分数。特别是,当组数相对较大时(例如g=8),通道混洗模型的性能明显优于对应的模型,这表明了跨组信息交换的重要性。 4.2 和其他结构单元的比较本文提出了ShuffleNet Uint,作者还在保持ShuffleNet结构时,用不同的比如VGG、GoogleNet、ResNeXt和Xception的典型单元来代替换ShuffleNet Uint,实现与其他网络的公平对比。 在ShuffleNet上采用表1所示的结构,将Stage2~4的ShuffleNet uint替换为其他结构,然后调整通道数以确保复杂性保持不变:
我们使用完全相同的设置来训练这些模型。结果如表4所示。在不同的复杂性下,我们ShuffleNet的表现远远超过大多数其他模型。有趣的是,我们发现特征通道和分类精度之间存在着经验关系。 4.3 和MobileNet以及其他模型比较4.2是否典型网络比较,这里是和同为轻量级的网络比较。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:33:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |