【AIGC】11、MDETR | LeCun 团队于 2021 年推出的端到端多模态理解模型

news2024/11/24 6:49:35

在这里插入图片描述

文章目录

    • 一、背景
    • 二、方法
      • 2.1 DETR
      • 2.2 MDETR
    • 三、效果
      • 3.1 预训练调整后的检测器
      • 3.2 下游任务

论文: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

贡献:

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

一、背景

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

但这种 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 中

在这里插入图片描述

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

对于 modulated detection,不同于标准的目标检测设置,而是参考每个 matched object 来从 original text 中预测 span of tokens

  • 首先,将给定句子的最大 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 展示了本文模型的结构

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

chatgpt赋能Python-pythonctrl快捷键

PythonCtrl快捷键使用指南 作为一名有10年Python编程经验的工程师&#xff0c;我深知PythonCtrl快捷键的重要性。PythonCtrl作为一个Python的开源编辑器&#xff0c;在每一个版本中都加入了更多的功能和快捷键&#xff0c;使得Python编程更加高效和易用。在本篇文章中&#xf…

卡方分布分析与应用

卡方检验(chi-square&#xff0c;记为χ2检验)是统计学中常用来计数数据分析的方法&#xff0c;对于总体的分布不作任何假设&#xff0c;因此它属于非参数检验法中的一种。本博文从理论到实际应用去阐述卡方检验&#xff0c;最后用python语言去实现卡方分布的代码。 1. 卡方分…

Spring Security的基本组件

一.简介 Spring Security通过一些列的过滤器完成了用户身份认证及其授权工作&#xff0c;每个过滤器都有不同分工&#xff0c;当然这些过滤器并不是全部都一起工作&#xff0c;而是根据我们需要什么功能&#xff0c;才会选取对应的过滤器加入。 当然这些过滤器并不是直接加入…

Linux 终端特殊符号含义大全

Linux特殊符号使用及含义 总结 Linux 终端中有许多特殊符号&#xff0c;本文对常用的进行了总结&#xff1a; $ 表示变量/普通终端用户&#xff1a;用于引用变量的值/表示终端中的普通用户。# 表示注释/超级用户&#xff1a;用于在脚本中注释代码/表示终端中的超级用户。/ &…

Doxygen 源码分析: QCString类

2023-05-20 23:41:56 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. QCString 类概览3. QCString 特殊成员函数3.1 default 方式的构造函数3.2 单个参数和两个参数的构造函数 4. inline方式实现的成员函数4.1 operator 函数4.…

chatgpt赋能Python-pythonguanwang

Python官网SEO分析 Python是一种高级编程语言&#xff0c;被广泛应用于Web开发、数据科学、人工智能、机器学习等领域。Python官网&#xff08;https://www.python.org&#xff09;是Python语言的官方网站&#xff0c;为Python用户和开发者提供了最新的Python解释器、文档、库…

中文Python(5)中文Python的while条件循语句

中文Python&#xff08;5&#xff09;中文Python的while条件循语句 Python是一种流行的编程语言&#xff0c;其简单而直观的语法吸引了很多人学习和使用。中文Python则是针对中文用户开发的一种版本。中文Python原先为了给不懂编写程序的人写量化程序&#xff0c;我们开发了中…

代码随想录算法训练营 Day 43 | 1049.最后一块石头的重量 II,494.目标和,474.一和零

1049.最后一块石头的重量 II 讲解链接&#xff1a;代码随想录-1049.最后一块石头的重量 II 确定 dp 数组以及下标的含义&#xff1a;dp[j]表示容量&#xff08;这里说容量更形象&#xff0c;其实就是重量&#xff09;为 j 的背包&#xff0c;最多可以背最大重量为 dp[j]。 石…

XPath语法:在XML文档中定位和选择节点的利器

XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位和选择节点的语言。它提供了强大的定位和选择能力&#xff0c;使开发人员能够准确、灵活地定位所需的元素。本篇博客将介绍XPath的语法和常用定位方法&#xff0c;帮助你在Web自动化测试等场景中更好地…

Glob 文件匹配

前言 glob本质是Unix shell 风格的路径匹配规则。 该规则后续被其它语言支持。 ?&#xff1a;匹配一个任意字符 *&#xff1a;匹配任意个任意字符 [sequence]&#xff1a;匹配出现在sequence里面的一个字符 [!sequence]&#xff1a;匹配没有出现在sequence里面的一个字符 [a…

【解决】CSS下拉菜单不会显示的问题

导航栏的下拉菜单显示&#xff0c;但按 F5 刷新的一瞬间又能看见 下拉菜单的内容&#xff0c;但就是不会显示出来&#xff0c;一开始以为是 js 代码写错或者 css 的动画函数的影响&#xff0c;后面找到一篇博客&#xff0c;说这是老生常谈的问题&#xff0c;对于小白确实很难找…

移动应用数据安全性:如何防止应用程序被黑客攻击和数据泄露?

第一章&#xff1a;引言 在移动应用成为人们生活中不可或缺的一部分的今天&#xff0c;数据安全性已经成为一个非常重要的问题。随着黑客攻击和数据泄露事件的频繁发生&#xff0c;用户对于移动应用程序的信任度也在逐渐下降。本文将探讨移动应用数据安全性的重要性&#xff0…

chatgpt赋能Python-pythongpu加速

Python GPU加速&#xff1a;让你的Python应用飞速运行 介绍 Python是一种高级编程语言&#xff0c;具有易于学习、易于使用和强大的功能。作为一门解释型语言&#xff0c;Python会在运行时逐行解释程序代码&#xff0c;而这种解释方式会导致Python在运行速度上较慢。在需要大…

2023上半年软考系统分析师科目一整理-01

2023上半年软考系统分析师科目一整理-01 1. 面向对象2. UML 1. 面向对象 面向对象分析中&#xff0c;对象是类的实例。对象的构成成分包含了&#xff08;A&#xff09;&#xff0c;属性和方法&#xff08;或操作&#xff09;。 A.标识 B.消息 C.规则 D.结构 对象的三要素为&am…

linux服务器安装python环境配置

linux服务器安装python环境配置 服务器跳板机服务器配置配置anaconda环境安装其他python版本卸载anaconda root用户为用户添加权限其他工具Jupyter Noetbooktmux 服务器跳板机 跳板机是一个可以从公共网络访问的服务器&#xff0c;它允许用户通过 SSH 连接进入私有网络中的其他…

AI绘画-Midjourney基础2-创意之旅启航:超强二次元风格模型 niji 5

niji 模型是 mj 的一种模型&#xff0c;可以生成二次元风格的图片。 在控制台输入 /settings 指令&#xff0c;进入设置页面。 选择第二行的 Niji version 5 模型&#xff0c;就可以创作二次元风格的图片了&#xff01; niji 5 模型还有 expressive、cute、scenic 3种风格可以…

【C++初阶】类与对象(中)之取地址及const取地址操作符重载(了解即可)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

chatgpt赋能Python-pythongroup

PythonGroup&#xff1a;提高Python技能和构建社交网络的绝佳平台 PythonGroup是一家致力于为Python编程者提供高质量资源和社交网络的平台。无论您是新手还是有十年以上的经验&#xff0c;PythonGroup都可以帮助您提高您的技能&#xff0c;增加您的知识和职业发展机会。 Pyt…

t检验与Z检验的区别

在统计学中&#xff0c;假设检验是评估某种特定情况下观察到的数据是否符合假设的一种方法。t检验和Z检验是两种常用的假设检验方法&#xff0c;分别用于比较均值差异以及比例差异。在医学统计中&#xff0c;t检验和Z检验经常被用于研究和比较不同治疗方法的效果&#xff0c;例…

chatgpt赋能Python-pythonfor遍历列表

Python for循环&#xff1a;遍历列表 - 提高您的编程技能 列表是Python编程语言中广泛使用的数据结构。在许多情况下&#xff0c;我们需要遍历列表中的元素。Python中的for循环是一种最常用的遍历列表的方式。在本文中&#xff0c;我们将介绍如何使用Python的for循环语句遍历列…