Energy-Based Learning for Scene Graph Generation

news2024/10/5 21:18:56

 [2103.02221] Energy-Based Learning for Scene Graph Generation (arxiv.org)

目录

Abstarct

1 Introduction

2 Approach

2.1 Scene Graph Generation

2.2 Energy Based Modeling

2.3 Energy Models for Scene Graphs Generation

2.4 Energy Model Architectue

2.4.1 Edge Graph Neural Network

2.4.2 Pooling Layer


Abstarct

传统的场景图生成方法使用交叉熵损失来训练,将对象和关系视为独立的实体。然而,在一个固有的结构化预测问题中,这样的公式忽略了输出空间中的结构。本文提出一种新的energy-based学习框架来生成场景图。所提出的公式允许在输出空间中有效地合并场景图的结构。学习框架中的这个附加约束充当归纳偏差,并允许模型从少量标签中有效地学习。

1 Introduction

这些网络通常通过最小化两组标签上的个体交叉熵损失进行端到端训练。这种方法的主要缺点是预测的质量(损失)仅仅与正确预测标签的数量成正比,而忽略了场景图输出空间的丰富结构(例如,对象和关系标签集之间的相关性或排斥性)。此外,关系的训练样本数量的不平衡导致优势关系被严重偏爱,从而导致在测试时的关系预测有偏差。

因为基于交叉熵的训练将场景图中的object和relation视为独立的实体,这相当于将给定图像的场景图的可能性分解为单个对象和关系的可能性的乘积。

首先,在损失计算过程中,每个关系项的损失与场景图中其余部分预测的关系无关。因此,一个不正确的关系,如<人、骑、浪>,将与<人、后面、浪>一样受到惩罚,而不考虑其他关系<人,骑,岩石>。然而,使用常识推理,我们可以确定<人,骑,浪>在<人,携带,冲浪板>的情况下是极不可能的,相比与尽管不正确的关系‘behind’,应该受到严厉的惩罚。

其次,由于个体关系项的总和,为了使损失最小化,模型被激励去预测训练数据中更常见的关系。

作者提出基于能量的学习框架将场景图的结构整合到学习框架中,该框架依赖于图消息传递算法进行能量计算,该算法用于对给定图像的场景图的联合条件密度进行建模。这样的公式将问题从个体似然项的最大化总和转变为直接最大化对象和关系的联合似然。此外,这种增加的结构作为学习的归纳偏差,允许模型从更少的数据中有效地学习关系统计。

2 Approach

将image graph和场景图分别输入能量模型,并分别使用门控图神经网络和新型边缘图神经网络进行状态细化。然后,使用池化层获得每个图的向量表示。这些表示被连接起来,并作为输入传递给多层感知器,该感知器预测联合输入(图像)-输出(场景图)配置的能量。损耗是根据真实值和预测组态的能量值计算的。

2.1 Scene Graph Generation

概述基于标准交叉熵损失的当前场景图生成方法。

场景图生成方法采用一个两阶段的框架。(1)在第一阶段,给定一个图片I,使用Faster R-CNN等标准目标检测器获得边界框。使用RoIAlign和对象标签上的初始分布一起提取这些区域对应的特征。在下一阶段,这些检测被用作预测场景图的输入。

使用边界框特征以及对象标签和边界框的空间坐标来初始化一组节点特征。使用LSTM、TreeLSTM或Graph Attention Networks等架构对这些特征进行细化,以整合上下文信息。然后通过对精炼的特征进行分类得到对象标签O。关系标签R是通过从对象边界框的并集中提取特征得到的,然后使用BiLSTMs或BiTreeLSTMs进行状态细化,最后进行分类。

这些模型使用对象和关系标签上的标准交叉熵损失进行训练。在计算单个损失时,孤立地考虑每个对象和关系,然后将其相加以获得给定图像的损失。这种损失公式忽略了一个事实,即场景图中的对象和关系是相互依赖的。直观地说,将这些依赖关系结合到学习过程中应该会导致性能的提高。

作者提出了一种新的基于能量的学习框架,该框架允许使用在输出空间中明确包含结构的“损失”来训练场景图生成模型。

2.2 Energy Based Modeling

基于能量的模型通过为输入配置分配标量能量值来编码能量之间的依赖关系。

本文重点是场景图生成,是一个判别任务,对于这样的任务,只关系给定输入x的各种标签配置的相对能量。

2.3 Energy Models for Scene Graphs Generation

在本文的场景图函数中,数据是图像I,标签y是场景图SG(被定义为(O,R))。

作者从image中提取出基于graph的表示,叫做image graph(G_I)。使用从对象边界框中提取的特征来实例化image graph的节点。

