AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Open-Set目标检测算法的原理与实践
发布日期:2024-11-25 19:45:20 浏览次数: 1527 来源:大淘宝技术






在深度学习领域,目标检测算法用于识别和定位图像中的特定对象,是计算机视觉中至关重要的任务。然而,传统的目标检测算法只能在有限类目的数据集上进行推理,这是因为训练集中的类别是有限的,推理时也只能识别这些有限的类目,限制了其应用范围。因此,我们需要使用开放集(Open-Set)检测技术,开放集检测可以在推理过程中识别训练时未被见过的类目。为了丰富交互方式,我们还将采用视觉定位(Visual Grounding)检测,将图像和自然语言描述一起作为输入


YOLO-World (CVPR 2024)、Grounding DINO (ECCV 2024)是SOTA的开放集目标检测算法,YOLO11 (Ultralytics  2024)则是今年9月最新开源的闭集YOLO检测算法。在这篇文章中,我们将对这三种SOTA算法的原理进行解析,并进行相关实践。


相关基础知识

  1. Visual Grounding


图像来源于YOLO-World论文


  • 视觉定位(Visual Grounding)是指将图像和自然语言描述结合起来,通过文本信息在图像中定位特定对象或区域的一种技术。

    其特点在于能够通过自然语言的描述,精确地在图像中找到对应的对象或区域,增强了人机交互的直观性和灵活性。


  • 视觉定位的意义在于扩展了传统目标检测的应用场景,使得机器能够理解和处理更复杂的多模态信息。

    在与非视觉定位的目标检测相比,视觉定位不仅依赖于图像特征,还结合了文本信息,使得模型可以处理更加多样化和细粒度的任务,例如根据描述找到图像中的某个特定对象,而不仅仅是识别预定义的类别。


  2. Open-Set Object Detection

开放集目标检测(Open-Set Object Detection)是指在推理过程中能够识别未在训练集中出现过的新类目的技术。其特点在于模型不仅能够检测已知类别的对象,还能推断出未知类别的对象,这显著扩展了模型的应用范围和灵活性。开放集目标检测的意义在于能够更好地适应现实世界中无穷无尽的新对象和场景,提升了机器感知和理解的能力。


传统的目标检测方法存在局限性,因为它们只能处理固定词汇的对象检测,例如 COCO 数据集中包含的80个类别。


目前的一些视觉-语言模型试图通过从语言编码器(例如 BERT)中蒸馏词汇知识来解决开放词汇检测问题。然而,这些基于蒸馏的方法由于训练数据的稀缺和词汇多样性的有限而受到很大限制,例如 OV-COCO 数据集中仅包含48个基础类别。


最近的一些方法重新定义了目标检测训练为区域级别的视觉-语言预训练,并大规模训练开放词汇对象检测器。然而,这些方法在真实世界场景中的检测仍然面临两个方面的挑战:(1) 计算负担沉重,(2) 在边缘设备上部署复杂。


相关检测算法介绍

  1. Grounding DINO

  • 整体结构

Grounding DINO将基于Transformer的检测器DINO与基于grounding数据的预训练相结合,用于处理开放集目标检测任务,可以通过文本输入(如类别名称或文本描述)来检测任意对象。


Grounding DINO根据输入的的图像-文本,输出多个边界框和名词短语对。例如,如下图所示,模型从输入图像中定位出一只猫和一张桌子,并从输入文本中提取出“猫”和“桌子”作为相应的标签。目标检测任务和引用表达理解(REC)任务都可以与这一流程对齐。按照GLIP的方法,将所有类别名称连接成输入文本用于目标检测任务。REC需要为每个文本输入对应一个边界框。我们使用得分最高的输出边界框作为REC任务的输出。


Grounding DINO模型包含一个用于图像特征提取的图像骨干网络,一个用于文本特征提取的文本骨干网络,一个用于图像和文本特征融合的特征增强器,一个用于查询初始化的语言引导查询选择模块,以及一个用于框细化的跨模态解码器。


  • 重点模块

