https://arxiv.org/abs/2206.00272
代码链接:
https://github.com/huawei-noah/CV-Backbones
https://gitee.com/mindspore/models
导读
网络结构在基于深度学习的计算机视觉系统中起着至关重要的作用。目前广泛应用的卷积神经网络和卷积神经转换器将图像视为网格或序列结构,难以灵活地捕捉不规则和复杂的目标。本文提出将图像表示为图(Graph)结构,并引入一种新的视觉图卷积(Vision GNN, ViG)体系结构来提取视觉任务的图级(Graph-Level)特征。
首先,将图像分割为多个块(patch),这些块被视为节点,并通过连接最近的邻居节点来构建一个图。基于图像的图表示(graph representation),通过建立ViG模型来实现所有节点之间的信息变换和交换。ViG由两个基本模块组成:带有图卷积的Grapher模块,用于聚合和更新图信息;以及两层线性层的FFN模块(就是MLP),用于节点特征变换。在不同的模型尺寸下,分别建立了各向同性(isotropic)结构和金字塔(pyramid)结构,在图像识别和目标检测任务上的大量实验证明了提出的ViG架构的优越性。本研究能对一般视觉任务上的神经网络进行开创性的研究,为今后的研究提供有益的启示和经验。
贡献
在视觉任务中,CNNs,Transformer,MLP都取得了很好的效果。CNNs利用了平移不变性和局部性(the shift-invariance and locality)使用滑动窗口提取特征;最近的Transformer和MLP将将图像视为一系列的patches。上述的考虑都是基于规则网格或序列表示,本文尝试一种更灵活的图结构。计算机视觉的一个基本任务是识别图像中的物体。由于对象通常不是规则的方形,而以往的网络如ResNet和vit中常用的网格或序列结构往往会造成冗余,难以处理这些不规则对象。
一个物体可以被看作是由各个部分组成的,例如:人大致可以分为头、上身、四肢。这些由关节连接的部分自然形成一个图结构。通过分析这个图结构,我们能够识别出人。此外,图是一种广义的数据结构,网格和序列可以看作是图的一种特殊情况。将图像视为图形对于视觉感知来说更加灵活和有效。
因此,本文基于图像的图表示(graph representation)提出了vision graph neural network (ViG)。本文应该是首次将图神经网络用于视觉任务,同时能取得很好的效果,在imagenet分类任务上超过了CNN(ResNet),MLP(CycleMLP)和transformer(Swin-T)。
方法
2.1 ViG Block
2.1.1 Graph Representation of Image
对于一张图片,首先将图片划分为N个patch,然后将进行特征变换得到每一个patch对应的特征xi,因此有:X=[x1,x2,x3,…,xN]。这些特性可以看作是一组无序的节点,表示为V=[v1,v2,v3,…,vN]。对于每一个节点vi找到穷最近的K个邻居 ,然后加入一条有向边eij从vi到vj。因此就得到了一个图结构g=(V,E),其中E表示所有的边集合。通过将图像视为图数据,因此可以利用GCN提取其表征。
2.1.2 Graph-level Processing
图卷积层通过聚合相邻节点的特征来实现节点之间的信息交换。具体来说,图卷积的操作如下:
其中Wagg和Wupdate是聚合和更新操作中的可学习参数。更具体地说,聚合运算是通过聚合邻居节点的特征来计算节点的表示:
其中N()表示节点邻居集合。为了方便和高效,这里采用max-relative graph convolution:
上面的处理可以表示为:
更进一步,引入了多头注意力。首先将聚集特征xi’分成h个头,然后分别用不同的权重更新这些头。所有的头可以并行更新,并连接为最终值:
新多头更新操作使模型能够在多个表示子空间中更新信息,有利于特征的多样性。
2.1.3 ViG block
以往的GCNs通常重复使用多个图卷积层来提取图数据的聚合特征。深度GCNs的过平滑现象会降低节点特征的判别性,导致视觉识别性能下降,如下图所示。其中特征多样性通过||X-1xT||判断。为了缓解这个问题,在ViG块中引入了更多的特征变换和非线性激活。
本文在图卷积前后应用线性层,将节点特征投影到同一个域,增加特征多样性。在图卷积后插入一个非线性激活函数以避免层坍塌。我们称升级后的模块为Grapher模块。在实际应用中,将Grapher模块表示为:
为了进一步提高特征转换能力和缓解过平滑现象,在每个节点上使用前馈网络(FFN)。FFN模块是一个简单的多层感知器,有两个完全连接的层:
由Grapher模块和FFN模块叠加而成的ViG块是构成网络的基本构建单元。因此构建面向视觉任务的ViG网络。与ResGCN相比,ViG随着层的深入能够保持特征多样性,学习出判别性的表征。
2.2 Network Architecture
在计算机视觉领域,常用的transformer通常是isotropic的架构(如ViT),而CNN更喜欢使用pyramid架构(如ResNet)。为了与其他类型的神经网络进行广泛的比较,本文为ViG构建了两种网络结构,即各向同性结构和金字塔结构。
2.2.1 Isotropic architecture
各向同性架构意味着主体在整个网络中具有大小和形状相同的特征,如ViT和ResMLP。本文构建了三种不同模型尺寸的各向同性ViG架构,分别为ViG-ti、S和B,节点数设为N=196。为了逐渐扩大接收场,这三种模型中随着层深的增加,邻居节点数K从9线性增加到18。头的数量默认设置为h=4。
2.2.2 Pyramid architecture
金字塔架构考虑了图像的多尺度特性,即随着层越深提取空间尺寸越小的特征,如ResNet和PVT。经验证据表明,金字塔结构对视觉任务是有效的。因此,本文利用先进的设计和建立了四个版本的金字塔ViG模型。
2.2.3 Positional encoding
为了表示节点的位置信息,在每个节点特征中添加一个位置编码向量:
上式所描述的绝对位置编码应用于各向同性和金字塔结构。对于金字塔ViG,进一步使用Swin Transformer等高级设计,例如相对位置编码。对于节点i和j,它们之间的相对位置距离为eiTej,将其加入到特征距离中构建图。
实验
3.1 Main Results on ImageNet
从结果来看,ViG的性能优于其他类型的网络。例如,我们的ViG-Ti实现了73.9%的top-1精度,比DeiT-Ti模型高出1.7%。
我们的金字塔ViG系列可以超越或可媲美的最先进的金字塔网络,包括CNN,MLP和变压器。这表明图神经网络可以很好地用于视觉任务,并有可能成为计算机视觉系统的一个基本组成部分。
3.2 Ablation Study
3.3 Visualization
为了更好地理解ViG模型是如何工作的,在v-s中可视化构造的图结构。在上图中,展示了两个不同深度的样本的图形(第1块和第12块)。五角星是中心节点,相同颜色的节点是它的邻居。两个中心节点被可视化为绘制所有的边将是混乱的。可以观察到,提出的模型可以选择与内容相关的节点作为一阶邻居。在浅层中,倾向于根据颜色、纹理等低级和局部特征来选择邻居节点。在深层,中心节点的邻居语义性更强,属于同一类别。因此VIG网络可以通过其内容和语义表示将节点逐渐连接起来,帮助更好地识别对象。