(AAAI,2024)Structure-CLIP:利用场景知识图谱增强多模态结构化表征

文章目录

  • Structure-CLIP: Towards Scene Graph Knowledge to Enhance Multi-modal Structured Representations
    • 相关资料
    • 摘要
    • 引言
    • 方法
      • 通过场景图进行语义负采样
      • 场景图生成
      • 选择语义负样本
      • 对比学习目标
      • 知识增强编码器

Structure-CLIP: Towards Scene Graph Knowledge to Enhance Multi-modal Structured Representations

相关资料

论文:[2305.06152] Structure-CLIP: Towards Scene Graph Knowledge to Enhance Multi-modal Structured Representations (arxiv.org)

代码:zjukg/Structure-CLIP: [Paper][AAAI2024]Structure-CLIP: Towards Scene Graph Knowledge to Enhance Multi-modal Structured Representations (github.com)

摘要

大规模视觉-语言预训练在多模态理解和生成任务中取得了显著的性能。然而,现有方法在需要结构化表示的图像-文本匹配任务上表现不佳,即表示对象、属性和关系的能力。模型无法区分“宇航员骑马”和“马骑宇航员”。这是因为它们在学习多模态表示时未能充分利用结构化知识。在本文中,我们提出了一个端到端的框架StructureCLIP,它通过整合场景知识图谱(SGK)来增强多模态结构化表示。首先,我们使用场景图指导构建语义负样本,这增加了学习结构化表示的重视。此外,我们提出了一个知识增强编码器(KEE),利用SGK作为输入进一步增强结构化表示。为了验证所提出框架的有效性,我们采用上述方法对模型进行预训练,并在下游任务上进行实验。实验结果表明,Structure-CLIP在VG-Attribution和VG-Relation数据集上实现了最先进的性能,分别比多模态最先进模型领先12.5%和4.1%。同时,MSCOCO上的结果表明,Structure-CLIP在保持通用表示能力的同时显著增强了结构化表示。我们的代码可在https://github.com/zjukg/Structure-CLIP上获得。

引言

在这里插入图片描述

尽管多模态模型在各种任务中的表现令人印象深刻,但这些模型是否能有效捕获结构化知识——即理解对象属性和对象间关系的能力——这一问题仍未解决。如图1(a)所示,图像与正确匹配的标题(“宇航员正在骑马”)之间的CLIP得分(即语义相似性),与图像和不匹配的标题(“马正在骑宇航员”)之间的得分相比,呈现出较低的值。CLIP模型表现出与词袋方法类似的倾向,它不领会句子中的细粒度语义

我们提出了Structure-CLIP,这是一种新方法,利用场景知识图谱(SGK)来增强多模态结构化表示。首先,我们利用SGK构建更符合背后意图的词交换。其次,我们提出了一个知识增强编码器(KEE),利用SGK提取基本结构信息。通过在输入级别整合结构化知识,所提出的KEE可以进一步增强结构化表示的能力。

方法

在这里插入图片描述

通过场景图进行语义负采样

Faghri等人(2018)提出了一种负采样方法,该方法通过与正样本比较来构建负样本,以增强表示。我们的目标是构建具有相似通用表示但不同详细语义的样本,从而鼓励模型专注于学习结构化表示。

场景图生成

在我们的框架中,采用了Wu等人(2019b)提供的场景图解析器来解析文本到场景图。给定文本句子 w w w,我们将其解析为场景图 G ( w ) = < O ( w ) , E ( w ) , K ( w ) > G(w) = <O(w), E(w), K(w)> G(w)=<O(w),E(w),K(w)>,其中 O ( w ) O(w) O(w) w w w中提到的对象集合, E ( w ) E(w) E(w)是关系节点集合, K ( w ) K(w) K(w)是与对象相关联的属性对集合。

选择语义负样本

对比学习旨在通过将语义上接近的邻居拉近,将非邻居推远来学习有效的表示。我们的目标是构建具有相似组成但不同详细语义的语义负样本。因此,负样本的质量在结构化表示学习中起着至关重要的作用。给定一个图像-文本对 ( I i , W i ) (I_i, W_i) (Ii,Wi)和从 W i W_i Wi生成的相关场景图 G ( W i ) G(W_i) G(Wi),通过以下方式生成高质量的语义负样本 W i − W^−_i Wi

