【论文精读】Grounded Language-Image Pre-training(GLIP)

2023-10-26

一. 背景

https://arxiv.org/abs/2112.03857
https://github.com/microsoft/GLIP

在这里插入图片描述
这篇论文做的任务是phrase grounding,属于visual grounding的一种。phrase grounding的任务是输入句子和图片,将句子中提到的物体都框出来。visual grounding其他任务和细节可以参考
https://zhuanlan.zhihu.com/p/388504127

GLIP既可以做目标检测也可以做grounding,

  • 目标检测:
     在扩增目标检测领域为SOTA,zero-shot效果较好,也可以做zero-shot目标检测任务。
     与常规目标检测任务相比语义丰富。
  • grounding:
     与常规grounding任务相比可以做目标检测任务。

二、贡献

贡献

  • 将目标检测和phrase grounding任务统一起来进行预训练
  • 扩大视觉语义
  • 迁移学习能力强

性能

  • 27M关联数据上训练。在目标识别任务上有很强的零样本和小样本迁移性能
  • Zero-shot:coco val上49.8AP,LVIS val上26.9AP
  • 微调后:COCO val上60.8AP
  • 下游13个目标检测任务时,1个样本的GLIP可以与Dynamic Head相匹敌

三、方法

3.1 方法1:检测和grounding任务统一

在这里插入图片描述
1. background:
对于检测数据集:
训练时输入标签名(person、hairdryer)、框、图片。
测试时输入图片,预测出框和标签名。
训练过程如下:
在这里插入图片描述
2. background as grounding:
groudning模型的输入是短语、短语中名词的框和图片。
将object模型转为grounding的办法:通过prompt的方式将标签名转化为短语。
在这里插入图片描述

如coco有80个标签,将80个标签用逗号连接,短语前加“Detect:”,来组成短句。

公式2变成公式3的过程中,T的大小会变化,从Nc变成NM
构建token:上图流程图中,M(sub-word tokens)总是比短语格式c多,原因有四个1)一些短语占了多个toeken位置,比如 traffic light。2)一些短语被分开成sub words,比如toothbrush分成了 tooth#, #brush。3)一些是添加的token,如逗号,Deteckt等,4)结尾会添加[NoObj]的token。在训练的时候,phrase是正例的话,多个subwords都是正例。测试时多个token的平均pro作为短语的probability。

3. detection和grounding联动:由上面的方法,可以用grounding模型来预训练检测任务,从而可以迁移GLIP模型做zero-shot的检测

3.2 方法2: deep fusion,视觉和语言联合

在这里插入图片描述
fusion部分公式如下:
在这里插入图片描述

​​​​​​​​​​​​​​O0是视觉backbone的feature, P0 是文本backbone的feature
X-MHA(cross-modality multi-head attention module)
L是DyHead中DyHeadModules个数,BERT Layer为新增。

attention部分在多模态中比较常见,比如co-attention、guided attention等。可以参考多模态中attention其他优化。
DeepFusion优点:
提高了phrase grounding效果
使得视觉特征language-aware

3.3 方法3: 用丰富的语义数据预训练

grounding数据集语义都很丰富,目标检测不超过2000个类别,但是grounding数据集如Flickr30K包括了4.4w不同的短语,量级不同。
如何扩增grounding数据:

  1. 在gold data(det+grounding)上训练教师GLIP
  2. 使用这个教师模型来预测24M web image-text数据,通过NLP解析名词短语,存在5840个不同名词短语
  3. 学生模型在gold data和伪标签grounding数据上训练
    扩增效果:
    学生模型效果比教师模型效果好,比如对于部分词汇,vaccine教师模型可能预测不出来,但是可以预测出a small vial,subwords对的,整体phrase都会是对的。那在给学生模型无监督数据时,可以将a small vial of vaccine标签整体给到学生模型作为学习标签。
    在这里插入图片描述

四、实验结果

在这里插入图片描述
FourODs(2.66M数据)是4个检测数据集集合,包括objects365、OpenImages、VG数据集(除了coco)、ImageNetBox。
GoldG+ 数据集包括1.3M数据集,包括Flickr30K、VG caption、GQA。
GoldG 数据集是GoldG+去除了coco数据集

4.1 迁移效果在检测数据集上

zero-shot在coco上:

  1. 图文数据集没有带来提升
  2. C和B比提升较大
  3. Objects365包括了coco的80个
    在这里插入图片描述
    在LVIS上效果:
    LVIS:大规模细粒度词汇级标记数据集,1000+类别,披萨里的菠萝丁也被标记
    Gold grounding很有效(model C vs model B)
    在这里插入图片描述

4.2 在grounding数据集上

Flick 30k:图文匹配grounding数据集,goldG中包含了该数据集
在这里插入图片描述

4.3 消融实验-检测数据集影响

O365: 0.66M
GoldG: 0.8M
FourODs: 2.66M
但是不是O365+GoldG效果反而更好
在这里插入图片描述

4.4 其他

如果定位不好,可以添加提示词帮助更好定位,下图添加了flat and round
在这里插入图片描述

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

【论文精读】Grounded Language-Image Pre-training(GLIP) 的相关文章

