【多模态】16、DetCLIP | 构建超大词汇字典来进行开放世界目标检测

news2024/10/7 10:51:30

在这里插入图片描述

论文:DetCLIP: Dictionary-Enriched Visual-Concept Paralleled Pre-training for Open-world Detection

代码:无。。。

出处:NIPS2022 | 华为诺亚方舟 | 中山大学 | 香港科技大学

效果:

  • 在 LVIS 的 1203 个类别上超越了 GLIP,DetCLIP-T 在预训练没有见过 LVIS 的情况下超越 GLIP-T 9.9%

一、背景

在这里插入图片描述
开放世界目标检测是一个通用且有挑战的方向,其目标是要识别和定位任意类别的目标

最近的工作 GLIP 将其构建成了一个 phrase grounding 任务,将所有待检测的类别整合成了一个句子,然后送入 text encoder 进行编码并和图像特征进行对齐

在 text encoder 中,会学习所有类别之间的 attention,这其实是没有必要且低效的,尤其是当类别数量增加时,效率更低

基于此,作者提出了 DetCLIP,dictionary-enriched visual-concept paralleled pre-training method,这里的 concept 指的就是检测任务中的类别名称、grounding 任务中的 phrase 等

  • 设计了一个并行的结构来提高效率,不会将整个 prompt text 送入 text encoder,而是将每个 concept 都作为一个独立的个体,将所有的 concept 分别送入不同的 text encoder
  • 这样能够避免模型受到不相关类别无效关联,并且能给每个 concept 都产生一个长描述

另外,预训练时候使用的数据集一般域间差别比较大且命名也有较大的不同,比如一个相同类别的目标在在不同数据集中的命名可能是不同的

这样就很难直接从命名上来获得这些类别之间的关联

所以作者重新构建了一个 concept dictionary,丰富联合不同数据集进行 pre-training 的 prompt text

  • 首先,从现有的数据集中组合了一个 dictionary
  • 然后,基于上面的 dictionary,DetCLIP 能够自动丰富概念和描述

在这里插入图片描述

二、方法

2.1 数据构建

一个好的开放世界目标检测器需要很丰富的训练数据,要覆盖到足够多的视觉概念

现有的目标检测数据集类别还是不够多,这也是受限于标注限制

grounding data 和 image-text pair 有很丰富的语义覆盖

所以,需要将这些不同类型的数据整合到一个统一的存储方式来进行后续的任务

如图 3 展示了使用不同类型的数据的不同,a-b 展示了传统的检测数据和 grounding 数据使用不同的数据输入,检测数据将类别当做固定的 label,grounding 数据将整个句子当做输入,构建每个单词之间的关系,然后将编码后的 token 和图像区域进行对齐

GLIP 将目标检测构建成了 grounding 任务,将类别组合成了一个句子,如图 3c

本文作者认为这样的做法有如下问题:

  • 会导致不同类别名称间进行无用的交互
  • 限制了对比学习中 negative sample 的数量

DetCLIP 如何破局:

  • 引入了并行结构,如图 3d,会将每个类别名称单独送入 text encoder 来得到对应的编码结果,模型是从单独的 concept 中学习其语言特征的,可以提高学习效率,如图 4
  • 此外,并行结构可以根据类别数量来很容易的扩展

不同数据如何适应这个并行结构:

  • 检测数据:假设一个图中有 k 个 positive category,首先将类别数量扩展到 N (随机抽取负类别),N 是预定义好的数量,用于构造 alignment loss,然后将 N 个类别名称作为独立的句子送入 text encoder,并且使用 [end of sentence] token 的编码作为每个类别的 text embedding,最后,将所有 N 个 text embedding concat 起来和 gt 去计算 alignment loss,coco 示例如下:

    在这里插入图片描述

  • grounding 数据:作者会从 grounding 标注的 caption 中抽取 positive phrase,然后同样扩展到长度 N,一个例子如下:

    在这里插入图片描述

  • Image-text pair 数据:只有图像和对应的描述,没有标注框。为了获得目标框,首先使用 RPN 来生成与类别无关的 proposal,然后使用预训练好的 CLIP 或 FILIP 为这些 proposal 生成伪标签,然后和前面的处理方法一样

在这里插入图片描述

在这里插入图片描述

2.2 词汇字典搭建

由于现有的 detection/grounding/image-textpair 这些数据集有较大的 domain gap 和不同的 labeling space。

一个男孩可以被标注为 man、child、people,这些概念也会有包含或层级的关系

这些语义的关系可能会促进预训练,但仅从词汇名称中很难发现他们直接的关系

