【多模态】8、MDETR

2023-11-11

在这里插入图片描述

论文:MDETR - Modulated Detection for End-to-End Multi-Modal Understanding

代码:https://github.com/ashkamath/mdetr

出处:ICCV 2021 Oral | Yann LeCun | NYU | Facebook AI

时间:2021.10

贡献:

  • 提出了端到端的多模态检测系统
  • 打破了传统目标检测只能检测特定类别的限制,可以实现对任意形式文本输入中提及的内容进行检测

flickr30k 数据下载:http://shannon.cs.illinois.edu/DenotationGraph/data/index.html

flickr30k 标注文件下载:https://github.com/BryanPlummer/flickr30k_entities

gqa 数据集下载:https://nlp.stanford.edu/data/gqa/images.zip

作者处理好的标注文件下载:https://zenodo.org/record/4729015/files/mdetr_annotations.tar.gz?download=1

一、背景

目标检测在很多多模态理解系统中有着很重要的作用,一般是用作一个黑盒,用于检测特定类别的目标,然后后面进行多模态对齐。

但这种 pipeline 会限制模型只能检测特定的目标,而不能实现对整个图像的描述。

此外,目标检测系统的类别是固定的,也会阻碍模型性能的改进,这些系统也不能识别任意类别的 text 输入

在一些新的工作中,将该问题归结为一个 text-conditioned 目标检测问题,这些工作将一些主流的单阶段和双阶段目标检测器进行扩展,来实现对任意输入的检测。但由于很多检测器不是端到端可微的,无法和下游任务一起训练,所以难以对下游任务产生很好的指导作用。

本文提出的 MDETR,是一个端到端可调节的检测器,基于 DETR 检测结构,并且将目标检测和自然语言处理理解联合训练,能够实现完全端到端的多模态推理

phrase grounding 任务:给定一个自由形式的文本,找出文本中提到的目标

在这里插入图片描述

二、方法

2.1 DETR

DETR:

  • DETR 是一个端到端的目标检测器,使用卷积网络作为 backbone,后面接一个 transformer encoder-decoder 来进行编解码
  • encoder:对卷积提取到的特征经过 flattened,使用一些 transformer 层来进行编码
  • decoder:输入是一系列 N 个可学习的 embedding(object queries),所有的 object queries 被并行输入 decoder
  • 训练策略:使用匈牙利匹配 loss,对 N 个预测的目标和真实的目标进行双边匹配,和 gt 匹配成功的预测结果就会使用该 gt 进行监督,没有匹配成功的就会被监督预测出 ‘no object’ label ϕ \phi ϕ
  • 分类头:使用 cross-entropy loss 来监督
  • 回归头:使用 L1 loss 和 GIoU 的结合来监督

2.2 MDETR

MDETR 的结构如图 2 所示:

  • 图像先经过 CNN 来提取特征,并 flattened
  • 给经过 flattened 的向量加上 2-D 位置编码
  • 将输入的 text 使用经过预训练的 transformer language model 进行编码
  • 使用线性映射,来对图像和文本特征映射到共同的编码空间,然后按序列维度来将生成的编码连接起来形成一个更长的编码,输入 cross encoder 中

在这里插入图片描述

MDETR 的训练:

loss 函数:

  • 作者在 DETR loss 函数之外还使用了两个额外的 loss 函数
  • 第一个是 soft token prediction loss:无参数的对齐 loss,因为 MDETR 不会直接输出类别,而是会输出目标和 token 的相似度
  • 第二个是 text-query contrastive alignment loss:有参数的 loss,计算 object query 和 token 的相似程度

1、soft token prediction loss

对于多模态的检测,不同于标准的目标检测设置,对每个检出的目标不关心其类别名称,而是对检出的目标和文本中的 token 进行匹配

  • 首先,将给定句子的最大 token 长度设为 256,对于每个和 gt box 匹配上的预测 box(根据双边匹配原则),模型都会预测一个和 object 相关的 token 的标准分布,如图 2 所示,cat 的 box 就能够预测前两个 words 的标准分布,图 6 也做了展示
  • 没有和目标匹配上的 query 会被训练来预测 ‘no object’ 的 label
  • 此外,可以注意到,可能会出现多个 words 对应图像中一个相同的目标,也可能会出现多个目标对应相同的 text,这样的 loss 设计能够让模型学习有共指关系的目标

