Grounded Language-Image Pre-training论文笔记

Title:Grounded Language-Image Pre-training
Code

文章目录

  • 1. 背景
  • 2. 方法
    • (1)Unified Formulation
      • 传统目标检测
      • grounding目标检测
    • (2)Language-Aware Deep Fusion
    • (3)Pre-training with Scalable Semantic-Rich Data
  • 3. 实验
    • (1)数据集简介
    • (2)GLIP消融实验
  • 参考

1. 背景

目前的视觉识别任务通常是在一个预先定义好的类别范围内进行的,这样限制了其在真实场景中的扩展。CLIP的出现打破了这一限制,CLIP利用image-text对进行训练,从而使得模型可以根据文字prompt识别任意类别。CLIP适用于分类任务,而GLIP尝试将这一技术应用于目标检测等更加复杂的任务中。

在本文中,作者提出了phrase grounding的概念,意思是让模型去学习图片和句子短语之间更加精细的联系。

GLIP的主要贡献如下:

  • 将phrase grounding和目标检测任务统一,将image和text prompt同时输入到目标检测网络中,prompt中带有图片中所有类别的详细描述。
  • GLIP采用了丰富的预训练数据,使得它的预训练模型可以更轻松地迁移到下游任务中。预训练的GLIP在COCO数据集上finetune之后达到了60.8 AP(2017val)和61.5AP(test-dev),超过了目前的SOTA模型。
  • One model for all,GLIP可以迁移到多样化的任务中。它在不使用额外标注的情况下,在coco val2017和LVIS数据集上分别达到了49.8AP和26.9AP。

2. 方法

在这里插入图片描述

(1)Unified Formulation

传统目标检测

一个典型的目标检测网络的结构如下:

  • 将图片输入到visual encoder E n c I Enc_I EncI 中提取特征 O O O,visual encoder通常是CNN、Transformer等backbone;
  • 将特征 O O O 输入到classifier C C C 和bbox regressor R R R 中得到分类结果和bbox回归结果;
  • 分别计算分类损失和框回归损失,整体Loss公式: L = L c l s + L l o c L=L_{cls}+L_{loc} L=Lcls+Lloc

上述计算分类Loss的流程可以用公式表达为:

在这里插入图片描述
其中 T T T 代表target; W W W 是分类器参数。

grounding目标检测

与上述分类器不同,GLIP将目标检测任务与phrash grounding统一,将目标检测中的每个region/bboxtext prompt进行匹配以实现分类效果。

举例来说,假设我们有[person, bicycle, car, ..., toothbrush]等类别,我们可以设计一个这样的prompt,其中每一个类别名字都是一个phrase:

在这里插入图片描述

grounding模型中的分类流程可以用公式表示为:

在这里插入图片描述
其中 P P P 是language encoder得到的文字特征, S g r o u n d S_{ground} Sground 的计算过程如下如图示:计算图像的region和prompt中的word之间的对齐分数:
在这里插入图片描述

然而,在计算对齐分数时,一个短语(phrase)可能包含多个word tokens,这就导致一个类别可能对应多个子单词(sub-words)。针对这个问题,本文是这样做的:当这些sub-words的phrase与目标region匹配时,每个positive sub-word都与目标region所匹配。**例如,吹风机的phrase是“Hair dryer”,那么吹风机的region就会与“Hair”和“dryer”这两个词都匹配,**如下图所示:

在这里插入图片描述

(2)Language-Aware Deep Fusion

在CLIP等算法中,image和text特征通常只在最后用于计算对比学习的loss,我们称这样的算法为late-fusion model。在本文中,作者在image和text特征之间引入了更深层次的融合(deep fusion),在最后几个encoder layer中进行了image和text的信息融合,如下图所示:

在这里插入图片描述

deep-fused encoder可以用以下公式来表示:

在这里插入图片描述
其中, X-MHA代表跨模态多头注意力模块(multi-head attention module),L代表DyHead中DyHeadModule的个数,BERTLayer是额外添加在预训练BERT模型之上的层, O 0 O^0 O0 是vision backbone提取的图像特征, P 0 P^0 P0 是language backbone提取的文字特征。

X-MHA是用于跨模态信息融合的关键模块 (cross attention) ,它的公式如下所示:
在这里插入图片描述
deep-fused有两个优点:

  • 提升了phrase grounding的表现;
  • 使得图像特征的学习与文字特征产生关联,从而让text prompt可以影响到检测模型的预测。

(3)Pre-training with Scalable Semantic-Rich Data

  • 同时使用目标检测和grounding数据;
  • 另外通过利用gold data训练教师GLIP,使用这个教师模型来预测24M web image-text数据,为image caption数据得到了检测伪标签;
  • 也就是说,GLIP可以同时利用目标检测数据集,grounding数据集,image caption数据集,极大丰富了训练数据量;

3. 实验

(1)数据集简介

