Vision GNN: An Image is Worth Graph of Nodes

news2024/11/26 4:38:17
  • 感受野:在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。
    感受野并非越大越好,反而可能因为过大而过于发散
  • 梯度下降(Gradient Descent GD):简单来说就是一种寻找目标函数最小化的方法,它利用梯度信息,通过不断迭代调整参数来寻找合适的目标值。
  • 超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

在机器学习的过程中,
超参= 在开始机器学习之前,就人为设置好的参数。
模型参数=通过训练得到的参数数据。
通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果

  • 归一化:数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。
    目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。
  • 骨干网络:在计算机视觉任务中,骨干网络(Backbone)是对图像进行特征提取的基础网络。它是计算机视觉下游任务(如分类、分割、检测等)的核心组成部分。
    一个设计良好的特征提取网络能够显著提升算法的性能表现。

前置(VIT)

  • idea:
    1. 直接把图像分为固定大小的patches
    2. 通过线性变换得到patch embedding。类似于NLP的words和word embedding
    3. 由于transformer的输入就是a sequence of token embeddings,则把图像的patch embeddings送入transformer后就能够进行特征提取从而分类

研究背景

  • 选题切入点
    • CNN和Transformer存在的问题
      CNN和Transformer认为图象是网格或者序列结构,不能灵活地捕捉不规则和复杂的物体。
      在这里插入图片描述
    • GNN在CV中的研究现状
      • GNN只能用在有天然的图的特殊的视觉任务(如点云数据的分类和分割)
      • 对于计算机视觉中的一般应用(如图像分类),缺少一个通用的GNN骨干网络来处理图像
  • 用graph的优点:
    • graph是一种广义的数据结构,网格和序列可以视为图的特例
    • 图比网格或序列更灵活地建模复杂对象,因为图像中的对象通常不是方形的,其形状是不规则的
    • 一个对象可以视为部分的组合(例如说一个人可以分为头,上半身,手臂,腿),图结构可以构建这些部分之间的联系
    • GNN的先进研究可以转移到解决视觉问题上
      用图结构表示图像

方法

用图结构表示图像

图像预处理主要是将 2D 图像转化为一个图结构。图像首先被均匀切分成若干个图像块,每个图像块通过简单的映射转化为特征向量X={x1,x2,……,xN}。这里每个图像块特征视作一个节点,也就是V={V1,V2,……,VN} ,对于每个节点,找到它的 K 近邻 N(vi),然后在两者之间连接一条边,从而构建出一个完整的图结构:
在这里插入图片描述

图卷积

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

在这里插入图片描述

其中 Aggregate 聚合操作通过聚合相邻节点的特征来计算节点的表示,Update 更新操作用来更新聚合后的节点特征。在实际部署时,使用了 max-relative 图卷积:

在这里插入图片描述

增强节点多样性

直接堆叠图卷积构建视觉图网络的话,由于图像块存在相似性和图卷积的聚合机制,会出现节点过平滑的现象,也就是随着网络的加深,节点特征之间会越来越相似。为了缓解这个问题,ViG 引入前馈神经网络 FFN 模块以及更多线性变换来增强特征变换能力和特征多样性.

在图卷积之前和之后应用一个线性层,将节点特征投影到同一个域中,并增加特征的多样性。在图卷积后插入一个非线性激活函数,以避免多层退化为单层。升级后的模块称为 Grapher 模块:

在这里插入图片描述

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

在这里插入图片描述

通过 Grapher 模块和 FFN 模块的堆栈构成 ViG 块,ViG 块用作构建网络的基本构建单元。基于图像的图形表示和提出的 ViG 块,可以为视觉任务构建 ViG 网络

ViG 网络架构

通过堆叠 L 个 ViG block,构成作者的 ViG 网络结构。给出了 isotropic 式和金字塔式两种网络架构,如下表所示。

图片

表 1:Isotropic ViG 网络结构参数。
在这里插入图片描述

表 2:Pyramid ViG 网络结构参数。

贡献&局限

  • 创新点
    • 提出了一个用于视觉任务的通用GNN骨干网络,并设计了同向性结构和金字塔结构
    • 直接在图像上使用GNN会出现over-smoothing问题并导致性能变差,故提出了FC操作和FFN层来解决这个问题
  • 局限性
    • 与VIT相同,VIG在少量的数据下表现得性能并不优秀,往往需要通过大量的数据做梯度下降才能取得比较好的效果
    • 从image到graph的过程中,本文采用KNN来取K(超参数)个邻居作为邻居结点;对于不同的图像,所需的K值不一定相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1600165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在linux系统中启动pycharm

1.找到pycharm的安装路径,一般在下载文件夹中 2.进入pycharm的安装路径,进入bin目录 3.右击,打开终端,输入./pycharm.sh

民航电子数据库:[E14024]事务内变更操作次数超过最大许可值10000,可通过系统参数max_trans_modify适当调整限制

目录 一、场景二、异常情况三、原因四、排查五、解决 一、场景 1、对接民航电子数据 2、执行delete语句时报错 二、异常情况 三、原因 通过报错信息就可以看出,是系统参数max_trans_modify配置导致 当删除的数据量 > max_trans_modify时,删除就会…

【LeetCode每日一题】924. 尽量减少恶意软件的传播(并查集)