在这里插入图片描述

2、text-query contrastive alignment loss

尽管 soft token prediction 使用 positional 信息来对齐目标和文本,但对比对齐 loss 能够更加增强以下两者的对齐程度:

  • object embedded representation:object 经过 decoder 的输出
  • text representation:cross encoder 的输出

contrastive alignment loss 的作用:能够确保图像目标的编码和与其对应的 text token 的编码比与其无关的 text token 的编码更加接近

对比对齐 loss 的公式如下:

  • token 的最大数量为 L,目标的最大数量为 N
  • T i + T_i^+ Ti+ 是一系列需要和给定 object o i o_i oi 进行对齐的 tokens
  • O i + O_i^+ Oi+ 是一系列需要和给定 token t i t_i ti 进行对齐的 objects
  • τ \tau τ 是温度参数,设置为 0.07

① 对所有 object 的 contrastive alignment loss 如下,归一化的方式是除以每个 object 对应的 positive token 数量:

在这里插入图片描述

② 对所有 token 的 constrastive loss 如下,归一化的方式是除以每个 token 的 positive object 数量:

在这里插入图片描述

③ 整体的 constrastive alignment loss 是上述两个子 loss 的平均

3、所有 loss 的结合

DETR 中,使用双边匹配的方法来寻找预测和 gt 中的最佳匹配

MDETR 中,最大的不同在于对没有预测的 object 没有特定的类别 label,而是预测 object 对应 text 中所有相关位置 token 的标准分布(soft token prediction),使用 soft cross entropy 监督

matching cost 由 L1 和 GIoU 组成

总体的 loss :box prediction loss(L1、GIoU)、soft-token prediction loss、contrastive alignment loss

三、效果

在这里插入图片描述

3.1 预训练调整后的检测器

本文中所谓的 modulated detection,表示的就是将传统的按类别检测的检测器进行调整或修改后的检测器,能够实现对任意文本输入设计到的目标都进行检测,而非只能检测特定的类别。

数据集:混合数据集

  • Flickr30k
  • MS COCO
  • Visual Genome (VG)

如何进行数据集混合:

  • 对每个图像,把整个数据集中的所有标注拿出来,将同一图片中目标的所有 text 结合起来
  • 如何结合成句子:使用 graph coloring algorithm,只把 GIoU<=0.5 的 box 对应的 phrase 结合起来,整个句子的长度小于 250
  • 通过上述方法,作者获得了 1.3M 个 image-text pairs

在这里插入图片描述

这种句子结合方式的好处:

  • 数据有效性,能够将很多信息打包到一个训练样本中
  • 能够为 soft token prediction loss 提供更好的学习信号,因为模型必须学习小区多个相同类别目标同时出现时的歧义,如图 3 所示

在这里插入图片描述

模型:

  • text encoder:pre-trained RoBERTa-base,有 12 层 transformer encoder,每个有 768 hidden dimension,12 heads,使用 HuggingFace 提供的权重
  • visual backbone:尝试了两个,一个是 ResNet-101,一个是 EfficientNet family

3.2 下游任务

1、Phrase grounding:给定一个或多个 phrases,该任务的目的是为每个 phrase 预测一系列的 bbox

在这里插入图片描述

在这里插入图片描述

2、Referring expression comprehension:给定一个图像和对应的文本描述,该任务是理解文本描述,并返回需要返回的目标,而非返回全部提及的目标

有三个数据集:

  • RefCOCO
  • RefCOCO+ [70]
  • RefCOCOg [36]

因为在预训练中,训练方式包括所有 text 涉及到的目标,和这个子任务有些不同,这个任务的一个示例如下:The woman wearing a blue dress standing next to the rose bush

  • 不需要返回所有的 woman、blue dress、rose bush
  • 只需要返回 woman box 即可

