GLIP:零样本学习 + 目标检测 + 视觉语言大模型

news2024/11/28 6:51:18

GLIP

    • 核心思想
      • GLIP 对比 BLIP、BLIP-2、CLIP
    • 主要问题: 如何构建一个能够在不同任务和领域中以零样本或少样本方式无缝迁移的预训练模型?
        • 统一的短语定位损失
        • 语言意识的深度融合
        • 预训练数据类型的结合
        • 语义丰富数据的扩展
        • 零样本和少样本迁移学习
    • 效果

 


论文:https://arxiv.org/pdf/2112.03857.pdf

代码:https://github.com/microsoft/GLIP

 

核心思想

问题: 在现有的视觉识别任务中,模型通常是针对一组固定的对象类别进行训练的,这限制了它们在现实世界中的应用,因为遇到新的视觉概念时,需要额外的标注数据来进行泛化。

而且,要想理解图片中的细节(如对象检测、分割、姿态估计等),需要对象级别的、富含语义的视觉表征。

方法: GLIP尝试解决上述问题,通过以下步骤:

  1. 统一对象检测和短语定位: 将对象检测任务视为一种无上下文的短语定位任务,而短语定位可以看作是一种有上下文的对象检测任务。这样,两者可以在同一个框架内得到改进。

假设我们有一个图片,其中包含了一只猫和一辆车。

在传统的对象检测任务中,模型需要识别出图片中所有的对象(例如,猫和车),并为它们各自绘制一个边界框。

在短语定位任务中,如果给定一个描述性短语(如“黑色的猫”),模型需要找到图片中与这个短语对应的具体区域。

GLIP将这两个任务统一起来:它不仅学习如何识别和定位图片中的对象,还学习如何根据文本描述来精确地定位这些对象。

这意味着,如果输入是一张含猫和车的图片以及文本提示“黑色的猫”,GLIP能够理解这个提示,并准确地标出图片中黑色猫的位置。

 

  1. 预训练: 使用大量的图片-文本对(27M,包括3M人工标注和24M网络抓取)进行预训练。这些数据不仅包括了丰富的语义信息,还可以自动生成定位框(grounding boxes),从而扩大了学习的概念范围。

为了让GLIP学会这些技能,研究者使用了27M的图片-文本对进行预训练。

这其中包括3M是人工标注的高质量数据,24M是从网上抓取的图片和相应的描述文本。

通过这些数据,GLIP学习到了丰富的视觉概念和语义信息,比如什么是“猫”,它们长什么样,常出现在哪些场景中,以及如何根据不同的描述(例如“黑色的猫”)来识别和定位具体的对象。

 

  1. 转移学习: 预训练后的GLIP模型展示了在各种对象级别识别任务上的零样本和少样本转移能力,即使在模型预训练时没有见过特定图片,也能表现出色。

预训练完成后,GLIP能够在没有额外标注数据的情况下,直接应用到新的对象检测任务上。

比如,当GLIP遇到一个它在预训练数据中没有直接见过的新图片,即使这张图片中的对象是新的或者以新的方式出现,GLIP也能利用它从预训练中学到的知识,来识别和定位图片中的对象。

例如,如果在预训练数据中GLIP学到了如何识别各种各样的猫和车,当它看到一个全新的图片,图片中有一只特别的猫种或者是一种罕见的车型,GLIP仍然能够凭借之前学到的知识来识别和定位这些对象。

并且,如果给GLIP一个具体的描述,比如“在草地上的白色猫”,它也能够理解这个描述,并在图片中找到对应的猫。
 

结果:

  • 在COCO和LVIS数据集上,GLIP模型在零样本设置下表现优异,超过了许多有监督的基准模型。
  • 经过COCO数据集微调后,GLIP在验证集和测试集上的表现超过了之前的最佳模型。
  • 在13个下游对象检测任务中,即使只用一个样本进行训练,GLIP也能与完全监督的模型竞争。