所以,作者构建了一个大规模的词汇字典,来将不同数据源的词汇统一到一个词汇空间,并且能够通过描述来提供不同词汇之间的关联

例如:

  • 一个 car 的描述为:a motor vehicle with four wheels usually propelled by an internal combustion engine
  • 一个 motorcycle 的描述为:a motor vehicle with two wheels and a strong frame

这样的描述即表达了 car 和 motorcycle 的不同,也表达它们之间的相同点

作者是如何构建的:

  • 首先,从多个源头收集 concept:image-text pair 数据集(YFCC100m)、检测数据集中的类别(Object365、OpenImage)、物体数据集中的物体名称(Tings 数据集)。
  • 然后,会先去重然后放入词汇字典中,还有一些特殊的操作,见文章,得到了包含约 14k 词汇和对应定义的字典

词典如何丰富:

  • 对于输入的 concept,如果该 concept 在字典里,则会使用该 concept 对应的描述
  • 如何不再字典里,会通过计算相似性矩阵,来找出与其最接近的 concept,并且找到对应的描述
  • 丰富后的示例如下:
    在这里插入图片描述

对与 grounding 或 image-text pair 数据,标注描述中指包含了主要的目标,也就是 partial labeling,所以会有两个问题:

  • 缺少足够的 negative concept 用于学习更好的编码:DetCLIP 会从字典中随机抽取负样本描述,如图 5b 所示
  • 缺少部分 positive concept 的标注:使用了和对 image-text pair 类似的处理方法,即生成伪标签,如图 7 所示

2.3 模型结构

如图 5 所示,DetCLIP 包含:

  • 一个 image encoder 来对图像进行编码
  • 一个 text encoder 来对 concept 进行编码
  • 一个对齐计算模块来用于计算所有 region-word pairs 的对齐得分

loss 如下:

在这里插入图片描述

在这里插入图片描述

三、效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

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

相关文章

每月进度总结 7月1日~7月22日

一个月已经过了三分之二了,感觉这个月是在学校学的很多。也是最充实的三个星期。其中也有发呆,也有过懊悔,今天状态为什么这么差,就学了这一点。但是还有学到知识的喜悦。总之是认识到了自己的很多不足,也找到了相对正…

conda在D盘创建虚拟环境

1.安装Anaconda 略 2.修改镜像源 清华的镜像源好像不能用了。交大的镜像源还能使用。 winr 输入: %HOMEPATH% 进入C盘的用户目录。找到.condarc的文件。打开它,把里面的镜像内容修改为以下内容 channels:- https://mirrors.sjtug.sjtu.edu.cn/anaco…

华硕ROG枪神6plus原装Windows11预装系统 工厂模式恢复安装带ASUSRecevory一键还原安装还原方法

华硕ROG枪神6plus原装Windows11预装系统 工厂模式恢复安装带ASUSRecevory一键还原安装还原方法 第一步:需要拥有文件格式为6个底包的文件 第二步:创建系统u盘 第三步:复制文件到u盘之后,启动华硕工厂模式 第四步:按…

python安装第三方包的两种方式

最近研究QQ空间、微博的(爬虫)模拟登录,发现都涉及RSA算法。于是需要下一个RSA包(第三方包)。折腾了很久,主要是感觉网上很多文章对具体要在哪里操作写得不清楚。这里做个总结,以免自己哪天又忘…

MES管理系统如何为汽配制造赋能

汽配制造是企业产业链的重要环节之一,其生产质量和效率直接影响到汽车的整体质量和安全性。然而,传统的汽配制造管理模式存在着一些问题,如生产过程不透明、信息传递不畅、生产效率低下等,这些问题成为了制约汽配制造发展的瓶颈。…

Qt 之 自定义配置文件类,QSettings应用

目录 一、前言 二、头文件代码 三、源文件代码 四、使用示例 五、使用效果 一、前言 在qt开发过程中,很多时候需要为软件添加配置,让软件在下一次打开时仍然保持上一次关闭时的设置。qt的配置类QSettings,本文通过继承QSettings实现自定…

[深度学习实战]基于PyTorch的深度学习实战(中)[线性回归、numpy矩阵的保存、模型的保存和导入、卷积层、池化层]

目录 一、前言二、线性回归2.1 训练代码2.2 绘图部分代码2.3 numpy 数组的保存和导入代码2.4 完整代码 三、numpy矩阵的保存四、模型的保存和导入4.1 保存模型4.2 导入模型 五、卷积层5.1 Conv2d5.1.1 函数定义5.1.2 参数说明5.1.3 测试代码5.1.4 最终结果 5.2 Conv1d5.2.1 函数…

