赞
踩
Recognize Anything: A Strong Image Tagging Model
paper:https://arxiv.org/pdf/2306.03514.pdf
code: https://github.com/xinyu1205/recognize-anything
在线demo:https://huggingface.co/spaces/xinyu1205/recognize-anything
项目: https://recognize-anything.github.io/
RAM系列的第一版:Tag2Text 论文阅读请跳转:
图像标记模型Tag2Text论文详细阅读
此篇是RAM系列的第二版:RAM
RAM系列的第三版:RAM++ 论文阅读请跳转:
识别一切SOTA版(RAM++)论文详细阅读
我们提出了 “识别任何事物模型”(RAM):一个用于图像标记的强大基础模型。RAM 为计算机视觉领域的大型模型迈出了实质性的一步,展示了高精度识别任何常见类别的zero-shot能力。RAM 引入了图像标记的新范式,利用大规模图像文本对进行训练,而不是手动注释。
RAM 的开发包括四个关键步骤:首先,通过自动文本语义解析大规模获取无注释图像标签。随后,在原始文本和解析标签的监督下,通过统一标题和标签任务,为自动注释训练出一个初步模型。第三,利用数据引擎生成附加注释并清除错误注释。最后,使用处理过的数据对模型进行重新训练,并使用更小但质量更高的数据集对其进行微调。
我们在大量基准测试中评估了 RAM 的标记能力,观察到了令人印象深刻的零镜头性能,明显优于 CLIP 和 BLIP。值得注意的是,RAM 甚至超越了完全监督方式,其性能与谷歌标记 API 相比具有竞争力。我们将在 https: //recognize-anything.github.io/ 发布 RAM,以促进计算机视觉大型模型的发展。
在大规模网络数据集上训练的大型语言模型(LLM)引发了自然语言处理(NLP)领域的一场革命。这些模型表现出了令人印象深刻的zero-shot泛化能力,使它们能够泛化到训练领域之外的任务和数据分布。 在计算机视觉(CV)领域,Segment Anything Model(SAM)也通过数据扩展表现出了非凡的zero-shot定位能力。
然而,SAM 缺乏输出语义标签的能力,这是与本地化相当的另一个基本任务。多标签图像识别( Multi-label image recognition),也称为图像标签(image tagging),旨在通过识别给定图像的多个标签来提供语义标签。图像标签是一项重要而实用的计算机视觉任务,因为图像本身包含多个标签,包括对象、场景、属性和动作。遗憾的是,现有的多标签分类、检测、分割和视觉语言方法模型在标记、拥有属性范围有限或准确性较差方面存在不足,如图1所示。
有两个核心要素阻碍了图像标记的进展。1) **难以收集大规模高质量数据。**具体来说,缺乏通用统一的标签系统和高效的数据标注引擎,无法对类别繁多的大规模图像进行半自动甚至自动标注。2) 缺乏高效灵活的模型设计,无法利用大规模弱监督数据构建开放词汇和功能强大的模型。
为了解决这些关键瓶颈,本文介绍了图像标签的一个强有力的基础模型——任意识别模型(RAM)。RAM 克服了与数据相关的挑战,包括标签系统、数据集和数据引擎,以及模型设计的局限性。
Label System:
我们首先建立一个通用统一的标签系统。我们将流行的学术数据集(分类、检测和分割)以及商业标签产品(谷歌、微软、苹果)中的类别纳入其中。我们的标签系统是通过合并所有公共标签和文本中的常用标签而获得的,因此涵盖了大部分常用标签,数量适中,为 6449 个。其余的开放词汇标签可通过开放集识别来识别。
Dataset:
如何用标签系统自动注释大规模图像是另一个挑战。CLIP和 ALIGN利用公开的大规模图像-文本对训练强大的视觉模型,我们从它们中汲取灵感,采用类似的数据集进行图像标记。为了利用这些大规模图像-文本数据进行标记,我们遵循文献,通过自动文本语义解析来解析文本并获取图像标记。通过这一过程,我们可以根据图像-文本对获得各种无注释图像标签。
Data Engine:
然而,来自网络的图像-文本对本身就存在噪声,常常包含缺失或错误的标签。为了提高注释的质量,我们设计了一个标签数据引擎。**在处理缺失标签时,我们利用现有模型生成附加标签。对于错误标签,我们首先定位图像中与不同标签相对应的特定区域。**随后,我们采用区域聚类技术来识别和消除同一类别中的异常值。此外,我们还会过滤掉在整幅图像和相应区域之间表现出相反预测的标签,从而确保注释更清晰、更准确。
Model:
Tag2Text采用轻量级识别解码器与原始图像编码器相结合,通过图像标记和标题的集成,展示了卓越的图像标记能力。然而,Tag2Text 的有效性仅限于识别固定和预定义的类别。相比之下,RAM 通过将语义信息合并到标签查询中,实现了对以前看不到的类别的泛化。这种模型设计允许 RAM 增强任何可视化数据集的识别能力,突出了它在不同应用中的潜力。
得益于大规模、高质量的图像-标签文本数据,以及标签与标题的协同整合,我们开发出了一个强大的识别任何事物的模型(RAM)。 RAM 代表了图像标签的一种新模式,证明了在嘈杂、无注释数据上训练的通用模型可以超越完全监督模型。RAM 的优势总结如下:
如图 3 所示,我们通过文本语义解析提取图像标签,无需昂贵的人工标注即可提供大规模标签。RAM 的整体架构与 Tag2Text类似,由三个关键模块组成:用于特征提取的图像编码器、用于标记的图像-标记识别解码器和用于字幕的文本生成编码器-解码器。图像特征通过图像-标签交互编码器和识别解码器中的交叉注意层与标签交互。在训练阶段,识别头学习预测从文本中解析出的标签,而在推理阶段,它通过预测标签为图像标题提供更明确的语义指导,从而充当图像到标签的桥梁。
与 Tag2Text 相比,RAM 在模型设计方面的核心进步是引入了开放式词汇识别。Tag2Text 只能识别它在训练过程中看到的类别,而 RAM 可以识别任何类别。
Textual Label Queries:
受的启发,关键的改进在于将语义信息纳入识别解码器的标签查询中,这有助于在训练阶段泛化到以前未见过的类别。为此,我们利用**现成的文本编码器对标签列表中的单个标签进行编码,从而提供具有丰富语义背景的文本标签查询。**相比之下,原始识别解码中使用的标签查询是可随机学习的嵌入,缺乏与未见类别的语义关系,因此仅限于预定义的已见类别。
Implementation Details:
我们采用 Swin-transformer作为图像编码器,因为它在视觉语言和标记领域都表现出比天真的 ViT 更好的性能。用于文本生成的编解码器是12层transformer,标签识别解码器是2层transformer。我们利用CLIP中的现成文本编码器并执行提示合成以获得文本标签查询。采用 CLIP 图像编码器提取图像特征,通过图文特征对齐进一步提高了模型对未知类别的识别能力。
Training Phase:
RAM 在分辨率为 224 的大型数据集上进行预训练,并在分辨率为 384 的小型高质量数据集上进行微调。经验证据表明,RAM 收敛速度很快,通常只需极少的历时(通常少于 5 个历时)就能达到收敛效果。这种加速收敛提高了 RAM 在计算资源有限的情况下的可重复性。举例来说,对 400 万张图像进行预训练的 RAM 版本需要 1 天的计算时间,而对 1,400 万张图像进行预训练的最强 RAM 版本在 8 个 A100 GPU 上只需要 3 天的计算时间。
Inference Phase:
轻量级图像标签识别解码器有效保证了 RAM 在图像标签上的推理效率。此外,我们还取消了识别解码器中的自我关注层,这不仅进一步提高了效率,还避免了标签查询之间的潜在干扰。因此,RAM 不需要固定的类别和数量,而是可以为想要自动识别的任何类别和数量定制标签查询,从而提高了它在各种视觉任务和数据集中的实用性。
这项工作在制定标签系统时采用了三项指导原则:1)在图像-文本对中频繁出现的标签因其在图像描述中的表征意义而更有价值。2) 标签应代表不同的领域和语境。我们对标签的概念包括各种来源的对象、场景、属性和动作,这有助于将模型泛化到复杂的、未见过的场景中。3) 标签数量要适中。标签数量过多会导致注释成本过高。
起初,我们使用稍加修改的 SceneGraphParser,将预训练数据集中的 1,400 万个句子解析为标签。然后,我们从最常出现的前 10k 个标签中手工挑选标签。如图4 所示,我们的选择有意涵盖了许多流行的分类、检测和分割数据集中的标签。虽然大部分数据集都被完全覆盖,但 ImageNet 和 OpenImages V6 因其不寻常的标签存在而例外。此外,我们还部分覆盖了主要标签产品的标签,这些标签是通过公共 API使用开源图像获得的。因此,RAM 可以识别多达 6449 个固定标签,大大超过 Tag2Text,并且包含了更多有价值的标签。为了减少冗余,我们通过各种方法收集同义词,包括人工检查、参考 WordNet、翻译和合并标签等。同一同义词组中的标签会被分配相同的标签 ID,因此标签系统中有 4585 个标签 ID。
与 BLIP和 Tag2Text类似,我们在广泛使用的开源数据集上对模型进行预训练。我们采用了 400 万(4M)图像和 1,400 万(14M)图像设置。4M 设置包括两个人类注释数据集 COCO(113K 幅图像,557K 个标题)和 Visual Genome(101K 幅图像,822K 个标题),以及两个大型网络数据集 Conceptual Captions(3M 幅图像,3M 个标题)和 SBU Captions(849K 幅图像,849K 个标题)。14M 设置是在 4M 的基础上增加了 Conceptual 12M(10M 图片,10M 字幕)。
鉴于我们的训练数据集主要是从互联网上抓取的开源数据,我们会遇到不可忽视的缺失和错误标签。为了减少这种情况,我们设计了一个自动数据引擎来生成额外的标签并清除错误标签。
Generation:
我们的第一步是使用标题和从这些标题中解析出的标签来训练一个基准模型,这与 Tag2Text [10] 中使用的方法类似。然后,我们利用这一基准模型,分别利用其生成和标记功能,对标题和标记进行补充。原始标题和标签与生成的标题、相应的解析标签和生成的标签合并,形成一个临时数据集。通过这一步骤,4M 图像数据集中的标签数量从 1200 万大幅增至 39800 万。
Cleaning:
为了解决标签不正确的问题,我们首先使用 Grounding-Dino来识别和裁剪所有图像中与特定类别相对应的区域。随后,我们根据 K-Means++对该类别的区域进行聚类,并剔除与 10% 的离群值相关的标签。与此同时,我们还使用基线模型剔除了未对该特定类别进行预测的标签。这样做的动机是,通过预测区域而不是整幅图像,可以提高标记模型的精确度。
我们提出了 “识别任何内容模型”(RAM),这是一个专为图像标记设计的强大基础模型,预示着这一领域的新范例。RAM 具备高精度识别任何类别的零拍能力,其性能超过了完全监督模型和现有的通用方法(如 CLIP 和 BLIP)。RAM 代表了计算机视觉领域大规模模型的巨大进步,有望增强任何视觉任务或数据集的识别能力。
**局限性:**与 CLIP 类似,当前版本的 RAM 也能有效识别常见物体和场景,但在物体计数等抽象任务上却显得力不从心。此外,在细粒度分类(如区分汽车模型或识别特定花卉或鸟类物种)方面,zero-shot RAM 的性能落后于特定任务模型。值得注意的是,RAM 是在开源数据集上训练出来的,可能会反映出数据集的偏差。
RAM中提到的识别,本质上是图片标记任务(image tagging),是一个增强型的 Tag2Text,分割一切模型(SAM)的Zero Shot能力很强,但其只有定位能力(location),没有识别能力(SAM只能给出分割Mask,没法指定该Mask的类别)。因此RAM旨在于提供强大的识别能力(包含Zero Shot的识别能力)。作者也将RAM和定位模型(SAM、Grounding-DINO)进行了结合,具体在Grounded-SAM项目中,这样就能同时达到定位+识别了。
Grounded-SAM:https://github.com/IDEA-Research/Grounded-Segment-Anything
Image tagging task: 给一个图片,旨在通过识别给定图像的多个标签来提供语义标签,可以理解为给出多个tags用来形容这个图,包括目标(object)、场景(scene)、属性(attribute)和行为(action),是一个多标签分类(multi-label classification)。
包含了三个模块:
整个架构在运行的时候,用到了图片的 tag 和 text,不同的模型之间通过 embedding 建立起了关联关系。
此外图上还有一个预训练的 CLIP 模型,它只作为外部模块,提供 label 的 embedding 信息,这样做带来了 zero-shot 的能力。
Open-Vocabulary Recognition
关键的改进在于将语义信息嵌入到了 Recognition Decoder 中,从而有助于在训练过程中泛化到之前没有见过的类别。嵌入语义信息的方法则是使用了预训练 CLIP 来编码标签列表中的每个标签,从而为文本标签的查询提供丰富的上下文语义。
(其实对整体流程还是一知半解,后续等实际使用再补充)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。