结论: GLIP通过统一对象检测和短语定位任务,并利用大量的图片-文本对进行预训练,成功学习了丰富的、可转移的对象级视觉表征,表现出强大的转移学习能力。

 

GLIP 对比 BLIP、BLIP-2、CLIP

BLIP:跨越视觉-语言界限:BLIP的多任务精细处理策略

BLIP-2:低计算视觉-语言预训练大模型

CLIP:对比预训练 + 文字图像相似度:离奇调查,如何训练视觉大模型?

 
GLIP(Grounded Language-Image Pre-training):

  • 目标:学习对象级别、语言感知的、语义丰富的视觉表征。
  • 方法:GLIP结合了对象检测和短语定位(phrase grounding)任务,通过预训练来统一这两种任务。
  • 特点
    • 利用检测和定位数据改进这两个任务,并引导出好的定位模型。
    • 利用大量图像-文本对通过自训练方式生成定位框,使学习到的表征丰富多样。
  • 性能:在零样本和少样本迁移任务中展示了强大的性能,如直接在COCO和LVIS数据集上评估,没有在预训练中看到任何COCO图像,GLIP也实现了超过许多监督基线的性能。

 
结论:

GLIP强调在对象级别进行语言感知和语义丰富的视觉表征学习,并且特别强调短语定位任务的效率和可扩展性。

与此相比,BLIP和BLIP-2侧重于从预训练的模型启动,以减少训练时的计算成本并提高性能。

CLIP则更注重在图像级别学习视觉表征,并利用大量的图像-文本对进行对比学习,以实现强大的零样本和少样本迁移能力。

以图像识别任务为例,比较GLIP、BLIP/BLIP-2和CLIP的方法和优势:

 

GLIP的例子:

假设我们要识别一张图片中的特定物体(例如,一只戴帽子的猫),并且这张图片附带了一句描述(例如,“一只戴着红色帽子的猫坐在桌子上”)。

GLIP通过短语定位任务学习到的对象级别、语言感知的视觉表征能够准确识别出图片中“戴着红色帽子的猫”的位置,即使这个特定的短语在训练数据中从未出现过。

 

BLIP/BLIP-2的例子:

在相同的任务中,BLIP或BLIP-2可能会使用从大量图像-文本对中预训练的模型来识别图中的猫。

它们不一定能像GLIP那样精细定位帽子,但是它们在预训练阶段计算成本更低,并且能够利用现成的预训练模型(如冻结的图像编码器和语言模型)来提升性能。

 

CLIP的例子:
对于CLIP来说,虽然可能无法具体识别“戴着红色帽子的猫”,但它可以识别出图片中的猫,因为它在图像级别上学习了丰富的视觉表征。

通过分析大量图像-文本对,CLIP模型学会了将图像与其相关的文本概念关联起来,因此在没有具体的对象检测训练的情况下,它可能已经理解了“猫”这一概念,并且能够在零样本或少样本设置中将这种理解转移到识别任务上。

 


主要问题: 如何构建一个能够在不同任务和领域中以零样本或少样本方式无缝迁移的预训练模型?

在GLIP研究中,面临的主要挑战是创建一个能够轻松迁移到各种任务和领域的预训练模型,特别是在这些领域和任务中,模型可能没有接触过足够的样本(即零样本或少样本情况)。
 

统一的短语定位损失
  • 子问题: 如何让模型理解语言中的指令,并将其定位到图像中的具体区域?
  • 子解法: 统一的短语定位损失(Unified Grounding Loss)
  • 这种损失函数结合了对象检测的要素,把对象分类转变为短语定位问题,从而让模型学习如何将文本中的短语与图像中的区域相匹配。
  • 之所以使用此解法,是因为对象检测的传统方法通常局限于预定义的类别集,而短语定位允许模型对任何在文本中提及的对象进行识别,使其在应对开放词汇检测时更加灵活

