DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略(一)

简介: DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

ShuffleNetV2算法的简介(论文介绍)


     ShuffleNetV2是ShuffleNet的升级版本。


Abstract  

     Currently, the neural network architecture design is mostly  guided by the indirect metric of computation complexity, i.e., FLOPs.  However, the direct metric, e.g., speed, also depends on the other factors  such as memory access cost and platform characterics. Thus, this work  proposes to evaluate the direct metric on the target platform, beyond  only considering FLOPs. Based on a series of controlled experiments,  this work derives several practical guidelines for efficient network design.  Accordingly, a new architecture is presented, called ShuffleNet V2.  Comprehensive ablation experiments verify that our model is the stateof-the-art  in terms of speed and accuracy tradeoff.  

Keywords: CNN architecture design, efficiency, practical

摘要

     目前,神经网络体系结构设计大多以计算复杂度的间接度量为指导,即FLOPs。然而,直接度量(如速度)也取决于其他因素,如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接指标,而不仅仅是考虑故障。在一系列受控实验的基础上,得出了有效网络设计的几种实用指导原则。因此,提出了一种新的体系结构,称为ShuffleNet V2。综合消融实验验证了我们的模型在速度和精度上是最先进的。

关键词:CNN架构设计;高效;实用

Conclusion  

     We propose that network architecture design should consider the direct metric  such as speed, instead of the indirect metric like FLOPs. We present practical  guidelines and a novel architecture, ShuffleNet v2. Comprehensive experiments  verify the effectiveness of our new model. We hope this work could inspire future  work of network architecture design that is platform aware and more practical.

结论

     我们建议网络架构设计应考虑直接指标如速度,而不是间接指标(如FLOPs)。我们提出了实用的指南和一个新颖的体系结构,ShuffleNet v2.。综合实验验证新模型的有效性。我们希望这项工作能够激发未来网络架构设计的工作,使其具有平台意识和更实用性。


论文

Ningning Ma, XiangyuZhang, Hai-Tao Zheng, Jian Sun.

ShuffleNetV2: Practical Guidelines for Efficient CNN Architecture Design. ECCV 2018.

https://arxiv.org/abs/1807.11164



1、论文特点


     度量标准太单一:目前,神经网络架构设计主要由计算复杂度的间接度量(即FLOPs)所指导。然而,直接度量(例如,执行速度)还取决于诸如存储器访问成本和平台特性之类的其他因素。因此,作者建议评估目标平台上的直接度量,而不仅仅考虑FLOPs。

    ShuffleNetV2采用更好的度量标准:基于一系列对照实验,该论文为有效的网络设计提供了一些实用指南,并提出了一种称为ShuffleNetV2的新架构。



2、基于硬件平台的性能分析


1、四种不同计算复杂度的硬件平台上,测量四种网络架构的准确度(验证集上的ImageNet分类),速度和FLOPs


image.png


        在两个具有四种不同计算复杂度的硬件平台上测量四种网络架构的准确度(验证集上的ImageNet分类),速度和FLOPs。

(a,c)GPU结果,batchsize= 8.(b,d)ARM结果,batchsize= 1。在所有情况下,性能最佳的算法,即论文提出的ShuffleNetv2(位于右上角区域)的准确度、复杂度都有明显提高。



2、ShuffeNetv1 和 MobileNetv2 两个架构在不同计算平台上的分解

     在两个具有代表性的最先进的网络架构上运行时分解:ShuffeNetv1 (1×, g = 3) 和 MobileNetv2 (1×).

     Run time decomposition on two representative state-of-the-art network architectures, ShuffeNetv1 (1×, g = 3) and MobileNetv2 (1×). 比如卷积操作、Shuffle操作、Elemwise逐点操作等操作所需时间占比分布图,明显的看出:

(1)、卷积操作占用了大部分的计算量,Elemwise逐点操作次之。

(2)、不同的操作平台,比如卷积操作占用时间也不一样。


image.png



3、间接指标(FLOPs)和直接指标(速度)之间的差异


分析——问题原因:间接指标(FLOPs)和直接指标(速度)之间的差异可归因于两个主要原因:


1、首先,FLOPs没有考虑几个对速度有相当影响的重要因素。

(1)、一个这样的因素是存储器访问成本(MAC,memory access cost )。在诸如组卷积的某些操作中,这种成本占运行时的很大一部分。它可能是具有强大计算能力的设备(例如GPU)的瓶颈。在网络架构设计中不应忽略此成本。

(2)、另一个是并行度。在相同的FLOPs下,具有高并行度的模型可能比具有低并行度的另一个模型快得多。

2、其次,具有相同FLOPs的操作,可能具有不同的运行时间,具体取决于平台。例如,张量分解广泛用于早期工作以加速矩阵乘法。然而,最近的工作发现尽管分解将FLOPs降低了75%,在GPU上甚至更慢。当然不能认为3×3转换,比1×1转换慢9倍。作者发现这是因为最新的CUDNN 库专门为3×3卷积转换而优化。

思考——解决方法:通过这些观察,作者提出应该考虑两个原则来进行有效的网络架构设计。


首先,应该使用直接度量(例如,速度)而不是间接度量(例如,FLOPs)。

其次,应在具体的目标平台上,进行评估此类指标。


3、该论文实验采用的硬件


作者的研究是在两个广泛采用的硬件上进行的,具有CNN库的行业级优化。


GPU:使用单个NVIDIA GeForce GTX 1080Ti。卷积库是CUDNN 7.0 。还激活了CUDNN的基准测试功能,分别为不同的卷积选择最快的算法。

ARM:Qualcomm Snapdragon 810。使用高度优化的基于Neon的实现。评估时使用单个线程。其他设置包括:接通完全优化选项(例如,用于减少小操作的开销的tensor fusion)。输入图像大小为224×224。


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的优化算法及其应用
本文旨在探讨深度学习中常用的优化算法,包括梯度下降、动量方法、AdaGrad、RMSProp和Adam等。通过分析每种算法的原理、优缺点及适用场景,揭示它们在训练深度神经网络过程中的关键作用。同时,结合具体实例展示这些优化算法在实际应用中的效果,为读者提供选择合适优化算法的参考依据。
|
6天前
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
13天前
|
算法 调度
贪心算法基本概念与应用场景
尽管贪心算法在许多问题中都非常有效,但它并不总是会产生最优解。因此,在应用贪心算法前,重要的是先分析问题是否适合采用贪心策略。一些问题可能需要通过动态规划或回溯等其他算法来解决,以找到确切的全局最优解。
44 1
WK
|
15天前
|
机器学习/深度学习 算法 数据挖掘
PSO算法的应用场景有哪些
粒子群优化算法(PSO)因其实现简单、高效灵活,在众多领域广泛应用。其主要场景包括:神经网络训练、工程设计、电力系统经济调度与配电网络重构、数据挖掘中的聚类与分类、控制工程中的参数整定、机器人路径规划、图像处理、生物信息学及物流配送和交通管理等。PSO能处理复杂优化问题,快速找到全局最优解或近似解,展现出强大的应用潜力。
WK
19 1
|
6天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
8天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
8天前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
11天前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
21天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
27 3
下一篇
无影云桌面