[图神经网络]视觉图神经网络ViG(Vision GNN)--论文阅读

news2025/1/17 6:03:01

国际惯例:

论文地址icon-default.png?t=N2N8https://arxiv.org/pdf/2206.00272.pdfgit地址icon-default.png?t=N2N8https://github.com/huawei-noah/Efficient-AI-Backbones/tree/master/vig_pytorch        相较于之前将GNN和CNN结合的图像处理算法,ViG创新的将GNN直接用在了特征提取上。不再需要借用CNN提取的特征来构造图结构,这一点和ViT有异曲同工之妙。关于ViT可以参见:

[自注意力神经网络]Transfomer架构icon-default.png?t=N2N8https://blog.csdn.net/weixin_37878740/article/details/129343613?spm=1001.2014.3001.5501        中的第三节ViT部分,很巧合的是两者连思路都很相似。

一、概述

        ViG由两个模块组成

                ①Grapher模块:采用图卷积实现图信息的聚合和更新

                ②FFN模块:采用两个全连接层实现节点特征的变换

        对于图像任务而言,CNN仅能通过空间位置对像素点/patch进行排序,而在Transformer中,网格结构转换为了序列结构,这种方法显然不够灵活;而在GNN中,节点可以随意连接,并不受到于局部空间结构的约束。

        以图结构来表述图像有以下好处:

                ①图是一种广义的数据结构,网格结构和序列结构均可被视为一种特殊的图,故图具有更好的泛化能力。

                ②图像中的物体不一定是规则的矩形,图用来建模拥有更好的表达能力

                ③对象可以视为部分的组合(图结构能更好的表述这种联系)

        但是用图来构建图结构也势必存在一些问题,其中最显著的就是巨大的数据量,如果将每个像素点视为一个节点,将会为图结构带来海量的节点和连接。在论文中,图像会被分成若干个patch,这些patch将被用于后续的图结构构建。

二、网络结构

        1.图像的图结构

                ① 将一张H\times W\times 3的图像划分为N个patch;

                ②将每个patch转换为特征向量x_i\in R^D,组合后得到特征向量矩阵X=[x_1,x_2,...x_N]

这些特征向量可以被视为一组无序节点,记作V=\{v_1,v_2,...v_N\}

                ③对于每个节点v_i,找到其K个最近的邻居,这些邻居的集合记作N(v_i),并为整个集合中的邻居节点v_j添加由v_jv_ie_{ji}

                ④最终,由节点集V和边集\varepsilon可以得到图结构G=(V,\varepsilon )

        2.图卷积

                用以聚合来自邻居节点的特征来实现节点间信息的交换,对象为上面的图G=(V,\varepsilon )

                ①信息汇聚

                        {G}'=F(G,\omega )=Update(Aggregate(G,W_{agg}),W_{update}),式中的W_{agg}W_{update}均为可学习的权重。

                将这个操作细化到节点级,可以表述为:

                        {x_i}'=h(x_i,g(x_i,N(x_i),W_{agg}),W_{update}),式中N(x_i)为节点x_i的邻居节点集,

                        函数g( )则是最大卷积g(.)={x_i}''=[x_i,max(\{x_j-x_i|j\in N(x_i)\})]

                        函数h( )则表述为:        h(.)={x_i}'={x_i}''W_{update}

                又由于这个过程中偏置是省略的,故整个公式也能写作:{X}'=GraphConv(X)

                ②多头更新机制

                        将聚合特征{x_i}''分成h个head(head^1,head^2...head^h)然后用不同的权重更新这些head;所有head均进行更新,并将最后得到的值连接在一起。多头更新允许模型在多个表示子空间更新信息,有利于特征的多样性。

                        {x_i}'=[head^1W^1_{update},head^2W^2_{update},...,head^hW^h_{update}]

        3.ViG模块

                多个图卷积层的GCN会出现过渡平滑的现象从而导致视觉性能(由多样性下降导致)下降,为了缓和这个问题,ViG中引入了更多的特征变换非线性激活

                对于这种添加了非线性激活的GCN,本文称之为Grapher模块。对于输入X\in R^{N \times D},Grapher模块可以表述为:Y=\sigma(GraphConv(XW_{in}))W_{out}+X,式中激活函数\sigma一般采用ReLu或者GReLu,且偏置一般被省略。

        4.FFN网络(前馈网络)

                FFN网络为一个多层感知机,由两个全连层接构成。可以记作:

                        Z=\sigma(YW_1)W_2+Y,式中W_1,W_2为两个全连接层的权重,Z\in R^{N\times D},偏置项通常省略。在ViG网络中,每个全连接层和图卷积层都会在后面跟一个批量归一化

