MQ-Det: Multi-modal Queried Object Detection in the Wild

在这里插入图片描述
首个支持视觉和文本查询的开放集目标检测方法
NeurIPS2023
文章:https://arxiv.org/abs/2305.18980
代码:https://github.com/YifanXu74/MQ-Det

主框图

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

摘要

这篇文章提出了MQ-Det,一种高效的架构和预训练策略,它利用文本描述的开放集泛化能力和视觉示例的丰富描述粒度作为类别查询,即多模态查询目标检测。MQ-Det将视觉查询融入现有的仅基于语言查询的检测器。文章提出了一个即插即用的门控类可扩展感知器(GCP)模块,用于在冻结检测器上增强类别文本与类别相关的视觉信息。为了解决由于冻结检测器带来的学习惯性问题,提出了一种视觉条件的掩码语言预测策略。MQ-Det的简单而有效的架构和训练策略与大多数基于语言查询的目标检测器兼容,从而实现多种应用。实验结果表明,多模态查询大大提高了开放世界检测的性能。例如,MQ-Det在LVIS基准测试中显著提高了最先进的开放集检测器GLIP的性能,无需任何下游微调,相较于GLIP提高了7.8%的AP。在13个少样本下游任务中,MQ-Det平均提高了6.3%的AP,而GLIP仅需额外增加3%的调制时间。

引言

近年来,随着大规模视觉语言预训练模型的兴起,目标检测领域已经进入了一个全新的范式,即使用查询文本进行目标定位。受益于预训练模型在大规模数据上的泛化能力,这种文本查询范式在通向开放集目标检测的道路上取得了稳定的进步。

与传统的固定类别集合(通常由有限数量的数字表示)相比,文本查询可以表示更广泛的概念,但也存在描述粒度不足的内在限制。例如,类别同义词(如“bat"可以表示木头制作的球棒,也可以表示一种动物)会导致模糊的查询。与此同时,对于一些细粒度的类别(如图1所示的鱼类品种检测),仅使用有限的文本很难描述鱼类的具体模式。显然,解决文本查询描述粒度不足问题的一个直接方案是设计额外的文本描述,但这存在三个明显障碍:
1)很难全面描述视觉细节。为大量类别编写文本描述是一项繁琐的工作。
2)较长的查询文本会增加预训练模型的理解难度。
3)带来更多的计算开销。

最先进的文本查询检测器GLIP即使为一些类别设计了额外的文本描述,也只能在Aquarium数据集上将平均精度(AP)从17.7%提高到18.4%。与文本相比,图像可以提供更丰富的视觉线索。但同时,人工生成的文本具有更高的信息密度,因此具有更强的泛化能力。鉴于此,一个自然的想法是将文本和图像结合起来,构成多模态查询,兼具前者的广度和后者的丰富粒度。然而,如何获得这样的多模态查询检测模型仍面临挑战:
1)直接使用有限的视觉示例进行微调会导致灾难性遗忘。
2)大规模基础模型具有良好的泛化能力,但如果重新组织和从头训练,需要承担繁重的训练负担(例如,GLIP需要超过3000万的数据存储和近480个V100 GPU天的训练时间)。

本文填补了多模态查询目标检测(MQ-Det)的空白,提出了一种高效的插件式训练架构。MQ-Det的核心思想是融合描述丰富的视觉线索和具有很强泛化能力的文本表示,同时只需在现有基于语言查询的目标检测基础模型的基础上增加很小的训练成本。作者在Objects365数据集上对模型进行微调,仅占用GLIP预训练时间的3%,就能在LVIS基准测试中通过提供5个视觉示例和文本类别描述,将微调-free的性能显著提高7.8%。

为了实现这一目标,作者提出了一个即插即用的Gated Class-scalable Perceiver (GCP)模块,用于在文本编码器的每个高级阶段动态融合信息丰富的视觉线索和高度泛化的语言线索。另外,作者还设计了一种视觉条件的掩码语言预测策略,以确保在冻结检测模型的基础上进行足够的多模态融合。作者观察到,在将视觉线索以门控残差的方式加入时,学习过程往往会陷入初始优化点附近的局部最优,而无法引入足够的视觉知识。因此,作者随机mask文本tokens,让对应的视觉查询独立地进行目标预测。作者冻结初始的检测基础模型,只训练调制阶段的GCP模块,这非常高效。

综上,本文的贡献如下:
1)首个引入既具有广度又具有丰富粒度的多模态查询的工作,为开放集目标检测开辟了一条新路。
2)提出了一个即插即用的GCP模块,用于动态融合多模态查询中信息丰富的视觉线索和高度泛化的语言线索,并采用视觉条件的掩码语言预测策略,在冻结检测模型的基础上实现充分的多模态融合。
3)MQ-Det在finetune-free和few-shot场景下展现出强大的迁移能力,而所需的训练时间远少于之前的最先进基础检测器。具体来说,MQ-Det在具有挑战性的LVIS基准测试中,相比GLIP提高了7.8%的AP,在13个下游few-shot检测任务[23]中平均提高了6.3%的AP,而调制过程仅占用了GLIP所需训练时间的3%。

