CV的未来是图神经网络?中科院软件所发布全新CV模型ViG,性能超越ViT

简介: CV的未来是图神经网络?中科院软件所发布全新CV模型ViG,性能超越ViT

image.png


新智元导读】最近,中科院软件所等四个机构的研究团队将CV与图神经网络结合起来,提出全新模型ViG,在等量参数情况下,性能超越ViT,可解释性也有所提升。


计算机视觉的网络结构又要迎来革新了?

 

从卷积神经网络到带注意力机制的视觉Transformer,神经网络模型都是把输入图像视为一个网格或是patch序列,但这种方式无法捕捉到变化的或是复杂的物体。

 

比如人在观察图片的时候,就会很自然地就将整个图片分为多个物体,并在物体间建立空间等位置关系,也就是说整张图片对于人脑来说实际上是一张graph,物体则是graph上的节点。

 

 

最近中科院软件研究所、华为诺亚方舟实验室、北京大学、澳门大学的研究人员联合提出了一个全新的模型架构Vision GNN (ViG),能够从图像中抽取graph-level的特征用于视觉任务。

 

论文链接:https://arxiv.org/pdf/2206.00272.pdf

 

首先需要将图像分割成若干个patch作为图中的节点,并通过连接最近的邻居patch构建一个graph,然后使用ViG模型对整个图中所有节点的信息进行变换(transform)和交换(exchange)。

 

ViG 由两个基本模块组成,Grapher模块用graph卷积来聚合和更新图形信息,FFN模块用两个线性层来变换节点特征。

 

在图像识别和物体检测任务上进行的实验也证明了ViG架构的优越性,GNN在一般视觉任务上的开创性研究将为未来的研究提供有益的启发和经验。

 

论文作者为吴恩华教授,中国科学院软件研究所博士生导师、澳门大学名誉教授,1970年本科毕业于清华大学工程力学数学系,1980年博士毕业于英国曼彻斯特大学计算机科学系。主要研究领域为计算机图形学与虚拟现实, 包括: 虚拟现实 、真实感图形生成、 基于物理的仿真与实时计算、 基于物理的建模与绘制、 图像与视频的处理与建模、 视觉计算与机器学习。

 

视觉GNN

 

网络结构往往是提升性能最关键的要素,只要能保证数据量的数量和质量,把模型从CNN换到ViT,就能得到一个性能更佳的模型。

 

但不同的网络对待输入图像的处理方式也不同,CNN在图像上滑动窗口,引入平移不变性和局部特征。

 

而ViT和多层感知机(MLP)则是将图像转换为一个patch序列,比如把224×224的图像分成若干个16×16的patch,最后形成一个长度为196的输入序列。

 

 

图神经网络则更加灵活,比如在计算机视觉中,一个基本任务是识别图像中的物体。由于物体通常不是四边形的,可能是不规则的形状,所以之前的网络如ResNet和ViT中常用的网格或序列结构是多余的,处理起来不灵活。

 

一个物体可以被看作是由多个部分组成的,例如,一个人可以大致分为头部、上半身、胳膊和腿。

 

这些由关节连接的部分很自然地形成了一个图形结构,通过分析图,我们最后才能够识别出这个物体可能是个人类。

 

此外,图是一种通用的数据结构,网格和序列可以被看作是图的一个特例。将图像看作是一个图,对于视觉感知来说更加灵活和有效。

 

使用图结构需要将输入的图像划分为若干个patch,并将每个patch视为一个节点,如果将每个像素视为一个节点的话就会导致图中节点数量过多(>10K)。

 

 

建立graph后,首先通过一个图卷积神经网络(GCN)聚合相邻节点间的特征,并抽取图像的表征。

 

 

为了让GCN获取更多样性的特征,作者将图卷积应用multi-head操作,聚合的特征由不同权重的head进行更新,最后级联为图像表征。

 

 

以前的GCN通常重复使用几个图卷积层来提取图数据的聚合特征,而深度GCN中的过度平滑现象则会降低节点特征的独特性,导致视觉识别的性能下降。

 

 

为了缓解这个问题,研究人员在ViG块中引入了更多的特征转换和非线性激活函数。

 

首先在图卷积的前后应用一个线性层,将节点特征投射到同一域中,增加特征多样性。在图形卷积之后插入一个非线性激活函数以避免层崩溃。

 

 

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

 

在Grapher和FFN模块中,每一个全连接层或图卷积层之后都要进行batch normalization,Grapher模块和FFN模块的堆叠构成了一个ViG块,也是构建大网络的基本单元。

 

