高效神经网络设计I

发布 : 2020-01-28 分类 : 深度学习 浏览 :

这段时间比较关注高效网络设计,因此写下此文做相关记录。
关于高效神经网络设计,我发现了一篇文章总结的不错,我也是从这篇文章出发的。

如何重新设计网络?

我将设计网络分为了五个层次:

  • 0、入门级,直接整体替换 backbone

例如将 VGG16 换为 mobilenet。

  • 1、初级,减 channel,砍 block

即成比例地降低一个经典网络的 channel,例如 channel 数降低为之前的 1/2;或者 stage 的 block 重复数减小,例如将某个 stage 的 block 重复数从 8 减小为 6。

  • 2、中级,替换 block

比如 mobilenetv2 出来了之后,整体将之前模型的 block 替换为 mobilenetv2 的 block;或者 shufflenetv2 出来之后,整体将之前模型的 block 替换为 shufflenetv2 的结构。

  • 3、高级,从头开始设计,集众家之所长

即理解业界各个经典模型背后的 motivation 以及解决思路,不再拘泥于生搬硬套。将各个经典模型背后的设计思路吃透,了然于胸,下笔如有神。

  • 4、科学家,设计出新的模块,为业界添砖加瓦,例如 depthwise separable convolutions,shuffle channel 等等。

设计思路

Depthwise separable convolutions

深度可分离卷积计做的一件是将普通的卷积操作分解为两步,这可以有效减少网络参数数量。

  • 1.先在 2D 尺度做卷积,
  • 2.再在通道尺度做卷积。

具体对比可参考此文:卷积神经网络中的 Separable Convolution

Low rank filter

目的:去除冗余,并且减少权值参数
方法:采用两个 K1 的卷积核替换掉一个 KK 的卷积核
参考此文:模型压缩中的低秩分解

Pointwise group convolution

pointwise convolution 和 channel shuffle 的组合

参考此文:ShuffleNet 阅读笔记

Dilated convolution

空洞卷积是卷积运算的一种方式,它增大了感受野却不丢失语义信息

避免网络分支太多,或者 group 太多

group 卷积就是将输入特征图的 channels Ci 差分为 g 个组,每组 Ci/g 个特征图
关于 group 参考此文:卷积神经网络 group 群卷积以及 group lasso

减少 element wise 的操作

即减少乘法操作

本文作者 : HeoLis
原文链接 : https://ishero.net/%E9%AB%98%E6%95%88%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E8%AE%BE%E8%AE%A1I.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

学习、记录、分享、获得

微信扫一扫, 向我投食

微信扫一扫, 向我投食