随机推荐

  • AODV协议概述

    AODV是由Nokia研究中心的Charles E Perkins和加利福尼亚大学Santa Barbara的Elizabeth M Belding Roryer以及Cincinnati大学Samir R Das等共同开发 已经被 IETF
  • JDBC总结

    JDBC 规范 Java DataBase Connectivity 标题 JDK 提供 Java链接数据库的规范 采用JDBC访问数据库的基本步骤 A 载入JDBC驱动程序 B 定义连接URL C 建立连接 D 创建Statement对象
  • 光纤工程的接续、施工与测试技术规范及要点

    1 光纤接续 1 光纤接续 光纤接续应遵循的原则是 芯数相等时 要同束管内的对应色光纤对接 芯数不同时 按顺序先接芯数大的 再接芯数小的 2 光纤接续的方法有 熔接 活动连接 机械连接三种 在工程中大都采用熔接法 采用这种熔接方法的接点损耗
  • 【Unity研究】进程、线程、对象池的关系

    目录 简要概括 名词解释 实例 进程 线程 对象池 实际使用 对象池实际操作 含代码 建立主线程以外的线程方法 在主线程中运行的生命周期 在副线程中运行的生命周期 简要概括 正在运行的Unity游戏就可以看做一个进程的实例 线程是进程内的执
  • 一种信息系统免疫安全防护架构

    摘 要 随着网络的快速发展 各类社会活动的信息化日益普及 但是网络安全威胁也更加复杂多变 使得信息系统处于安全威胁风险极高的环境中 严重威胁信息的共享和获取 针对核心信息系统的安全防护 提出了一种信息系统免疫安全防护架构 针对信息系统高可用
  • c语言 水仙花数

    水仙花数是指一个N位正整数 N 3 它的每个位上的数字的N次幂之和等于它本身 本题要求编写程序 计算所有N位水仙花数 输入格式 输入在一行中给出一个正整数N 3 N 7 输出格式 按递增顺序输出所有N位水仙花数 每个数字占一行 输入样例 3
  • mysql数据库设置远程连接权限,执行grant all privileges on *.* to 'root'@'%' identified by '密码' with grant optio报错

    mysql数据库设置远程连接权限 执行grant all privileges on to root identified by 密码 with grant optio报错 ERROR 1558 HY000 Column count of
  • 华为OD机试 - 字符个数统计(C++ & Java & JS & Python)

    目录 描述 输入描述 输出描述 示例1 示例2 C python Java 描述 编写一个函数 计算字符
  • linux AIO (异步IO) 那点事儿

    在高性能的服务器编程中 IO 模型理所当然的是重中之重 需要谨慎选型的 对于网络套接字 我们可以采用epoll 的方式来轮询 尽管epoll也有一些缺陷 但总体来说还是很高效的 尤其来大量套接字的场景下 但对于Regular File 来说
  • 机器学习中的方差与偏差

    方差与偏差的定义 方差 不同的训练数据集训练出的模型输出值之间的差异 偏差 用所有可能的训练数据集训练出的所有模型的输出的平均值与真实模型的输出值之间的差异 方差与偏差的数学公式 首先 以回归为例 模型的期望预测指针对不同数据集D 模型对样
  • (三)STM32基础——GPIO介绍

    目录 GPIO简介 GPIO基本结构 GPIO位结构 输入部分 输出部分 推挽输出模式 开漏输出 编辑 开漏复用输出 编辑 八种输入输出模式 浮空 上拉 下拉输入 编辑 模拟输入 开漏 推挽输出 复用开漏 复用推挽输出 GPIO寄存器 GP
  • 【Spark ML】第 3 章:监督学习

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【论文精读】The Missing Link: Finding label relations across datasets

    一 背景 概要 和之前其他论文工作不同的是 论文的主要目的是探究不同数据集间标签的关系 而不是将其合并 论文中提到的关系是identity parent child overlap 为了探究这些关系 提出了几种方法 基于language 基
  • 一文实现:在python中调用matlab程序,保姆级安装windows环境下的matlab.engine教程

    一 前言 我最近在做一个基于图像融合的目标检测工程 我经常用matlab去研究和创新新型的图像融合算法 因为matlab有着python所不可比拟的数据可视化功能和大量的滤波分解框架包 在目标检测等涉及到神经网络的程序编写上 python又
  • 机器学习

    学习目标 了解什么是EM算法 知道极大似然估计 知道EM算法实现流程 一 初识EM算法 EM算法也称期望最大化 Expectation Maximum 简称EM 算法 它是一个基础算法 是很多机器学习领域算法的基础 比如隐式马尔科夫算法 H
  • 2、TCP、多进程并发、多线程并发(linux网络编程)

    三次握手和四次挥手的过程都是在内核实现的 三次握手 通信的时候不再需要SYN标识位了 只有在请求连接的时候需要SYN标识位 传输数据的时候的随机序号seq就是最近一次对方发送给自己的ACK的随机序号值 而发给对方的ACK就是上次刚刚发给对方
  • JDK安装配置教程

    JDK简介 Java Development Kit JDK 是 Sun 公司 已被 Oracle 收购 针对 Java 开发员的软件开发工具包 自从 Java 推出以来 JDK 已经成为使用最广泛的 Java SDK Software d
  • Windows10下安装Git

    Git是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到非常大的项目版本管理 具体安装步骤如下 第一步 先从官网下载最新版本的Git 官网地址 https git scm com downloads 点击上图中表示的地方进行下载
  • 如何修改安卓系统为自己的云服务器,安卓手机改装云服务器

    安卓手机改装云服务器 内容精选 换一换 本节操作介绍华为云上云服务器的跨账号跨区域迁移 建议采用镜像迁移方式 服务器迁移的常见场景与常用的迁移方式请参考迁移的背景知识 跨账号跨区域迁移的方法请参考方案介绍常见的服务器迁移场景包括物理服务器与
  • 【论文精读】Grounded Language-Image Pre-training(GLIP)

    一 背景 https arxiv org abs 2112 03857 https github com microsoft GLIP 这篇论文做的任务是phrase grounding 属于visual grounding的一种 phra