与原始的ResGCN相比,新提出的ViG可以保持特征的多样性,随着加入更多的层,网络也可以学习到更强的表征。

 

在计算机视觉的网络架构中,常用的Transformer模型通常有一个等向性(Isotropic)的结构(如ViT),而CNN更倾向于使用金字塔结构(如ResNet)。

 

为了与其他类型的神经网络进行比较,研究人员为ViG同时建立了等向性和金字塔的两种网络架构。

 

 

在实验对比阶段,研究人员选择了图像分类任务中的ImageNet ILSVRC 2012数据集,包含1000个类别,120M的训练图像和50K的验证图像。

 

目标检测任务中,选择了有80个目标类别的COCO 2017数据集,包含118k个训练图片和5000个验证集图片。

 

 

在等向性的ViG架构中,其主要计算过程中可以保持特征大小不变,易于扩展,对硬件加速友好。在将其与现有的等向性的CNN、Transformer和MLP进行比较后可以看到,ViG比其他类型的网络表现得更好。其中ViG-Ti实现了73.9%的top-1准确率,比DeiT-Ti模型高1.7%,而计算成本相似。

 

 

金字塔结构的ViG中,随着网络的加深逐渐缩小了特征图的空间大小,利用图像的尺度不变量特性,同时产生多尺度的特征。

 

高性能的网络大多采用金字塔结构,如ResNet、Swin Transformer和CycleMLP。在将Pyramid ViG与这些有代表性的金字塔网络进行比较后,可以看到Pyramid ViG系列可以超越或媲美最先进的金字塔网络包括CNN、MLP和Transfomer。

 

结果表明,图神经网络可以很好地完成视觉任务,并有可能成为计算机视觉系统中的一个基本组成部分。

 

 

为了更好地理解ViG模型的工作流程,研究人员将ViG-S中构建的图结构可视化。在两个不同深度的样本(第1和第12块)的图。五角星是中心节点,具有相同颜色的节点是其邻居。只有两个中心节点是可视化的,因为如果绘制所有的边会显得很乱。

 

 

可以观察到,ViG模型可以选择与内容相关的节点作为第一阶邻居。在浅层,邻居节点往往是根据低层次和局部特征来选择的,如颜色和纹理。在深层,中心节点的邻居更具语义性,属于同一类别。ViG网络可以通过其内容和语义表征逐渐将节点联系起来,帮助更好地识别物体。
参考资料:https://arxiv.org/pdf/2206.00272.pdf

相关文章
|
算法 Shell 测试技术
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
|
Kubernetes Java Serverless
进击的 Serverless:Java 应用如何从容地面对突增流量
进击的 Serverless:Java 应用如何从容地面对突增流量
104400 85
|
11月前
flutter开发中Use ‘const’ with the constructor to improve performance. Try adding the ‘const’ keyword to the constructor invocation.报错如何解决-优雅草卓伊凡
flutter开发中Use ‘const’ with the constructor to improve performance. Try adding the ‘const’ keyword to the constructor invocation.报错如何解决-优雅草卓伊凡
195 1
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的未来:机器学习与深度学习的融合之旅
【9月更文挑战第35天】在这篇文章中,我们将深入探讨人工智能的两大支柱——机器学习和深度学习。我们将通过代码示例和实际应用案例,揭示它们如何相互补充,共同推动AI技术的发展。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启示。
273 0
|
12月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
9319 2
|
Android开发
[ionic]解决Could not read build file capacitor/build.gradle as it does notexist.
[ionic]解决Could not read build file capacitor/build.gradle as it does notexist.
211 1
|
存储 NoSQL Linux
【MongoDB】下载安装、指令操作
【MongoDB】下载安装、指令操作
512 1
|
缓存 自然语言处理 知识图谱
LLM应用实战:当KBQA集成LLM
项目是关于一个博物馆知识图谱,上层做KBQA应用。实现要求是将传统KBQA中的部分模块,如NLU、指代消解、实体对齐等任务,完全由LLM实现,本qiang~针对该任务还是灰常感兴趣的,遂开展了项目研发工作
310 0
|
弹性计算 负载均衡 前端开发
高可用之弹性伸缩
【2月更文挑战第30天】弹性伸缩旨在实现服务容量按需线性扩展,依赖于敏捷基础设施和资源池共享。它包括弹性扩容、缩容和自愈三个层面。