Vision GNN: An Image is Worth Graph of Nodes
视觉图神经网络:图像价值图节点
本文代码链接:代码链接
摘要:网络架构在基于深度学习的计算机视觉系统中起着关键作用。广泛使用的卷积神经网络(CNN)和Transformer将图像视为网格或序列结构,但这在捕捉不规则和复杂对象时并不灵活。为了解决这一问题,本文提出了一种将图像表示为图结构的方法,并引入了一种新的视觉图神经网络(Vision GNN,简称ViG)架构,用于在视觉任务中提取图级特征。
首先,我们将图像分割成若干块,将这些块视为节点,通过连接最近邻节点来构建图结构。基于图像的图表示,我们构建了ViG模型,用于在所有节点之间进行信息转换和交换。ViG由两个基本模块组成:用于聚合和更新图信息的Grapher模块,该模块采用图卷积,以及用于节点特征转换的FFN模块,该模块由两个线性层组成。我们构建了具有不同模型大小的等方性和金字塔架构的ViG模型。
在图像识别和目标检测任务上的广泛实验表明,我们的ViG架构具有优越性。我们希望这种关于GNN在通用视觉任务上的开创性研究能为未来的研究提供有益的启示和经验。
1.介绍
在现代计算机视觉系统中,卷积神经网络(CNNs)曾经是事实上的标准网络架构。然而,最近引入了具有注意力机制的Transformer,用于视觉任务,并取得了具有竞争力的性能。此外,基于多层感知器(MLP)的视觉模型也能够在不使用卷积或自注意力机制的情况下表现良好。这些进展将视觉模型推向了前所未有的高度。
不同的网络以不同的方式处理输入图像。通常,图像数据在欧几里得空间中被表示为像素的规则网格。CNN通过滑动窗口处理图像,并引入了平移不变性和局部性。而最近的视觉Transformer或MLP模型则将图像视为一系列的图像块。例如,ViT模型将224×224的图像分割成若干个16×16的图像块,并形成一个长度为196的序列作为输入。
与规则网格或序列表示不同,我们以一种更灵活的方式处理图像。计算机视觉的一个基本任务是识别图像中的物体。由于物体的形状通常是不规则的,之前网络中常用的网格或序列结构,如ResNet和ViT,在处理这些物体时显得冗余且不够灵活。一个物体可以被看作是多个部分的组合,例如,人类可以大致分为头部、上半身、手臂和腿。这些由关节连接的部分自然形成了一个图结构。通过分析这个图,我们能够识别出人类。此外,图是一种广义的数据结构,网格和序列可以看作是图的特例。将图像视为图结构对于视觉感知来说更加灵活和有效。
基于图像的图表示,我们构建了用于视觉任务的视觉图神经网络(简称ViG)。为了避免将每个像素都视为节点(这会导致节点数量过多,超过10,000个),我们将输入图像分割为若干块,并将每个图像块视为一个节点。在构建了这些图像块的图结构后,我们使用ViG模型在所有节点之间进行信息转换和交流。
ViG的基本单元包括两个部分:Grapher和前馈网络(FFN)模块。Grapher模块基于图卷积构建,用于处理图信息。为了缓解传统图神经网络中常见的过度平滑现象,FFN模块被用于节点特征转换并鼓励节点多样性。通过Grapher和FFN模块,我们以等方性和金字塔方式构建了ViG模型。
在实验中,我们验证了ViG模型在图像分类和目标检测等视觉任务中的有效性。例如,我们的金字塔ViG-S在ImageNet分类任务中达到了82.1%的Top-1准确率,超过了具有相似计算量(约4.5G FLOPs)的代表性CNN(ResNet)、MLP(CycleMLP)和Transformer(Swin-T)。据我们所知,我们的工作是首次成功地将图神经网络应用于大规模视觉任务。我们希望我们的工作能够激励社区进一步探索更强大的网络架构。
图1:图像的网格、序列和图表示的插图。在网格结构中,像素或块仅按空间位置排序。在序列结构中,二维图像被转换为一系列块。在图结构中,节点通过其内容相互连接,并且不受局部位置的约束。
2.相关工作
2.1 用于视觉的CNN、Transformer和MLP
在计算机视觉领域,主流的网络架构过去一直是卷积网络。从LeNet开始,卷积神经网络(CNN)已被成功应用于各种视觉任务,如图像分类、目标检测和语义分割。近十年来,CNN架构发展迅速。具有代表性的工作包括ResNet、MobileNet以及NAS(神经网络架构搜索)。从2020年开始,视觉Transformer被引入用于视觉任务。自那以后,提出了许多ViT(Vision Transformer)的变体,以提高在视觉任务上的性能。主要改进包括金字塔结构、局部注意力机制和位置编码。受视觉Transformer的启发,多层感知机(MLP)也在计算机视觉领域得到了探索。通过特别设计的模块,MLP可以在诸如目标检测和分割等一般视觉任务上实现具有竞争力的性能。
2.2 图神经网络(Graph Neural Network, GNN)
最早的图神经网络最初在中概述。Micheli通过构建复合非递归层,提出了基于空间的图卷积网络的早期形式。近年来,已经引入了基于空间GCN的变体。Bruna等人首次提出了基于频谱的图卷积网络(Spectral-based GCN),该网络基于频谱图理论引入了图卷积。自那时以来,已经提出了许多改进和扩展基于频谱GCN的工作。GCN通常应用于图数据,如社交网络、引文网络和生化图。
GCN在计算机视觉领域的应用主要包括点云分类、场景图生成和行为识别。点云是空间中的一组3D点,通常由激光雷达扫描收集。GCN已被用于点云的分类和分割。场景图生成旨在将输入图像解析为包含对象及其关系的图,这通常通过结合对象检测器和GCN来解决。通过处理自然形成的人体关节连接图,GCN被用于人体行为识别任务。然而,GCN只能处理具有自然构建图的特定视觉任务。对于计算机视觉中的一般应用,我们需要一个基于GCN的主干网络,该网络能够直接处理图像数据。
3.方法
在本节中,我们描述了如何将图像转换为图,并介绍了用于学习视觉表示的视觉图神经网络(Vision GNN)架构。
图2:所提出的ViG模型的框架
3.1ViG Block
图像的图结构。对于一张大小为H×W×3的图像,我们将其划分为N个块。通过将每个块转换为特征向量xi ∈ R ^D,我们得到X = [x1, x2, …, xN],其中D是特征维度,i = 1, 2, …, N。这些特征可以被视为一组无序的节点,表示为V = {v1, v2, …, vN}。对于每个节点vi,我们找到它的K个最近邻N(vi),并为所有vj ∈ N(vi)添加一条从vj指向vi的有向边eji。然后我们得到一个图G = (V, E),其中E表示所有的边。在后续中,我们将图构建过程表示为G = G(X)。通过将图像视为图数据,我们探索如何利用图神经网络(GNN)来提取其表示。
图像的图表示的优势包括:1) 图是一种泛化的数据结构,网格和序列都可以视为图的特例;2) 图比网格或序列更灵活,能够模拟复杂对象,因为图像中的对象通常不是方形的,其形状是不规则的;3) 一个对象可以被视为由多个部分组成(例如,人体大致可以分为头部、上身、手臂和腿部),而图结构可以构建这些部分之间的连接;4) GNN的先进研究成果可以被转移到解决视觉任务中。
图级处理。一般来说,我们从特征X ∈ R^(N×D)开始。我们首先基于这些特征构建一个图:G = G(X)。图卷积层可以通过从其邻居节点聚合特征来在节点之间交换信息。具体来说,图卷积操作如下:
其中,W_agg 和 W_update 分别是聚合和更新操作的可学习权重。更具体地说,聚合操作通过聚合邻居节点的特征来计算节点的表示,而更新操作则进一步合并聚合后的特征:
其中,N(x_li) 是 x_li 的邻居节点集合。在这里,我们采用最大相对图卷积,因为它简单且高效:
其中省略了偏置项。上述图级处理可以表示为 X0 = GraphConv(X)。我们进一步引入了图卷积的多头更新操作。首先,将聚合的特征 x_0^i 分割成 h 个头,即 head1, head2, …, head_h,然后用不同的权重分别更新这些头。所有头都可以并行更新,并串联成最终的值:
多头更新操作允许模型在多个表示子空间中更新信息,这有利于特征的多样性。
ViG块。以往的图卷积网络(GCNs)通常重复使用多个图卷积层来提取图数据的聚合特征。然而,深层GCNs中的过平滑现象[31, 40]会降低节点特征的独特性,并导致视觉识别性能下降,如图3所示,其中多样性通过kX-1xT k来衡量,其中x = arg minx kX-1xT k[8]。为了缓解这个问题,我们在ViG块中引入了更多的特征变换和非线性激活函数。
图3:节点特征多样性随层数变化。
我们在图卷积之前和之后应用一个线性层,以将节点特征投影到同一域并增加特征多样性。在图卷积之后插入一个非线性激活函数,以避免层塌陷。我们将升级后的模块称为Grapher模块。在实践中,给定输入特征X ∈ R^(N×D),Grapher模块可以表示为:
其中,Y ∈ R^(N×D),Win 和 Wout 是全连接层的权重,σ 是激活函数,例如ReLU和GeLU[19],并省略了偏置项。为了进一步增强特征转换能力并缓解过平滑现象,我们在每个节点上使用前馈网络(FFN)。FFN模块是一个简单的多层感知机,包含两个全连接层:
其中,Z ∈ R^(N×D),W1 和 W2 是全连接层的权重,并省略了偏置项。FFN的隐藏维度通常大于D。在Grapher和FFN模块中,每个全连接层或图卷积层之后都应用了批归一化,为了简洁起见,在等式6和7中省略了这一点。Grapher模块和FFN模块的堆叠构成了ViG块,它是构建网络的基本构建单元。基于图像的图表示和提出的ViG块,我们可以构建用于视觉任务的ViG网络,如图2所示。与普通的ResGCN[30]相比,我们的ViG能够随着层数的加深保持特征多样性(图3),从而学习具有区分性的表示。
3.2网络结构
在计算机视觉领域,常用的Transformer通常具有同构架构(如ViT[9]),而卷积神经网络(CNNs)则更倾向于使用金字塔架构(如ResNet[17])。为了与其他类型的神经网络进行广泛比较,我们为ViG构建了两种网络架构,即同构架构和金字塔架构。
同构架构。同构架构意味着网络的主要部分具有相同大小和形状的特征,如ViT[9]和ResMLP[50]。我们构建了三个不同模型大小的同构ViG架构版本,即ViG-Ti、S和B。节点数设置为N = 196。为了逐渐扩大感受野,随着层数的加深,在这三个模型中,邻居节点数K从9线性增加到18。默认情况下,头的数量设置为h = 4。详细信息列于表1中。
表1:我们的同构ViG架构的变体。FLOPs是针对分辨率为224×224的图像计算的。“Ti”表示小型,“S”表示中型,“B”表示基础型。
金字塔架构。金字塔架构通过在网络层数加深时逐渐减小空间尺寸来提取特征,从而考虑图像的多尺度特性,如ResNet[17]和PVT[57]。实证证据表明,金字塔架构对于视觉任务是有效的[57]。因此,我们利用这一先进设计并构建了四个版本的金字塔ViG模型。详细情况如表2所示。请注意,我们在前两个阶段使用了空间降维[57]来处理大量节点。
表2:金字塔ViG系列的详细设置。D:特征维度,E:FFN中的隐藏维度比,K:GCN中的邻居节点数,H×W:输入图像尺寸。“Ti”表示小型,“S”表示中型,“M”表示中大型,“B”表示基础型。
位置编码。为了表示节点的位置信息,我们向每个节点特征添加一个位置编码向量:
其中,e_i ∈ RD。等式8中描述的绝对位置编码被应用于同构和金字塔架构中。对于金字塔ViG,我们进一步采用了如Swin Transformer[35]等先进设计中的相对位置编码。对于节点i和j,它们之间的相对位置距离是e_iT e_j,该距离将被添加到特征距离中,以构建图。
4.实验
在本节中,我们进行了实验,以证明ViG模型在图像识别和对象检测等视觉任务中的有效性。
4.1数据集和实验设置
数据集:在图像分类任务中,以下实验使用了广泛使用的基准数据集ImageNet ILSVRC 2012[43]。ImageNet包含120万张训练图像和5万张验证图像,这些图像属于1000个类别。关于ImageNet数据集的许可,请参考http://www.image-net.org/download。对于对象检测,我们使用了包含80个对象类别的COCO 2017[34]数据集。COCO 2017包含11.8万张训练图像和5千张验证图像。关于这些数据集的许可,请参考https://cocodataset.org/#home。
实验设置:对于所有ViG模型,我们在Grapher模块中使用扩张聚合[30],并为第l层设置扩张率为dl/4e。在等式6和7中,我们使用GELU[19]作为非线性激活函数。对于ImageNet分类,我们使用DeiT[51]中提出的常用训练策略,以确保公平比较。数据增强包括RandAugment[6]、Mixup[73]、Cutmix[72]、随机擦除[74]和重复增强[20]。详细信息如表3所示。对于COCO检测任务,我们采用RetinaNet[33]和Mask R-CNN[16]作为检测框架,并使用我们的金字塔ViG作为骨干网络。所有模型均在COCO 2017训练集上按照“1×”时间表进行训练,并在验证集上进行评估。我们使用PyTorch[41]和MindSpore[23]来实现网络,并在8个NVIDIA V100 GPU上训练所有模型。
表3:ImageNet的训练超参数
表4:ViG与其他同构网络在ImageNet上的结果。♠ 表示CNN, 表示MLP, 表示Transformer,F 表示GNN。
4.3消融实验
我们在ImageNet分类任务上对提出的方法进行了消融实验,并以同构ViG-Ti作为基础架构。
图卷积类型。我们测试了图卷积的代表性变体,包括EdgeConv[58]、GIN[64]、GraphSAGE[13]和Max-Relative GraphConv[30]。从表6中,我们可以看到不同图卷积的top-1准确率均高于DeiT-Ti,这表明了ViG架构的灵活性。其中,Max-Relative在图卷积的浮点运算次数(FLOPs)和准确率之间取得了最佳平衡。在其余实验中,除非特别说明,我们默认使用Max-Relative GraphConv。
表6:不同类型图卷积在ImageNet上的结果。基础架构是ViG-Ti
ViG中模块的效果。为了使图神经网络适应视觉任务,我们在Grapher模块中引入了全连接(FC)层,并利用前馈网络(FFN)块进行特征变换。我们通过消融实验评估了这些模块的效果。我们改变了比较模型的特征维度,使它们的浮点运算次数(FLOPs)相似,以便进行公平比较。从表7中,我们可以看到直接使用图卷积进行图像分类的效果不佳。通过引入FC和FFN来增加更多的特征变换,可以一致地提高准确率。
表7:ViG中模块在ImageNet上的效果
邻居节点数。在构建图的过程中,邻居节点数K是一个控制聚合范围的超参数。邻居节点太少会降低信息交换的效率,而邻居节点太多则会导致过平滑问题。我们调整K的值从3到20,并在表8中展示了结果。我们可以看到,在ImageNet分类任务上,邻居节点数在9到15的范围内可以表现良好。
表8:ImageNet上的Top-1准确率与K的关系
头的数量。多头更新操作允许Grapher模块在不同的子空间中处理节点特征。等式5中的头数h控制了子空间中变换的多样性和浮点运算次数(FLOPs)。我们调整h的值从1到8,并在表9中展示了结果。对于不同的h值,ImageNet上的FLOPs和Top-1准确率略有变化。为了在FLOPs和准确率之间取得最佳平衡,我们选择h=4作为默认值。
表9:ImageNet上Top-1准确率与h的关系
4.4目标检测
我们将ViG模型应用于目标检测任务,以评估其泛化能力。为了公平比较,我们利用在ImageNet上预训练的Pyramid ViG-S作为RetinaNet[33]和Mask R-CNN[16]检测框架的骨干网络。模型在常用的“1x”时间表上进行训练,并使用1280×800的输入尺寸计算浮点运算次数(FLOPs)。从表10的结果中,我们可以看到,无论是在RetinaNet还是Mask R-CNN上,我们的Pyramid ViG-S都比包括ResNet[17]、CycleMLP[5]和Swin Transformer[35]在内的不同类型代表性骨干网络表现更好。这些优越的结果证明了ViG架构的泛化能力。
表10:在COCO val2017上的目标检测和实例分割结果。我们的Pyramid ViG与其他骨干网络在RetinaNet和Mask R-CNN框架上进行了比较。
4.5可视化
为了更好地理解我们的ViG模型是如何工作的,我们对ViG-S中构建的图形结构进行了可视化。在图4中,我们展示了两个不同深度(第1块和第12块)样本的图形。五角星是中心节点,颜色相同的节点是其邻居。为了避免混乱,我们只可视化了两个中心节点,没有绘制所有边。我们可以观察到,我们的模型可以选择与内容相关的节点作为一阶邻居。在浅层,邻居节点往往基于低级和局部特征(如颜色和纹理)进行选择。在深层,中心节点的邻居更具语义性,属于同一类别。我们的ViG网络可以通过其内容和语义表示逐渐连接节点,从而有助于更好地识别对象。
图4:构建的图形结构可视化。五角星是中心节点,颜色相同的节点是其在图中的邻居
5结论
在这项工作中,我们率先研究了将图像表示为图数据并利用图神经网络进行视觉任务的方法。我们将图像划分为多个块,并将它们视为节点。基于这些节点构建的图可以更好地表示自然界中不规则且复杂的对象。直接在图像图结构上使用图卷积存在过平滑问题,并且性能不佳。我们在每个节点内部引入了更多的特征变换,以鼓励信息的多样性。基于图像的图表示和改进的图块,我们构建了具有等长和金字塔结构的视觉图神经网络(ViG)。在图像识别和目标检测上的大量实验证明了所提出的ViG架构的优越性。我们希望这项关于视觉图神经网络的开创性工作能够成为一般视觉任务的基本架构。