W i − = F ( W i , G ( W i ) ) , ( 1 ) W^−_i = F(W_i, G(W_i)),(1) Wi=F(Wi,G(Wi))(1)

其中F是提出的采样函数,W− i表示高质量的语义负样本。具体来说,对于场景图中的三元组(对象1,关系,对象2), W i − W^−_i Wi通过以下方式生成:

W i − = S w a p ( ( O 1 , R , O 2 ) ) = ( O 2 , R , O 1 ) , ( 2 ) W^−_i = Swap((O_1, R, O_2)) = (O_2, R, O_1),(2) Wi=Swap((O1,R,O2))=(O2,R,O1)(2)

其中Swap是交换句子中的对象和主体的函数。对于属性对 ( A 1 , O 1 ) (A_1, O_1) (A1,O1) ( A 2 , O 2 ) (A_2, O_2) (A2,O2) W i − W^−_i Wi通过以下方式生成:

S w a p ( ( A 1 O 1 ) , ( A 2 O 2 ) ) = ( A 2 O 1 ) , ( A 1 O 2 ) 如果 O 1 ≠ O 2 ,如果 O 1 = O 2 则保持不变, ( 3 ) Swap((A_1O_1), (A_2O_2)) = (A_2O_1), (A_1O_2)如果O_1 ≠ O_2,如果O_1 = O_2则保持不变,(3) Swap((A1O1),(A2O2))=(A2O1),(A1O2)如果O1=O2,如果O1=O2则保持不变,(3)

对比学习目标

我们的对比学习目标是通过将图像 I i I_i Ii和原始标题 W i W_i Wi拉近,将图像 I i I_i Ii和负样本 W i − W^−_ i Wi推远来学习足够的表示。具体来说,我们引入了一个多模态对比学习模块,其损失函数为:

L h i n g e = m a x ( 0 , γ − d + d ′ ) , ( 4 ) L_{hinge} = max(0, γ − d + d^′),(4) Lhinge=max(0,γd+d)(4)

同时,为了保持模型的通用表示能力,我们将原始的小批量图像-文本对比学习损失和提出的损失结合进行联合训练。原始的图像-文本对比学习损失 L I T C L L_{IT CL} LITCL包含一个图像到文本的对比损失 L i 2 t L_{i2t} Li2t和一个文本到图像的对比损失 L t 2 i L_{t2i} Lt2i

L I T C L = ( L i 2 t + L t 2 i ) / 2 , ( 5 ) L_{IT CL}=(L_{i2t}+L_{t2i})/2,(5) LITCL=(Li2t+Lt2i)/2(5)

最终损失:

L f i n a l = L h i n g e + L I T C L , ( 8 ) L_{final} = L_{hinge} + L_{IT CL}, (8) Lfinal=Lhinge+LITCL,(8)

知识增强编码器

知识增强编码器显式地将详细知识作为模型输入建模,即对象、对象的属性和成对对象之间的关系。具体来说,我们为两种结构化知识:对和三元组制定了统一的输入规范。我们在对中添加关系连接词“是”以统一表示。例如,对(白色,奶牛)将被当作三元组(奶牛,是,白色)来处理。这样,我们获得了一组三元组 T i n = ( h 1 , r 1 , t 1 ) , . . . , ( h k , r k , t k ) T_{in} = {(h1, r1, t1), ..., (hk, rk, tk)} Tin=(h1,r1,t1),...,(hk,rk,tk),其中(h, r, t)分别代表头部实体、关系实体和尾部实体。对于每个三元组(h, r, t),我们使用BERT的Tokenizer和Word Vocabulary Embeddings来获得每个实体的嵌入wh, wr, wt:

w x = W o r d E m b ( x ) , x ∈ [ h , r , t ] , ( 11 ) wx = WordEmb(x),x ∈ [h, r, t],(11) wx=WordEmb(x)x[h,r,t](11)

为了获得每个实体嵌入的三元组嵌入,我们使用以下编码函数:

e t r i p l e i = E N C t r i p l e ( h i , r i , t i ) = w h , i + w r , i − w t , i , ( 12 ) etriplei = ENC_{triple}(h_i, r_i, t_i) = w_{h,i} + w_{r,i} − w_{t,i},(12) etriplei=ENCtriple(hi,ri,ti)=wh,i+wr,iwt,i(12)

