IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 论文阅读 Vision GNN: An Image is Worth Graph of Nodes -> 正文阅读

[人工智能]论文阅读 Vision GNN: An Image is Worth Graph of Nodes

论文阅读:Vision GNN: An Image is Worth Graph of Nodes

? ?Kai Han ?, Yunhe Wang, Jianyuan Guo Yehui Tang, ?Enhua Wu
文章和代码:
## ViG Code
Paper: [Vision GNN: An Image is Worth Graph of Nodes](https://arxiv.org/abs/2206.00272)

- Pretrained models

|Model|Params (M)|FLOPs (B)|Top-1|URL|
|-|-|-|-|-|
|Pyramid ViG-Ti|10.7|1.7|78.5|[[BaiduDisk]](https://pan.baidu.com/s/1Vrr-oXQeUFujaHKMC5sXIQ), Password: chae|
|Pyramid ViG-S|27.3|4.6|82.1|[[BaiduDisk]](https://pan.baidu.com/s/10MWZznvPIvGAiBtnwj7TRg), Password: 81mg|
|Pyramid ViG-M|51.7|8.9|83.1|[[BaiduDisk]](https://pan.baidu.com/s/1N3nviACOrY0XBC0FKoDL6g), Password: prd3|
|Pyramid ViG-B|82.6|16.8|83.7|[[BaiduDisk]](https://pan.baidu.com/s/1b5OvPZXwcSwur2nuDAzf5Q), Password: rgm4|

摘要:

?广泛使用的卷积神经网络和转换器将图像视为一个网格或序列结构,不能灵活地捕捉不规则和复杂的物体。

? ?本文提出将图像表示为图结构,并引入一种新的视觉GNN (ViG)体系结构来提取视觉任务的图级特征。首先将图像分割成一些被视为节点的补丁,并通过连接最近的邻居来构造一个图。基于图像的图形表示,我们建立了ViG模型来实现所有节点之间的信息转换和交换。
? ?ViG由两个基本模块组成:graph卷积的Grapher模块,用于聚集和更新图信息;两层线性层的FFN模块,用于节点特征变换。在不同的模型尺寸下,分别建立各向同性结构和金字塔结构。

1 ?Introduction

计算机视觉:CNN/transformer with attention mechanism/ MLP (multi-layer
? ? ? ? ? ? ? ? ? ? ? ?perceptron)
? ?图1:图像数据通常表示为欧氏空间中规则的像素网格
? ?由于物体通常不是不规则的方形,在以前的网络如ResNet和ViT中常用的网格或序列结构是冗余的,难以处理。一个物体可以被看作是一些部件的组成,这些由关节连接的部分自然地形成了一个图形结构。
? ? 此外,图是一种广义的数据结构,网格和序列可以看作是图的一种特殊情况。将一个图像视为一个图对视觉感知更加灵活和有效。
? ? 将输入图像划分为若干个patch,并将每个patch视为一个节点。在构建了图像斑块图后,使用我们的ViG模型对所有节点之间的信息进行转换和交换。?
??
? ViG基本单元:
? ? ?GCN (graph convolutional network) module 用于图形信息处理
? ? ?FFN (feed-forward network) module ?用于节点特征转换

利用Grapher和FFN模块,以各向同性和金字塔的方式建立了ViG模型。

图1 表示图像数据通常表示为欧氏空间中规则的像素网格?

2 Related Work

? 2.1 CNN, Transformer and MLP for Vision
? 2.2 Graph Neural Network
? Micheli[36]通过结构上的复合非递归层提出了基于空间的图卷积网络;基于光谱的GCN是Bruna等人[2]首先提出的;GCN在计算机视觉领域的应用:点云分类、场景图生成和动作识别。GCN只能用自然构造的图形来处理特定的视觉任务。在计算机视觉的一般应用中,需要一个基于GCN的骨干网络来直接处理图像数据。

3 Approach

图2 是提出的ViG模型的框架

3.1 ViG Block

图像的图形表示,这段话多读几遍就能理解。重点我已经画出来了,与最近邻点生成的边聚合起来就是想要的图形。

图级处理。图卷积层可以通过聚合其相邻节点的特征来在节点之间交换信息。

使用最大相对图卷积

引入了 图形卷积的多头更新操作,首先将聚集特征 xi'' 分成 h 个头,然后分别用不同的权重更新这些头。所有的头可以并行更新,并连接为最终值:

?多头更新操作允许模型在多个表示子空间中更新信息,这有利于特征的多样性。

?以往的 GCNs 通常重复使用多个图卷积层来提取图数据的聚合特征。深度 GCNs 的过平滑现象会降低节点特征的判别性,导致视觉识别性能下降,如下图所示

其中特征多样性通过下式判断

为了缓解这个问题,文中在 ViG 块中引入了更多的特征变换和非线性激活。

?在图卷积前后应用一个线性层,将节点特征投影到同一域,增加特征多样性。在图卷积后插入一个非线性激活函数,以避免图层的坍塌。我们将升级后的模块称为Grapher模块。

输入特征X RN×D,??Grapher模块可以表示为

?为了进一步提高特征转换能力,缓解过平滑现象,我们在每个节点上使用了前馈网络(FFN)。FFN模块是一个简单的多层感知器,有两个全连接层:?

?在Grapher和FFN模块中,在每个全连接层或图卷积层之后都应用批处理归一化。

3.2 Network Architecture ?

?在计算机视觉领域,常用的转换器通常具有各向同性结构(如ViT[8]),而CNN更倾向于使用金字塔结构(即ResNet[16])。为了与其他类型的神经网络进行广泛的比较,我们为ViG构建了两种网络架构,即各向同性架构和金字塔架构。

?Isotropic architecture

我们构建了三个具有不同模型尺寸的各向同性ViG架构版本,即ViG-ti、S和B。节点数设置为N=196。为了逐渐扩大感受域,在这三种模型中,随着接收层的深度,相邻节点K的数量从9个线性增加到18个。heads默认设置为h=4。具体情况见表1。?

注:FLOPs,? s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

?Pyramid architecture

?金字塔体系结构考虑了图像的多尺度特性,随着层的深入,提取空间尺寸逐渐减小的特征,如ResNet[16]和PVT[54]. 利用先进的设计和建立了四个版本的金字塔ViG模型。具体情况见表2。

?Positional encoding. 位置编码

?为了表示节点的位置信息,我们在每个节点特征上添加一个位置编码向量:xi xi + ei,??

where ei RD.?

上式所描述的绝对位置编码应用于各向同性和金字塔结构。对于节点i和节点j,它们之间的相对位置距离为eTiej,并将其加到特征距离中以构造图。

?4 Experiments

?4.2?Main Results on ImageNet

?4.3?Ablation Study

?The effects of modules in ViG.

?The number of neighbors.

?The number of heads.

4.5 Visualization

图中五角星是中心节点,颜色相同的节点是它的相邻节点。两个中心节点被可视化为绘制所有的边缘将是混乱的。可以观察到,我们的模型可以选择与内容相关的节点作为一阶近邻,在浅层中,邻近节点倾向于基于低层次和局部特征,如颜色和纹理。在深层中,中心节点的邻近语义更强并属于同一类别。

5 Conclusion?

?我们将图像划分成一些补丁,并将它们视为节点。基于这些节点构造图可以更好地表示不规则的复杂对象。在图像图结构上直接使用图卷积存在过平滑问题,且性能较差。在每个节点内引入了更多的特征转换,以鼓励信息的多样性。基于图像的图表示和改进的图块,构建了具有各向同性和金字塔结构的视觉GNN(ViG)网络。

?附录-伪码

核心部分即ViG块的伪代码

import torch.nn as nn
from gcn_lib.dense.torch_vertex import DynConv2d
# gcn_lib is downloaded from https://github.com/lightaime/deep_gcns_torch
class GrapherModule(nn.Module):
"""Grapher module with graph conv and FC layers
"""
def __init__(self, in_channels, hidden_channels, k=9, dilation=1, drop_path=0.0):
super(GrapherModule, self).__init__()
self.fc1 = nn.Sequential(
nn.Conv2d(in_channels, in_channels, 1, stride=1, padding=0),
nn.BatchNorm2d(in_channels),
)
self.graph_conv = nn.Sequential(
DynConv2d(in_channels, hidden_channels, k, dilation, act=None),
nn.BatchNorm2d(hidden_channels),
nn.GELU(),
)
self.fc2 = nn.Sequential(
nn.Conv2d(hidden_channels, in_channels, 1, stride=1, padding=0),
nn.BatchNorm2d(in_channels),
)
self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
def forward(self, x):
B, C, H, W = x.shape
x = x.reshape(B, C, -1, 1).contiguous()
shortcut = x
x = self.fc1(x)
x = self.graph_conv(x)
x = self.fc2(x)
x = self.drop_path(x) + shortcut
return x.reshape(B, C, H, W)
class FFNModule(nn.Module):
"""Feed-forward Network
"""
def __init__(self, in_channels, hidden_channels, drop_path=0.0):
super(FFNModule, self).__init__()
self.fc1 = nn.Sequential(
nn.Conv2d(in_channels, in_channels, 1, stride=1, padding=0),
nn.BatchNorm2d(in_channels),
nn.GELU()
)
self.fc2 = nn.Sequential(
nn.Conv2d(hidden_channels, in_channels, 1, stride=1, padding=0),
nn.BatchNorm2d(in_channels),
)
self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()
def forward(self, x):
shortcut = x
x = self.fc1(x)
x = self.fc2(x)
x = self.drop_path(x) + shortcut
return x
class ViGBlock(nn.Module):
"""ViG block with Grapher and FFN modules
"""
def __init__(self, channels, k, dilation, drop_path=0.0):
super(ViGBlock, self).__init__()
self.grapher = GrapherModule(channels, channels * 2, k, dilation, drop_path)
self.ffn = FFNModule(channels, channels * 4, drop_path)
def forward(self, x):
x = self.grapher(x)
x = self.ffn(x)
return x

?文章内容大概就是这些啦。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:54:12  更:2022-07-04 22:54:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:51:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码