当前位置: 首页 > news >正文

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)是一种目标检测任务,旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别,而OVOD模型则具有识别“开放词汇”类别的能力,即在测试时可以识别和定位那些未曾在训练集中见过的类别。与开放词汇目标检测相对应的另一个重要概念是开集目标检测(Open-Set Object Detection, OSOD)。OSOD的目标是检测那些未在训练集中出现的未知类别,并将其标记为“未知”。与OVOD的不同之处在于,OSOD并不试图去识别这些未知类别是什么,而是关注于准确地检测它们的存在。本质上,开放词汇目标检测任务(Open-Vocabulary Object Detection)与零样本目标检测(Zero Shot Object Detection)、弱监督目标检测(Weakly supervised Object Detection)非常类似,核心思想都是在可见类(base class)的数据上进行训练,然后完成对不可见类(unseen/ target)数据的识别和检测。

参考链接:
https://blog.csdn.net/mieshizhishou/article/details/141216656
https://zhuanlan.zhihu.com/p/610639148

相关工作

OVR-CNN

2021年发表在CVPR的"open-vocabulary object detection using captions"是开放词汇对象检测领域第一篇重要工作,利用大规模image-caption数据改善对未知类的检测能力。本文提出了新的目标检测范式,用 image-caption 数据预训练视觉编码器。
论文:https://arxiv.org/pdf/2011.10678
源码:https://github.com/alirezazareian/ovr-cnn
解读:https://blog.csdn.net/jiaoyangwm/article/details/132000797
在这里插入图片描述

CLIP

于2021年由OpenAI发布。CLIP是一种图文多模态预训练神经网络。
基于视觉模型图像编码&基于nlp模型文本编码&相似度对比学习
论文:https://arxiv.org/pdf/2103.00020
源码:https://github.com/openai/CLIP
解读:https://blog.csdn.net/weixin_38252409/article/details/133828294
应用:图像分类、文本到图像检索、图像生成(结合GAN)、视觉问答(结合nlp)
在这里插入图片描述

ViLD

于2021 年由 Google Research 的Xiuye Gu等人提出。
以类似于Mask R-CNN 的两阶段检测器作为基础框架,第一阶段通过骨干网络(backbone)和区域提议网络(RPN)生成候选区域提议(proposals),第二阶段对这些提议进行分类和边界框回归,以确定目标的类别和位置。使用预训练的 CLIP 模型中的图像编码器和文本编码器,图像特征&文本特征&匹配关系等多模态信息融合共同优化损失函数。
论文:https://arxiv.org/pdf/2104.13921
源码:https://github.com/tensorflow/tpu/tree/master/models/official/detection/projects/vild
解读:https://hub.baai.ac.cn/view/12691
在这里插入图片描述

GLIP

于2021 年 12 月 7 日由微软团队首次发布提出。CLIP适用于分类任务,而GLIP尝试将这一技术应用于目标检测等复杂任务。视觉编码器&文本编码器&词-区域对齐&边界框回归
论文:https://arxiv.org/pdf/2112.03857.pdf
源码:https://github.com/microsoft/GLIP
解读:https://zhuanlan.zhihu.com/p/690342065
应用:开放词汇物体检测、视觉问答(VQA)、图像描述生成与检索
在这里插入图片描述

RegionCLIP

于2021年12月由微软团队提出。
基于预训练好的 CLIP 模型构建了一个 R-CNN 形式的目标检测器。
论文:https://arxiv.org/pdf/2112.09106.pdf
源码:https://github.com/microsoft/RegionCLIP
解读:https://blog.csdn.net/jiaoyangwm/article/details/131960703
在这里插入图片描述

Detic

于2022年1月由 Meta AI 和德克萨斯大学奥斯汀分校提出。
本质:使用图像分类的数据集来对目标检测器的分类头进行训练。
为了使得分类的分支具备检测出novel class的能力,基于image-supervised loss 的Detic,其将分类与定位解耦成两个问题,在分类时不再那么依赖标注数据。同样是两阶段范式。
论文:https://arxiv.org/pdf/2201.02605v3
源码:https://github.com/facebookresearch/Detic
解读:https://developer.aliyun.com/article/1277234

OWLViT