方法

Gated Class-scalable Perceiver(GCP)

在第2.2节中,作者提出了一种名为Gated Class-scalable Perceiver(GCP)的即插即用架构,用于将视觉查询融入预训练的语言查询目标检测模型。具体来说,GCP模块被设计插入到文本编码器的每个高级阶段之间,以动态融合来自视觉查询的类相关视觉信息。
GCP模块包含以下两个关键组件:
1)类相关的交叉注意力层:每个类别的文本查询令牌独立地与对应的视觉查询进行交叉注意力计算,以获取丰富的视觉细节。这种设计没有类别特定的参数,可以扩展到不同粒度的类别。2)门控层:根据视觉查询的质量,动态调整交叉注意力产生的增强视觉特征的权重。这通过一个MLP层实现,它将交叉注意力的结果和文本查询令牌作为输入,产生一个标量门控值。门控值初始化为0,这样在训练开始时,输出与预训练文本编码器匹配,有助于训练稳定性和最终性能。
通过在文本编码器中以残差方式加入GCP模块的输出,该模块可以无缝地融合视觉和语言查询。由于GCP没有类别特定的参数,它可以很容易地应用于各种预训练的语言查询目标检测模型,如GLIP和GroundingDINO。此外,GCP允许模型在推理时泛化到任何数量的类和视觉查询,增强了通用性。总的来说,这种即插即用的GCP架构为有效地将视觉查询融入语言查询目标检测模型提供了一个简单而有效的设计。它为多模态查询目标检测提供了坚实的基础。

Modulated pre-training

在第2.3节中,作者提出了一种调制预训练的策略,通过在大规模图像文本数据集上进行额外的训练,将视觉查询融入预训练的语言查询目标检测模型。具体来说,调制预训练包含以下步骤:
1)提取视觉查询:从包含视觉实例的大型数据集(D)中提取视觉查询。每个类别的查询数远多于最终使用的查询数(k)。
2)在冻结的检测器上训练GCP模块:只训练新加入的GCP模块,而冻结预训练的语言查询目标检测模型(如GLIP)。这大大减少了训练时间。
3)视觉条件的掩码语言预测:为了解决仅依赖文本特征导致的学习惯性问题,提出了一种视觉条件的掩码语言预测策略。随机mask文本tokens,让模型从视觉查询中提取信息进行预测。这确保了视觉查询在训练中的充分参与。

微调

在调制预训练之后,可以对模型进行微调,以适应下游任务。由于GCP模块是即插即用的,微调也可以只针对GCP模块进行,而保持预训练模型的其他部分冻结。这只需要很少的计算资源。通过这种调制预训练策略,模型可以接受文本和视觉查询作为输入,实现多模态目标检测,而只需在预训练模型上增加很小的训练成本。实验结果表明,这种策略在finetune-free和few-shot场景下都取得了显著的性能提升。它使模型能够利用语言查询的泛化能力和视觉查询的丰富粒度。

结果

zero-shot结果

在这里插入图片描述

few-shot结果

在这里插入图片描述

消融结果

在这里插入图片描述

其他结果

在这里插入图片描述

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

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

相关文章

以csv为源 flink 创建paimon 临时表相关 join 操作

目录 概述配置关键配置测试启动 kyuubi执行配置中的命令 bug解决bug01bug02 结束 概述 目标:生产中有需要外部源数据做paimon的数据源,生成临时表,以使用与现有正式表做相关统计及 join 操作。 环境:各组件版本如下 kyuubi 1.8…

Spring(Spring/Springboot 的创建) 基础

一. Spring 1.1 Spring是什么? Spring 指的是 Spring Frameword(Spring 框架),它是一个开源框架。 Spring 是包含了众多工具方法的IoC容器。 1.2 什么是容器? 容器时用来容纳某种物品的装置。 我们之前接触到的容器: • List/Map ->…

内存cache大量使用问题导致应用异常问题

概述 28s应用崩溃查看内存使用有大量cache。 分析 查看free 信息平时的确存在大量cache使用的情况查看dmes信息发现filesendserver崩溃 崩溃信息为系统调用 查看到page allocation failure:order 5 同时也看到系统内存使用情况 查看到系统实际还有部分内存为空闲内存&am…

[笔记] 使用 qemu/grub 模拟系统启动(单分区)