其中 E N C t r i p l e ( . ) ENCtriple(.) ENCtriple(.)是三元组编码函数。通过这个三元组编码器,我们的方法能更好地解决头部和尾部实体顺序颠倒的问题,详细分析见第4.4.3节。这样,K个三元组可以被处理成K个语义嵌入。然后我们将etriple输入到多个Transformer层中以获得最终的表示。

e K E = T R M s ( [ e t r i p l e 1 , . . . , e t r i p l e K ] ) , ( 13 ) eKE = TRMs([etriple1, ..., etripleK]), (13) eKE=TRMs([etriple1,...,etripleK]),(13)

知识增强编码器使我们能够从所有输入的三元组中提取足够的结构化知识,这些知识可以作为有效的结构化知识来提高结构化表示的性能。因此,知识增强编码器可以用来获取文本知识嵌入。然而,仅依赖结构化知识可能会导致一般语义表示的丢失。因此,我们整合了文本嵌入和结构化知识嵌入:

e t e x t = C L I P t e x t ( W i ) + λ ⋅ T R M s ( [ e t r i p l e ∗ ] ) , ( 14 ) etext = CLIPtext(Wi) + λ · TRMs([etriple*]), (14) etext=CLIPtext(Wi)+λTRMs([etriple]),(14)

我们的文本表示既包含了整个句子所携带的词汇信息,也包含了由句子中详细语义构成的结构化知识。

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

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

相关文章

go语言Gin框架的学习路线(七)

GORM入门(基于七米老师) 目录 GORM入门 安装 连接数据库 连接MySQL 连接PostgreSQL 连接Sqlite3 连接SQL Server 我们搞一个连接MySQL的例子 创建数据库 GORM操作MySQL GORM是一个流行的Go语言ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它提供了一种方…

maven私服上传jar包 400 Bad Request 错误