MDETR 在这个任务上进行了 5 epoch 的 finetuned,在推理阶段,使用 ϕ \phi ϕ 来对 100 个检测到的 box 进行排序, P ( ϕ ) P(\phi) P(ϕ) 表示被分配为 no label 的概率,使用 1 − P ( ϕ ) 1-P(\phi) 1P(ϕ) 降序排列,结果见表 2。

在这里插入图片描述

在这里插入图片描述

3、Referring expression segmentation:本文的方法也可以扩展到分割上

在这里插入图片描述

在这里插入图片描述

4、Visual Question Answering:如图 4 展示了本文模型的结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

【多模态】8、MDETR 的相关文章

  • 使用Express快速搭建静态资源服务器

    有时候 客户端程序实现了某些功能需要与服务端联调 比如从服务器下载一些静态资源文件 XML JSON EXE HTML JS CSS等 像前文提到的场景 测试Electron程序的自动升级功能 我们介绍了如何使用Minio 不用写一行代码就
  • python-数据可视化-使用API

    使用Web应用程序编程接口 API 自动请求网站的特定信息而不是整个网页 再对这些信息进行可视化 一 使用Web API Web API是网站的一部分 用于与使用具体URL请求特定信息的程序交互 这种请求称为API调用 请求的数据将以易于处

