旷视 ShuffleNetV2

ops/2024/9/25 14:40:42/

目录

前言 

一、ShuffleNetV2带来的创新点四条轻量化网络设计原则

1.1 准则一:相同的输入输出通道数能够减少内存访问成本(MAC)

1.2 准则二: 过多的分组卷积会增加 MAC

 1.3 准则三: 网络的碎片化程度会减少并行化程度(碎片化操作对并行加速不友好)

1.4 准则四: 逐元素操作带来的内存和耗时是不可忽略的(不能忽略元素级操作)

二、ShuffleNetV2网络结构

2.1 ShuffleNetV2 Unit 

2.2 ShuffleNetV2网络结构

三、ShuffleNetV2 模型性能


前言 

2018年发表在ECCV上的论文

预备知识:机器学习、深度学习、计算机视觉
卷积神经网络概述
https://www.bilibili.com/video/BV1sb411P7pO
https://www.bilibili.com/video/BV1gb411P7JD
卷积神经网络精讲
https://www.bilibili.com/video/BV1K7411W7So?p=5
https://www.bilibili.com/video/BV1K7411W7So?p=6
经典卷积神经网络结构
https://www.bilibili.com/video/BV1K7411W7So?p=11
谷歌轻量化卷积神经网络MobileNet V1、MobileNet V2
https://www.bilibili.com/video/BV16b4y117XH
https://www.bilibili.com/video/BV1AL411G77N
旷视轻量化卷积神经网络ShuffleNet V1
https://www.bilibili.com/video/BV1dO4y1m7oY 

一、ShuffleNetV2带来的创新点四条轻量化网络设计原则

下图中四个饼图反映了不同的轻量化模型在不同的硬件平台上它们计算开销的分布。

      Ma 等人[12]发现,FLOPs 作为一个间接的指标,只能大致地估测运行速度,与速度并不完全相符。主要原因有两方面:一是很多操作无法被算入 FLOPs 中,例如内存访问成本(memory access cost,简称 MAC)、并行化程度等; 二是受到计算平台的影响。
      Ma 等人[12]提出了 4 种轻量级网络的指导方案:
(1) 相同的输入输出通道数能够减少内存访问成本(MAC);
(2) 过多的分组卷积会增加 MAC;
(3) 网络的碎片化程度会减少并行化程度;
(4) 不能忽略元素级操作。

1.1 准则一:相同的输入输出通道数能够减少内存访问成本(MAC)

     1×1卷积是在整个轻量化网络中计算量最大、参数量最多的部分,下图给出了在MobileNetV1论文中各层计算量和参数量的分布。

MobileNetV1 计算量和参数量分布

Input经过1×1卷积后得到Output这一过程中,FLOPs以及MAC计算如下所示:

在相同的输入输出通道数时内存访问成本(MAC)最少,证明如下:

实验如下: 
实验表明输入输出通道比为1:1时,模型推理是最快的。

准则一的验证实验

1.2 准则二: 过多的分组卷积会增加 MAC

准则二的理论证明:

准则二的验证实验 

准则二的验证实验

 

 1.3 准则三: 网络的碎片化程度会减少并行化程度(碎片化操作对并行加速不友好)

准则三的验证实验如下: 

譬如:InceptionV4 

譬如:NasNet  

 

1.4 准则四: 逐元素操作带来的内存和耗时是不可忽略的(不能忽略元素级操作)

二、ShuffleNetV2网络结构

2.1 ShuffleNetV2 Unit 

 根据1.1~1.4提及的轻量化网络设计准则,Ma等人设计出了ShuffleNetV2网络的基本单元。

(a) ShuffleNetV1基本模块
(b) ShuffleNetV1下采样模块
(c) ShuffleNetV2基本模块
(d) ShuffleNetV2下采样模块
基本模块中,长宽不变,通道数不变;下采样模块中,长宽减半,通道数加倍

 

2.2 ShuffleNetV2网络结构

来源:densenet论文
来源ShuffleNetV2论文

 

三、ShuffleNetV2 模型性能

 


http://www.ppmy.cn/ops/115820.html

相关文章

初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅

1. 背景 目标群体:鸿蒙初学者 版本:HarmonyOS 3.1/4.0 背景:鸿蒙 App 的全局路由管理功能,需要在 App 启动时初始化对 raw 下的相关配置文件进行读取、解析并缓存。App 启动时涉及到了大量模块的初始化,好多模块都涉…

【计算机网络 - 基础问题】每日 3 题(二十四)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

花园管理系统

基于springbootvue实现的花园管理系统 (源码L文ppt)4-074 4功能结构 为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该“花开富贵”花园管理系统的功能结构图如下所示: 图4-1 系统总体结…

Ubuntu24.04下编译OpenCV + OpenCV Contrib 4.10.0

1. 安装必要软件 sudo apt update sudo apt-get install -y build-essential sudo apt-get install -y cmake-gui git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install -y python3-dev python3-numpy libtbbmalloc2 libtbb-…

Lumen5——AI视频制作,提取关键信息生成带有视觉效果的视频

一、Lumen5介绍 Lumen5 是一款基于人工智能的自动化视频制作平台,专为非专业用户设计,帮助其将博客、文章、新闻等文字内容快速转换为视频。Lumen5 的目标是简化视频制作流程,让内容创作者、市场营销人员、社交媒体团队等无需视频制作经验即…

初识MySQL

1.初识MySQL 1.什么是数据库 数据库(Database,简称DB) 概念: 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库” 作用: 保存、管理数据 数据库总览 关系型数据库(…

怎么在Proteus中找到排阻

1、打开安装好的Proteus,点击上方菜单栏中的“库”,再选择“从库选取零件”,或者在左侧元件列表中单击鼠标右键,再点击右键菜单中的“从库中挑选”选项。 2、之后会打开元器件库,我们打开类别中的“Resistors”&#x…

详解 CMake 命令:启用详细 Makefile 输出

详解 CMake 命令:启用详细 Makefile 输出 这条 CMake 命令包含了一些重要的组成部分和参数,下面我将逐一进行解释: 命令概览 命令内容为: cmake ../Lesson1_1 -DCMAKE_VERBOSE_MAKEFILEON各部分解释 cmake: 这是调用 CMake 命…