13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客

1.1 简介

ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型,主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本,重点在于提供更高效的模型设计,同时保持或提升模型的准确性。

核心设计理念:

  • 高效性与准确性并重:ShuffleNet V2的设计初衷是解决深度学习模型在移动端和嵌入式设备上部署时面临的效率与准确性之间的权衡问题。它旨在以最少的计算资源和内存占用,达到尽可能高的分类或检测准确率。

  • 通道重排(Channel Shuffle):这一特性从ShuffleNet V1继承而来,通过随机打乱不同组内的通道,促进特征的混合,增加模型的表达能力。这有助于模型学习到更加丰富的特征组合,从而提升性能。

主要创新点:

  1. 分层结构优化:不同于V1,V2版本通过引入更复杂的块(blocks)设计来优化网络结构。每个块可能包含多个路径,每个路径具有不同的功能,如特征提取、特征重组等,这样的设计能更高效地利用计算资源。

  2. 均衡通道宽度:研究发现,保持每层网络的通道数相对均衡可以减少内存访问的开销,并且对模型性能影响不大。因此,ShuffleNet V2采用了所有层通道数相等的设计原则,这有助于模型在移动设备上更快运行。

  3. 组卷积的改进应用:虽然组卷积能有效减少计算量,但过度分组会导致模型性能下降。V2通过精细调整组的数量和结构,找到了计算效率和模型性能之间的最佳平衡点。

  4. 直接面向实际运行速度的优化:在设计过程中,除了理论上的计算量(FLOPs)外,研究者还直接考虑了模型在实际硬件上的运行速度。这意味着在设计决策中融入了对实际部署环境的考量,包括CPU和GPU的特定性能特征。

  5. 计算和内存访问成本的细致优化:通过对模型内部的元素级操作(如ReLU、Addition)进行深入分析和优化,减少了不必要的计算负担和内存访问,进一步提升了模型的运行效率。

ShuffleNet V2由于其出色的效率和性能,在移动设备、智能安防、自动驾驶以及各种IoT设备上的视觉应用中得到了广泛应用。它的设计原则和优化思路也为后来的轻量化网络设计提供了宝贵的经验和指导,推动了深度学习模型在实际应用中的普及和发展。

shuffleNet出自论文《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》,下面我们来学习一下这篇论文。
 

1.2 四条轻量化网络设计原则

准则一和准则二:

对于V2,用了大量的分组1x1卷积。

准则三:(碎片化指分支多,网络较宽)

准则四:(尽量回避主元素操作)

1.3 V2的模型结构

ShuffleNet V2相比V1有几项关键改进和特点,这些改进主要是为了进一步提升模型的效率和准确性,特别是在移动端和嵌入式设备上的表现。以下是ShuffleNet V2相较于V1的一些主要特点:

  1. 更高效的结构设计
    • V2放弃了V1中的基于瓶颈模块的设计,转而采用一种新的结构,称为“ShuffleNet块”。这种设计通过重新安排层的顺序和结构,减少了计算成本,同时保持了模型的表达能力。
  2. 均衡的通道宽度
    • V2提出了一种“均衡通道宽度”的设计理念,即网络中所有层的通道数保持一致或接近。这与V1中通道数随深度增加而增加的做法不同。实验表明,这种设计能降低内存访问成本(MAC),提升运行效率,且对准确性影响较小。
  3. 优化的组卷积策略
    • 在V2中,对组卷积(group convolution)的使用进行了优化,避免了过量分组可能带来的性能下降。通过合理设置组数,V2在减少计算量的同时,确保了模型的表达能力不受太大影响。
  4. 直接优化实际运行速度
    • 设计时不仅考虑理论上的计算复杂度(FLOPs),更侧重于模型在实际设备上的运行速度。这意味着V2在设计时充分考虑了硬件特性,如内存带宽和计算单元的利用率。
  5. 减少元素级操作
    • 为了避免element-wise操作(如加法)造成的额外计算负担,V2中使用concatenation(连接操作)代替了部分element-wise操作,减少了计算成本,提升了运行效率。
  6. 通道重排的改进位置
    • 相对于V1中channel shuffle的位置,V2将其放置在block的不同位置,以更好地适应新的结构设计,进一步促进了特征的混合和信息的流通。
  7. 新增操作
    • 在全局平均池化(Global Average Pooling, GAP)之前添加了一个额外的卷积层(conv5),这是V2相比于V1的一个显著区别,旨在进一步提炼特征,提升模型的分类性能。

右侧是V2的结构。我们先看基本模块。V2在基本模块采用了一个“channel Split”操作,就是把一半的通道数走左边的路,另一半通道数走右边的路,且注意:V2的1x1卷积并不是像V1那样是分组1x1卷积。然后采用concat(摞在一起连接)操作而不是逐元素相加(ADD)的操作

可以看到V2是满足轻量化网络的四条设计原则的。

V2的模型结构如下图:

和DenseNet的特征复用相比较,类似的地方:

ShuffleNetV2通过模型的结构实现了不同层之前模型的共享和复用。这种效果和DenseNet相比是很类似的。

1.4 V2的性能

 图为ShuffleNetV2与部分其他轻量化的网络比较:

2.pytorch模型复现

马上更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/759788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java知识点整理 12 — 前端 Ant Design Pro 初始化模板使用

一. 项目初始化 Ant Design Pro 是基于 Ant Design 和 umi 封装的一整套企业级中后台前端设计框架,致力于在设计规范和基本组件的基础上,继续向上构建,提炼出典型模板或配套设计资源,进一步提升企业级中后台产品设计研发过程中的…

【Qt知识】window frame 对窗口坐标的影响

