GINet:Graph Interaction Network for Scene Parsing(ECCV 2020)详解

2023-05-16

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


一、背景

       Scene Parsing 任务属于语义分割的一个分支,也是把每个像素点分成一个具体的语义类别,它和常见的语义分割的区别在于 Scene Parsing 任务的数据集里的类别分为 ObjectStuff 两种类别,Stuff 类别是背景类别,比如天空、草地这种形状不太固定的类别,而且这种数据集的类别一般也会比较多,比如 ADE20K 数据集有 150 个类别。
在这里插入图片描述
       在 Scene Parsing 任务里很重要的一件事情是怎么去构造上下文的信息,因为想从 RGB 值过渡到语义类别上的话,怎么去获得它想要的一些其他像素点的信息是特别重要的。常见的一种简单的方式是用 FCN(上图)去堆叠卷积层和池化层,但这种方式有两点问题

  1. 在每一个像素点上它的感受野都是一致的。
  2. 理论的感受野和实际的感受野是不一致的。

       也就是说感受野缺乏了多样性。
       在 FCN 之后有一些工作提出来尝试把 multi-level 的信息加入到上下文建模里面,比如说 PSPNet 是把特征 pooling 成不同的大小,然后再把它们 concat 在一起,这样每一个特征位置上都能够捕捉到多尺度的信息;deeplab 中的 ASPP 模块尝试用不同空洞率的空洞卷积去捕捉不同尺度。这类方法的问题它的 multi-level 的尺度是手工定义的。
       那有没有一种更好的方法是针对每个像素它都有自己的一个独特的 context 信息,Non-local 就是这种方式,针对每一个像素都去求这个像素和其他周围像素点之间的关系,在语义分割任务里 DANetOCNet 都是这方面的工作。
在这里插入图片描述
       最近有一些工作尝试去减少 Non-local 的计算复杂度,因为理论上来讲其实不需要针对每一个像素都去求它的 context 信息,对于某些相似的区域可以 share 一些 context 。所以有一些工作提出来把 GCN 放到分割任务里面,面向语义分割的 GCN 有一个共同的特点就是一共分三步,第一步是投射:把特征从特征空间投射到图空间;第二步是图推理:在图空间上去做 GCN(在投射到图空间的时候每一个结点实际上对应了图像上的一些区域,那么只要在这些结点之间去做 GCN 就代表在捕捉区域之间的关系);第三步是反投射:把这个特征从图空间反投射到特征空间上。用这种方式去增强特征的分辨能力。

二、动机

       针对以上背景和前人工作,这篇文章考虑的问题是 context 只是去捕捉其他像素点的信息可能不够,是不是可以把一些语义的上下文概念加进来,作者尝试在第二步图推理时将语义概念加进来。也就是说,作者希望能够不仅去推理视觉区域之间的关系,而且把语义概念和它们之间的关系加到推理过程中来。
在这里插入图片描述

三、主要贡献

  1. 提出了用于上下文建模的新型“图形交互单元”(GI单元),该单元结合了基于数据集的语义知识,以促进视觉图上的上下文推理。
  2. 提出了语义上下文损失(SC-loss)来规范训练过程,该方法强调了出现在场景中的类别,并抑制了没有出现在场景中的类别。

四、方法

       下图是这篇文章的整体框架。

       首先,采用经过预训练的 ResNet 作为 backbone,在给定输入 2D 图像的情况下,可以提取视觉特征(视觉表示);同时,可以以分类实例(类)的形式提取基于数据集的语义知识,并将其输入 Word Embedding 以实现语义表示。

       其次,视觉特征和语义表示由所提出的 GI 单元进行投射操作,以分别构造两个图(视觉图和语义图):在视觉特征上建立了一个编码视觉区域之间依赖关系的图,其中节点表示视觉区域,边表示区域之间的相似性或关系;另一个图是建立在与数据集相关的类别(由 word embedding 表示)之上的,该类别对语义相关性和标签相关性进行编码。

       接下来,在GI单元中进行图交互操作,其中语义图用于在视觉图上促进上下文推理,并指导从视觉图提取基于示例的语义图。(交互的结果是:VisG 上的每个节点得到了一些它需要的语义上下文信息;SemG 上的每个节点在从 Embedding 抽取出来的时候是一个General的表征,但在经过图交互之后它实际上是对于当前图片的每一个语义类别的表征了。)

       然后,由GI单元生成的演化后的视觉图通过反投射操作,把特征从图空间反投射到特征空间上,以增强每个局部视觉表示的判别能力;语义图则在训练阶段受到语义上下文损失(SC-loss)的更新和约束。(约束语义图上每一个类别的有无,SC-loss在文章实验当中显示可以有效地提高小物体类别的识别率。)

       最后,采用 1×1 卷积,然后进行简单的双线性上采样获得解析结果。
在这里插入图片描述

五、实验

       下面两个表是作者做的 Ablation Study
       从表1可以看到在 VisG 之后添加 GINet 模块,把语义信息加进来之后可以提高 0.8 个点,进一步地用 SC-loss 去约束全局的语义概念又可以得到 0.7 个点的提升。
       表2是和常见的一些 context 建模方法的比较,可以看本文提出的 GINet 显示出了比较高的性能和比较快的速度。