三、网络参数配置

        ViG具有两种架构,各向同性结构(isotropic architecture)(类似于ViT)和金字塔结构(pyramid architecture)(类似于ResNet)。

        1.各向同性结构

                整个网络拥有相同的大小和性状,本文构建了3中模型大小不同的网络,分别是ViG-TiViG-SViG-B。节点数量N=196,邻居节点数k从9到18个不等(用于扩大感受野),head数h设为4,性能和尺寸如下:

         2.金字塔结构

                金字塔结构可以随着层数的叠加来获取更多多尺度特征,本文设计了四种金字塔结构的ViG,详见下表

                 表中,D表特征尺寸,E表FFN中隐藏维数之比,K表GCN的感受野,HxW表图像大小

                位置编码:为了给每个节点添加位置信息,通过下面的式子向节点特征中添加编码向量:x_i\leftarrow x_i+e_i,节点 i 和节点 j 之间的相对距离e_i^Te_j会被添加到构造图的特征距离中(参照ViT)。

四、可视化

        可以在图中清晰的看到,在浅层中,邻居节点倾向于基于低级和局部特征(诸如颜色和纹理)来选择。在深层,中心节点的邻居更语义,属于同一类别。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419024.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker快速搭建SkyWalking[ OAP UI[登录] Elasticsearch]

文章目录[前置]:搭建ELasticsearch相关[零]:虚拟机开放SkyingWalking和ES相关端口[一]:拉取SkyWalking-oap和SkyWalking-ui镜像[二]: 运行SkyWalking的oap和ui 容器 2.1 - 运行Skywalking-oap容器 ---- 注意oap运行参数异常 no pr…

早有尔闻 | 数字赋能,提质增效

01 卡奥斯牵头国家重点研发项目 助力中小企业数字化转型升级 3月24日,2022年国家重点研发计划“面向中小企业研发制造资源技术工业互联技术服务平台”项目正式启动。其中,卡奥斯COSMOPlat作为平台承建方牵头课题4“研发制造资源工业互联技术服务平台研…

CDH6.3.2引入debezium-connector-mysql-1.9.7监听mysql事件

1、首先说明一下为啥选用debezium,它能够根据事务的提交顺序向外推送数据,这一点非常重要。再有一个结合kafka集群能够保证高可用,对于熟悉java语言的朋友后面一篇博文会介绍怎样编写插件将事件自定义路由到你想要的主题甚至分区中。 提高按顺…

百度「文心一言」阿里「通义千问」腾讯的AI将会叫什么呢

阿里于昨天2023.4.7下午上线通义千问,与ChatGPT类似,同样是基于语言模型训练的人工智能聊天平台。通义千问的核心功能分为四个大类:撰写短文、职场助理、电影脚本和写封邮件。 通义千问通义千问https://tongyi.aliyun.com/ 首页如下&#xf…

word文件上的电子签章的法律效力如何保证?

你有没有见过这样的word文件“电子签章”? 这种用PS制作的“电子签章”,或者在一些输入公司名称就能在线生成“电子签章”的小网站、小作坊买来的“电子签章”,通通都是没有法律效力的贴图章! 使用贴图章的word文件不但没有任何…

VsCode 将源代码管理(Working tree)中的新旧代码上下对比变为左右对比

文章目录一、默认设置二、左右布局变成了上下布局三、解决方法:将上下布局改为左右布局1:找到右上角的更多设置2:点击更多设置后点击【切换到并排视图】3:效果如下(还是原来的效果)四、左右切换成上下总结一…

Pytorch实现图像风格迁移(一)

图像风格迁移是图像纹理迁移研究的进一步拓展,可以理解为针对一张风格图像和一张内容图像,通过将风格图像的风格添加到内容图像上,从而对内容图像进行进一步创作,获得具有不同风格的目标图像。基于深度学习网络的图像风格迁移主要…

玩转Fastdfs

FastDFS FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件&#xff08;建议范围&#xff1a;4KB < file_size <500MB&#xff09;为载体的在线服务&#xff0c;如相册网站、视频网站等等 特性 文件不分块存储&am…

fast-lio2代码解析

代码结构很清晰&#xff0c;从最外层看包含两个文件夹&#xff0c;一个是fast-lio,另外一个是加上scan-context的回环检测与位姿图优化。 fast-lio 主要是论文的fast-lio2论文的实现&#xff0c;包括前向处理和ikd-tree的实现 1.先从cmakelist入手看代码结构&#xff1a; #这…

