Navigation

    Gpushare.com

    • Register
    • Login
    • Search
    • Popular
    • Categories
    • Recent
    • Tags

    中科大/华为/北大新作ViG:使用图卷积神经网络处理视觉图像问题

    CV领域
    1
    1
    65
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 189****6672
      189****6672 last edited by

      中科大/华为/北大新作ViG:使用图卷积神经网络处理视觉图像问题

      论文标题:Vision GNN: An Image is Worth Graph of Nodes

      论文地址:https://arxiv.org/pdf/2206.00272.pdf

      论文代码:https://github.com/huawei-noah/Efficient-AI-Backbones(Pytorch)

      https://gitee.com/mindspore/models(MindSpore)

      image-20220707213840195

      摘要

      1. 引出主题:网络体系结构在基于深度学习的计算机视觉系统中起着关键作用。
      2. 现存问题:广泛使用的卷积神经网络和transformer将图像视为网格或序列结构,无法灵活捕获不规则和复杂的对象。
      3. 解决方法:轮文提出将图像表示为图结构,并引入一种新的视觉GNN(ViG)架构来提取视觉任务的图级特征。首先将图像分割为多个视为节点的patches,并通过连接最近K个的邻居来构造图。基于图像的图形表示,建立了ViG模型,用于在所有节点之间转换和交换信息。ViG由两个基本模块组成:用于聚集和更新图形信息的Grapher module w和用于节点特征变换的带两个线性层的FFN模块。并采用不同的模型尺寸构建了ViG的各向同性和金字塔结构。
      4. 对图像识别和目标检测任务的大量实验证明了我们的ViG架构的优越性。

      算法

      算法中最重要的是如何将一张图像转化为图的形式

      ViG Block

      image-20220707212827234

      Graph Structure of Image

      对于大小为H×W×3的图像

      1. 首先将其划分为N个patches。通过将每个patch转化为特征向量xi∈RDx_i \in R^Dxi​∈RD,我们有X=[x1,x2,··,xN],其中D是特征维数。这些特征可以被视为一组无序节点,可以表示为V={v1,v2,··,vN}。
      2. 对于每个节点vi,我们找到其K个最近邻居N(vi),并为所有vj∈N(vi)v_j \in N(v_i)vj​∈N(vi​)添加一个指向vi的边缘ejie_{ji}eji​。
      3. 然后就得到一个图G=(V,E),其中E表示所有边。

      使用图表示图像的优点包括:

      1. 图是一种广义数据结构,网格数据格式(CNN)和序列数据格式(ViT)可以视为图的特例;
      2. 图比网格或序列更灵活地建模复杂对象,因为图像中的对象通常不是形状规则的正方形;
      3. 一个物体可以被视为由多个部分组成(例如,一个人可以大致分为头、上身、手臂和腿),图结构可以构建这些部分之间的连接;

      Graph-level processing

      从特征X∈RN×DX \in R^{N \times D}X∈RN×D开始。首先构造一个图:G=G(X)。

      图卷积层可以通过聚集其相邻节点的特征在节点之间交换信息。具体来说,图卷积操作如下:

      image-20220707211806890

      其中,WaggW_{agg}Wagg​和WupdateW_{update}Wupdate​分别表示用于聚合和更新操作的可学习权重。更具体地说,聚合操作通过聚合相邻节点的特征来计算节点的表示,更新操作进一步合并聚合的特征。

      每个节点更新过程如下:

      image-20220707211952499

      Graph-level processing就可以表示为X′=GraphConv(X)

      ViG block

      以前的GCN通常重复使用多个图卷积层来提取图数据的聚集特征。深度GCN中的过度平滑现象将降低节点特征的显著性,并导致视觉识别的性能下降,如图3所示。

      image-20220707212305266

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

      1. 在图卷积前后应用一个线性层,将节点特征投影到同一个域中,并增加特征多样性。

      2. 在图卷积后插入非线性激活函数以避免层崩溃。

      将升级后的模块称为 Grapher module。实际上,给定输入特征X∈RN×DX \in R^{N \times D}X∈RN×D,Grapher module可以表示为

      image-20220707212526654

      为了进一步提高特征转换能力并缓解过度平滑现象,在每个节点上使用前馈网络(FFN)。

      FFN模块是一个简单的多层感知器,具有两个完全连接的层:

      image-20220707212652527

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

      Grapher module和FFN模块的堆栈构成ViG块,ViG块是用作构建网络的基本构建单元。

      网络结构

      在计算机视觉领域,常用的transformer通常具有各向同性结构(例如ViT,就是每一层具有相同的长度),而CNN更喜欢使用金字塔结构(例如ResNet)。为了与这些类型的神经网络进行广泛比较,为ViG构建了两种网络结构,即各向同性结构和金字塔结构。

      各向同性架构:

      各向同性架构意味着主体在整个网络中具有相同大小和形状的特征,如ViT和ResMLP。

      论文构建了三种不同模型尺寸的各向同性ViG架构,即ViG Ti、S和B。节点数设置为N=196。

      为了逐渐扩大感受野,在这三种模型中,随着层的深入,相邻节点K的数量从9线性增加到18。

      默认情况下,头数设置为h=4。

      表1中列出了详细信息:

      image-20220707213132409

      金字塔结构:

      金字塔结构通过空间尺寸随层加深而逐渐减小的特征来考虑图像的多尺度特性,如ResNet和PVT。

      经验证据表明,金字塔结构对视觉任务是有效的。因此,论文利用先进的设计,构建了四个版本的金字塔ViG模型。详情见表2

      image-20220707213348634

      实验

      论文进行了实验,以证明ViG模型在视觉任务(包括图像识别和目标检测)上的有效性

      Main Results on ImageNet

      image-20220707213557921

      Ablation Study

      image-20220707213655365

      image-20220707213708055

      image-20220707213719163

      Object Detection

      image-20220707213741217

      Visualization

      image-20220707213810126

      1 Reply Last reply Reply Quote 1
      • First post
        Last post