Feature Extraction and Enhancer:对于给定的(图像,文本)对,使用类似Swin Transformer的图像骨干网络提取多尺度图像特征,用类似BERT的文本骨干网络提取文本特征,然后将它们输入特征增强器进行跨模态特征融合。


Language-Guided Query Selection:Grounding DINO旨在根据输入文本从图像中检测对象。语言引导查询选择模块用于选择与输入文本更相关的特征作为解码器查询。


Cross-Modality Decoder:本工作开发了一种跨模态解码器来结合图像和文本模态特征。与DINO解码器层相比,每个解码器层都增加了一个额外的文本交叉注意力层,因为需要将文本信息注入查询中以实现更好的模态对齐。


Sub-Sentence Level Text Feature:在之前的工作中探索了两种文本提示,我们将其命名为句子级表示和词语级表示。句子级表示将整个句子编码为一个特征。如果短语定位数据中的某些句子包含多个短语,它会提取这些短语并丢弃其他词语。这样可以消除词语之间的影响,但也会丢失句子中的细粒度信息。词语级表示使得可以通过一次前向传递编码多个类别名称,但会引入类别之间不必要的依赖,尤其是在输入文本是任意顺序连接的多个类别名称时。为了避免不必要的词语交互,本工作引入了注意力掩码来阻止不相关类别名称之间的注意力,这被称为“子句”级表示。它消除了不同类别名称之间的影响,同时保留了每个词的特征以实现细粒度理解。


  • 模型训练

损失函数包括对比损失、边框L1损失、GIOU损失、focal损失:按照之前类似DETR的工作,使用L1损失和GIOU损失进行边界框回归。按照GLIP的方法,使用预测对象和语言标记之间的对比损失进行分类。将每个query与文本特征进行点积,以预测每个文本标记的logits,然后计算每个logit的focal损失。



边框回归和分类的损失首先用于预测和真实值之间的二分匹配。然后,使用相同的损失计算真实值和匹配预测之间的最终损失。按照类似DETR的模型,在每个解码器层之后和编码器输出之后添加辅助损失。



本工作训练了两个模型变体,使用Swin-T作为图像骨干网络的Grounding DINO T和使用Swin-L作为图像骨干网络的Grounding DINO L,并使用BERT作为文本编码器。Swin Transformer Tiny模型在16块Nvidia V100 GPU上进行训练,总批量大小为32。


  2. YOLO-World

  • 整体结构

YOLO-World通过视觉-语言建模和大规模数据集的预训练,增强了YOLO的开放词汇检测能力。在LVIS 数据集上,YOLO-World在V100上实现了35.4的AP和52.0的FPS,在准确性和速度方面都超越了许多最先进的方法。



YOLO-World包括一个YOLO 检测器、一个文本编码器和一个可重参数化的视觉-语言路径聚合网络(RepVL-PAN)。对于给定的输入文本,YOLO-World中的文本编码器将文本编码为文本嵌入。YOLO检测器中的图像编码器从输入图像中提取多尺度特征。然后,利用 RepVL-PAN 通过跨模态融合图像特征和文本嵌入来增强文本和图像表示。


  • 重点模块

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



Text Encoder:对于给定的文本,采用由 CLIP 预训练的 Transformer 文本编码器来提取相应的文本嵌入。与仅基于文本的语言编码器相比,CLIP 文本编码器提供了更好的视觉-语义能力,能够更好地将视觉对象与文本连接起来。当输入文本是一个标题或指代表达时,采用简单的 n-gram 算法提取名词短语,然后将它们输入到文本编码器中。



Text Contrastive Head:本工作提出了一个文本对比头来获取对象-文本相似性。其中,L2范数和仿射变换对于稳定进行区域-文本训练中非常重要。