在这里插入图片描述
       下表是和一些 state-of-the-art 的方法比较,可以看出本文提出的 GINet 在 PASCAL-Context、COCO Stuff 和 ADE20K 数据集上均获得了不错的性能。
在这里插入图片描述
       下图是一些结果的可视化,重点其实是作者尝试随机选了三个节点初始化了出来,可以看到不同的节点其实对应图片中不同的区域,也就是说只要在这些节点之间去做交互就可以得到区域之间的关系。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GINet:Graph Interaction Network for Scene Parsing(ECCV 2020)详解 的相关文章

  • 给定源顶点,查找有向图中具有环路的所有路径

    我无法解决这个问题 我必须找到所有simple从源顶点开始的路径s含有一个simple有向图中的循环 即不允许重复 当然除了循环在路径上连接回的单个重复顶点 我知道如何使用 DFS 访问来查找图形是否有循环 但我找不到一种方法来使用它来查找
  • 如何在使用邻接矩阵表示的大型网络中找到桥梁(社区连接节点)

    我有大约 10K 到 100K 个节点的网络 这些节点都已连接 这些节点通常被分组为社区集群 这些社区集群之间通过许多边紧密相连 并且存在集线器等 在社区之间存在具有一些边的节点bridging 连接社区在一起 这些数据集位于邻接矩阵中 我
  • sql server图形查询,找到节点的所有路径

    我有一个非常常见的问题 我试图使用图形查询来解决 sql server 2017 我想构建一个查询并查找节点中的任何人如何连接到C 我想构建一个查询并查找节点中的任何人如何连接到C 有 1 或 2 个连接 这是创建该图的完整脚本 DROP
  • 如何将自定义图形适合boost图形库模板?

    我对 C 模板很生疏 而且我正在使用 boost 图形库 一个致命的组合 我在网上搜索过 但找不到任何关于如何采用自定义图形结构并将其足够适合 BGL 增强图形库 的直接说明 以便我可以使用增强图形遍历算法 有熟悉图书馆的人可以帮助我吗 编
  • D3.js 的 Python 等效项

    谁能推荐一个可以做到这一点的Python库交互的图形可视化 我特别想要类似的东西d3 js https d3js org 但对于python理想情况下它也是 3D 的 我看过 NetworkX https networkx readthed
  • 从绘图中删除线

    只是一个简单的问题 我正在尝试在 R 中绘制图表 并且我已经介绍了如何做到这一点 但是如何删除刚刚创建的线 例如 x lt c 1 2 4 5 6 7 7 8 10 y lt c 40 30 10 20 53 20 10 5 plot x
  • 寻找有向或无向图中的最短循环

    我正在寻找一种算法来找到有向或无向图中的最短周期 例如 对于节点 3 算法可能返回 周期1 3 gt 10 gt 11 gt 7 gt 8 gt 3 周期2 3 gt 10 gt 9 gt 8 gt 3 对于这些循环 最短的是循环 2 位于
  • 图库的 xml 树解析器 (Haskell)

    我正在编写一个用于处理图形的库 主要任务 解析 xml tree 这棵树看起来像
  • 将边权重传递给networkx中的graphviz_layout

    每个人都找不到如何将权重列表的属性名称传递给networkx中的graphviz layout 像这样的事情 nx spring layout G weight weight sum 但与nx graphviz layout G 也许有人会
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • 如何在 Excel 中创建时间范围图表

    Can anyone help me create graph of time ranges of all elements in Excel My data looks like this 连接时间和断开连接时间数据值采用 24 小时格式
  • 什么是好的、免费的 PHP 图表套件?

    我要做的只是基本的折线图 任何人分享的经验将不胜感激 不是真正的 PHP 但我发现 amchart 非常容易实现 而且看起来很棒 http www amcharts com http www amcharts com 还可以查看 Googl
  • boost::property_map 在 boost 中是如何实现的以及如何更改它

    我想知道属性映射是如何在提升图中实现的 例如 我的顶点和边属性定义如下 vertex property gt struct NodeInfo int a b c actual bundled property struct NodeInfo
  • 图表贡献者为空

    我在 github 上有几个项目 但其中一些项目的贡献者图是空的 即使我的 gitconfig 设置了名称和电子邮件 https github com jlengrand batchWaterMarking graphs contribut
  • 在 python 中使用 graphviz 从 DOT 文件绘制有向图

    这是API参考 http graphviz readthedocs io en latest api html for graphviz 我找不到任何从现有的生成有向图的方法dot源文件 方法如render and view保存在新文件中
  • R中一张图中的多个条形图

    我是 R 初学者 我需要创建一个像这样的图表 https i stack imgur com az56z jpg https i stack imgur com az56z jpg 我不知道如何生成整个数据集 基本思想是某个外显子 ID 会
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • Bokeh 中单独的节点和边缘悬停工具?

    我正在尝试为 Bokeh 中的节点和边缘获取单独的悬停工具提示 但未能使其正常工作 有人可以指出我做错了什么吗 我相信代码应该如下所示 from bokeh io import show output notebook from bokeh
  • 用表达式分割轴标签

    我有一个带有包含表达式的长标签的图 我想将其分成两行 在表达式中添加 n 结果不符合预期 ylabel lt expression A very long label with text and n expression alpha bet
  • Android 图表[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个项目 其中有一些图表 图形 刻度图 烛台图和范围图 但问题是 没有该图表的库 我有烛台图的

随机推荐