赞
踩
又一种yolo.....
一种新的可重参化的视觉语言路径聚合网络(RepVL-PAN)和区域文本对比损失,以促进视觉和语言信息之间的交互。作者的方法在以零样本方式检测广泛范围的物体时表现出色,且效率高。赋能YOLOv8开集检测能力,构建新一代YOLO新标杆
YOLO系列检测器已将自己确立为高效实用的工具。然而,它们依赖于预定义和训练的物体类别,这在开放场景中限制了它们的适用性。针对这一限制,作者引入了YOLO-World,这是一种创新的方法,通过视觉语言建模和在大型数据集上的预训练,将YOLO与开集检测能力相结合。具体来说,作者提出了一种新的可重参化的视觉语言路径聚合网络(RepVL-PAN)和区域文本对比损失,以促进视觉和语言信息之间的交互。作者的方法在以零样本方式检测广泛范围的物体时表现出色,且效率高。
YOLO-World在大规模视觉语言数据集上进行了预训练,包括Objects 365,GQA,Flickr 30 K和CC 3 M,这使得YOLO-World具有强大的zero-shot开集Capbility与Grounding能力。
在具有挑战性的LVIS数据集上,YOLO-World在V100上实现了35.4 AP和52.0 FPS,在准确性和速度上都超过了许多最先进的方法。此外,经过微调的YOLO-World在包括目标检测和开集实例分割在内的几个下游任务上取得了显著性能。
1 Introduction
目标检测一直是计算机视觉中一个长期而基础性的挑战,在图像理解、机器人学和自动驾驶车辆等领域有着众多的应用。随着深度神经网络的发展,大量的研究工作在目标检测领域取得了显著的突破。尽管这些方法取得了成功,但它们仍然有限,因为它们只处理具有固定词汇量的目标检测,例如,COCO 数据集中的80个类别。一旦定义并标记了目标类别,训练出的检测器只能检测那些特定的类别,这样就限制了在开放场景中的能力和适用性。
近期的工作探讨了普遍的视觉-语言模型,以解决开集检测问题,通过从语言编码器中提炼词汇知识,例如BERT。然而,这些基于蒸馏的方法受到很大限制,因为训练数据的稀缺性导致词汇多样性有限,例如OV-COCO仅包含48个基本类别。几种方法将目标检测训练重新定义为区域 Level 的视觉-语言预训练,并在大规模上训练开集目标检测器。然而,这些方法在现实场景中的检测仍然存在困难,主要受两方面影响:
计算负担重
边缘设备部署复杂
以前的工作已经证明了预训练大型检测器的性能潜力,而预训练小型检测器以赋予它们开放识别能力尚未被探索。
在本文中,作者提出了YOLO-World,旨在实现高效的开集目标检测,并探索大规模预训练方案,以将传统的YOLO检测器提升到一个新的开集世界。与先前方法相比,所提出的YOLO-World在具有高推理速度方面显著高效,易于部署到下游应用中。具体而言,YOLO-World遵循标准的YOLO架构,并利用预训练的CLIP文本编码器来编码输入文本。作者进一步提出了可重参化的视觉-语言路径聚合网络(RepVL-PAN),以更好地连接文本特征和图像特征,实现视觉语义表示。
在推理过程中,可以移除文本编码器,并将文本嵌入重新参数化为RepVL-PAN的权重,以实现高效部署。作者进一步研究了对YOLO检测器的大规模开集预训练方案,通过在大型数据集上对区域文本进行对比学习,将检测数据、定位数据以及图像文本数据统一为区域文本对。预训练的YOLO-World拥有丰富的区域文本对,展示了在大词汇检测方面的强大能力,且更多的数据训练将带来开集能力的更大提升。
此外,作者探索了一种“提示后检测”范式,以进一步改进实际场景中开集目标检测的效率。如图2所示,传统的目标检测器专注于固定词汇(封闭集)的检测,这些词汇是预定义且经过训练的类别。而之前的开集检测器则使用文本编码器对用户提示进行编码,以实现在线词汇的检测目标。值得注意的是,这些方法往往采用带有重型 Backbone 网络的大型检测器,例如Swin-L,以增加开集的容量。
相比之下,“提示后检测”范式(图2(c))首先对用户的提示进行编码以构建离线词汇,该词汇根据不同的需求而变化。然后,高效的检测器可以在不重新编码提示的情况下即时推理离线词汇。对于实际应用,一旦作者训练了检测器,即YOLO-World,作者可以预先编码提示或类别以构建离线词汇,然后无缝地将其整合到检测器中。
作者的主要贡献可以概括为三个方面:
作者介绍了YOLO-World,这是一个前沿的开集目标检测器,它具有高效率,适用于实际应用场景。
作者提出了一个可重新参数化的视觉-语言PAN模型,用以连接视觉和语言特征,并针对YOLO-World设计了一套开集区域文本对比预训练方案。
YOLO-World在大规模数据集上的预训练展示了强大的零样本性能,在LVIS上达到35.4 AP的同时,还能保持52.0 FPS的速度。预训练的YOLO-World可以轻松适应下游任务,例如,开集实例分割和指代目标检测。此外,YOLO-World的预训练权重和代码将开源,以促进更多实际应用。
2 Related Works
Traditional Object Detection
当前的目标检测研究主要集中在固定词汇(封闭集)检测上,其中目标检测器是在预定义类别的数据集上进行训练的,例如COCO数据集和Objects365数据集,然后检测固定类别集合内的目标。
在过去的几十年中,传统的目标检测方法可以简单地分为三类,即基于区域的方法、基于像素的方法和基于 Query 的方法。基于区域的方法,例如Faster R-CNN,采用两阶段框架进行 Proposal 生成和RoI(感兴趣区域)分类和回归。基于像素的方法倾向于是一阶段检测器,它们在预定义的 Anchor 点或像素上进行分类和回归。DETR首次通过 Transformer探索目标检测,并启发了大量的基于 Query 的方法。在推理速度方面,Redmon等人提出了YOLOs,利用简单的卷积架构实现实时目标检测。
一些研究提出了各种YOLO的架构或设计,包括路径聚合网络,跨阶段部分网络和重参化,这些进一步提高了速度和准确性。与之前的YOLOs相比,本文中的YOLO-World旨在超越固定词汇检测目标,具有强大的泛化能力。
Open-Vocabulary Object Detection
开集目标检测(OVD)已成为现代目标检测的新趋势,它旨在检测超越预定义类别的目标。早期工作遵循标准的OVD设置,通过在基类上训练检测器并评估新(未知)类。然而,这种开集设置虽然可以评估检测器检测和识别新目标的能力,但由于在有限的 数据集和词汇上训练,它仍然局限于开放场景,并且在泛化到其他领域的能力上有所不足。
受到视觉-语言预训练的启发,近期的研究将开集目标检测公式化为图像-文本匹配,并利用大规模图像-文本数据大规模增加训练词汇。GLIP提出了一种基于短语定位的开集检测预训练框架,并在零样本设置中进行评估。Grounding DINO 将定位预训练融入到检测 Transformer 中,并通过跨模态融合。
几种方法通过区域文本匹配统一检测数据集和图像文本数据集,并使用大规模图像文本对预训练检测器,取得了有希望的性能和泛化能力。然而,这些方法通常使用如ATSS或DINO等重型检测器,并以Swin-L作为主干,导致了高计算需求和部署挑战。
相比之下,作者提出了YOLO-World,旨在实现高效的开集目标检测,具有实时推理和更容易的下游应用部署。与同样通过语言模型对齐探索开集检测的ZSD-YOLO[50]不同,YOLO-World引入了一个新的YOLO框架,并采用了一种有效的预训练策略,提升了开集的性能和泛化能力。
3 Method
Pre-training Formulation: Region-Text Pairs
Model Architecture
所提出的YOLO-World的整体架构如图3所示,它包括一个YOLO检测器_、一个文本编码器以及一个_可重参化的视觉-语言路径聚合网络(RepVL-PAN)。在给定输入文本的情况下,YOLO-World中的文本编码器将文本编码为文本嵌入。YOLO检测器中的图像编码器从输入图像中提取多尺度特征。然后作者利用RepVL-PAN通过利用图像特征与文本嵌入之间的跨模态融合来增强文本和图像的表现。
YOLO检测器。YOLO-World主要是基于YOLOv8 开发的,它包括一个Darknet Backbone 作为图像编码器,一个路径聚合网络(PAN)用于多尺度特征金字塔,以及一个用于边界框回归和目标嵌入的 Head 。
在离线词汇推理阶段,作者提出了一种以“提示后检测”的策略,使用离线词汇以进一步提高效率。如图3所示,用户可以定义一系列自定义提示,这些提示可能包括标题或类别。然后作者使用文本编码器编码这些提示并获得离线词汇嵌入。离线词汇使作者可以避免对每个输入进行计算,并提供根据需要调整词汇的灵活性。
Re-parameterizable Vision-Language PAN
Pre-training Schemes
在本节中,作者介绍了在大规模检测、定位以及图像-文本数据集上对YOLO-World进行预训练的训练方案。
基于图像-文本数据的伪标签方法。作者并不是直接使用图像-文本对进行预训练,而是提出了一种自动标注方法来生成区域-文本对。具体来说,这种标注方法包含三个步骤
提取名词短语:首先使用n-gram算法从文本中提取名词短语;
伪标签:采用一个预训练的开集检测器,例如GLIP ,为每张图像给定名词短语的生成伪边界框,从而提供粗糙的区域-文本对;
过滤:使用预训练的CLIP 评估图像-文本对和区域-文本对的相关性,并过滤掉低相关性的伪标注和图像。作者进一步通过结合非极大值抑制(NMS)等方法来过滤冗余的边界框。建议读者参考附录以了解详细方法。通过上述方法,作者从CC3M中采样并标注了246k张图像,生成了821k个伪标注。
4 Experiments
在本节中,作者通过在大规模数据集上对所提出的YOLO-World进行预训练,展示了其有效性,并以零样本方式在LVIS基准和COCO基准上评估了YOLO-World(第4.2节)。作者还评估了YOLO-World在COCO、LVIS数据集上进行目标检测的微调性能。
Implementation Details
YOLO-World是基于MMYOLO工具箱和MMDetection工具箱开发的。遵循[19],作者为不同的延迟需求提供了YOLO-World的三个变体,例如小型(S)、中型(M)和大型(L)。作者采用了开源的CLIP文本编码器及其预训练权重来编码输入文本。除非特别指明,作者将所有模型的推理速度测量在单个NVIDIA V100 GPU上,且不使用额外的加速机制,例如FP16或TensorRT。
Pre-training
实验设置。在预训练阶段,作者采用了AdamW优化器,初始学习率为0.002,权重衰减为0.05。YOLO-World在32个NVIDIA V100 GPU上以总批处理大小512进行预训练,共100个周期。在预训练期间,作者遵循之前的工作,采用了颜色增强、随机仿射变换、随机翻转以及包含4张图片的马赛克数据进行数据增强。在预训练期间,文本编码器被冻结。
预训练数据。 为了预训练YOLO-World,作者主要采用了包括Objects365 (V1) ,GQA ,Flickr30k 在内的检测或定位数据集,具体如表格1所示。遵循[23]的做法,作者排除了GoldG(GQA和Flickr30k)中来自COCO数据集的图像。用于预训练的检测数据集的标注包括边界框和类别或名词短语。此外,作者还通过图像-文本对扩展了预训练数据,即CC3M,作者通过第3.4节讨论的伪标注方法对其中的246k图像进行了标注。
零样本评估。 在预训练之后,作者直接以零样本的方式在LVIS数据集上评估所提出的YOLO-World。LVIS数据集包含1203个目标类别,这比预训练检测数据集的类别多得多,可以衡量在大词汇检测上的性能。遵循先前的工作,作者主要在LVIS minival上进行评估,并报告了用于比较的Fixed AP。预测的最大数量设置为1000。
关于LVIS目标检测的主要结果。 在表2中,作者以零样本的方式将提出的YOLO-World与最近的最先进的方法[20, 29, 52, 53, 55]在LVIS基准上进行比较。考虑到计算负担和模型参数,作者主要与基于较轻量级 Backbone 的方法进行比较,例如,Swin-T。
值得注意的是,YOLO-World在零样本性能和推理速度方面都超过了之前的最先进方法。与包含了更多数据的方法相比,如GLIP、GLIPv2和Grounding DINO(例如,Cap4M(CC3M+SBU [34])),仅用O365 & GolG进行预训练的YOLO-World即使模型参数较少,也获得了更好的性能。
与DetCLIP相比,YOLO-World在获得推理速度提升的同时,取得了可比较的性能(35.4 对比 34.4)。实验结果还表明,小型模型,例如,拥有13M参数的YOLO-World-S,可用于视觉-语言预训练,并获得强大的开集能力。
Ablation Experiments
作者提供了广泛的消融研究,从两个主要方面分析YOLO-World,即预训练和架构。除非另有指定,作者主要基于YOLO-World-L进行消融实验,并使用零样本评估在LVIS minival上预训练Objects365。
预训练数据。 在表3中,作者评估了使用不同数据预训练YOLO-World的性能。与在Objects365上训练的 Baseline 相比,加入GQA可以在LVIS上显著提高性能,AP增益达到8.4。这种改进可以归因于GQA数据集提供的更丰富的文本信息,这可以增强模型识别大词汇目标的能力。
加入部分CC3M样本(完整数据集的8%)可以进一步带来0.5 AP的增益,罕见目标上提升1.3 AP。表3显示,添加更多数据可以有效提高在大词汇场景下的检测能力。此外,随着数据量的增加,性能持续提升,凸显了利用更大、更多样化的数据集进行训练的好处。
对RepVL-PAN的消融研究。 表4展示了所提出的YOLO-World中的RepVL-PAN对于零样本LVIS检测的有效性,包括文本引导的CSPLayers和图像池化注意力。
具体来说,作者采用了两种设置,即:(1)在O365上预训练;(2)在O365和GQA上预训练。与只包含类别标注的O365相比,GQA包含了丰富的文本信息,尤其是名词短语的形式。
正如表5所示,CLIP文本编码器比BERT获得了更好的结果(在LVIS中罕见类别的AP提高了10.1),这是用图像-文本对进行预训练的,具有更强的以视觉为中心的嵌入能力。在预训练过程中微调BERT带来了显著的提升(+3.7 AP),而微调CLIP则导致性能严重下降。作者将下降归因于在O365上进行微调可能会降低预训练CLIP的泛化能力,因为O365只包含365个类别,并且缺乏丰富的文本信息。
Fine-tuning YOLO-World
在本节中,作者进一步对YOLO-World进行微调,以在COCO数据集和LVIS数据集上进行闭集目标检测,以展示预训练的有效性。
实验设置。作者使用预训练权重来初始化YOLO-World以进行微调。所有模型都使用AdamW优化器微调80个周期,初始学习率设置为0.0002。此外,作者还以0.01的学习因子微调CLIP文本编码器。对于LVIS数据集,作者遵循之前的工作,在LVIS-base(常见和频繁)上微调YOLO-World,并在LVIS-novel(罕见)上进行评估。
COCO目标检测。作者在表6中比较了预训练的YOLO-World与先前的YOLO检测器。在将YOLO-World在COCO数据集上进行微调时,考虑到COCO数据集的词汇量较小,作者移除了所 Proposal 的RepVL-PAN以进一步加速。在表6中,很明显作者的方法在COCO数据集上可以取得相当不错的零样本性能,这表明YOLO-World具有很强的泛化能力。此外,与从头开始训练的先前方法相比,经过COCO train2017数据集微调后的YOLO-World展示了更高的性能。
LVIS目标检测。在表7中,作者评估了YOLO-World在标准LVIS数据集上的微调性能。首先,与在完整LVIS数据集上训练的oracle YOLOv8s相比,YOLO-World取得了显著的提升,尤其是对于较大模型,例如,YOLO-World-L比YOLOv8-L在7.2 AP和10.2 AP上有更好的表现。这些改进可以证明所提出的大词汇量检测预训练策略的有效性。此外,作为高效的单阶段检测器,YOLO-World在总体性能上超过了之前最先进的两阶段方法,而且无需额外的设计,例如,可学习的提示[7]或基于区域的对齐。
Open-Vocabulary Instance Segmentation
在本节中,作者进一步对YOLO-World进行微调,以在开集设置下分割目标,这可以称为开集实例分割(OVIS)。先前的方法已经通过在新目标上使用伪标记来探索OVIS。不同的是,考虑到YOLO-World具有强大的迁移和泛化能力,作者直接在一个带有掩膜标注的数据子集上微调YOLO-World,并在大词汇设置下评估分割性能。具体来说,作者在两种设置下对开集实例分割进行了基准测试:
作者评估了在标准LVIS val2017数据集上微调后的模型,该数据集包含1203个类别,其中337个稀有类别是未见过的,可以用来衡量开集的性能。
结果表8展示了将YOLO-World扩展用于开集实例分割的实验结果。具体来说,作者采用了两种微调策略:(1)仅微调分割头;(2)微调所有模块。在策略(1)下,微调后的YOLO-World仍然保留了预训练阶段获得的零样本能力,使其能够在没有额外微调的情况下泛化到未见过的类别。策略(2)使YOLO-World更好地适应LVIS数据集,但它可能会导致零样本能力的退化。
Visualizations
作者提供了在三种设置下预训练的YOLO-World-L的可视化结果:(a) 作者使用LVIS类别进行零样本推理;(b) 作者输入带有细粒度类别和属性的定制提示;(c) 指代检测。这些可视化还表明,YOLO-World在开集场景中具有很强的泛化能力,并伴有指代能力。
在LVIS上的零样本推理。图5展示了基于LVIS类别生成的可视化结果,这些结果是预先训练的YOLO-World-L以零样本方式生成的。预先训练的YOLO-World展现了强大的零样本迁移能力,并能够尽可能地检测图像中的多个目标。
使用用户词汇进行推理。在图6中,作者探索了用作者定义的类别进行YOLO-World检测的能力。可视化结果表明,预训练的YOLO-World-L也具备以下能力:(1)细粒度检测(即,检测一个物体的部分)和(2)细粒度分类(即,区分不同子类别的物体)。
参照目标检测。在图7中,作者利用一些描述性(区分性)名词短语作为输入,例如“站立的人”,来探究模型是否能够定位图像中与给定输入相匹配的区域或目标。可视化结果显示了这些短语及其对应的边界框,证明了预训练的YOLO-World具有参照或定位的能力。这种能力可以归功于作者提出的大规模训练数据的预训练策略。
5 Conclusion
作者提出了YOLO-World,这是一个尖端的实时开集检测器,旨在提高现实世界应用中的效率和开集能力。在本文中,作者将流行的YOLO架构重新塑造为视觉-语言YOLO架构,用于开集的预训练和检测,并提出了RepVL-PAN,它将视觉和语言信息与网络连接起来,并可以重新参数化以实现高效部署。
作者进一步提出了有效的预训练方案,包括检测、接地和图像-文本数据,以赋予YOLO-World强大的开集检测能力。实验可以证明YOLO-World在速度和开集性能方面的优越性,并指出视觉-语言预训练对小模型的有效性,这对未来研究具有启发意义。作者希望YOLO-World可以作为解决现实世界开集检测问题的新基准。
Appendix A Additional Details
Re-parameterization for RepVL-PAN
Fine-tuning Details.
在将YOLO-World迁移到COCO 目标检测时,作者去除了所有的T-CSPLayers和图像池化注意力机制,因为COCO仅包含80个类别,并且对视觉语言交互的依赖相对较低。
在微调过程中,作者使用预训练权重来初始化YOLO-World。微调的学习率设置为0.0002,权重衰减设置为0.05。微调之后,作者预先计算给定COCO类别的类别文本嵌入,并将嵌入存储到分类层的权重中。 whaosoft aiot http://143ai.com
Appendix B Automatic Labeling on Large-scale Image-Text Data
在本节中,作者详细介绍了如何使用大规模图像-文本数据对区域-文本对进行标记,例如CC3M。整个标记流程如图8所示,主要包括三个步骤,即:(1)提取物体名词,(2)伪标记,和(3)过滤。如第3.4节所讨论,作者采用简单的n-gram算法从标题中提取名词。
上述提到的阈值是根据部分标注结果的实证设定的,整个流程是自动的,无需人工验证。最后,这些标注样本被用于对YOLO-World进行预训练。作者将提供CC3M的伪标注,以供进一步研究。
Appendix C Pre-training YOLO-World at Scale
当预训练小型模型时,例如YOLO-World-S,作者自然会问这样一个问题:小型模型具有多大能力,小型模型需要多少训练数据或者需要什么类型的数据?为了回答这个问题,作者利用不同数量的伪标记区域-文本对来预训练YOLO-World。
然而,为小型模型使用细粒度标注(GoldG)可以提供显著的改进,这表明大规模高质量标注数据可以显著增强小型模型的能力。并且正文中表3已经显示,使用细标注数据和伪标注数据的组合进行预训练可以表现得更好。作者将在未来的工作中探索更多关于预训练小型模型或YOLO检测器所需的数据。
论文链接:https://arxiv.org/abs/2401.17270
代码链接:https://github.com/AILab-CVC/YOLO-World
https://github.com/ultralytics/ultralytics
项目主页: https://www.yoloworld.cc/
YOLO-World亮点
YOLO-World是下一代YOLO检测器,旨在实时开放词汇对象检测。
YOLO-World在大规模视觉语言数据集上进行了预训练,包括Objects 365,GQA,Flickr 30 K和CC 3 M,这使得YOLO-World具有强大的zero-shot开集Capbility与Grounding能力。
YOLO-World实现了快速的推理速度;可以对用户给定词汇,所提重新参数化技术进一步加速推理和部署;
YOLO-World方案
上手测试
官方YOLO-World是基于mmyolo, mmdetection实现的,但U1S1,mm系列对于入门确实不错,但对于新开源算法上手测试真心难用,毒瘤啊[mmcv的ops这个鬼东西啊]~好消息来了!ultralytics支持YOLO-World了,可以直接通过ultralytics库来玩YOLO-world了使用方式简单到了极致,几行命令即可,还不需要安装一大堆的mm包,不需要编译各种无关op,牛逼克拉斯~
- from ultralytics import YOLOWorld
-
- # Initialize a YOLO-World model
- model = YOLOWorld('yolov8s-world.pt')
-
- # Execute inference with the YOLOv8s-world on the specified image
- results = model.predict('bus.jpg')
-
- # Show results
- results[0].show()
就是这么的简单好用,两行代码完成测试!
那么,YOLO-World的Prompts功能该如何测试呢?同样非常简单,新增一行代码即可,代码如下:
- from ultralytics import YOLOWorld
-
- # Initialize a YOLO-World model
- model = YOLOWorld('yolov8s-world.pt')
-
- # Define custom classes
- model.set_classes(["person"])
-
- # Execute inference with the YOLOv8s-world on the specified image
- results = model.predict('bus.jpg')
-
- # Show results
- results[0].show()
就这么一行代码改动,YOLO-World就变成了行人检测器,
当然,你还可以把它变成bus检测器,效果如下
不得不说,YOLO-World进一步释放了检测器的可玩性,不仅可以搞通用检测,还可以玩限定场景检测,关键速度还贼快,还等什么呢,速速试玩咯
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。