Re-parameterizable Vision-Language PAN (RepVL-PAN):RepVL-PAN(可重参数化的视觉-语言路径聚合网络)遵循自顶向下和自底向上的路径,来建立多尺度图像特征 {C3, C4, C5} 和对应的特征金字塔 {P3, P4, P5}。此外,本工作提出了文本引导的 CSPLayer(T-CSPLayer)和图像池化注意力(I-Pooling Attention),以进一步增强图像特征与文本特征之间的交互,从而提升开放词汇能力的视觉-语义表示。在推理过程中,离线词汇嵌入可以重新参数化为卷积层或线性层的权重,以便于部署。


Training with Online Vocabulary:在训练过程中,为每个包含4张图像的拼接样本构建一个在线词汇表。具体来说,会从拼接图像中采样所有涉及的正向名词,并从对应的数据集中随机采样一些负向名词。每个拼接样本的词汇表最多包含 (M) 个名词,默认情况下 (M) 设置为 80。



Inference with Offline Vocabulary:在推理阶段,本工作提出了一种使用离线词汇的prompt-then-detect策略,以进一步提高效率。如上图所示,用户可以定义一系列自定义prompt,这些prompt可能包括描述或类别。然后,利用文本编码器对这些prompt进行编码,获得离线词汇嵌入。离线词汇可以避免每次输入时的计算,并提供根据需要调整词汇的灵活性。


  • 模型训练

YOLO-World提出了在大规模的包含检测、grounding、图像-文本的数据集上预训练的训练方案。


基于图像-文本数据的伪标注:本工作提出了一种自动标注方法来生成区域-文本对,而不是直接使用图像-文本对进行预训练。具体来说,该标注方法包括以下三个步骤:

1. 提取名词短语 首先利用 n-gram 算法从文本中提取名词短语;

2. 伪标注 采用预训练的开放词汇检测器,例如 GLIP,为每张图像中的名词短语生成伪边界框,从而提供粗略的区域-文本对;

3. 过滤 使用预训练的 CLIP评估图像-文本对和区域-文本对的相关性,过滤低相关性的伪标注和图像。最后,还结合非最大抑制(NMS)等方法过滤冗余的边界框。


基于区域-文本对比损失的学习:基于词汇表,通过计算区域-文本的相似性和区域-文本的对齐度之间的交叉熵,构建对于区域-文本的对比损失。此外,还采用 IoU 损失和分布式focal损失进行边界框回归。考虑到图像-文本数据集存在噪声框,我们仅对具有准确边界框的样本计算回归损失。



YOLO-World在32个NVIDIA V100 GPU上进行100轮预训练,总批量大小为512。在预训练期间,文本编码器是冻结的。为了预训练YOLO-World,主要采用了包括Objects365 (V1)、GQA和Flickr30k在内的检测数据集。用于预训练的检测数据集的标注包含边界框和对应的类别或名词短语。此外,还通过伪标注方法标注了246k张的CC3M图像,将其扩展到预训练数据中。



  3. YOLO11

本小节参考了Ultralytics相关介绍:

https://docs.ultralytics.com/models/yolo11/


  • 整体改进

YOLO11 是Ultralytics YOLO系列实时目标检测器的最新迭代(2024.09.27),对精度、速度和效率都有所提升。基于前几代YOLO版本的显著进步,YOLO11在架构和训练方法上引入了重大改进,使其成为各种计算机视觉任务的多功能选择。

  • 增强的特征提取:YOLO11采用改进的骨干网络和颈部架构,增强了特征提取能力,实现了更精确的目标检测和复杂任务的性能。

  • 优化的效率和速度:YOLO11引入了精细化的架构设计和优化的训练流程,提供更快的处理速度,并在精度和性能之间保持最佳平衡。

  • 更高的精度和更少的参数:通过模型设计的进步,YOLO11m在COCO数据集上实现了更高的平均精度(mAP),同时使用的参数比YOLOv8m减少了22%,使其在不牺牲精度的情况下更具计算效率。

  • 跨环境的适应性:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台以及支持NVIDIA GPU的系统,确保了最大的灵活性。

  • 广泛支持的任务:无论是目标检测、实例分割、图像分类、姿态估计还是定向目标检测(OBB),YOLO11都设计为能够应对多种计算机视觉挑战。


  • YOLO演变

