论文阅读笔记---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是人工设计的,不是模型自己学习的,不符合网络通过负反馈自动学习特征的基本原则,又陷入人工设计特征的老路!
posted @   珠峰上吹泡泡  阅读(571)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示