于2022 年由 Google Research 的 Matthias Minderer 等人提出。
OWL-ViT同样是以CLIP为多模态主干,创新之处在于其用于目标检测的微调阶段。在微调阶段,采用每个输出 token 的线性投影来获取每个对象的图像嵌入,而不是 CLIP 中使用的 token 池化和最终投影层。这些嵌入随后用于分类,而边界框坐标则是通过一个小型的 MLP 从 token 表示中推导出来的。支持基于图像嵌入做查询,允许检测难以通过文本描述的图像。
现在已经更新OWLViTv2。
论文:https://arxiv.org/pdf/2205.06230
源码:https://github.com/google-research/scenic/tree/main/scenic/projects/owl_vit
解读:https://zhuanlan.zhihu.com/p/613249723
在这里插入图片描述

VLDet

VLDet网络包括三个部分:视觉目标检测器,文本编码器和区域-词语之间的对齐。本文选择了Faster R-CNN作为目标检测模型。 目标检测的第一阶段与Faster R-CNN相同,通过RPN预测前景目标。为了适应开放词汇的设置,VLDet在两个方面修改了检测器的第二阶段:(1)使用所有类共享的定位分支,定位分支预测边界框而不考虑它们的类别。 (2) 使用文本特征替换可训练分类器权重,将检测器转换为开放词汇式检测器。 本文使用固定的预训练语言模型CLIP作为文本编码器。
论文:https://arxiv.org/pdf/2211.14843
源码:https://github.com/clin1223/VLDet
解读:https://blog.csdn.net/hanseywho/article/details/129143747
在这里插入图片描述

BARON

于2023年由Wu Size等人提出。首次提出了对齐 bag of regions 的 embedding,之前的方法都是对齐单个 region 的 embedding。基于 Faster R-CNN,为了让 Faster RNN 能够检测出任意词汇概念的目标,作者使用了一个线性映射层代替原本的分类器,将区域特征映射为伪词。
论文:https://arxiv.org/pdf/2302.13996
源码:https://github.com/wusize/ovdet
解读:https://blog.csdn.net/wzk4869/article/details/129713529
在这里插入图片描述

视觉-DINO

于2021年由 Facebook AI Research提出。
DINO学生网络和教师网络,两者具有相同的架构但参数不同,输入不同的图像视图,学生网络的输出通过与教师网络输出计算交叉熵损失来进行学习,教师网络使用学生网络的指数移动平均(EMA)进行更新。使用对比学习方法及全局自注意力机制,放弃负采样对的做法。
自监督的ViT可以呈现图像的语义分割信息,且在图像类间有良好的区分度。通过一个KNN就可以达到很高的分类准确率,所以用于算图像相似度、以图搜图的话应该是个好的选择。
论文:https://arxiv.org/pdf/2104.14294
代码:https://github.com/facebookresearch/dino
解读:https://zhuanlan.zhihu.com/p/635104575

视觉-DINOv2

于2023年由Meta AI Research提出。增强版DINO、大规模数据集LVD-142M
DINOv2包含两个完全相同的 ResNet 网络,其中一个作为学生网络,另一个作为教师网络,输入不同的图像,输出通过动量更新机制交互学习,这种结构有助于更好地学习图像的局部特征与全局特征。采用FlashAttention 机制,在同一前向传递中全局裁剪和局部裁剪,跳过了丢弃残差的计算。训练时采用全分片数据并行(FSDP)。
论文:https://arxiv.org/pdf/2304.07193
代码:https://github.com/facebookresearch/dinov2
解读:https://blog.csdn.net/CVHub/article/details/130304078

GroundingDINO

于2023年由清华大学、IDEA 研究院联合提出。GLIP是基于传统的one-stage detector结构,而Grounding DINO是一个双encoder单decoder结构,它包含了1个image backbone(Swin Transformer)用于提取多尺度图像特征,1个text backbone用于提取文本特征,1个feature enhancer用于融合图像和文本特征,1个language-guide query selection模块用于query初始化,1个cross-modality decoder用于bbox预测。
论文:https://arxiv.org/pdf/2303.05499
源码:https://github.com/IDEA-Research/GroundingDINO
解读:https://zhuanlan.zhihu.com/p/627646794
在这里插入图片描述

OV-DINO

于2024年由中山大学和美团联合提出。使用Swin Transformer作为图像编码器和BERT-base作为文本编码器的模型架构。统一的数据整合(UniDI)管道实现端到端训练,语言感知选择性融合(LASF)模块来优化跨模态的语义对齐。
论文:https://arxiv.org/pdf/2407.07844
源码:https://github.com/wanghao9610/OV-DINO
解读:https://blog.csdn.net/amusi1994/article/details/140836256
在这里插入图片描述

YOLO-World

