神经网络学习小记录72——Parameters参数量、FLOPs浮点运算次数、FPS每秒传输帧数等计算量衡量指标解析
神经网络学习小记录72——Parameters参数量、FLOPs浮点运算次数、FPS每秒传输帧数等计算量衡量指标解析
- 学习前言
- 网络的运算时组成
- 我们要关注网络的什么指标
- 1、Parameters参数量
- 2、FLOPs 浮点运算次数
- 3、Latency 延迟
- 4、FPS 每秒传输帧数
- 指标间的关系
- 网络的运算速度与什么有关?
学习前言
很多同学在学习时想到轻量化这一优化方案,但常常面对到一个困境是为什么参数量减少了,速度反而变慢了?在这个博客中,我会对网络中常用的计算量衡量指标进行解析。
网络的运算时组成
目前大部分的轻量级模型在对比模型速度时用的指标是FLOPs,这个指标主要衡量的就是卷积层的乘法操作。
但是实际运用中会发现,同一个FLOPS的网络运算速度却不同,只用FLOPS去进行衡量的话并不能完全代表模型速度。
这是ShuffleNetV2论文里的一张图,网络的运行时间分解不同的组成部分。由图可以得出虽然卷积占用了大部分时间,但其他操作,包括数据I/O和Element-wise(AddTensor、ReLU等)也占用了大量时间。
因此,单单优化网络在执行卷积时所花费的时间有一定的效果,但仍然要关注运行时间的其它组成部分。
我们要关注网络的什么指标
来看一下这幅图,这是YoloX中的消融实验图,它给出了五个指标,各位同学自己在写论文的时候,一般这么多指标就够了。毕竟YOLOX这样的SOTA论文才这么多指标。
该图里包含了几个指标:
指标 | 含义 |
---|---|
AP(%) | 这个代表了目标检测算法的检测精度。 |
Parameters | 参数量,指模型含有多少参数。 |
GFLOPs | FLOPs 是浮点运算次数,可以用来衡量算法/模型复杂度GFLOPs。为十亿(1e9)次的浮点运算。 |
Latency | 网络前向传播的时间,1 ms=1e-3 s,10.5ms=0.0105s |
FPS | 每秒传输帧数,FPS=1/Latency,1/0.0105=95.2 |
1、Parameters参数量
Parameters 参数量。参数量指的是模型所包含的参数的数量,比如我们模型中使用到的卷积、全连接里面的权值矩阵对应的每一个数字,都是参数量的组成。以YoloV3算法为例,其参数量为62,001,757。一般被缩写为62.00M。
以YoloV3算法为例,其参数量为62,001,757。一般被缩写为62.00M。需要注意的是,模型的参数量并不等于存储空间大小,存储空间的单位是MB(或者KB)而不是M。
2、FLOPs 浮点运算次数
再来看一下FLOPs参数,需要注意的是FLOPS和FLOPs是不一样的。
FLOPS是处理器性能的衡量指标,是“每秒所执行的浮点运算次数”的缩写。
FLOPs是算法复杂度的衡量指标,是“浮点运算次数”的缩写,s代表的是复数。
在很多论文里面呢,FLOPs是用来衡量算法复杂度的指标,但算法复杂度往往不等同于算法的运算速度。Efficientdet就是非常典型的例子,FLOPs很小,但速度慢,占用显存大。
3、Latency 延迟
Latency指一般是网络预测一张图片所用的时间,按照上图YoloX所示,应该是不包括后处理(without post processing)的。也就是单单包含了网络前传部分的时间。
4、FPS 每秒传输帧数
FPS指的是每秒传输帧数。FPS=1/Latency。在求得上述的Latency 延迟后可以很容易的求出FPS,求个倒数即可。
指标间的关系
- Parameters低 ≈ FLOPs低。( FLOPs基本和Parameters成正关系,不过FLOPs还和输入进来的图片大小有关,输入图片越大,FLOPs 越大)
- FLOPs低 ≠ Latency低。( FLOPs低 ≠ FPS高,最典型的例子就是EfficientNet,EfficientNet使用了大量的低FLOPs、高数据读写量的操作,即深度可分离卷积操作。这些具有高数据读写量的操作,受到了GPU带宽的限制,算法浪费了大量时间在读写数据上,GPU算力也自然没有得到良好的应用)
- Parameters低 ≠ Latency低。( Parameters低 ≠ FPS高,同FLOPs,最典型的例子就是EfficientNet。)
网络的运算速度与什么有关?
网络的运算速度和各种各样的因素有关。主要有关于以下几点:
- 显卡:大多数SOTA算法用的都是V100或者A100。
- 网络结构:不是参数量越低速度越快,不是加两个深度可分离卷积,网络的速度就越快。有一个MAC的概念( Memory Access Cost ),在ShuffleNet V2的论文里提到了。深度可分离卷积便是一个高MAC,低参数量的操作。深度可分离卷积在CPU中表现更好。在一些特别高端的GPU上,深度可分离卷积甚至不如普通卷积。
- 网络的并行度:Inception是一个不断增加网络宽度的模型,它使用不同卷积核大小的卷积进行特征提取。但它的工作速度不是特别快。分多次就要算多次。
- 网络的层数:额外的操作如Relu,ADD都是没有参数量,但需要运算时间的操作。
- CUDA、CUDNN、深度学习算法框架版本影响:在1660ti显卡的机子上,YOLOX-S的FPS在torch1.7里为50多,在torch1.2里为20多。
神经网络学习小记录72——Parameters参数量、FLOPs浮点运算次数、FPS每秒传输帧数等计算量衡量指标解析相关推荐
- 神经网络学习小记录50——Pytorch 利用efficientnet系列模型搭建yolov3目标检测平台
神经网络学习小记录50--Pytorch 利用efficientnet系列模型搭建yolov3目标检测平台 学习前言 什么是EfficientNet模型 源码下载 EfficientNet模型的实现思 ...
- 神经网络学习小记录58——Keras GhostNet模型的复现详解
神经网络学习小记录58--Keras GhostNet模型的复现详解 学习前言 什么是GhostNet模型 源码下载 GhostNet模型的实现思路 1.Ghost Module 2.Ghost Bo ...
- 神经网络学习小记录26——Keras 利用efficientnet系列模型搭建yolov3目标检测平台
神经网络学习小记录26--Keras 利用efficientnet系列模型搭建efficientnet-yolov3目标检测平台 学习前言 什么是EfficientNet模型 源码下载 Efficie ...
- 神经网络学习小记录37——Keras实现GRU与GRU参数量详解
神经网络学习小记录37--Keras实现GRU与GRU参数量详解 学习前言 什么是GRU 1.GRU单元的输入与输出 2.GRU的门结构 3.GRU的参数量计算 a.更新门 b.重置门 c.全部参数量 ...
- 神经网络学习小记录2——利用tensorflow构建循环神经网络(RNN)
神经网络学习小记录2--利用tensorflow构建循环神经网络(RNN) 学习前言 RNN简介 tensorflow中RNN的相关函数 tf.nn.rnn_cell.BasicLSTMCell tf ...
- 神经网络学习小记录39——MobileNetV3(small)模型的复现详解
神经网络学习小记录39--MobileNetV3(small)模型的复现详解 学习前言 什么是MobileNetV3 代码下载 large与small的区别 MobileNetV3(small)的网络 ...
- 神经网络学习小记录-番外篇——常见问题汇总
神经网络学习小记录-番外篇--常见问题汇总 前言 问题汇总 1.下载问题 a.代码下载 b. 权值下载 c. 数据集下载 2.环境配置问题 a.20系列所用的环境 b.30系列显卡环境配置 c.CPU ...
- 神经网络学习小记录40——春节到了,用LSTM写古诗不?
神经网络学习小记录40--春节到了,用LSTM写古诗不? 学习前言 整体实现思路 github下载地址与B站连接 代码实现 1.数据处理 a.读取古诗并转化为id b.将读取到的所有古诗转化为6to1 ...
- 神经网络学习小记录68——Tensorflow2版 Vision Transformer(VIT)模型的复现详解
神经网络学习小记录68--Tensorflow2版 Vision Transformer(VIT)模型的复现详解 学习前言 什么是Vision Transformer(VIT) 代码下载 Vision ...
最新文章
- C socket编程
- [Hadoop in China 2011] 何鹏:Hadoop在海量网页搜索中应用分析
- Xcode:Foundation框架找不到,或者是自动提示出现问题
- Scala的List集合和Set集合
- cisco交换机端口“假死”现象
- 2020-08-18 每日一句
- Javascript基础——函数
- 重写QLabel实现图片显示框选截取保存
- dnf怎么显示连接服务器失败怎么回事,登录DNF显示连接不到服务器怎么办 服务器连接失败解决方法...
- 笔记本双网卡带宽叠加上网
- HDU - 1548 A strange lift
- Windows 11 企业版,安装或执行程序时有时会报错:文件系统错误(-1073740771)
- Transphorm第三代经JEDEC认证的GaN半导体将助力稳态光电全新的1.6 kW钛金级ATX PC游戏电源
- 利用Pocket阅读墙外博客
- 关于工作和生活的点滴心得
- 爬虫抓取某饿了app商铺的评论数据
- 小写数字转大写 一二三...
- YYText使用遇到的问题--文本无法点击
- maven下载不到源码:Cannot download sources Sources not found for:
- 已知顺丰快递既可以发陆运,也可以发空运;EMS只能发空运,圆通只能发陆运。 小明现在发送快递,为其设计两个方法,分别用来发空运和陆运。
热门文章
- 怎么设置table(表格)手机端自适应宽度
- 零基础java自学流程-Java语言高级269
- 人脸老化,让你预见30年后的自己
- Python将某一文件夹下的Coursera课程字幕.vtt格式全部转换为.srt格式
- 面试之谈谈你对Spring的理解
- 奇妙的毛巾折叠术,生活中的美好随处可在,只要用心去寻找
- python提取字符串中的大写字母、小写字母
- ps aux | grep 无法过滤点号
- Mac中Vscode总是报‘Linter pylint is not installed.’解决办法
- 【Python】python安装步骤