论文阅读笔记---ShuffleNet V1
01 ShuffleNet V1要解决什么问题
为算力有限的嵌入式场景下专门设计一个高效的神经网络架构。
02 亮点
使用了两个新的操作:pointwise group convolution和channel shuffle。
根据这两个操作构建了ShuffleUnit,整个ShuffleNet都是由ShuffleUnit组成。
所谓的的pointwise group convolution就是分组卷积与1x1卷积的结合!!!
2.1 Channel Shuffle

shuffle的步骤如下:
- 假设一个卷积层上有g组,每组有n个通道,最后输出就有g×n个通道。
- reshape成(g,n) 。
- 转置成(n,g)。
- 展开(flatten),再分成g组,作为下一层的输入。
2.2 Shuffle Unit

图(a)是残差卷积模块,标准3×3卷积转换为深度可分离卷积与1×1卷积的组合。中间加上BN和ReLU,构成基本单元。
图(b)是Shuffle Unit,将图(a)中的第一个1×1卷积替换成1×1组卷积(GConv)和channel shuffle组成的单元。
图(c)是用于降采样的Shuffle Unit,深度可分离卷积的步长改为2,为了适配主分支的feature map,在shortcut上加上了步长也为2的平均池化(AVG Pool 3×3 )。
2.3 网络架构

03 效果如何?
- 在ImageNet分类和MS COCO目标检测任务上取得了比其他轻量化模型更高的准确率,如MobileNet v1。
- 在ARM设备上,ShuffleNet的速度比AlexNet快了13倍。
04 还存在什么问题?
- 超参数如组卷积的组数以及通道压缩比率等需要根据实际情况决定,不同任务下需要自行调整。
- 网络实时性并不能单纯以浮点计算量来衡量,还存在memory access cost(MAC)等因素的干扰,并不能仅仅根据计算量就认为ShuffleNet是最快的。
- 通道的Shuffle是人工设计的,不是模型自己学习的,不符合网络通过负反馈自动学习特征的基本原则,又陷入人工设计特征的老路!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!