文章目录 前言一、直接看报错二、问题处理三 maven 私服配置说明总结 前言 maven仓库的私服,一般会存放公司或者个人封装的jar包,用来共享给二次开发和协作伙伴用,很方便 第一次发布没有问题,但是我第二次发布,开始报错了 一、直接看报错 [外链图片转存失败,源站可能有防盗链…

问题解决实录 | Anaconda | Anaconda Navigator 启动无反应

问题解决实录 | Anaconda | Anaconda Navigator 启动无反应 以管理员身份运行 Anaconda Prompt conda update -n root conda conda update --all如果执行完以上步骤 碰到 AttributeError: module ‘pkgutil’ has no attribute ‘ImpImporter’. Did you mean: ‘zipimporter…

HC-SR04超声波测距模块使用方法和例程(STM32快速移植)

基于STM32和HC-SR04模块实现超声波测距功能 HC-SR04硬件概述HC-SR04超声波距离传感器的核心是两个超声波传感器。一个用作发射器&#xff0c;将电信号转换为40 KHz超声波脉冲。接收器监听发射的脉冲。如果接收到它们&#xff0c;它将产生一个输出脉冲&#xff0c;其宽度可用于…

各类专业技术的pdf电子书

从业多年&#xff0c;收集了海量的pdf电子书籍&#xff0c;感兴趣的私聊。

App Instance 架构示例

前言 在Unity程序设计过程中&#xff0c;我们处理的第一个对象是Application Instance。 它的主要职责是启动流程管理、卸载流程管理&#xff0c;次要职责是管理在内部的子系统生命周期。其他职责&#xff0c;提供或桥接应用程序的配置信息、及其他第三方接口。 它通常以单例的…

图解 Hadoop 架构 |Yarn、MapReduce

Hadoop Hadoop 是什么 Hadoop 是由 Apache 基金会所开发&#xff0c;维护的分布式系统基础架构主要解决海量数据的存储和海量数据的分析计算问题广义上来说&#xff0c;Hadoop 通常是指一个更广泛的概念——Hadoop 生态圈&#xff0c;包括 MapReduce&#xff0c;HDFS&#xf…

淼淼瀛湖水,青青枇杷林

淼淼瀛湖水&#xff0c;青青枇杷林 ——西安工程大学赴陕西安康“筑梦乡村&#xff0c;携手同行”暑期社会实践团 俗语言“五月枇杷满树金”。枇杷营养丰富&#xff0c;食用&#xff0c;具有止渴、润燥、清肺、止咳等功效。为探索枇杷产业&#xff0c;实现乡村振兴&#xff0c…

代码随想录 day 18 二叉树

第六章 二叉树part06 详细布置 530.二叉搜索树的最小绝对差 需要领悟一下二叉树遍历上双指针操作&#xff0c;优先掌握递归 题目链接/文章讲解&#xff1a;https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B…

数据结构~~顺序表

目录 一、顺序表的概念 二、顺序表的接口实现 1.顺序表初始化 2.顺序表销毁 3.检查空间并扩容 4.顺序表尾插、顺序表头插 5.顺序表尾删、顺序表头删 6.顺序表查找 7.顺序表在pos位置插入x、删除pos位置的值 三、完整代码 四、总结 一、顺序表的概念 顺序表是用一段…

SpringCloud的认识和初步搭建

目录 一.认识SpringCloud 二.SpringCloud的部署 2.1开发环境 2.2数据库的建立 2.3SpringCloud的部署 第一步&#xff1a; 创建Maven项目 第二步&#xff1a;完善pom文件 第三步&#xff1a;创建两个子项目 第四步&#xff1a;声明项目依赖以及构建插件 第五步&#xf…

cocos2d-x安装和项目

首先多方查找资料发现教程很简洁&#xff0c;发现对自己的操作方面没多大帮助&#xff0c;后来干脆去官网&#xff0c;好像也很简洁。基于这样一个原因&#xff0c;加上我首次碰cocos2d-x&#xff0c;决定记录一下整个流程&#xff0c;解决实际操作上的疑惑。 涉及的方面&…

爬虫的深度爬取

爬虫的深度爬取和爬取视频的方式 深度爬取豆瓣读书 import time import fake_useragent import requests from lxml import etree head {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 …

Docker核心技术:Docker的基本使用

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;Docker的基本使用&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题Docker的基本使用&#xff08;本文&#xff09;Docker是如何实现的 3…

MongoDB自学笔记(四)

一、前文回顾 上一篇文章中我们学习了MongoDB中的更新方法&#xff0c;也学了一部分操作符。今天我们将学习最后一个操作“删除”。 二、删除 原始数据如下&#xff1a; 1、deleteOne 语法&#xff1a;db.collection.deleteOne(< query >,< options >) 具体参…

【SD】 Stable Diffusion(SD)原理详解与ComfyUI使用 2

Stable Diffusion&#xff08;SD&#xff09;原理详解与ComfyUI使用 Stable Diffusion&#xff08;SD&#xff09;原理详解与ComfyUI使用1. SD整体结构2. Clip&#xff08;文本编码器&#xff09;3. Unit&#xff08;生成模型&#xff09;4. VAE&#xff08;变分自编码器&#…

Electron 结合 Selenium + chromedriver 驱动服务实现浏览器多开

背景 在调研浏览器多开的过程中&#xff0c;electron 有自带的 browserview&#xff0c;webview&#xff0c;但是上面两个受制于 electron 内核版本限制&#xff0c;升级不够灵活&#xff0c;对新版的网页支持可能不及时&#xff0c;甚至不兼容&#xff0c;必须通过发布新的客…

redis的学习(一):下载安装启动连接

简介 redis的下载&#xff0c;安装&#xff0c;启动&#xff0c;连接使用 nosql nosql&#xff0c;即非关系型数据库&#xff0c;和传统的关系型数据库的对比&#xff1a; sqlnosql数据结构结构化非结构化数据关联关联的非关联的查询方式sql查询非sql查询事务特性acidbase存…

新版SpringSecurity5.x使用与配置

目录 一、了解SpringSecurity 1.1 什么是Spring Security&#xff1f; 1.2 Spring Security功能 1.3 Spring Security原理 1.4 RABC (Role-Based Access Control) 二、SpringSecurity简单案例 2.1 引入SpringSecurity依赖 2.2 创建一个简单的Controller 三、SpringSecu…

8.持久化

队列和消息都可以持久化。 持久化的目的就是让消息不丢失。 RabbitMQ本身退出&#xff0c;或者由于某种原因崩溃时造成的消息丢失。 RabbitMQ一旦宕机&#xff0c;就会造成队列和消息都丢失了。 RabbitMQ重启之后&#xff0c;非持久化的队列和消息都不存在了。 队列持久化…