背景 最近在学习操作系统,需要从零开始搭建系统,由于教程中给的虚拟机搭建的方式感觉还是过于重量级,因此研究了一下通过 qemu 模拟器,配合 grub 完成启动系统的搭建。 qemu 介绍 qemu 是一款十分优秀的系统模拟器,…

Linux上进行Nacos安装

Nacos安装指南 仅供参考,若有错误,欢迎批评指正! 后期会继续上传docker安装nacos的过程! 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好…

手动搭建koa+ts项目框架(日志篇)

文章目录 前言一、安装koa-logger二、引入koa-logger并使用总结如有启发,可点赞收藏哟~ 前言 本文基于手动搭建koats项目框架(路由篇)新增日志记录 一、安装koa-logger npm i -S koa-onerror and npm i -D types/koa-logger二、引入koa-lo…

【每日一题】【12.11】1631.最小体力消耗路径

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 数字图像处理 1631. 最小体力消耗路径https://leetcode.cn/problems/path-with-minimum-effort/这道题目的核心思路是:使用了二分查找和BFS &a…

EXPLAIN 执行计划

有了慢查询语句后,就要对语句进行分析。一条查询语句在经过 MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访…

记录 DevEco 开发 HarmonyOS 应用开发问题记录 【持续更新】

HarmonyOS 应用开发问题记录 HarmonyOS 应用开发问题记录一、预览器无法成功运行?如何定位预览器无法编译问题? 开发遇到的问题 HarmonyOS 应用开发问题记录 一、预览器无法成功运行? 大家看到这个是不是很头疼? 网上能看到许多方案,基本都是关闭一个配置 但是他们并…

【Java SE】带你识别什么叫做异常!!!

🌹🌹🌹个人主页🌹🌹🌹 【🌹🌹🌹Java SE 专栏🌹🌹🌹】 🌹🌹🌹上一篇文章:【Java SE】带…

Android获取Wifi网关

公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后…

【JVM从入门到实战】(一) 字节码文件

一、什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。 JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 二、JVM的功能 解释和运行 对字节码文件中的指令,实时的解释成机器码,让计算机…

微信小程序:模态框(弹窗)的实现

效果 wxml <!--新增&#xff08;点击按钮&#xff09;--> <image classimg src"{{add}}" bindtapadd_mode></image> <!-- 弹窗 --> <view class"modal" wx:if"{{showModal}}"><view class"modal-conten…

差生文具多系列之最好看的编程字体

&#x1f4e2; 声明&#xff1a; &#x1f344; 大家好&#xff0c;我是风筝 &#x1f30d; 作者主页&#xff1a;【古时的风筝CSDN主页】。 ⚠️ 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正&#xff0c;不胜感激。 直达博主&#xff1a;「…

【文心一言】AI试用写代码体会:delphi、php

一、前言&#xff1a; 二、让【文心一言】编写一个函数 1. Delphi 语言&#xff08;文心一言的回复&#xff09; 2. php 语言&#xff08;文心一言回复&#xff09; 三、总结 一、前言&#xff1a; 众所周知&#xff0c;chatGPT是可以自动编写程序的&#xff0c;甚至可以运…

MyBatis缓存机制流程分析

前言 在进行分析之前&#xff0c;建议快速浏览之前写的理解MyBatis原理、思想&#xff0c;这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级&#xff0c;一级缓存默认开启&#xff0c;二级缓存需要手动开启。 重复读取跑缓存 可以看到&#xff0c;第二次…

OpenAI承认GPT-4变懒,即将发布修复方案提升性能

目录 1OpenAI承认GPT-4变懒&#xff0c;即将发布修复方案提升性能 2一文秒懂人工智能全球近况 1OpenAI承认GPT-4变懒&#xff0c;即将发布修复方案提升性能 **划重点:** 1. &#x1f92f; 用户反馈:GPT-4使用者抱怨OpenAI破坏了体验&#xff0c;称模型几乎“害怕”提供答案。…

Wireshark使用技巧

Wireshark作为网络数据软件&#xff0c;功能强大&#xff0c;本专栏介绍仅为冰山一角&#xff0c;仅仅是一个入门级别的介绍&#xff0c;大部分功能还需要在日常工作中进行挖掘。 总结Wireshark软件的使用技巧如下&#xff1a; 1.合理部署Wireshark的位置&#xff0c;从源头保障…

基于Java SSM框架实现电影售票系统项目【项目源码+论文说明】

基于java的SSM框架实现电影售票系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

界面控件DevExpress WPF导航组件,助力升级应用程序用户体验!(下)

DevExpress WPF的Side Navigation&#xff08;侧边导航&#xff09;、TreeView、导航面板组件能帮助开发者在WPF项目中添加Windows样式的资源管理器栏或Outlook NavBar&#xff08;导航栏&#xff09;&#xff0c;DevExpress WPF NavBar和Accordion控件包含了许多开发人员友好的…