使用统一的短语定位损失,GLIP模型能够理解“黑色短毛猫”这样的语言描述,并将其定位到图片中对应的区域,即使这种猫的类别在训练数据中未被明确定义过。
 

语言意识的深度融合
  • 子问题: 如何提高模型在细粒度上对图像的理解,让其不仅识别图像中的对象,还能理解这些对象的语言描述?
  • 子解法: 语言感知深度融合(Language-Aware Deep Fusion)
  • 通过在图像编码器和语言编码器之间进行深度融合,模型能够学习到更丰富的语言感知视觉特征,提升模型的短语定位性能。
  • 之所以使用此解法,是因为仅在最后一层进行视觉语言融合(如CLIP所做)可能不足以学习到高质量的语言感知视觉特征,而深度融合可以让模型在整个编码过程中同时考虑视觉和语言信息

通过语言感知深度融合,该模型可以进一步理解“黑色短毛猫在睡觉”的复杂描述 有更多细节,并识别出图像中相对应的睡觉姿势和猫的特征。

 

预训练数据类型的结合
  • 子问题: 如何结合不同类型的数据来提升模型的语义丰富度和迁移能力?
  • 子解法: 结合检测和短语定位数据进行预训练
  • 通过同时使用对象检测数据和短语定位数据进行预训练,模型可以学习到更丰富的语义信息,并改善对不同对象类别的检测能力。
  • 之所以使用此解法,是因为短语定位数据在语义上比传统的对象检测数据更为丰富,能够提供更多的上下文信息,从而帮助模型更好地学习到不同对象的视觉特征

预训练阶段结合了对象检测数据(比如猫的图片)和短语定位数据(比如“黑色短毛猫”的文本描述与相应图片)。

这种数据的结合让模型能够理解和学习更多关于对象和场景的细节。

 

语义丰富数据的扩展
  • 子问题: 如何扩展对象检测的概念池,并且使其涵盖更广泛的视觉概念?
  • 子解法: 利用大规模图像-文本配对数据
  • 使用已经预训练好的GLIP模型(教师模型)来自动为大量网络抓取的图像-文本对生成定位框(grounding boxes),以此来扩展学习数据集。
  • 之所以使用此解法,是因为现有的人工标注数据在视觉概念的覆盖上成本高且有限,而大规模的图像-文本数据可以提供更为丰富的语义信息。

使用大量的图像-文本对来扩展模型的知识库,这包括从互联网抓取的各种图片和它们的描述。

这使得模型能够识别和理解更多种类的场景和对象,即使是它之前没有直接学习过的。

 

零样本和少样本迁移学习
  • 子问题: 如何构建一个预训练模型,使其能够无缝迁移到不同的任务和领域?
  • 子解法: 利用GLIP进行迁移学习
  • 通过在短语定位的基础上对对象检测任务进行重新构想,构建了一个能够适用于各种任务和领域的预训练模型。
  • 之所以使用此解法,是因为短语定位与对象检测在概念上具有很大的相似性,GLIP通过这种重新构想使得模型能够在零样本或少样本的情况下进行有效迁移。

上传了一张新的照片,“在雪地上的白色长毛猫”,尽管这是一个新的场景,模型依旧能够准确识别出来。

 


效果

在这里插入图片描述
GLIP将检测任务重新构想为短语定位任务,通过联合训练图像编码器和语言编码器来预测区域和单词的正确配对。

上图一个女性持有吹风机并戴着防护眼镜的示例,同时提供了文本提示“Person. Bicycle … Hairdryer.”,模型通过深度融合技术学习语言感知的视觉表征。

在这里插入图片描述
GLIP在预测定位中的能力,它能够定位图像中的稀有实体、具有属性的短语,甚至是抽象词汇。

上图 两个例子分别展示了模型如何识别和定位“两个注射器和一个小瓶疫苗”以及一个海滩景色,如“playa esmeralda in holguin, cuba. the view from the top of the beach. beautiful caribbean sea turquoise”。

