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。


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
6月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
267 0
|
5月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
348 3
|
5月前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
|
5月前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
5月前
|
机器学习/深度学习 算法 安全
小场景大市场:猫狗识别算法在宠物智能设备中的应用
将猫狗识别算法应用于宠物智能设备,是AIoT领域的重要垂直场景。本文从核心技术、应用场景、挑战与趋势四个方面,全面解析这一融合算法、硬件与用户体验的系统工程。
|
4月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
424 3
|
7月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
717 0