深度学习与CV教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)

本文详细介绍了轻量级深度学习网络,包括SqueezeNet的Fire Module和压缩策略,Xception的Depthwise Seperable Convolution,ShuffleNet的Group Conv与Channel Shuffle,以及MobileNet V1~V3的核心思想和优化。通过这些网络设计,可以在保持精度的同时降低计算复杂度,适用于移动设备和嵌入式场景。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

ShowMeAI研究中心


前言

卷积神经网络的结构优化和深度加深,带来非常显著的图像识别效果提升,但同时也带来了高计算复杂度和更长的计算时间,实际工程应用中对效率的考虑也很多,研究界与工业界近年都在努力「保持效果的情况下压缩网络复杂度」,也诞生了很多轻量化网络。在本篇内容中,ShowMeAI对常见主流轻量级网络进行展开讲解。

本篇重点

  • 神经网络参数与复杂度计算
  • 轻量化网络
  • SqueezeNet
  • Xception
  • ShuffleNet V1~V2
  • MobileNet V1~V3

1.基础知识

我们先来做一点基础知识储备,本篇讲到的轻量化CNN框架,我们需要了解参数量和计算量的估测与计算方式。

1.1 复杂度分析

  • 理论计算量(FLOPs):浮点运算次数(FLoating-point Operation)
  • 参数数量(params):单位通常为 MMM,用 float32 表示。

1.2 典型结构对比

  • 标准卷积层 std conv(主要贡献计算量)
    • params:kh×kw×cin×coutkh×kw×cin×coutk_h\times k_w\times c_{in}\times c_{out}
    • FLOPs:kh×kw×cin×cout×H×Wkh×kw×cin×cout×H×Wk_h\times k_w\times c_{in}\times c_{out}\times H\times W
  • 全连接层 fc(主要贡献参数量)
    • params:cin×coutcin×coutc_{in}\times c_{out}
    • FLOPs:cin×coutcin×coutc_{in}\times c_{out}
  • group conv
    • params:(kh×kw×cin/g×cout/g)×g=kh×kw×cin×cout/g(kh×kw×cin/g×cout/g)×g=kh×kw×cin×cout/g(k_h\times k_w\times c_{in}/g \times c_{out}/g)\times g=k_h\times k_w\times c_{in}\times c_{out}/g
    • FLOPs:kh×kw×cin×cout×H×W/gkh×kw×cin×cout×H×W/gk_h\times k_w\times c_{in}\times c_{out}\times H\times W/g
  • depth-wise conv
    • params:kh×kw×cin×cout/cin=kh×kw×coutkh×kw×cin×cout/cin=kh×kw×coutk_h\times k_w\times c_{in}\times c_{out}/c_{in}=k_h\times k_w\times c_{out}
    • FLOPs:kh×kw×cout×H×Wkh×kw×cout×H×Wk_h\times k_w\times c_{out}\times H\times W

2.SqueezeNet

轻量化网络中一个著名的网络是 SqueezeNet ,它发表于ICLR 2017,它拥有与 AlexNet 相同的精度,但只用了 AlexNet 1/50 的参数量。

SqueezeNet 的核心在于采用不同于常规的卷积方式来降低参数量,具体做法是使用 Fire Module,先用 1×11×11 \times 1 卷积降低通道数目,然后用 1×11×11 \times 1 卷积和 3×33×33 \times 3 卷积提升通道数。

2.1 压缩策略

SqueezeNet 采用如下3个策略:

  • ① 将 3×33×33 \times 3 卷积替换为 1×11×11 \times 1 卷积
  • ② 减少 3×33×33 \times 3 卷积的通道数
  • ③ 将降采样操作延后,这样可以给卷积提供更大的 activation map,从而保留更多的信息,提供更高的分类准确率。

其中,策略1和2可以显著减少模型参数量,策略3可以在模型参数量受限的情况下提高模型的性能。

2.2 Fire Module

Fire Module是SqueezeNet网络的基础模块,设计如下图所示:

SqueezeNet; Fire Module 模块

一个 Fire Module 由 Squeeze 和 Extract 两部分组成

  • Squeeze 部分包括了一系列连续的 1×11×11 \times 1 卷积
  • Extract 部分包括了一系列连续的 1×11×11 \times 1 卷积和一系列连续的 3×33×33 \times 3 卷积,然后将 1×11×11 \times 1 和 3×33×33 \times 3 的卷积结果进行concat。

记 Squeeze 部分的通道数为 Cs1×1Cs1×1C_{s{1\times 1}},Extract部分 1×11×11 \times 1 和 3×33×33 \times 3 的通道数分别为 Ce1×1Ce1×1C_{e{1\times 1}} 和 Ce3×3Ce3×3C_{e{3\times 3}},作者建议 Cs1×1<Ce1×1+Ce3×3Cs1×1<Ce1×1+Ce3×3C_{s{1\times 1}} \lt C_{e{1\times 1}} + C_{e{3\times 3}} ,这样做相当于在 Squeeze 和 Extraxt 之间插入了 bottlenet。

2.3 网络结构

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值