在这里插入图片描述

  • COCO:目标检测数据集,包含80个常见对象类别;
  • LVIS:目标检测和实例分割数据集,涵盖1203个对象类别;
  • Object365:是一个大规模的目标检测数据集,总共包含63万张图像,覆盖365个类别,高达1000万框数;
    Microsoft COCO Captions 数据集:该数据集为超过 33 万张图片提供了超过 150 万条人工生成的图片描述。
  • Flickr30k:给定了31783张图像以及158915个文本注释,一张图片对应5个注释,并将它们与 276K 个手动标注的边界框关联起来。
  • Visual Genome(VG)是斯坦福大学李飞飞组于2016年发布的大规模图片语义理解数据集,数据集汇总最主要的构成是Region Description,每个region/bbox都有与其对应的一句自然语言描述。
  • GQA数据集包含22,669,678个问题和113,018张图片,数据集中覆盖的词汇量有3,097个,答案类型有1,878个,同时也包含对应的bbox注释;
  • Conceptual Captions (CC)是一个数据集,由约 330 万张带有字幕注释的图像组成。
  • SBU Captions数据集最初将图像字幕作为一个检索任务,包含 100 万个图片网址 + 标题对。

最后使用的数据集有:

  • FourODs (2.66M data): 4 detection datasets including Objects365, OpenImages, Visual Genome (excluding COCO images), and ImageNetBoxes
  • GoldG (0.8M): human-annotated gold grounding data curated by
    MDETR, including Flickr30K, VG Caption and GQA.
  • Cap4M / Cap24M

(2)GLIP消融实验

作者设计了多个版本的GLIP用于对比试验:

  • GLIP-T(A):基于SoTA模型Dynamic Head,将其中的分类损失替换为GLIP的alignment loss,预训练数据为Objects365(66万人工标注数据);
  • GLIP-T(B):在GLIP-T(A)的基础上加入deep fusion;
  • GLIP-T©:在预训练数据中加入GoldG(80万人工标注数据);
  • GLIP-T:加入更多数据:Cap4M(400万网上爬取的数据);
  • GLIP-L:基于Swin-Large,并采用更大量的数据集,包含:FourODs(2.66M)、GoldG(0.8M)、Cap24M(24M);

在这里插入图片描述

由于 Objects365 覆盖了 COCO 中的所有类别,因此Objects365 预训练的 DyHead-T 在COCO上表现优异,达到了43.6AP; 若将模型重新构建为grounding模型,性能略有下降 (GLIP-T (A)); 添加深度融合将性能提升 2AP (GLIP-T (B)); GoldG数据对性能的提升贡献最大,GLIP-T © 达到 46.7 AP。 虽然添加图像-文本数据对 COCO 有轻微或没有改进(GLIP-T 与 GLIP-T ©),作者发现它对于推广到稀有种类至关重要,并在LVIS 实验中进一步展示了这一现象。

在这里插入图片描述

Gold grounding数据使 Mini-Val APr (GLIP-T© 与 GLIP-T (B)) 相比提高了 4.2 个点。这进一步表明grounding数据对性能的提升有显著的贡献。另外,添加图像-文本数据进一步提高了 3.1 个点的性能。因此,基础数据的语义丰富性可能有助于模型识别稀有物体。

参考

  • 如何看待微软的Grounded Language-Image Pre-training(GLIP)?

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

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

相关文章

【linux】基本指令(二)【man、echo、cat、cp】

目录 一、man指令二、echo指令三、cat指令二、cp指令一些常见快捷键 一、man指令 Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令 常用选项 1.-k 根据关键字搜索联机帮助 2…

基于 SVG 的图形交互方案实践

不知道从什么时候起,人们开始喜欢上数字大屏这种“花里胡哨”的东西,仿佛只要用上“科技蓝”这样神奇的色调,就可以让一家公司焕然一新,瞬间变得科技感满满。不管数字大屏的实际意义,是用来帮助企业监控和决策&#xf…

Linux网络编程:线程池并发服务器 _UDP客户端和服务器_本地和网络套接字

文章目录: 一:线程池模块分析 threadpool.c 二:UDP通信 1.TCP通信和UDP通信各自的优缺点 2.UDP实现的C/S模型 server.c client.c 三:套接字 1.本地套接字 2.本地套 和 网络套对比 server.c client.c 一:线…

electron软件安装时,默认选择为全部用户安装

后续可能会用electron开发一些工具,包括不限于快速生成个人小程序、开发辅助学习的交互式软件、帮助运维同学一键部署的简易版CICD工具等等。 开发进度,取决于我懒惰的程度。 不过不嫌弃的同学还是可以先关注一波小程序,真的发布工具了&…

微软宣布在 Excel 中使用 Python:结合了 Python 的强大功能和 Excel 的灵活性。

自诞生以来,Microsoft Excel 改变了人们组织、分析和可视化数据的方式,为每天使用它的数百万人提供了决策基础。今天,我们宣布发布 Excel 中的 Python 公共预览版,从而使 Excel 中的分析功能取得重大进展。 Excel 中的 Python 可…

