Grounding DINO:开放集目标检测,将基于Transformer的检测器DINO与真值预训练相结合

在这里插入图片描述


背景知识补充

CLIP (Contrastive Language-Image Pre-training):打破文字和图像之间的壁垒

  1. CLIP是一种多模态模型,能够同时处理图像和文本,而不是独立地处理它们;
  2. CLIP的预训练阶段是在大规模的图像和文本数据集上进行的,这样模型可以学习到图像和文本之间的语义对应关系;
  3. CLIP模型经过预训练后,可以在多个领域和任务中进行迁移学习,如图像分类、目标检测、文本生成等,无需进行额外的任务特定的微调
    在这里插入图片描述

参考:基于Diffusion的典型可控图片生成模型


DINO(Data-INterpolating Neural Network):视觉 Transformer 的自监督学习

DINO是一种用于无监督学习的方法,主要思想是通过让模型学会自行对数据进行插值,从而学习出对数据有意义的表示;DINO架构的核心是不使用标签的知识提炼。它训练了一个学生网络来模仿一个更强大的教师网络的行为,所有这些都不需要在训练数据中有明确的标签。
在这里插入图片描述 DINO 训练过程的简化概述: 一张图片被裁剪成两种尺寸,然后输入学生和教师网络。 对教师的输出应用居中操作,并且两个输出都通过 softmax 层归一化整理。为了交叉熵作为损失函数为模型反向传播提供更新参数的策略。

两个 softmax 输出都传递到损失函数中,使用随机梯度下降 (SGD) 执行反向传播。在这里的反向传播是通过学生网络执行的,这时教师的权重尚未更新的原因。 为了更新教师模型,DINO 对学生权重使用指数移动平均 (EMA),将学生网络的模型参数传输到教师网络。

参考:
自监督学习经典制作:DINO


Stable Diffusion:从文本描述中生成详细的图像

  1. Stable Diffusion是一种潜在扩散模型,能够从文本描述中生成详细的图像;
  2. Stable Diffusion解决了扩散模型时间成本和经济成本都极其“昂贵”的问题;
  3. Stable Diffusion只是将潜在扩散模型应用于高分辨率图像,同时使用 CLIP 作为文本编码器。
    Stable Diffusion模型架构

以Stable Diffusion 文生图技术为例,其训练阶段和采样阶段总体框架可以划分成 3 个大模块:PART1-CLIP 模型,PART2-Unet 训练,PART3-采样器迭代

参考:
Stable Diffusion文生图技术
Stable Diffusion原理详解

Open-set Detector开集检测器

大多开集检测器都是通过将闭集检测器扩展到具有语言信息的开集场景来开发的。如下图所示,一个封闭集检测器通常有三个重要的模块:

  • 用于特征提取的主干backbone
  • 用于特征增强的颈部neck
  • 用于区域细化(或box预测)的头部head(回归和分类等)。

通过学习语言感知区域嵌入,可以将闭集检测器推广到检测新对象,使每个区域在语言感知语义空间中被划分为新的类别。

在这里插入图片描述实现这一目标的关键是:在颈部(和/或头部)输出的语言特征和区域输出 之间使用对比损失


Grounding DINO,一种开集目标检测方案,将基于Transformer的检测器DINO与真值预训练相结合。

一、Grounding DINO的创新点

  1. Grounding DINO支持文本的目标检测(实现方式:将language信息引入到目标的通用特征表示中);
  2. Grounding DINO实现从 close-set 到 open-set的创新(实现关键:引入 text encoder)

二、Grounding DINO的网络架构:双encoder单decoder

Grounding DINO的整体结构:

  • image backbone用于提取image feature
  • text backbone用于提取text feature
  • feature enhancer(特征增强)用于融合image和text feature
  • language-guide query selection模块用于query初始化
  • cross-modality decoder用于bbox预测(bbox预测指对目标对象的边界框进行预测)
    在这里插入图片描述

(一)特征提取与融合

  • 采用Swin Transformer作为image backbone提取图像特征,采用BERT作为text backbone提取文本特征;
  • 利用Self-Attention实现文本特征的增强,利用Deformable Self-Attention实现图像特征的增强;
  • 利用GLIP中的image-to-text 和 text-to-image cross-attention实现特征融合(图像到文本跨模态以及文本到图像跨模态,帮助对齐不同模态特征)。

在这里插入图片描述Q是词的查询向量,K是“被查”向量,V是内容向量

(二)Language-Guided Query Selection:文字信息更好地指导目标检测

  • 输入:融合更新后的文本特征和图像特征;
  • language-guide query selection模块用于筛选与输入文字特征相似更高的图像特征
  • 输出:Cross-Modality用作decoder的queries。

