最新Open-vocabulary方法个人学习小结

Open-vocabulary方法总结

Yolo-world

CVPR2024
预训练公式:区域-文本对

传统的目标检测方法,包括yolo系列都是用实例注释进行训练的,它由边界框和类别标签组成。

在本文中,我们将实例注释重新表述为区域-文本对。具体来说,文本可以是类别名称、名词短语或对象描述。

模型架构

YOLO-World的整体架构由一个YOLO检测器、一个文本编码器和一个可重新参数化的视觉语言路径聚合网络(repv1 - pan)组成。

骨干网络

YOLO探测器:YOLO-World主要是基于YOLOv8开发的,它包含了一个Darknet骨架作为图像编码器,一个用于多尺度特征金字塔的路径聚合网络(PAN),以及一个用于边界盒回归和对象嵌入的头部。

文本编码器
文本编码器 :YOLO-World采用CLIP预训练的Transformer文本编码器提取相应的文本,与纯文本语言编码器相比,CLIP文本编码器提供了更好的视觉语义功能,可以将可视对象与文本连接起来。
在线词汇训练:在训练过程中,为每个包含4张图像的mosaic样本构建一个在线词汇T。具体来说,我们对mosaic图像中涉及的所有积极名词进行采样,并从相应的数据集中随机抽取一些消极名词。每个mosaic样本的词汇表最多包含n个名词,n被默认设置为80。

Mosaic数据增强方法是YOLOV4论文中提出来的,主要思想是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,并且四张图片拼接在一起变相地提高了batch_size,在进行batch

normalization的时候也会计算四张图片,所以对本身batch_size不是很依赖,单块GPU就可以训练YOLOV4。

离线词汇推理 :在推理阶段,使用在线词汇的提示--检测策略,用户可以定义一系列自定义提示,其中可能包括标题或类别。

然后,利用文本编码器对这些提示进行编码,并获得离线词汇嵌入。离线词汇表允许避免对每个输入进行计算,并提供根据需要调整词汇表的灵活性。

可重新参数化的视觉语言PAN

RepVL-PAN结构 :遵循自上而下和自下而上的路径,用多尺度图像特征{C3,C4,C5}建立特征金字塔{P3,P4,P5}。

此外,提出了文本引导CSPLayer (T-CSPLayer)和图像集中注意力(I-Pooling Attention)),进一步增强图像特征和文本特征之间的交互作用,从而提高开放词汇的视觉语义表示能力。

在推理过程中,离线词汇嵌入可以被重新参数化为卷积层或线性层的权重,以供部署。

ODISE

CVPR2023
CLIP+Diffusion
CVPR2023: ODISE Open-Vocabulary Panoptic Segmentation

ODISE的算法思路参考以上两图. 很打眼的一个创新点是, image encoder不是cnn也不是Transformer, 而是盯上了diffusion model. 绝绝子!

模块一: 输入image和Implicit Text Embedding到text-to-image-diffusion model, 抽取model的internal特征. text-to-image-diffusion model实现文本指导生成图像, ta在做的就是一个开放类别域的事情, ta的internal特征对于下游任务很有价值. Implicit Text Embedding来自Implicit Captioner, 用的是冻住的image Encoder(CLIP)和MLP训练得到.