基于springboot+vue的考研资讯平台(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【洛谷】P1873 [COCI2011-2012#5] EKO / 砍树

原题链接&#xff1a;https://www.luogu.com.cn/problem/P1873 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 二分答案。 3. 代码实现 #include<bits/stdc.h> using namespace std; #define ll long long const int N 1e6 10; int a[N], …

系统学习Linux-LVS集群

集群概述 负载均衡技术类型 四层负载均衡器 也称为 4 层交换机&#xff0c;主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡&#xff0c;如常见的 LVS、F5 等&#xff1b; 七层负载均衡器 也称为 7 层交换机&#xff0c;位于 OSI 的最高层&#xff0c;即…

数据库表结构导出为word、html、markdown【转载,已解决,已验证,开源】

注&#xff1a;本文为gitcode代码验证&#xff0c;转载gitcode gitcode&#xff1a;https://gitcode.net/mirrors/pingfangushi/screw?utm_sourcecsdn_github_accelerator 整理数据库文档&#xff1a;https://mp.weixin.qq.com/s/Bo_U5_cl82hfQ6GmRs2vtA <!--数据库文档核…

Seaborn数据可视化(三)

1.绘制直方图 使用displot()绘制直方图。 import seaborn as sns import numpy as np import matplotlib.pyplot as plt# 生成随机数据 np.random.seed(0) data np.random.randn(1000)# 使用displot绘制直方图 sns.displot(data, bins10, kdeTrue)# 展示图形 plt.show() 结…

Python用 tslearn 进行时间序列聚类可视化

全文链接&#xff1a;https://tecdat.cn/?p33484 我们最近在完成一些时间序列聚类任务&#xff0c;偶然发现了 tslearn 库。我很想看看启动和运行 tslearn 已内置的聚类有多简单&#xff0c;结果发现非常简单直接&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09…

Nexus私有仓库+IDEA配置远程推送

目录 一、docker安装nexus本地私服&#xff0c;Idea通过maven配置deploy本地jar包&#xff08;简单&#xff09; 二、docker push镜像到第三方nexus远程私服&#xff08;shell命令操作&#xff09; 三、springboot通过maven插件自动生成docker镜像并push到nexus私服&#xf…

【科研】-- 如何将Endnote中参考文献格式插入到Word?

文章目录 如何将Endnote中参考文献格式插入到Word&#xff1f; 如何将Endnote中参考文献格式插入到Word&#xff1f; 1、首先确保Endnote和Word安装正确&#xff0c;正常可以从学校官网中下载到正版软件&#xff0c;下载后在word栏目中会出现EndNote的标签&#xff1b; 2、可…

[Linux]进程状态

[Linux]进程状态 文章目录 [Linux]进程状态进程状态的概念阻塞状态挂起状态Linux下的进程状态孤儿进程 进程状态的概念 了解进程状态前&#xff0c;首先要知道一个正在运行的进程不是无时无刻都在CPU上进行运算的&#xff0c;而是在操作系统的管理下&#xff0c;和其他正在运行…

音视频FAQ(二)视频直播延时高

摘要 延时高是实时互动技术中常见的问题之一&#xff0c;解决延时高问题需要综合考虑网络、设备、编解码算法等多个因素。解决方案包括优化设备端延时、优化网络传输延时和使用UDP进行音视频传输等。在选择音视频传输协议时&#xff0c;需要综合考虑实际需求和网络条件&#x…

Linux —— keepalived

简介 Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载均衡和高可用性功能。 Keepalived 开源并且免费的软件。 Keepalived 的2大核心功能 1. loadbalance 负载均衡 LB&#xff1a;ipvs--》lvs软件…

线性代数的学习和整理12: 矩阵与行列式,计算上的差别对比

目录 1 行列式和矩阵的比较 2 简单总结矩阵与行列式的不同 3 加减乘除的不同 3.1 加法不同 3.2 减法不同 3.3 标量乘法/数乘 3.3.1 标准的数乘对比 3.3.2 其他数乘对比 3.4 乘法 4 初等线性变换的不同 4.1 对矩阵进行线性变换 4.2 对行列式进行线性变换呢&#xf…

Maven详解

文章目录 一、引言1.1 为什么需要 Maven&#xff1f;1.2 Maven 解决了哪些问题&#xff1f;1.2.1 添加第三方jar包1.2.2 jar包之间的依赖关系1.2.3 处理jar包之间的冲突1.2.4 获取第三方jar包1.2.5 将项目拆分成多个工程模块1.2.6 实现项目的分布式部署 二、介绍三、Maven 的特…

flutter 雷达图

通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…

5.物联网LWIP之UDP编程,stm32作为服务器实现大小写转化

UDP编程模型 1.UDP C/S模型&#xff08;代码流程只需要根据以下模型去输入即可&#xff09; 2.UDP API socket int socket(int domain, int type, int protocol); domain: AF_INET 这是大多数用来产生socket的协议&#xff0c;使用TCP或UDP来传输&#xff0c;用IPv4的地址…