给定场景图生成模型M和图像I,预测一个场景图 G^0_{SG},并且计算image graph G_I。将场景图和图像作为能量模型(Eθ)的输入,计算和预测配置相对应的能量。然后使用真实的场景图G^+_{SG}和image graph G^+_{I}(由真实bounding boxes构建)之间的能量值。然后用这两个能量值来计算能量损失:

计算这种损失需要解决一个优化问题,以找到一个最小化能量值的场景图配置:

预测的 G^0_{SG}用作“初始化”,通过Eq.(3)定义的一系列步骤到达低能量构型;每一步都类似于普通的梯度下降,只是增加了高斯噪声。当使用上述损失进行训练时,观察到能量值的大小变得任意大,导致梯度溢出。通过在能量值上添加L2正则化:

由于场景图的空间是非常高维的,为了稳定学习,我们需要限制能量模型的搜索空间。这是通过结合底层场景图生成模型使用的任务损失来完成的,将预测输出作为初始预测的附加正则化。训练场景图生成器和能量模型的总损失为:

2.4 Energy Model Architectue

给定image graph(G_I)和场景图(G_{SG}),能量模型首先使用GNN对状态表示进行细化,分别在场景图和image graph上使用EGNN和GNN来整合上下文信息。然后,在每个图上应用池化层,以获得总结图状态的向量表示。最后,将这两个向量输入到MLP,计算与预测的场景图配置相对应的能量值。然后对ground truth场景图和输入图像重复这些操作。能量模型可以被参数化为:

2.4.1 Edge Graph Neural Network

为了允许将卷积运算直接应用于包含边特征的(如场景图)graph representation,提出了一种改进的图消息传递算法。对于每一个节点ni,通过下式聚合来自邻居节点和边的信息:

类似地,传递边的消息由:

传递边消息是方向感知的,这是重要的,因为两个节点之间的关系取决于边缘的方向而变化。

2.4.2 Pooling Layer

使用门控池化层生成两个图的向量表示,

然后将这两个向量通过一个线性层,在连接之后,获得图形的最终向量表示。在图像图GI中,由于没有边缘特征,我们使用池化节点向量N作为图的向量表示。

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

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

相关文章

PCB多层板为什么都是偶数层?奇数层不行吗?

PCB板有单面、双面和多层的&#xff0c;其中多层板的层数不限&#xff0c;目前已经有超过100层的PCB&#xff0c;而常见的多层PCB是四层和六层板。那为何大家会有“PCB多层板为什么都是偶数层&#xff1f;”这种疑问呢&#xff1f;相对来说&#xff0c;偶数层的PCB确实要多于奇…

朋友面试字节要求月薪25K,明显感觉他背了很多面试题...

最近有朋友去字节面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&#…

Unity WebGL打包配置本地服务器

第一步打包 1&#xff09;、先对Player Setting进行设置 2&#xff09;、设置打包的窗口大小 3&#xff09;、遇到异常以及压缩格式 第一个启用异常&#xff0c;指用户指定在运行时意外的代码行为&#xff08;通常被认为错误&#xff09;如何被处理&#xff0c;有三个选项…

进程(四)

进程四 2.21 管程2.22 死锁的概念2.23 死锁的处理策略2.23.1 破坏四个条件2.23.2 动态策略: 避免死锁2.23.3 死锁的检测和解除 2.21 管程 本小计知识概览 为什么要引入管程 管程的定义和基本特征 管程是一种特殊的软件模块&#xff0c;有这些部分组成: 局部于管程的共享数据结…

javaWeb ssh微博系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh微博系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开 发。开发环境为TOMCAT7.0,Myecli…

智慧校园建设主要包括哪些方面的内容?

在当今数字化的时代&#xff0c;越来越多的学校开始实施智慧校园计划&#xff0c;旨在为学生和教师提供更加高效、便捷的学习和教学环境。 那么&#xff0c;究竟什么是智慧校园呢&#xff1f;智慧校园建设主要包括哪些方面的内容&#xff1f;这篇就来详细讲一讲&#xff01; …

3年外包出来,华为、字节全都一面挂,我哭死.....

测试员可以先在外包积累经验&#xff0c;以后去大厂就很容易&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓今年今天履历只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大…

字节软测划水四年,内容过于真实......

先简单交代一下吧&#xff0c;潇潇是某不知名211的本硕&#xff0c;18年毕业加入一个小厂&#xff0c;之后跳槽到了字节跳动&#xff0c;一直从事测试开发相关的工作。之前没有实习经历&#xff0c;算是四年半的工作经验吧。 这四年半之间他完成了一次晋升&#xff0c;换了一家…

(转载)基于多层编码遗传算法的车间调度算法(matlab实现)

以下内容大部分来源于《MATLAB智能算法30个案例分析》&#xff0c;仅为学习交流所用。 1 理论基础 遗传算法具有较强的问题求解能力&#xff0c;能够解决非线性优化问题。遗传算法中的每个染色体表示问题中的一个潜在最优解&#xff0c;对于简单的问题来说&#xff0c;染色体…