随机推荐

  • 【知识分享】数据结构的应用——链表

    背景 对于数据结构 其实学过C语言的都不陌生 无外乎就队列 栈 二叉树等等这些 但其实对于初学者最困惑的不是数据结构是怎么样的 而是数据结构有什么用 我自己也是工作好几年后才体验到数据结构的快乐 所以本系列文章重点从应用场景切入 让大家理解
  • android 源码分析

    感谢网友banketree的收集 压缩包的内容如下 1 360新版特性界面源代码 实现了360新版特性界面的效果 主要涉及到Qt的一些事件处理与自定义控件 但源码好像是c 2 aidl跨进程调用 服务端onBind暴露 然后客户端bindS
  • 架构师日记-软件工程里的组织文化

    一 引言 本文是京东到家自动化测试体系建设过程中的一些回顾和总结 删减了部分系统设计与实践的章节 保留了组织与文化相关的内容 整理成文 以飨读者 下面就以QA Quality Assurance 的视角来探讨工作中经常面临的问题与挑战 关于
  • java 代码走查_java代码走查计划书

    java代码走查计划书 由会员分享 可在线阅读 更多相关 java代码走查计划书 8页珍藏版 请在人人文库网上搜索 1 WATER Corporation 代码走查计划书Version 2 0XXX2012 3 20文档修改记录版本号主要作
  • Linux结构,ls命令,cd命令,绝对路径和相对路径,命令类型,环境变量

    Linux结构 软件 IDE shell 软件 库 一个系统调用 可执行程序无法独立执行 library API 内核 通用管理软件 平台 kernel 底层 硬件 在单个CPU上 硬件资源独立 IDE 集成的开发环境 可以让程序员开发程序
  • 【Flask&MySQL】ORM模型的CRUD操作(十二)

    CRUD是 crud是指在做计算处理时的增查改删 增加 Create 读取 Read 更新 Update 删除 Delete 几个单词的首字母简写 crud主要被用在描述软件系统中数据库或者持久层的基本操作功能 一 添加操作 1 创建视图函
  • Maven本地仓库有jar包却无法导入项目

    本地的maven仓库有jar包 setting文件配置没问题 仓库路径没问题 但是无法导入到项目中 任务中总是显示在下载 从网上找了各种方法 其中一个 将本地仓库中的所有 remote repositories 文件删除 解决了问题 记录一
  • layuiajax提交表单控制层代码_表单提交中的post方法和get方法

    我们在Web表单提交 常常需要选择提交方法 这时我们会用到GET和POST方法 但关于它们之间的区别你又知道多少 今天我们就来了解它们 这两方法其实是HTTP协议中的请求方法 关于HTTP协议可以阅读之前我写的 解密Web通信协议 超文本传
  • Qt/GUI/布局/实现窗口折叠效果/且在操作时父窗口尺寸跟随变动

    文章目录 概述 无法resize到小尺寸 可行方案 其他方案 概述 本文旨在 实现如下所示的显示或隐藏 附加选项 的效果 以折的不常用信息和操作项 减少普通用户负担 提升用户体验 在某些软件中此类窗口折叠效果 常用 按钮 来触发 另一种折叠
  • 软考知识:有关ftp协议 的20端口和21端口的作用和区别

    转载 FTP服务器端口详解 搭建ftp的工具有哪些 贝锐花生壳官网 1 FTP服务器 file transfer protocol server 是在互联网上提供文件存储和访问服务的计算机 他们依照ftp协议提供服务 简单地说 支持FTP协
  • UE4地形简单材质球制作,及地形变黑处理办法

    UE4地形简单的材质球制作 及地形变黑处理办法 2 制作地貌材质球 别忙着创建地貌 在之前你得准备制作一个地貌材质球 新建材质 放到Material里面 找几张你会需要到的贴图 任意张 拖到材质球里面去 鼠标右键输入LandscapeLay
  • 感应(异步)电机磁场定向控制MATLAB/Simulink建模

    电机控制系列文章 感应 异步 电机磁场定向控制电流环PI控制参数设计 感应 异步 电机磁场定向控制速度环PI控制参数设计 目录 电机控制系列文章 前言 一 控制器与被控对象的采样周期 二 系统解算器设置 三 被控对象建模 四 控制器建模 1
  • Linux环境打包Qt程序并部署到Docker容器

    Linux环境打包Qt程序并部署到Docker容器 根据项目需要 将UKylin版本的qt应用程序打包并且部署到docker容器中 系统版本 UKylin版本 Ubuntu18 04 Docker镜像 Ubuntu latest 一 打包Q
  • 轴承剥离型故障对应的特征频率

    包络分析技术是轴承早期故障检测和诊断领域的一种非常有效的信号分析技术 这种技术最早由Mechanical Technology 公司于 1970 年代提出 最初叫做高频共振技术 由于这种技术非常有效 很快就获得了广泛的使用 这种技术还被称作
  • Liunx(一)VMware虚拟机安装学习--Liunx学习的准备

    虚拟机安装 初衷 一 安装前的准备 二 虚拟机硬件配置 2 1 打开VMware 选择 创建新的虚拟机 2 2典型安装与自定义安装 2 3 虚拟机兼容性选择 2 4 选择稍后安装操作系统 2 5操作系统的选择 2 6 虚拟机位置与命名 2
  • sqlmap使用教程

    目录 sqlmap基础使用 1 判断是否存在注入 2 判断文本中的请求是否存在注入 3 查询当前用户下的所有数据库 4 获取数据库中的表名 5 获取表中的字段名 6 获取字段内容 7 获取数据库所有用户 8 获取数据库用户的密码 9 获取当
  • 【廖雪峰python入门笔记】tuple_创建

    tuple 1 是另一种有序的列表 中文翻译为 元组 2 tuple 和 list 非常类似 但是 tuple一旦创建完毕 就不能修改了 同样是表示班里同学的名称 用tuple表示如下 t Adam Lisa Bart 创建tuple 创建
  • 小米笔记本电脑Ruby-15.6 2018/2019款【完美黑苹果MacOS 12 Monterey】

    小米笔记本电脑Ruby 15 6 2018 2019 完美黑苹果 MacOS 12 Monterey XiaoMi Book Ruby 15 6 已完美驱动 扬声器 WiFi 蓝牙 触摸板 开关按F9 有线网络 内置读卡器 因影响白果卡蓝牙
  • 【华为OD机试】数组拼接(C++ Python Java)2023 B卷

    题目描述 有多组整数数组 把他们按如下规则拼接成一个新的数组 从每个数组中按顺序取出固定数列的内容 合并到新数组中 已取出的内容将从原始数组中去除 如果该行不足固定长度或者已经为空 则直接取出剩余部分放到新数组中 继续下一行 输入描述 第一
  • 【多模态】8、MDETR

    文章目录 一 背景 二 方法 2 1 DETR 2 2 MDETR 三 效果 3 1 预训练调整后的检测器 3 2 下游任务 论文 MDETR Modulated Detection for End to End Multi Modal U