模块二: 训一个mask generator, 需要mask annotation做有监督训练(我又要cu segment anything了[3], 这部分可尝试开源用起来啊!~). 这部分出mask prediction, 然后和annotation算binary mask loss. 另外出mask embedding在模块三中使用(we can pool the ROI-Aligned features of each predicted mask's region to compute its mask embedding features).

模块三: mask开放域分类. 用category labels or image caption输入冻住的text Encoder(CLIP), 结合模块二中学到的mask embedding, 输出分类结果. category labels 对应cross entropy loss做类别一一对应损失计算. image caption对应grounding loss(This similarity function encourages each noun to be grounded by one or a few masked regions of the image and avoids penalizing the regions that are not grounded by any word at all).

GroundingDINO & Grounding DINO1.5

ECCV2024
https://github.com/IDEA-Research/GroundingDINO

十分钟解读Grounding DINO-根据文字提示检测任意目标

既CLIP打破文字和图像之间的壁垒、DINO提高了目标检测精度的上限之后,又一力作横空出世,它就是--Grounding DINO。

在不需要任何COCO训练集的情况下,Grounding DINO就在COCO minival测试集中达到了52.5AP,经过微调之后达到了63.0AP。这样的结果可以说是非常的Amazing了,下面我将详细介绍Grounding DINO的原理。

Grounded SAM & Grounded SAM2

https://github.com/IDEA-Research/GroundingDINO

OV-DINO

开放域检测新SOTA!中山大学美团出品,开源性能最强

比Grounding DINO高12.7% AP,比YOLO-World 高4.7% AP

本文提出了一种名为OV-DINO的开放域检测方法。整体框架包括一个文本编码器、一个图像编码器和一个检测头。模型接收图像和提示文本作为输入,通过特定模板创建统一的文本嵌入表示。图像和文本嵌入经过编码器处理后,图像嵌入通过Transformer编码器生成精细化的图像嵌入。语言感知查询选择模块选择与文本嵌入相关的对象嵌入,并在解码器中与可学习的内容查询融合,最终输出分类分数和回归边界框。

统一数据集成(UniDI)

在预训练阶段,OV-DINO将检测数据、定位数据和图像-文本数据转换为统一的检测数据格式,从而简化模型优化过程并提高性能。检测数据和定位数据的集成相对简单,而图像-文本数据的转换则通过将图像描述视为图像的唯一类别来实现。所有文本输入都通过简单模板进行统一处理,确保一致的文本嵌入表示。

语言感知选择性融合(LASF)

该模块包括语言感知查询选择和语言感知查询融合两个关键组件。查询选择组件通过评估图像嵌入和文本嵌入的相似性来选择对象嵌入。查询融合组件逐步融合语言感知对象嵌入,同时保留内容查询的原始语义。语言感知查询选择通过计算图像嵌入和文本嵌入的相似性矩阵,并选择最相关的嵌入。查询融合则在解码器层中动态更新内容查询,逐步引入语言感知上下文。

预训练OV-DINO

采用检测中心的数据格式,将不同类型的数据(检测数据、定位数据和图像-文本数据)转化为适合检测的格式,允许在统一的框架内进行预训练。模型的前向传播过程包括图像编码器提取图像嵌入、文本编码器提取文本嵌入、Transformer编码器生成精细化图像嵌入、语言感知查询选择模块选择对象嵌入,以及Transformer解码器通过选择性融合模块进行查询分类和边界框回归。模型通过统一的分类损失函数和目标框损失函数进行优化。通过上述设计,OV-DINO实现了开放域检测的高效预训练和性能提升。

相关推荐
banjin11 分钟前
AI驱动TDSQL-C Serverless 数据库技术实战营-ai学生选课系统数据分析
c语言·人工智能·serverless
算力资源比较多1 小时前
人工智能(AI)的影响下人类的生活样子
人工智能·生活
zhangbin_2371 小时前
【Python机器学习】NLP信息提取——命名实体与关系
开发语言·人工智能·python·深度学习·机器学习·自然语言处理
Wils0nEdwards2 小时前
计算机视觉中,Pooling的作用
人工智能·计算机视觉
985小水博一枚呀2 小时前
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢?
人工智能·python·深度学习·神经网络·计算机视觉·cnn·numpy
handsome2133 小时前
WSL中使用GPU加速AMBER MD--测试
笔记·学习
IT观察3 小时前
老板电器让AI融入烹饪?老板数字厨电实力展示AI做饭!
人工智能
WZF-Sang4 小时前
Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】
linux·运维·服务器·开发语言·学习
狂飙的张兴发5 小时前
认知小文2《成功之路:习惯、学习与实践》
学习·考研·职场和发展·跳槽·学习方法·改行学it·高考
爱编程的小新☆5 小时前
C语言内存函数
c语言·开发语言·学习