【ProtoBuf】2.环境配置

————————————每一个不曾起舞的日子都是对生命的辜负。 ProtoBuf安装 一. 安装Protofbuf-Win二. 配置环境变量三.验证是否添加成功四. Linux下Protobuf安装包的安装1. 下载ProtoBuf2. 解压压缩包3. 安装ProtoBuf4. 最后添加内容5.检查是否安装成功 五. 升级g到8版本…

Java 高级应用-多线程-(一)实现 Runnable 接口与继承 Thread 类

1.1 程序、进程与线程 • 程序&#xff08;program&#xff09;&#xff1a;为完成特定任务&#xff0c;用某种语言编写的一组指令的集合。即指一段 静态的代码&#xff0c;静态对象。 • 进程&#xff08;process&#xff09;&#xff1a;程序的一次执行过程&#xff0c;或是正…

支持图片扩展等AI功能,PS 2023 v24.5 安装教程

主要功能 PS发布了革命性的AI功能&#xff0c;创意填充&#xff0c;创意工具&#xff0c;图像预设&#xff0c;智能移除&#xff0c;上下文任务栏&#xff0c;智能渐变。 “创意填充”是一套具有革命性且神奇的全新功能&#xff0c;它由 AI 提供支持&#xff0c;基于您与生俱…

Spring Boot如何实现定时任务调度?

Spring Boot如何实现定时任务调度&#xff1f; Spring Boot提供了非常方便的方式来实现定时任务调度&#xff0c;我们可以使用Spring框架自带的Scheduled注解来实现。在本文中&#xff0c;我们将介绍如何使用Scheduled注解进行定时任务调度。 什么是定时任务调度&#xff1f; …

网瘾少年转行软件测试,月薪20k? 叛逆少年终归成长...

前言&#xff1a; 高中住校期间沉迷游戏&#xff08;DNF&#xff09;,尤其是高三那年,晚上翻墙出去通宵&#xff0c;白天上课睡觉&#xff0c;高考自然是考了个稀碎&#xff0c;高考结束那个暑假刚开始觉得整个人都自由了&#xff0c;爸妈看我没考上大学&#xff0c;知道我心情…

使用kong网关来实现负载均衡

一、负载均衡 当前一个服务进行多实例部署后&#xff0c;外部调用其中任意一个服务地址都可以得到响应。但是外部不可能记住也不应该记住所有的服务地址&#xff0c;这个时候就需要一个统一入口提供给外部进行调用&#xff0c;类似提供一个虚拟主机形式进行实现。后续就请求这…

Socket(七)

文章目录 1. 单文件服务器2. 重定向器Redirector3. 功能完备的HTTP服务器 1. 单文件服务器 要研究HTTP服务器&#xff0c;先从一个简单的服务器开始&#xff0c;无论接受什么请求&#xff0c;这个服务器都始终发送同一个文件。这个单文件服务器名为SingleFileHTTPServer&#…

泛型的介绍以及原理

目录 一、前言 二、什么泛型 三、为什么要使用泛型 3.1、保证了类型的安全性。 3.2、消除强制转换 3.3、提高程序的性能 3.4、 提高了代码的重用性 四、如何使用泛型 4.1、 泛型类 4.2、泛型接口 4.3、泛型方法 五、泛型通配符 5.1、无边界的通配符 5.2、固定上边…

telnet 120.XX8888会超时或者无反应,防火墙加入8888,安全组也加入8888,但是访问120.XX:8888也没有反应

⚠️命令都是远程登录的哦 选这个远程连接&#xff1a; 初次密码自己设置别忘了 1、看是否8888端口是否有正常监听 netstat -ntlp我这边清楚看到没有8888 2、如果没有监听是无法连接&#xff0c;需要安装对应的程序同时监听8888端口 比如我想用宝塔面板 我就需要下载宝塔面…

一步步入门编写PHP扩展

1、写在最前 随着互联网飞速发展&#xff0c;lamp架构的流行&#xff0c;php支持的扩展也越来越多&#xff0c;这样直接促进了php的发展。 但是php也有脚本语言不可避免的问题&#xff0c;性能比例如C等编译型语言相差甚多&#xff0c;所以在考虑性能问题的时候最好还是通过php…

00后实在太强了,98年的我被卷废了,太离谱了...

前言 最近在公司我真的感受到了什么叫“卷”&#xff0c;以往的我划划水日子过的轻轻松松&#xff0c;直到公司最近招了一个00后进来&#xff0c;真的让我感受到了危机&#xff0c;刚进来工资就和我差不多&#xff0c;我刚开始其实有点不太舒服&#xff0c;凭什么我辛辛苦苦干…