于2024年由腾讯 AI 实验室提出。基于yolov8开发,采用CLIP预训练的Transformer文本编码器提取相应的文本嵌入,通过视觉语言建模和大规模数据集的预训练,提出一种新的可重新参数化的视觉-语言路径聚合网络(RepVL-PAN)和区域-文本对比损失,以促进视觉和语言信息之间的交互,增强了 YOLO 的开放词汇检测功能。
论文:https://arxiv.org/pdf/2401.17270v3
源码:https://github.com/AILAB-CVC/YOLO-World
解读:https://blog.csdn.net/weixin_47151388/article/details/137424184
在这里插入图片描述

其他最新工作2024-CVPR-Open-Vocabulary:

https://blog.csdn.net/m0_74163093/article/details/143247918

总结

综上,大多数工作均基于CLIP预训练的图像编码器和文本编码器。GlIP为解决目标检测任务提供了先例,后续很多工作常与目前较为广泛使用的目标检测网络结构相结合,从而构建新的开放词汇目标检测器。如ViLD基于Mask R-CNN、RegionCLIP基于R-CNN、VLDet和BARON基于Faster R-CNN。更具有创新性的工作是Detic,提出了使用图像分类的数据集来对目标检测器的分类头进行训练。OWL-ViT在目标检测微调阶段做创新,最有意思的是其支持基于图像嵌入做查询,允许检测难以通过文本描述的图像。这部分优势可能会使这个项目更能应用到实际任务中。另外的基于DINO的工作中,GroundingDINO更偏向于开集目标检测(OSOD)任务。与GLIP和G-DINO等其他方法相比,OV-DINO的预测更加精确,并且能够检测到标签中未标记的额外对象。而YOLO-World则主要是对yolov8的改进,目的在于为yolo架构赋予开放词汇检测能力。从开放词汇检测方案的发展历程上来看,YOLO-World的目标检测部分依然是单阶段范式的目标检测器,虽然效率更高速度更快,但一般不如两阶段范式的目标检测模型精度高。
开放词汇目标检测的核心思想是利用视觉-语言联合建模方法,将视觉特征和语言特征进行关联,从而实现对未见物体类别的检测。一般地,这类方法的关键组成有:
1.视觉特征提取(包括大规模图-文数据预训练、知识蒸馏、生成伪标签等)
2.文本嵌入(基于transformer)
3.视觉-语言匹配(基于referring 或grounding)
4.多模态融合

至于为何能做到开放词汇检测,关键在于利用了大规模预训练语言模型和视觉-语言联合表示学习。语言模型能够理解未见词语的语义,通过将目标类别名称编码为文本向量,然后与图像中的物体特征向量进行相似度计算。比如,对于一个新的类别 “独角兽”,语言模型能够理解这个词的语义,并且帮助检测器在图像中寻找具有相似语义特征的物体。

开放词汇对象检测/分割方案的常见架构

相关文章:

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)是一种目标检测任务,旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别,而OVOD模型则具有识别“开放词汇…...

PHP基础

PHP代码标记 标准标记&#xff1a;<?php ?> PHP注释 单行&#xff1a;// # 多行&#xff1a;/* */ 两种浏览器输出文本的方式&#xff1a;echo 和 print echo <?php header("Content-Type:text/html;charsetutf-8"); // 输出字符串 ec…...

启用WSL后,使用ssh通道连接ubuntu

Enjoy WSL 目的 启用wsl后&#xff0c;使用windows自带的powershell、cmd操作linux还是不太好使。以下介绍开启ssh通道&#xff0c;并保证能在ssh通道下&#xff0c;也能正常使用wsl中的win命令行&#xff0c;以及正常打开gui应用。 离线更新WSL&#xff0c;请跳转链接:离线…...

GMSSL的不同python版本

链接1&#xff08;推荐&#xff09; 这个使用的库&#xff0c;是gm ssl 3.1.1。为什么推荐&#xff1f;因为这个有C源码。 GitHub - GmSSL/GmSSL-Python: Python binding to the GmSSL library 链接2 这个使用的库&#xff0c;是gmssl 3.2.2。搜索3.2.2&#xff0c;找不到相…...

【数理统计】参数估计

文章目录 点估计矩估计法最大似然估计法 区间估计单个正态总体参数的区间估计均值 μ \mu μ 的区间估计方差 σ 2 \sigma^2 σ2 的区间估计 两个正态总体参数的区间估计&#xff08;略&#xff09;补充&#xff1a;单侧置信区间 点估计 矩估计法 【定义】设 X X X 是随机…...