说明模型不仅可以识别具体的物体,还能理解和定位与属性相关的短语和抽象概念。
 

在这里插入图片描述

GLIP用于目标检测的好处

  • 强大的泛化能力:GLIP能在没有直接经过特定数据集训练的情况下进行有效的目标检测。
  • 优秀的零样本学习性能:GLIP能识别训练数据中未包含的新类别。
  • 在处理稀有类别上的优势:GLIP在LVIS数据集上的表现显示,它在处理少见或稀有对象时的识别能力优于传统模型。
  • 短语定位的精准性:在Flickr30K数据集上,GLIP展示了高精度的短语定位能力,能够准确地将文本描述与图像中的具体区域相匹配。
  • 微调后的性能提升:在COCO数据集上的微调表现优于当前最佳模型,表明其在特定任务上的适应性和提升潜力。

这些表现说明GLIP不仅能够适应新的和未知的目标检测任务,而且其性能可通过针对性训练进一步提升。

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

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

相关文章

JetPackCompose之Text使用指北

Jetpack Compose系列(6) - 文本组件 对应View体系中传统的TextView,Jetpack Compose中用Text组件来显示文本信息。跟其他组件一样,它在构造函数里就包含控制文本显示样式的一些属性,下面是其参数及解释: Composable fun Text(te…

从零开始手写mmo游戏从框架到爆炸(一)— 开发环境

一、创建项目 1、首先创建一个maven项目&#xff0c;pom文件如下&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机

Problem: 137. 只出现一次的数字 II 文章目录 思路&#x1f496; 哈希&#x1f496; 位数统计&#x1f496; DFA 状态机 思路 &#x1f468;‍&#x1f3eb; 参考 &#x1f496; 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) cl…

《动手学深度学习(PyTorch版)》笔记7.1

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

vue 下载二进制文件

文章目录 概要技术细节 概要 vue 下载后端返回的二进制文件流 技术细节 import axios from "axios"; const baseUrl process.env.VUE_APP_BASE_API; //downLoadPdf("/pdf/download?pdfName" res .pdf, res); export function downLoadPdf(str, fil…

【Linux】信号-上

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 目录 &#x1f449;&#x1f3fb;信号的概念与产生jobs命令普通信号和实…

JAVA-File五个练习

下面习题思路大多都是&#xff1a; 1.获取路径下所有列表&#xff08;listfiles&#xff09;&#xff0c;2.遍历文件或文件夹&#xff08;增强for&#xff09;&#xff0c;3.判断是否是文件&#xff08;isFile&#xff09;并直接执行逻辑&#xff0c;4.判断当前是文件夹的情况&…

JDK和Spring的SPI机制原理分析

目录 一、JDK 二、Spring框架介绍 三、SPI机制原理 一、JDK JDK是Java Development Kit的缩写&#xff0c;是Java开发工具包的意思。它是用于开发Java应用程序和运行Java程序的软件包。JDK包含了Java编译器&#xff08;javac&#xff09;和Java虚拟机&#xff08;JVM&#…

免费的hyper-v虚机添加U盘的二种方法

windows集成了hyper-v&#xff0c;hyper-v可以安装linux&#xff0c;windows等虚机&#xff0c;基本可以满足工作&#xff0c;实验之需。但是不少人反映hyper-v不方便连接U盘&#xff0c;这样子文件传输不是很方便。 网上有方法说在虚机设置中添加磁盘&#xff0c;首先到物理机…

信创ARM架构QT应用开发环境搭建

信创ARM架构QT应用开发环境搭建 前言交叉工具链Ubuntu上安装 32 位 ARM 交叉工具链Ubuntu上安装 64 位 ARM 交叉工具链 交叉编译 QT 库下载 QT 源码交叉编译 QT 源码 Qt Creator交叉编译配置配置 Qt Creator Kits创建一个测试项目 前言 有没有碰到过这种情况&#xff1f;开发出…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…

全流程机器视觉工程开发(四)PaddleDetection C++工程化应用部署到本地DLL以供软件调用

前言 我们之前跑了一个yolo的模型&#xff0c;然后我们通过PaddleDetection的库对这个模型进行了一定程度的调用&#xff0c;但是那个调用还是基于命令的调用&#xff0c;这样的库首先第一个不能部署到客户的电脑上&#xff0c;第二个用起来也非常不方便&#xff0c;那么我们可…

vue使用es的reduce方法编译报错Error: Can‘t resolve ‘core-js/modules/es.array.reduce.js‘

哈喽 大家好啊 最近在vue使用es的reduce方法编译报错Error: Cant resolve core-js/modules/es.array.reduce.js 报错如图所示&#xff1a; 解决方案&#xff1a; npm install --save core-js 然后重新编译下将正常了 参考原文: 使用import异步加载语法报错_module not foun…

2024年:用OKR管理你的生活

在科技高速发展的时代&#xff0c;越来越多的企业和团队开始采用OKR&#xff08;Objectives and Key Results&#xff09;管理方法来设定目标并跟踪进度。你是否想过&#xff0c;将OKR理念引入个人生活&#xff0c;以更有效地实现人生目标&#xff1f;本文将探讨如何在2024年运…

网络规划与部署实训

一 实训目的及意义 本周实训主要是了解网络规划与部署&#xff0c;熟悉三大厂商华为、思科、锐捷交换机路由器以及相关协议的原理和配置&#xff0c;提高学生的动手能力和分析规划部署能力。 实训主要针对计算机网络系统集成的设计与实现的实际训练&#xff0c;着重锻炼学生熟练…

让cgteamwork自动为Houdini载入相机,角色道具的abc文件

一 需求 最近接到个需求&#xff1a;在创建EFX文件时&#xff0c;自动加载动画出的缓存abc文件相机&#xff0c; 不用手动一个个的载入&#xff0c;还容易出错 ABC文件自动导入到Houndini里 二 过程/效果 在CGTeamwork里打开对应的镜头&#xff0c;下面的文件列表显示相机和角…

大型软件编程实例分享,诊所门诊处方笺管理系统多台电脑同时使用的软件教程

大型软件编程实例分享&#xff0c;诊所门诊处方笺管理系统多台电脑同时使用的软件教程 一、前言 以下教程以 佳易王诊所门诊电子处方管理系统V17.2 为例说明 软件资源可以点击最下方官网卡片了解详情 软件左侧为导航栏 1、系统参数设置&#xff1a;可以设置打印等参数 2、…

zabbix配置监控脚本

zabbix配置监控脚本 1.修改agent配置文件 [rootchang ~]# vim /etc/zabbix/zabbix_agentd.conf 333行 原# UnsafeUserParameters0 修改成 UnsafeUserParameters12.创建脚本与脚本存放目录 [rootchang ~]# mkdir /etc/zabbix/zabbix_scripts [rootchang zabbix_scripts]# vi…

BUUCTF-Real-ThinkPHP]5.0.23-Rce

漏洞介绍 这个版本容易存在我们都喜欢的rce漏洞&#xff01; 网站为了提高访问效率往往会将用户访问过的页面存入缓存来减少开销。而Thinkphp 在使用缓存的时候是将数据序列化&#xff0c;然后存进一个 php 文件中&#xff0c;这使得命令执行等行为成为可能&#xff01; ThinkP…

2.0 Hadoop 运行环境

由于 Hadoop 是为集群设计的软件&#xff0c;所以我们在学习它的使用时难免会遇到在多台计算机上配置 Hadoop 的情况&#xff0c;这对于学习者来说会制造诸多障碍&#xff0c;主要有两个&#xff1a; 昂贵的计算机集群。多计算机构成的集群环境需要昂贵的硬件.难以部署和维护。…