图像处理论文中parameters和FLOPs

2023-10-11 17:18

本文主要是介绍图像处理论文中parameters和FLOPs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看论文时经常遇到FLOPS and the number of parameters,不是很清楚是个什么东西,这篇文章给了一定的说明。
原文链接:https://blog.csdn.net/sinat_34460960/article/details/84779219

在这之前我们先看一下CNN的前向传播计算公式,便于理解什么是parameters和FLOPs,这里参考Andrew老师课堂上的课件,如下:

前向传播过程其实就是将输入或上层输出左乘以一个W,然后加上一个b,最后使用合适的\sigma函数进行激活的过程,结果便是下层的输入或是最终的输出,多层网络就不断重复这个过程。

如果要让网络自己学习到输入数据中的良好特征,一般而言就需要搭建较复杂的网络,也就是包含更多的层,更大的层,更复杂的层等等。这基本是一个正相关的过程,即隐藏在数据中的特征越高层,网络就要越复杂,当然这个复杂是有一个合适的度的,不然就存在欠拟合和过拟合的问题了。

于是这就会产生一些实践上的问题,一是这个复杂的网络到底需要多少参数才能定义它?二是数据过一遍这么复杂的网络需要多大的计算量呢?这也分别就是我们今天要讨论的两个量:parameters和FLOPs。

在本文中,我们以下图的AlexNet网络模型来说明在CNN中二者的计算过程:

parameters

从Andrew的前向传播PPT中,我们可以知道CNN中的parameters分为两种:Wb,注意这里W是大写,表示一个矩阵,也因此它相比b,既含有更多的信息,同时也是parameters的主要部分。

在AlexNet模型结构图中,每个大长方体中的小长方体就是W,它是大小为[K_h, K_w, C_{in}]的三维矩阵,其中K_h表示卷积核(filter或kernel)的高度,K_w表示卷积核的宽度,C_{in}表示输入的通道数(Channels),一般情况下,K_hK_w的大小是一样的,且一般比较小,3、5、7之类。

同时由于CNN特点,我们知道,一个卷积核在输入数据上从左往右、从上往下扫一遍,便会计算出很多个前向传播的值,这些值就会按原来相对位置拼成一个feature map,当然一个卷积核提取的信息太过有限,于是我们需要N个不同的卷积核各扫数据,于是会产生N个feature map,这N个feature map在拼在一起就是这一层的输出,也是一个三维矩阵,即大长方体。设每个卷积核扫一遍之后输出的高度和宽度分别为H, W(注意区分两个W),同时N就是输出的通道数,记作C_{out},则输出矩阵大小为[H, W, C_{out}}]

例如在从AlexNet图中左边第一个大长方体(输入图片)到第二个大长方体(图中是两个并列小长方体,这是作者分布式训练的需要,这里分析时可以将二者并起来看)这个过程,即是从[H, W, C_{in}] = [224, 224, 3]的矩阵,经过[K_h, K_w, C_{in}] = [11, 11, 3]的卷积核,变为[H, W, C_{out}] = [55, 55, 48+48]的矩阵的过程。

注意到两个特点,一是W是一个三维矩阵,通道数始终和输入数据保持一致,所以实际是二维空间的扫描,二是W在扫描的过程中是不变的,即一个卷积核是扫一遍数据而不是某个点。于是对于AlexNet模型的第一层卷积,W的大小是[K_h, K_w, C_{in}] = [11, 11, 3],个数是N,也就是C_{out} = 96,于是这一个卷积层的parameters中权重的个数为(K_h * K_w * C_{in}) * C_{out} = (11 * 11 * 3) * 96 = 34,848

另外对于b,从前向传播公式可以看出,和W是一一对应的,维度也和W是对应的,即[C_{out}, ],还是对于AlexNet的第一个卷积层,parameters中偏置的个数为C_{out} = 96

于是我们可以总结出规律:对于某一个卷积层,它的parameters个数为:(K_h * K_w * C_{in}) * C_{out} + C_{out},参数定义同上文。

刚才讲的都是对于卷积层的,对于全连接层,比如AlexNet的后三层,其实要更简单,因为这实际是两组一维数据之间(如果是卷积层过度到全连接层,如上图第5层到第6层,会先将第5层三维数据flatten为一维,注意元素总个数未变)的两两连接相乘,然后加上一个偏置即可。所以我们也可以总结出规律:对于某个全连接层,如果输入的数据有N_{in}个节点,输出的数据有N_{out}个节点,它的parameters个数为:N_{in} * N_{out} + N_{out}如果上层是卷积层,N_{in}就是上层的输出三维矩阵元素个数,即三个维度相乘。

FLOPs

首先介绍一个很形似的概念——FLOPS:全称是floating point operations per second,意指每秒浮点运算次数,即用来衡量硬件的计算性能,比如nvidia官网上列举各个显卡的算力(Compute Capability)用的就是这个指标,如下图,不过图中是TeraFLOPS,前缀Tera表示量级:MM,2^12之意。

这里我们讨论的FLOPs全称是floating point operations,即表示浮点运算次数,小s后缀是复数的缩写,可以看做FLOPS在时间上的积分,区别类似速度和时间。

同样从Andrew的前向传播PPT中,我们也可以看到,这里的浮点运算主要就是W相关的乘法,以及b相关的加法,每一个W对应W中元素个数个乘法,每一个b对应一个加法,因此好像FLOPs个数和parameters是相同的。

但其实有一个地方我们忽略了,那就是每个feature map上每个点的权值是共享,这是CNN的一个重要特性,也可以说是优势(因此才获得特征不变性,以及大幅减少参数数量),所以我们在计算FLOPs是只需在parameters的基础上再乘以feature map的大小即可,即对于某个卷积层,它的FLOPs数量为:[(K_h * K_w * C_{in}) * C_{out} + C_{out}] * (H * W) = num\_params * (H * W),其中num\_params表示该层参数的数目。

还是里AlexNet网络第一卷积层为例,它的FLOPs数目为: [(11 * 11 * 3) * 96 + 96] * (55 * 55) = 105,705,600

对于全连接层,由于不存在权值共享,它的FLOPs数目即是该层参数数目:N_{in} * N_{out} + N_{out}

小结

运用上面的规律,我们便可以很轻松地计算出AlexNet网络的parameters和FLOPs数目,如下图(来自网络,出处已不可考):

这里不再重复举例。但是其中就是有一个地方和我算的有出入:第四卷积层的FLOPs数目,我计算是:1.3M * 13 * 13 = 219.7M,图中是112M

最后还要说一点关于FLOPs的计算,在知乎上也有讨论,另外Nvidia的Pavlo Molchanov等人的文章的APPENDIX中也有介绍,由于是否考虑biases,以及是否一个MAC算两个operations等因素,最终的数字上也存在一些差异。但总的来说,计算FLOPs其实也是在对比之下才显示出某种算法,或者说网络的优势,如果我们坚持一种计算标准下的对比,那么就是可以参考的,有意义的计算结果。

 

参考链接:

均已在文中用超链接显示。

这篇关于图像处理论文中parameters和FLOPs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189602

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略 参考论文 无水印

持续更新中,2024年数学建模比赛思路代码论文都会发布到专栏内,只需订阅一次!  完整论文+代码+数据结果链接在文末!  订阅后可查看参考论文文件 第一问 1.1 问题重述 这个问题围绕的是华北山区的某乡村,在有限的耕地条件下,如何制定最优的农作物种植策略。乡村有 34 块露天耕地和 20 个大棚,种植条件包括粮食作物、蔬菜、水稻和食用菌。除了要考虑地块的面积、种植季节等,还要确保

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探