内涵:CVPR2019之GCNet解读

2024-06-05 23:38
文章标签 解读 内涵 cvpr2019 gcnet

本文主要是介绍内涵:CVPR2019之GCNet解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

non-local论文地址
non-local代码地址
gcnet论文地址
gcnet代码地址
senet论文地址
senet代码地址

        这篇文章是发表于CVPR2019上的一篇文章,文章花了相当多的文笔放在另外两篇文章Non-local(CVPR2018)和Senet(CVPR2018)之上。而且感情基调较为明显,较为质疑 Non-local的做法,中性略带赞赏性的评价Senet。
        这篇文章的思路来源于:作者发现,对于一副图片,不同的query positions 通过 non-local结构获得的全局上下文信息几乎一样。因此作者“质疑”这样“费力”(复杂的网络结构、计算量、参数量)的获得query-specific的全局上下文信息意义不大。因此提出了一个query-independent的Simpled NL(snl)结构。并且通过实验证明,简化之后,参数量、计算量下来了,性能却outperforms Non-local。同时作者还提出,本文提出的gc block结构和Senet都属于一种"三步骤"通用框架:1、全局上下文建模;2、channel-wise 依赖关系转换;3、特征融合。并认为Senet是这种通用框架的实例对象,而GcNet则是一种性能更佳的实例对象。
        无论是non-local还是本文所提出的gcnet都属于"long-range dependency “。它们的目的都是尽可能从"global"的角度来理解图像,而不至于陷入盲人摸象的地步。单靠传统的卷积层是无法自己做到这一点的(或者说做的不够好),原因在于一个卷积操作是对一个"local neighborhood"的pixel 关系进行建模。虽然可以通过不断的加深网络,来达到网络后半部分的神经元的感受野变大,达到一种不那么“local”的效果。但这种粗暴的加深网络的做,有如下三个缺点:
1、不够精巧,参数量、计算量粗暴拼凑出来的。
2、网络越深,优化难度越大。
3、不那么"local"并不代表全局,有最大距离的限制。
        对上面第三点的理解可以为:在网络的后半部分,feature map右下角的cell,感受野可能扩大了,但可能还是始终无法获得原图片上左上角的信息(因为卷积操作最大距离的限制)。
        与之对应的,一个理想的神经网络应该是:不要那么深,让用户优化的太困难;网络涉及的精巧一点,最好较少的参数量达到原始网络结构的性能;真正的做到全局,没有最大距离的限制。
        从最近阅读的几篇论文来看,精巧或者说light的网络block单元是现在研究人员追求的一个目标,毕竟现在深度学习领域感觉有点进入瓶颈期的意思,很多论文现在都是在计算量下降的情况下,性能提升0.x个点,这种操作了。而全局则是一个相对较为火爆的切入点之一。从non-local的名字就可以看出,它也是从’global’的角度切入。对于每一个query position,计算该query position与图中其他点之间的关系来提取该点的特征。
        然而,作者对non-local的attention map进行可视化后发现不同的query point对应的attention map几乎一样如,图1所示:图1
                                                        图1
       既然attention map与具体点的位置无关,一个最直观的反应是,那就不要每一个点单独算一个attention map了。用另外一种同样能够获得全局信息,但一个feature map上的点共用的特征吧。基于此,本文作者提出了简化版的NL(snl)。从网络结构上可以看是如图2的变化:
在这里插入图片描述
               图2
        一个直观的感觉是block结构确实简化了。实际运算的变化,可以见图3中的公式变化。关键部分在于+号后面的变化。Nonlocal+号后面的内容与xi有关,因此每一个点i,需要计算一次。而snl的表达公式+号后面的内容已与xi无关,也即计算一次,然后大家公用,也映证了上文所讲的query-independent。

在这里插入图片描述
在这里插入图片描述图3
        到目前为止,该网络结构还只能称之为snl。作者对snl做了一些结构的优化,就变成了最终的GC block。主要有两点:
1、对于nsl模块中右下角的1x1卷积,它的参数量是CINCOUT。例如,输入通道是2048,输出通道是2048。则参数量就是4000000。这样会导致该模块不够轻量级,无法插入网络的任意位置。作者是通过一个bottleneck结构来替换。这样参数量可以从2cin*cout/r(r通常设置为16)。
2、two-level bottleneck 的引入增加了网路优化的难度,因此作者引入了layer norm(作者论文中实验讲,这一加入还是蛮有效的,0.x个点吧)。
到这里作者发现gcnet的组成已经和senet很像了(如图4所示)。
在这里插入图片描述
                 图4

        这时,作者提出了一个“Global context modeling framework”来抽象这一类结构(也即博客开头提到的三步骤结构)。如图5所示

在这里插入图片描述
               图5
        毕竟作者是投稿CVPR这样的顶会,还是要有创新性的。作者在论文中也总结了自己提出的gcnet与senet网络之间的差异:
1、senet 在融合的时候使用的是rescale,而gcnet使用的是sum。因此"SE recalibrate the importance of channels but inadequately models long-range dependency"。
2、Layer-norm的使用。
3、SE中用于提取全局信息的global pooling 是GCNET global attention pooling的一种特例。
4、在有就是性能上,outferms senet网络。

思考:
1、自己读下来non-local和gcnet。感觉gcnet虽然批判non-local花费了很大的笔墨。但我自己感觉,创新性上,gcnet有限,暂时理解的是简单的调整一下网络拼装结构,然后总结一个三步框架。感觉用作实习生工作的阶段性汇报,可以,但中一篇cvpr顶会,暂时还没感受到它的太大的价值。相比较而言,non-local,思想上的query-special的思想和实现,对自己的启发感觉更大。

附录:由于这篇文章涉及到比较多的non-local。因此non-local就暂时不准备单独开一篇博客了,附上对于理解Non-local自己感觉比较重要的一段论文和图。
在这里插入图片描述
在这里插入图片描述

这篇关于内涵:CVPR2019之GCNet解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

Open-Sora代码详细解读(1):解读DiT结构

Diffusion Models专栏文章汇总:入门与实战 前言:目前开源的DiT视频生成模型不是很多,Open-Sora是开发者生态最好的一个,涵盖了DiT、时空DiT、3D VAE、Rectified Flow、因果卷积等Diffusion视频生成的经典知识点。本篇博客从Open-Sora的代码出发,深入解读背后的原理。 目录 DiT相比于Unet的关键改进点 Token化方

Transformer从零详细解读

Transformer从零详细解读 一、从全局角度概况Transformer ​ 我们把TRM想象为一个黑盒,我们的任务是一个翻译任务,那么我们的输入是中文的“我爱你”,输入经过TRM得到的结果为英文的“I LOVE YOU” ​ 接下来我们对TRM进行细化,我们将TRM分为两个部分,分别为Encoders(编码器)和Decoders(解码器) ​ 在此基础上我们再进一步细化TRM的

过滤器:活性碳过滤器的技术参数详细解读

活性碳过滤器是一种罐体的机械过滤器,外壳一般为不锈钢或者玻璃钢,内部填充活性炭,用来过滤水中的游离物、微生物、部分重金属离子,并能有效降低水的色度。活性炭过滤器是一种较常用的水处理设备,作为水处理脱盐系统前处理能够吸附前级过滤中无法去除的余氯,可有效保证后级设备使用寿命,提高出水水质,防止污染,特别是防止后级反渗透膜,离子交换树脂等的游离态余氧中毒污染。同时还吸附从前级泄漏过来的小分子有机物等