在这里插入图片描述
language-guided query selection方法用于初始化Head的query
为引导文本进行目标检测,作者设计language-guided query selection机制选择与文本更相关的特征作为解码器的query。算法下图所示:
在这里插入图片描述

  • 输出num_query索引,据此初始化query;
  • 每个decoder query包括两部分:content及position;
    • 位置部分公式化为dynamic anchor boxes,使用编码器输出进行初始化;
    • 内容部分训练中可学习。

(三)Cross-Modality Decoder

  1. 跨模态解码器结合图像及文本模态信息,跨模态query经过self-attention层image cross-attention层与图像特征结合,text cross-attention层与文本特征结合,以及FFN层
  2. 与DINO相比,每个解码器都有一个额外的文本cross-attention层,引入文本信息,便于对齐模态。
    在这里插入图片描述

(四) Sub-Sentence Level Text Feature

Sub-Sentence Level Text Feature是指在处理文本数据时,关注于对文本进行子句级别的特征提取。

在自然语言处理(NLP)中,通常有不同层次的文本表示,从单词级别到句子级别,再到段落和文档级别。子句级别的特征提取意味着将关注点放在句子内的更小单元上。

句子层级表征将整个句子编码为一个特征,移除了单词间影响;单词级表征能够编码多个类别,但引入不必要依赖关系;为避免不相关单词相互作用,作者引入attention mask,此为sub-sentence级表征,既保留每个单词特征,又消除不相关单词间相互作用
在这里插入图片描述

三、Grounding DINO损失函数

  • 回归 loss:类似DETR,作者使用L1损失及GIOU损失用于box regression;
  • 分类 loss:沿用GLIP,计算预测目标和文字token之间的contrastive loss用于分类。

参考:
Grounding DINO-开集目标检测论文解读
【目标检测】Grounding DINO:开集目标检测器(CVPR2023)

  • 27
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Applies basic field behavior in circuit design and demonstrates how it relates to grounding and shielding requirements and techniques in circuit design This book connects the fundamentals of electromagnetic theory to the problems of interference in all types of electronic design. The text covers power distribution in facilities, mixing of analog and digital circuitry, circuit board layout at high clock rates, and meeting radiation and susceptibility standards. The author examines the grounding and shielding requirements and techniques in circuit design and applies basic physics to circuit behavior. The sixth edition of this book has been updated with new material added throughout the chapters where appropriate. The presentation of the book has also been rearranged in order to reflect the current trends in the field. Grounding and Shielding: Circuits and Interference, Sixth Edition: Includes new material on vias and field control, capacitors as transmission lines, first energy sources, and high speed designs using boards with only two layers Demonstrates how circuit geometry controls performance from dc to gigahertz Examines the use of multi-shielded transformers in clean-power installations Provides effective techniques for handling noise problems in analog and digital circuits Discusses how to use conductor geometry to improve performance, limit radiation, and reduce susceptibility to all types of hardware and systems Grounding and Shielding: Circuits and Interference, Sixth Edition is an updated guide for circuit design engineers and technicians. It will also serve as a reference for engineers in the semiconductor device industry.
根据提供的引用内容,Grounding DINO是一种结合了DINO和基于Transformer检测器的模型,用于开放目标检测。它的输入是图像和文本,输出是多个[物体框,名词短语]对。具体来说,Grounding DINO使用DINO模型对图像和文本进行编码,然后使用基于Transformer检测器对编码后的特征进行检测,最终输出[物体框,名词短语]对。 下面是一个简单的示例代码,演示如何使用Grounding DINO进行开放目标检测: ```python import torch from torchvision.models.detection import fasterrcnn_resnet50_fpn from transformers import ViTFeatureExtractor, ViTForImageClassification from transformers.models.dino.modeling_dino import DINOHead # 加载预训练DINO模型和ViT模型 dino = ViTForImageClassification.from_pretrained('facebook/dino-vit-base') dino_head = DINOHead(dino.config) dino_head.load_state_dict(torch.load('dino_head.pth')) dino.eval() vit_feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224') # 加载预训练的Faster R-CNN检测器 model = fasterrcnn_resnet50_fpn(pretrained=True) model.eval() # 输入图像和文本 image = Image.open('example.jpg') text = 'a person riding a bike' # 对图像和文本进行编码 image_features = vit_feature_extractor(images=image, return_tensors='pt')['pixel_values'] text_features = dino_head.get_text_features(text) image_embedding, text_embedding = dino(image_features, text_features) # 使用Faster R-CNN检测器进行目标检测 outputs = model(image_embedding) boxes = outputs[0]['boxes'] labels = outputs[0]['labels'] # 输出[物体框,名词短语]对 for i in range(len(boxes)): print([boxes[i], labels[i]]) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值