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

在这里插入图片描述

论文: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.mzph.cn/news/10447.shtml

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

相关文章

【树上乘法原理】ICPC Shanghai 2021 G, Edge Groups

http://oj.daimayuan.top/course/8/problem/400 题意: 思路: 求方案数,考虑组合数学 手摸一下样例发现,对于一棵子树,若边数为偶数,那么可以内部匹配,但是如果边数为奇数,那么就一…

嵌入式:QT Day2

一、继续完善登录框&#xff0c;当登陆成功时&#xff0c;关闭登陆页面&#xff0c;跳转到新的界面中 源码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //用于打印输出 #include <QIcon> …

无涯教程-jQuery - jQuery.getScript( url, callback )方法函数

jQuery.getScript(url&#xff0c;[callback])方法使用HTTP GET请求加载并执行JavaScript文件。 该方法返回XMLHttpRequest对象。 jQuery.getScript( url, [callback] ) - 语法 $.getScript( url, [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求…

mac 移动硬盘未正常退出,再次链接无法读取(显示)

&#xff08;1&#xff09;首先插入自己的硬盘&#xff0c;然后找到mac的磁盘工具 &#xff08;2&#xff09;打开磁盘工具&#xff0c;发现自己的磁盘分区在卸载状态&#xff1b;点击无法成功装载。 &#xff08;3&#xff09;打开终端&#xff0c;输入 diskutil list查看自…

VITE + VUE 全局环境变量使用相关知识

一. 全局环境变量配置及使用 配置&#xff1a; 创建.env和.env.development&#xff0c;.env.production等配置文件&#xff0c;.env.uat, .env.test及其它均可。变量要以大写的VITE_开头&#xff0c; 如VITE_APP_NAME 测试网站 使用&#xff1a; 在代码中 import.meta.env…

Redis应用(1)——生成全局唯一标识ID

1 概述 在实际项目中&#xff0c;根据不同的业务逻辑需要生成唯一的标识id &#xff0c;如购买商品生成的订单号。尽管这个标识id功能非常的简单&#xff0c;但是如果不能成功的生成唯一标识id&#xff0c;那将会影响后续的业务逻辑 。我们可以使用数据库去生成唯一标识id&…

ajax相关

1、HTTP 协议1.1、作用 规范了数据是如何打包的 以及 数据时如何传递的1.2、Message 消息 / 报文 Message 指的是在HTTP客户端与服务器间传递的数据块 分类&#xff1a; 1、Request Message : 客户端向服务器发送的请求消息 2…

经营在线业务的首选客服工具--SS客服

随着网购正在快速取代传统零售业&#xff0c;各行各业的企业都在大力发展电子商务以取悦客户。但是&#xff0c;有这么多可用的电子商务平台&#xff0c;选择一款符合自己发展的平台确实不容易。电子商务平台不仅是企业在线销售产品和服务的地方&#xff0c;也是他们管理日常运…

Qt Core学习日记——第七天QMetaObject(上)

每一个声明Q_OBJECT的类都具有QMetaObject对象 Q_OBJECT宏源代码&#xff1a; #define Q_OBJECT \ public: \ QT_WARNING_PUSH \ Q_OBJECT_NO_OVERRIDE_WARNING \ static const QMetaObject staticMetaObject; \ virtual const QMetaObject *metaObject() const; \ vir…

深度学习入门教程(2):使用预训练模型来文字生成图片TextToImageGenerationWithNetwork

本深度学习入门教程是在polyu HPCStudio 启发以及资源支持下进行的&#xff0c;在此也感谢polyu以及提供支持的老师。 本文内容&#xff1a;在GoogleColab平台上使用预训练模型来文字生成图片Text To Image Generation With Network &#xff08;1&#xff09;你会学到什么&a…

【项目实战】日志系统

文章目录 日志系统1、项目介绍2、开发环境3、核心技术4、日志系统介绍4.1 日志系统的价值4.2 日志系统技术实现 5、相关技术知识5.1 不定参函数5.1.1 不定参宏函数5.1.2 C 风格不定参数使用5.1.3 C风格不定参数使用 5.2 设计模式5.2.1六大原则5.2.2 单例模式5.2.3 工厂模式5.2.…

Fiddler使用教程|渗透测试工具使用方法Fiddler

提示&#xff1a;如有问题可联系我&#xff0c;24小时在线 文章目录 前言一、Fiddler界面介绍二、菜单栏1.菜单Fiddler工具栏介绍Fiddler命令行工具详解 前言 网络渗透测试工具&#xff1a; Fiddler是目前最常用的http抓包工具之一。 Fiddler是功能非常强大&#xff0c;是web…

伦敦金在非农双向挂单

对伦敦金投资有一定经验的投资者都知道&#xff0c;在非农时期&#xff0c;伦敦金市场会出现很大的波动&#xff0c;那么我们如何才能抓住这些波动呢&#xff1f;答案是很难的。但是&#xff0c;有些投资者在多年实践中发明了一种双向挂单的方法&#xff0c;这里和大家一切分享…

向量数据库Milvus的四个版本

目录 MilvusLite版 单机版 分布式版 Milvus Cloud版 Milvus是一个功能强大的向量数据库管理系统,提供了多种版本,以满足不同用户的需求。以下是关于Milvus四个版本的具体介绍。 MilvusLite版 MilvusLite版是Milvus的轻量级版本,适合于小规模数据集和高性能计算场景。…

el-popover在原生table中,弹出多个以及内部取消按钮无效问题

问题&#xff1a;当el-popover和原生table同时使用的时候会失效&#xff08;不是el-table) <el-popover placement"bottom" width"500" trigger"click" :key"popover-${item.id}"></el-popover> 解决&#xff1a; :key…

在 React 中,props(属性)用于在组件之间传递数据

在 React 中&#xff0c;props&#xff08;属性&#xff09;用于在组件之间传递数据。它是父组件向子组件传递信息的一种方式&#xff0c;通过 props&#xff0c;父组件可以向子组件传递数据、回调函数、配置项等。 注意&#xff1a; props 是只读的&#xff0c;它的值由父组件…

Java设计模式-中介者模式

中介者模式 1.中介者模式含义 中介者模式&#xff0c;就是用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地互相引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立的改变它们之间的交互。 其实中介者模式很简单的&#xff0c;就像它的名字一样&a…

深入浅出Pytorch函数——torch.softmax/torch.nn.functional.softmax

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 机器学习中的数学——激活函数&#xff1a;Softmax函数 深入浅出Pytorch函数——torch.softmax/torch.nn.functional.softmax 深入浅出Pytorch函数——torch.nn.Softmax 将Softmax函数应用于沿dim的…

vue 项目中使用阿里巴巴矢量图标库

1.网址&#xff1a;https://www.iconfont.cn/ 2.手动创建自己的项目图标库 选中图标 → 添加入库&#xff08;点击购物车&#xff09;→ 完成后点击上方菜单栏的购物车 → 添加至项目&#xff08;没有则新建项目&#xff09;→ 自动打开项目图标库 → 点击下载至本地 → 点击de…

【Redis-02】Redis的缓存

Redis的缓存 1.概念1.1什么是缓存1.2为什么使用缓存1.3如何使用1.3.1不适用缓存之前1.3.2 缓存模型和思路&#xff08;使用方法&#xff09;1.3.3 使用之后 2.缓存更新策略2.1数据库缓存不一致解决方案2.2数据库和缓存不一致采用什么方案2.3代码实例 3.缓存穿透3.1缓存穿透是什…