【cs61b】学习笔记day1

1.1 java基础 Hello World java程序由一个类声明组成,使用关键字public class声明。在Java中,所有代码都位于类中。 运行的代码在一个名为main的方法中,该方法被声明为public static void main(String[] args)。 我们使用大括号{}表示一段…

Vue中TodoList案例_添加

与上一篇Vue中TodoList案例_初始化列表有四个文件变化了 安装nanoid库&#xff1a; npm i nanoid App.vue <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"…

Guitar Pro 8.1官方中文解锁版功能介绍及下载安装激活教程

Guitar Pro 8.1官方中文解锁版是一款由法国Arobas Music公司开发的吉他学习与MIDI音序制作辅助软件&#xff0c;它具有丰富的功能&#xff0c;包括吉他谱、六线谱、四线谱绘制、打印、查看、试听等方面&#xff0c;能够帮助音乐爱好者更方便地进行音乐学习和创作。Guitar Pro 8…

<Java物联网> 从主动到被动:Java中的BACnet设备属性查询

目录 BACnet 使用软件 资源 模拟器 使用Java主动查 引入maven 创建网络对象 获取远程设备 获取设备属性 使用DeviceEventAdapter订阅 初始化本地BACnet设备和IP网络配置&#xff1a; 启动本地设备和添加监听器&#xff1a; 搜寻远程设备&#xff1a; 发送订阅COV报…

Ansible自动化运维学习——综合练习

目录 (一)练习一 1.新建一个role——app 2.创建文件 3.删除之前安装的httpd服务和apache用户 4.准备tasks任务 (1)创建组group.yml (2)创建用户user.yml (3)安装程序yum.yml (4)修改模板httpd.conf.j2 (5)编写templ.yml (6)编写start.yml (7)编写copyfile.yml (8…

leetcode 46. 全排列

2023.7.23 目前位置回溯系列已经接触过 组合、分割、子集&#xff0c;本题是新类型&#xff1a;排列。排列的最大特点是&#xff1a;各集合有序&#xff0c;所以元素可以重复使用&#xff0c;因此不需要使用start了&#xff1b;需要使用一个used数组记录path中存在哪些元素了&a…

Unity-数据持久化-JSON

一、JsonUtlity JsonUtlity 是 Unity 自带的用于解析 Json 的公共类。它可以 将内存中对象序列化为 Json 格式的字符串 将 Json 字符串反序列化为类对象 1.在文件中存读字符串 using System.IO;// 1.存储字符串到指定路径文件中 // 第一个参数&#xff1a;填写的是 存储的…

四层和七层负载均衡详解

1 概述 四层负载均衡就是工作在计算机网络OSI七层分层的第四层&#xff08;传输层&#xff09;的&#xff0c;七层负载军和则是工作在第七层&#xff08;应用层&#xff09;的。即四层负载均衡是基于IP端口的负载均衡&#xff0c;七层负载均衡是基于URL等应用层信息的负载均衡…

Mysql数据库基本语句

1.数据库操作基本流程 ◼ 连接登陆数据库 ◼ 创建数据库 ◼ 创建数据表 ◼ 插入数据记录 ◼ 断开连接 连接 MySQL 数据库的命令语法格式&#xff1a; mysql [ -h 服务器 IP 或域名 -u 用户名 -p 密码 数据库名称 ]quit 或者 exit 退出数据库 注意事项&#xff1a; 操作指令…

力扣奇遇记 [第一章]

文章目录 &#x1f626;第一题&#xff1a;拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容&#xff1a;LeetCode1769. 移动所有球到每个盒子所需的最小操作数&#x1f648;思路分析&#xff1a;&#x1f496;代码产出&#xff1a; &#x1f626;第二题&#…

网络安全 Day16-计算机网络知识01

计算机网络知识01 1. 什么是网络2. 网络分类3. 网卡4. 网线5. MAC地址 1. 什么是网络 局域网&#xff08;私有网&#xff09;图片 路由器作用&#xff1a;隔离网络帮人选择最佳路径。内网地址就是网关。外网地址就是公网地址。 2. 网络分类 局域网&#xff1a;本地私有的一…

leetcode:1313. 解压缩编码列表(python3解法)

难度&#xff1a;简单 给你一个以行程长度编码压缩的整数列表 nums 。 考虑每对相邻的两个元素 [freq, val] [nums[2*i], nums[2*i1]] &#xff08;其中 i > 0 &#xff09;&#xff0c;每一对都表示解压后子列表中有 freq 个值为 val 的元素&#xff0c;你需要从左到右连接…