瑞芯微RK3568核心板强在何处?

RK3568核心板产品简介 RK3568核心板是武汉万象奥科基于瑞芯微Rockchip的RK3568设计的一款高性能核心板。该处理器集成了最新的高性能CPU、GPU&#xff0c;并拥有丰富的接口&#xff0c;非常适用于工业自动化控制、人机界面、中小型医疗分析器、电力等多种行业应用。 HD-RK3568-…

【Python】Json读写操作_JsonPath用法详解

【Python】Json读写操作_JsonPath用法详解 文章目录【Python】Json读写操作_JsonPath用法详解1. 介绍2. 代码示例3. 参考1. 介绍 JSONPath是一种信息抽取类库&#xff0c;是从JSON文档中抽取指定信息的工具&#xff0c;提供多种语言实现版本&#xff0c;包括Javascript、Pytho…

【dp】不同的子序列 两个字符串的删除操作 编辑距离

115. 不同的子序列 dp[i][j]&#xff1a;以j-1为结尾的t出现在以i-1为结尾的s子序列的个数 需要开辟m1行&#xff0c;n1列的二维数组 为啥状态方程是&#xff1a; s[i] t[j] 时 dp[i][j] dp[i-1][j-1] dp[i-1][j] s[i] ! t[j] 时 dp[i][j] dp[i-1][j] 先看s[i] t[j] 时…

GDI+下字体大小自适应方案初探

在某个瞬间&#xff0c;我忽然发觉&#xff0c;三体或是AI&#xff0c;本质上是非常相近的事物&#xff0c;甚至在面对任何未知领域的时候&#xff0c;人类总会不自觉地划分为降临派、拯救派和幸存派。姑且不论马斯克等人叫停 GPT-5 的真实动机如何&#xff0c;当大语言模型(LL…

JMU Oracle实验四

用来记录实验操作的 spool E:\oracle_record\record20230406.txt ... spool off老师问的问题 让我展示了一下open_cursor的alter操作问我怎么查看spfile文件&#xff0c;实例&#xff0c;会话的参数内容就这两个 1. 采用不同的方法查询Oracle数据库当前使用的初始化参数文件…

仅三行就能学会数据分析——Sweetviz详解

文章目录前言一、准备二、sweetviz 基本用法1.引入库2.读入数据3.调整报告布局总结前言 Sweetviz是一个开源Python库&#xff0c;它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 如上图所示&#xff0c;它不仅能根据性别、年龄等…

PHP 调用百度人脸对比

本文章主要介绍人脸对比API能力、应用场景、请求实例、参数说明。 接口能力 两张人脸图片相似度对比&#xff1a;比对两张图片中人脸的相似度&#xff0c;并返回相似度分值。 多种图片类型&#xff1a;支持生活照、证件照、身份证芯片照、带网纹照四种类型的人脸对比。 活体检测…

redis双写一致问题场景及方案

产生问题的场景 写入数据库后立即更新缓存&#xff08;较常见&#xff09; 这种场景下 问题产生的主要原因是写入数据库与更新缓存非原子性 有延迟 所以这样会导致谁更新缓存慢 谁会真正的更新缓存 更新数据库后立即删除缓存 查询时再插入缓存 与上一场景类似 虽然写入数据库…

C#,码海拾贝(18)——矩阵的(一般)三角分解法(Triangular Decomposition)之C#源代码,《C#数值计算算法编程》源代码升级改进版

1 三角分解法 Triangular Decomposition 三角分解法亦称因子分解法&#xff0c;由消元法演变而来的解线性方程组的一类方法。设方程组的矩阵形式为Axb&#xff0c;三角分解法就是将系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U之积&#xff1a;ALU&#xff0c;然后依次解…

Vue——模板引用

目录 访问模板引用​ v-for 中的模板引用​ 函数模板引用​ 组件上的 ref​ 虽然 Vue 的声明性渲染模型为你抽象了大部分对 DOM 的直接操作&#xff0c;但在某些情况下&#xff0c;我们仍然需要直接访问底层 DOM 元素。要实现这一点&#xff0c;我们可以使用特殊的 ref att…

Vue3技术3之setup的两个注意点、computed计算属性

Vue3技术3setup的两个注意点Vue2中的一些知识点App.vueDemo.vuesetup的两个注意点第一个注意点App.vueDemo.vue第二个注意点App.vueDemoTwo.vue总结computed计算属性App.vueDemo.vue总结setup的两个注意点 Vue2中的一些知识点 App.vue <template><div><h1>…