ios 混合开发应用白屏问题

一、问题场景 项目业务中某个前端页面中使用了多个echart 组件来显示历史数据&#xff0c; 在反复切换到这个页面后&#xff0c;会出现白屏问题。 二、问题分析 0x116000ab0 - GPUProcessProxy::didClose: 0x116000ab0 - GPUProcessProxy::gpuProcessExited: reasonCrash 0x11…...

对分布式系统的理解以及redis的分布式实现

对分布式系统有哪些了解? 分布式系统是由多个独立的计算节点(通常是计算机或服务器)组成的系统,这些节点通过网络相互通信和协作,共同完成任务。分布式系统的设计旨在提供可扩展性、容错性和高可用性,适用于大规模的数据处理和服务场景。 1. 分布式系统的核心特点 分布…...

VS项目,在生成的时候自动修改版本号

demo示例&#xff1a;https://gitee.com/chenheze90/L28_AutoVSversion 可通过下载demo运行即可。 原理&#xff1a;通过csproject项目文件中的Target标签&#xff0c;实现在项目编译之前对项目版本号进行修改&#xff0c;避免手动修改&#xff1b; 1.基础版 效果图如下 部…...

【蓝桥杯】43699-四平方和

四平方和 题目描述 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a; 每个正整数都可以表示为至多 4 个正整数的平方和。如果把 0 包括进去&#xff0c;就正好可以表示为 4 个数的平方和。 比如&#xff1a; 502021222 712121222; 对于一个给定的正整数&#xff0c;可…...

我的“双胞同体”发布模式的描述与展望

当被“激情”晕染&#xff0c;重创标题、摘要探索“吸睛”。 (笔记模板由python脚本于2024年12月19日 15:23:44创建&#xff0c;本篇笔记适合喜欢编撰csdn博客的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免…...

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇&#xff0c;可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装&#xff1a; pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…...

go mod tidy 命令

go mod tidy 是 Go 语言的命令&#xff0c;用于清理和更新 go.mod 和 go.sum 文件。它主要有以下功能&#xff1a; 移除未使用的依赖项&#xff1a;从 go.mod 文件中删除那些在代码中不再使用的依赖项。 添加缺失的依赖项&#xff1a;添加代码中使用但尚未记录在 go.mod 文件中…...

(11)YOLOv9算法基本原理

一、YOLOv9 的结构 YOLOv9 引入了可编程梯度信息&#xff08;PGI&#xff09;&#xff0c;以及基于梯度路径规划的新型轻量级网络架构&#xff0c;为目标检测领域带来了突破性的成果。 Yolov9 网络模型主要由BackBone&#xff08;主干网络&#xff09;、Neck&#xff08;颈层&…...

python学opencv|读取图像(十七)认识alpha通道

【1】引言 前序学习进程中&#xff0c;我们已经掌握了RGB和HSV图像的通道拆分和合并&#xff0c;获得了很多意想不到的效果&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读…...

中小学教室多媒体电脑安全登录解决方案

中小学教室多媒体电脑面临学生随意登录的问题&#xff0c;主要涉及到设备使用、网络安全、教学秩序等多个方面。以下是对这一问题的详细分析&#xff1a; 一、设备使用问题 1. 设备损坏风险 学生随意登录可能导致多媒体电脑设备过度使用&#xff0c;增加设备损坏的风险。不当…...

Redis篇之Redis高可用模式参数调优,提高Redis性能

1. Redis高可用模式核心 Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。 常用的高可用架构包括Redis Sentinel模式和Redis Cluster模式&#xff0c;其中Sentinel模式是为了提供高可用性而专门设计的解决方案。 在Re…...

linux-----进程execl簇函数

execl函数族概述 在Linux中&#xff0c;execl函数族用于在一个进程中加载并执行一个新的程序&#xff0c;它会替换当前进程的地址空间&#xff08;代码段、数据段、堆和栈等&#xff09;。这个函数族包括execl、execlp、execle、execv、execvp和execvpe&#xff0c;它们的主要功…...

Vue + ECharts 实现山东地图展示与交互

这篇文章中&#xff0c;我将逐步介绍如何使用 Vue 和 ECharts 实现一个互动式的地图展示组件&#xff0c;其中支持返回上一层地图、点击查看不同城市的详细信息&#xff0c;以及根据数据动态展示不同的统计信息。 效果图&#xff1a;玩转山东地图&#xff1a;用Echarts打造交互…...

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…...

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...