【多模态】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.mfbz.cn/a/43700.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入学习 Redis - 深挖经典数据类型之 list

目录 前言 一、list 类型 1.1、操作命令 lpush / rpush(插入元素) lrange(查看范围元素) lpushx / rpushx (有约束的插入) lpop / rpop(头删尾删) lindex(获取下…

实现锂电池形状的数据可视化css+js

1.效果图 2.需求根据后端返回数据改变里面的高度 HTML&#xff1a; <div class"dianchichi"><div class"limian" id"divElementId"></div></div> css: .dianchichi {width: 84px;height: 146px;display: flex;justify-…

【Visual Studio】Qt 在其他 cpp 文件中调用操作 ui 界面控件

知识不是单独的&#xff0c;一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏&#xff1a;Visual Studio。 还整了一个如何相互之间调用函数的文章&#xff0c;感兴趣可以看&#xff1a;【Visual Studio】Qt 在其他 cpp 文件中调用主工程下文件中的函数。 文章目录 …

react 实现小球加入购物车动画

代码 import React, { useRef } from react;const ProductLayout () > {const box useRef(null);const createBall (left, top) > {const ball document.createElement(div);ball.style.position absolute;ball.style.left left - 10 px;ball.style.top top - 1…

四个现实中的商品样例,帮助你理解如何使用css【前端CSS入门样例】

实现商品列表 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>商品列表图片</title><style>.row > img {width: 15%;}</style></head><body><div class"row"><img sr…

C/C++ 程序 IDE 开发工具 CLion

下载地址&#xff1a; https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/ 下载地址&#xff1a; https://www.jetbrains.com/clion/download/ https://www.jetbrains.com/clion/download/ 历史版本&#xff08;老版本&#xff09;下载地址&#xff1a; h…

计算机科学cs/电子信息ei面试准备——python复习|理解题|简答题

目录 1 请简要概述python技术的主要应用场景? 2 python的基本数据类型是那几种? 3 python数组和列表有什么区别? 4 Python中的函数是什么&#xff1f; 5 请写出删除列表中的元素有几种方式? 6 描述python函数中递归的理解? 7 请介绍join()和split()的区别? 8 介绍…

每天五分钟机器学习:多项式非线性回归模型

本文重点 在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线性回…

dpdpdp

这里写目录标题 139. 单词拆分322. 零钱兑换300. 最长递增子序列120. 三角形最小路径和64. 最小路径和63. 不同路径 II5. 最长回文子串&#xff08;回文dp&#xff09;⭐97. 交错字符串⭐&#xff08;抽象成路径问题&#xff09;221. 最大正方形⭐ 139. 单词拆分 class Soluti…

文心千帆为你而来

1. 前言 3月16号百度率先发布了国内第一个人工智能大语言模型—文心一言。文心一言的发布在业界引起了不小的震动。而文心一言的企业服务则由文心千帆大模型平台提供。文心千帆大模型平台是百度智能云打造出来的一站式大模型开发与应用平台&#xff0c;提供包括文心一言在内的…

Observability:Synthetic monitoring - 动手实践

在我之前的如下文章里&#xff1a; Observability&#xff1a;Synthetic monitoring - 合成监测入门&#xff08;一&#xff09;&#xff08;二&#xff09; Observability&#xff1a;Synthetic monitoring - 创建浏览器监测&#xff0c;配置单独的浏览器监测器及项目 我详…

408-2009

一、选择题&#xff08;2 分/题&#xff09; 1.为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据一次写入该缓冲取&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是______。 A.栈 …

【JavaEE】Servlet常用的API

目录 前言 一、HttpServlet类 1、Servlet的生命周期 ✨tomcat的两个端口 ✨设置告诉浏览器使用那种字符集解析响应 ✨Java中Unicode和utf8字符集的使用 二、HttpServletRequest类 1、获取请求的信息 2、 前端给后端传递数据的三种方式 2.1、通过query string传递 2.2…

【云原生】Prometheus 监控系统的初步了解与系统搭建

前言 promethues是一个开源的系统监控和报警系统&#xff0c;现在已经加入到CNCF基金会&#xff0c;成为继k8s之后第二个在CNCF托管的项目&#xff0c;在kubernetes容器管理系统中&#xff0c;通常会搭配prometheus进行监控&#xff0c;同时也支持多种exporter采集数据&#x…

S32K144 GPIO外设分析

1. S32K144 GPIO外设特性 下面的内容来自于S32K用户手册的翻译&#xff0c;或者网上关于S32K系列的一些pdf文件介绍。有些内容可能会出现理解不到位或者翻译错误方面&#xff0c;如果大家有疑问最好可以查阅用户手册。 GPIO和PORT的数量 从用户手册&#xff0c;对于PCR&#x…

【广州华锐互动】列车人员疏散VR虚拟演练系统

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐应用于各个领域。在火车站安全方面&#xff0c;为了提高旅客的安全意识和应对突发事件的能力&#xff0c;列车人员疏散VR虚拟演练系统应运而生。 列车人员疏散VR虚拟演练系统是一种基于虚拟现实技术的教育培训系统&…

15 QMessageBox消息对话框

错误提示对话框 信息提示对话框 循环对话框 默认是Yes和No&#xff0c;可以修改属性。第5个参数关联回车键 QMessageBox::Save | QMessageBox::Cancel 可以通过捕获按键获取点击结果 警告提示 代码&#xff1a; //QMessageBox 消息对话框//错误提示QMessageBox::critical(th…

老年公寓人员定位管理系统:提升安全与关怀的智能解决方案

老年公寓作为提供安全居住环境和关怀服务的重要场所&#xff0c;面临着人员管理和安全控制的挑战。为了解决这些问题&#xff0c;老年公寓人员定位管理系统应运而生。基于为提供全面的安全管理和个性化关怀服务&#xff0c;华安联大便通过老年公寓人员定位管理系统的技术原理、…

[数据结构 -- C语言] 二叉树(BinaryTree)

目录 1、树的概念及结构 1.1 树的概念 1.2 树的相关概念&#xff08;很重要&#xff09; 1.3 树的表示 2、二叉树的概念及结构 2.1 概念 2.2 特殊二叉树 2.3 二叉树的性质&#xff08;很重要&#xff09; 2.4 练习题 2.5 二叉树的存储结构 2.5.1 顺序存储 2.5.2 链…

微服务保护——Sentinel【快速入门】

一、雪崩问题&#x1f349; (一) 什么是雪崩&#x1f95d; 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。服务D故障引起服务A故障&#xff0c;服务A引起其他服务故障&#xff0c;渐渐导致所有微服务都不可用。有人…
最新文章