文章目录 [924. 尽量减少恶意软件的传播](https://leetcode.cn/problems/minimize-malware-spread/)思路:并查集代码: 924. 尽量减少恶意软件的传播 思路:并查集 构建并查集:首先,代码创建了一个 UnionFind 类来维护节…

AIGC教育行业全景报告:AI助教和家教成真,学习机迎来新机遇

原文:AIGC教育行业全景报告:AI助教和家教成真,学习机迎来新机遇 - AI新智界 图片来源:由无界AI生成 经过一年的快速迭代,业内对于生成式AI将会率先落地于哪些行业已经有了答案。 教育领域,不仅被OpenAI列…

leetcode1448.统计二叉树中的好节点数目

1. 题目描述 题目链接 2. 解题思路 首先看一下题目的“核心”,什么是好节点:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。也就是说,我们只要知道了从根节点到该节点的所有的值,就可以判断该节点是…

【代理模式】静态代理-简单例子

在Java中,静态代理是一种设计模式,它涉及到为一个对象提供一个代理以控制对这个对象的访问。静态代理在编译时就已经确定,代理类和被代理类会实现相同的接口或者是代理类继承被代理类。客户端通过代理类来访问(调用)被…

iOS依赖库版本一致性检测:确保应用兼容性

一、背景 在 iOS 应用开发的世界里,每次 Xcode 更新都带来了新的特性和挑战。最近的 Xcode 15 更新不例外,这次升级引入了对 SwiftUI 的自动强依赖。SwiftUI最低是从 iOS 13 开始支持。 这一变化也带来了潜在的兼容性问题。如果您的项目在升级到 Xcode…

《大话数据结构》02 算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 1. 两种算法的比较 大家都已经学过一门计算机语言,不管学的是哪一种,学得好不好,好歹是可以写点小程序了。现在…

为什么你不用懒人建站工具?套用这四个wordpress主题模板,1小时轻松搭建网站

懒人建站工具,凭借简单易用、快速上手和个性化定制的特点,为不熟悉代码和程序的人提供了搭建美观实用网站的便捷途径。无需专业的前端开发知识,无需雇佣专业开发人员,用户便能轻松实现网站搭建,满足个人或企业需求。懒…

【可实战】测试体系与测试方案设计(业务按公司实际情况,技术可参考通用测试方案)

一、如果我们要测试一个系统,首先我们要了解被测系统的架构 (一)业务架构-从需求里面去了解(角色和行为): 业务模型分析(是一个电商,还是一个企业的crm,还是一个网站&a…

高等数学——一文搞定二重积分

文章目录 二重积分的基本概念二重积分的性质累次积分计算二重积分的方法和技巧描点画图法对称性利用函数的奇偶性变量的轮换对称性 积分次序的选择积分区域的确认先看变量和先积变量基本原则穿线法确定先积变量的曲线范围 常见的曲线经典题目 二重积分的基本概念 定义&#xf…

ChatGPT 可以预测未来吗?

推荐 4月13日的一篇有趣的 paper,特来分享。 👉 当前的大型语言模型(LLMs)具有强大的数据合成和推理能力,但它们在直接预测尚未发生事件的准确性上常常受到限制。传统的预测方法依赖于直接询问模型关于未来的问题。 …

测出Bug就完了?从4个方面教你Bug根因分析

01 现状及场景 🎯 1.缺失bug根因分析环节 工作10年,虽然不是一线城市,也经历过几家公司,规模大的、规模小的都有,针对于测试行业很少有Bug根因环节,主流程基本上都是测试提交bug-开发修改-测试验证-发送报…

Spring学习(二)

图解: 2.核心容器总结 2.2.1 容器相关 BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载 ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载 ApplicationContext接口提供基础的be…

为什么科拓停车选择OceanBase来构建智慧停车SaaS应用

本文来自OceanBase的客户——拓客停车的实践分享 科拓停车简介与业务背景 作为智慧停车行业的佼佼者,科拓停车致力于提供全方位的智慧停车解决方案。服务涵盖车场运营管理、互联网智慧停车平台以及停车场增值服务等。通过不断研发创新,打造出了多样化的…

C++命名空间在内部声明函数,在外部定义函数

C命名空间在内部声明函数&#xff0c;在外部定义函数 #include <iostream> namespace A {int a;void func(); } void A::func() {std::cout << "Hello World!" << std::endl; } void main() {A::func(); }实际运行的代码和结果图如下&#xff1a;…

十大排序——10.基数排序

下面我们来看一下基数排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 基数排序&#xff08;Radix sort&#xff09;是一种非比较型整数排序算法 基本思想&#xff1a; 它的原理是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。基数排序的方式可以…

「51媒体」如何有效进行媒体邀约,提升宣传传播效果?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 进行有效的媒体邀约&#xff0c;提升宣传传播效果的关键在于策略性和专业性。以下是具体的做法&#xff1a; 明确目标&#xff1a;要确立清晰的品牌推广目标和策略&#xff0c;包括确定目…

DBUtils工具类的使用

1、DBUtils是什么 为了更加简单地使用JDBC&#xff0c;Apache组织提供了一个DBUtils工具&#xff0c;它是操作数据库的一个组件&#xff0c;实现了对JDBC的简单封装&#xff0c;可以在不影响数据库访问性能的情况下简化JDBC的编码工作量。DBUtils工具要有2个作用。 写数据&am…

【Linux】服务器硬件及RAID配置实战

目录 一、服务器 1.服务器 2.查看服务器信息 二、RAID 磁盘阵列 三、软RAID的创建和使用 1.添加硬盘&#xff0c;fdisk分区&#xff0c;分区类型ID设置为 fd 2.使用mdadm创建软raid 3.格式化 4.挂载使用 5.mdadm 一、服务器 1.服务器 分类机架式居多 塔…