在Qt中,窗口框架(Window Frame)对Widget的尺寸计算和坐标定位有着直接的影响,这主要是因为窗口框架本身占据了一定的空间,包括标题栏、最小化/最大化/关闭按钮以及边框。这部分额外的空间在不同的应用场景下需要被考虑…

Android Graphics 显示系统 - BufferQueue的状态监测

“ BufferQueue作为连接生产者和消费者的桥梁,时刻掌握队列中每一块Buffer的状态,对于解决一些卡死卡顿问题很有帮助,辨别是否有生产者或消费者长期持有大量Buffer不放导致运行不畅的情况。” 01 — 前言 在Android系统中,应用U…

C#进阶-ASP.NET WebForms调用ASMX的WebService接口

ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式,通过公开 Web 方法,允许远程客户端调用这些方法并获取数据。本文介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口,以及使…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖,差点没时间更新博客了,所谓一日未脱贫,打工不能停,搬砖不狠,明天地位不稳呀。 不多说了,且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

ThreadPoolExecutor 工作线程Worker自身锁设计

个人博客 ThreadPoolExecutor 工作线程Worker自身锁设计 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker,主…

【LeetCode】 740. 删除并获得点数

这真是一道好题!这道题不仅考察了抽象思维,还考察了分析能力、化繁为简的能力,同时还有对基本功的考察。想顺利地做出这道题还挺不容易!我倒在了第一步与第二步:抽象思维和化繁为简。题目的要求稍微复杂一些&#xff0…

大模型压缩-LoRAP

这里写目录标题 1.多头注意力和FFN的权重分布2 多头矩阵的低秩分解FFN无梯度通道剪枝 这篇文章 1期望找到一个“剪枝+低秩分解”的路子,使结构化剪枝达到非结构化剪枝的性能。 1.多头注意力和FFN的权重分布 Fig. 1.1 多头注意力权重矩阵 从Fig.1.1可以看…

《昇思25天学习打卡营第17天 | 昇思MindSporeCycleGAN图像风格迁移互换》

17天 本节学习了CycleGAN图像风格迁移互换。 CycleGAN即循环对抗生成网络,该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。该模型一个重要应用领域是域迁移,可以通俗地理解为图像风格迁移。其实在 CycleGAN 之前&a…

Vue下载接口返回流的处理

1.下载接口返回流如下: 2.可以写公共方法处理 excelDownload(obj, name Date.now(), suffix xlsx) {//Date.now()获取当前日期const url window.URL.createObjectURL(//Blob是二进制大对象new Blob([obj], { type: application/vnd.ms-excel }))const aDOM docu…

Java知识点整理 15 — MyBatis框架

一. 什么是 MyBatis MyBatis 是一款优秀的持久层框架,支持自定义 SQL、存储过程以及高级映射。它免除了几乎所有 JDBC代码以及手动设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(普通老式 Jav…

distance delayed sound

distance delayed sound 在本章中,我们将讨论在游戏音频中使用距离延迟的重要性。我们将首先通过一个常见的例子——闪电和雷鸣,来展示这种重要性并解释距离延迟音频的基础知识。我们将讨论计算速度、距离和时间的数学和方程式,以确定距离延迟…

postgre事务id用完后,如何解决这个问题

在PG中事务年龄不能超过2^31 (2的31次方2,147,483,648),如果超过了,这条数据就会丢失。 PG中不允许这种情况出现,当事务的年龄离2^31还有1千万的时候,数据库的日志中就会 有如下告警: warning:…

pc端制作一个顶部固定的菜单栏

效果 hsl颜色 hsl颜色在css中比较方便 https://www.w3school.com.cn/css/css_colors_hsl.asp 色相(hue)是色轮上从 0 到 360 的度数。0 是红色,120 是绿色,240 是蓝色。饱和度(saturation)是一个百分比值…

模板方法模式在金融业务中的应用及其框架实现

引言 模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义一个算法的框架,而将一些步骤的实现延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在金融业务中&#xff…

Python的numpy简单使用

1.可以调用引入numpy里面的函数,如add可以把俩数相加,也可以创建一个数组arr,arr.shape是数组arr的属性,如果后有跟()就是里面的一个函数 type()函数可以知道里面是什么类型 变量.shape可以知道这个变量是…

[数据集][目标检测]猪只状态吃喝睡站检测数据集VOC+YOLO格式530张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):530 标注数量(xml文件个数):530 标注数量(txt文件个数):530 标注类别…

适配手机《植物大战僵尸杂交版》最新整合包,附Android、iOS、Windows保姆级教程和工具合集!

最近,新版的《植物大战僵尸杂交版》火爆全网啊!许多小伙伴不知道手机和电脑怎样安装设置才能畅玩《杂交版》,所以今天阿星特意为大家准备了一份安装工具集。 里面有安卓、iOS及电脑端的安装包,包含安装视频教程、修改器、防闪退、…

探索ChatGPT是如何改变癌症护理

了解生成式人工智能(尤其是 ChatGPT)如何通过高级数据集成和个性化患者管理来增强诊断和治疗,从而改变癌症治疗。了解 Color Health 的创新副驾驶模型及其对早期检测和患者结果的影响。 近年来,人工智能与医疗保健的融合为癌症治疗…

使用 fvm 管理 Flutter 版本

文章目录 Github官网fvm 安装Mac/Linux 环境Windows 环境 fvm 环境变量fvm 基本命令 Github https://github.com/leoafarias/fvmhttps://github.com/flutter/flutter 官网 https://fvm.app/ fvm 安装 Mac/Linux 环境 Install.sh curl -fsSL https://fvm.app/install.sh …