YOLO(You Only Look Once)是由华盛顿大学的Joseph Redmon和Ali Farhadi开发的一种流行的目标检测和图像分割模型。自2015年推出以来,YOLO因其高速和高精度迅速获得了广泛关注。


YOLOv2于2016年发布,通过引入批量归一化、锚框和维度聚类改进了原始模型。

YOLOv3于2018年推出,进一步增强了模型性能,采用了更高效的骨干网络、多重锚框和空间金字塔池化。

YOLOv4于2020年发布,引入了Mosaic数据增强、新的无锚检测头和新的损失函数等创新技术。


YOLOv5进一步提升了模型性能,并增加了超参数优化、集成实验跟踪和自动导出到流行导出格式等新功能。

YOLOv6于2022年由美团开源,并广泛应用于该公司的许多自动配送机器人中。

YOLOv7增加了在COCO关键点数据集上进行姿态估计等额外任务。


YOLOv8于2023年由Ultralytics发布,带来了新的功能和改进,实现了增强的性能、灵活性和效率,支持全范围的视觉AI任务。

YOLOv9引入了诸如可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)等创新方法。

YOLOv10由清华大学的研究人员使用Ultralytics的Python包创建。该版本通过引入无需非极大值抑制(NMS)的端到端头,提供了实时目标检测的进步。


YOLO11全新发布:Ultralytics最新的YOLO模型在多项任务上提供了最先进的(SOTA)性能,包括检测、分割、姿态估计、跟踪和分类,覆盖了多种 AI 应用和领域。


实践记录

  家装场景的小物体目标检测

数据集:2w,34个类目,需要将数据集转化为YOLO格式。



  家装场景的大家具目标检测


  • 数据集:50w,25个类目,需要将数据集转化为YOLO格式。

  • 开放集检测:输入的prompt为固定的25个类别。

  • 效果比较:经过SFT训练后的模型,对于中心家具的检测精度更高,比如之前无法检测的类目、SFT之后则可以检测,识别类别的准确度也更高。由于训练集中,每张图只标注了一个bbox,所以SFT后的模型对于每张图也只会推理出一个bbox。将精度更高的SFT模型和识别bbox更多的开放集模型结合,则可以得到更有效的检测结果。



Grounding 

DINO

bed被检测错误

YOLO-World

(原生)

YOLO-World

(SFT)

可以检测出side table

YOLO11

(原生)

YOLO11

(SFT)



结语


目标检测在场景感知和图像理解领域具有重要意义。传统的目标检测算法只能在有限类目的数据集上进行推理,从而限制了其应用范围。而开放集(Open-Set)检测算法能够在推理过程中识别训练时未见过的类目,拓展了其适用性。在本文中,我们深入分析了两种开放集目标检测算法——YOLO-World(CVPR 2024)和Grounding DINO(ECCV 2024),以及YOLO11(Ultralytics 2024)最新开源的闭集YOLO检测算法,并进行了相应的实践和效果对比。同时,我们团队正在进行家装行业AI技术的相关研发,以提高家装AI模型的效果。我们希望与对此方向感兴趣的同学一起探讨和交流。


参考文献


  • Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection

    https://arxiv.org/abs/2303.05499

  • YOLO-World: Real-Time Open-Vocabulary Object Detection

    https://arxiv.org/abs/2401.17270

  • YOLO11:

    https://docs.ultralytics.com/models/yolo11/


团队介绍


我们是淘天集团-场景智能技术团队,一支专注于通过AI和3D技术驱动商业创新的技术团队, 依托大淘宝丰富的业务形态和海量的用户、数据, 致力于为消费者提供创新的场景化导购体验, 为商家提供高效的场景化内容创作工具, 为淘宝打造围绕家的场景的第一消费入口。我们不断探索并实践新的技术, 通过持续的技术创新和突破,创新用户导购体验, 提升商家内容生产力, 让用户享受更好的消费体验, 让商家更高效、低成本地经营。




¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法






53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询