多模态:Florence2论文详解


前言

Florence-2已经放出一段时间了,是一种新型的计算机视觉基础模型的统一、基于提示表征适用各种视觉任务或视觉语言任务。Florence-2设计是根据文本提示作为任务指令并以文本形式生成描述的结果,无论是描述、目标检测、grounding还是分割。最近在尝试用florence-2用于自己的任务,写个博客详细了解下florence2的具体结构和策略。

paper:https://arxiv.org/pdf/2311.06242


一、介绍

多模态的出现打通了NLP和CV之间的壁垒,,先进模型展现出了对跨领域和任务的广泛知识的适应能力,只需简单的指令即可。NLP的成功激发了计算机视觉中的一种并行方法。

本文中,引入的Florence-2通过大量视觉标注数据多任务学习而成。这导致了一个统一的、基于提示的表示形式,适用于各种视觉任务,有效地解决了有限的复杂数据问题与缺乏统一架构问题。

二、方法

1.模型结构

请添加图片描述
整体架构还是很简单的,将每个任务都制定为一个翻译问题:给定一个输入图像和一个特定于任务的提示,我们生成相应的输出响应。根据任务的不同,提示和响应可以是文本或区域

文本:当提示或答案是没有特殊格式的纯文本时,我们将其保留在最终的序列到序列格式中。

区域:对于特定于区域的任务,将位置tokens添加到分词器的词汇表中,表示量化坐标。我们创建了1,000个bins,并使用符合任务要求的格式表示区域:
——box表示(x0、y0、x1、y1):用于对象检测和密集区域描述等任务,位置tokens对应于框坐标。位置tokens是框左上角和右下角的坐标。
——四边框表示(x0、y0、…、x3、y3):用于文本检测和识别任务,使用每个坐标的位置tokens表示包围文本的四边形。位置tokens是四边形的每个角的坐标,从左上角开始顺时针方向。
——多边形表示(x0、y0、…、xn、yn):用于指代分割任务,位置tokens表示多边形的顶点。位置tokens是多边形顶点的坐标,按顺时针顺序排列。

1)Vision encoder

采用DaViT作为视觉编码器

2)Multi-modality encoder decoder

使用标准的编码器-解码器Transformer架构来处理视觉和语言token嵌入。首先,我们使用我们扩展的语言分词器和词嵌入层获得提示文本嵌入Tprompt。然后,我们将视觉tokens嵌入与提示嵌入连接起来形成多模态编码器模块输入X = [V′, Tprompt],其中V’是通过对V进行线性投影和LayerNorm层进行维度对齐得到的

3)Optimization objective

给定由图像和提示组合而成的输入x以及目标y,对所有任务使用标准语言建模和交叉熵损失。
请添加图片描述

2.数据工程

文章构建了数据集FLD-5B包括1.26亿张图片,5亿个文本标注,13亿个文本区域标注,以及36亿个文本短语区域标注,涵盖了不同任务。

1)Image Collection

通过从各种来源收集多样化的图像来构建我们的数据。我们从识别三个关键任务开始,这些任务作为我们图像语料库的主要来源:图像分类、目标检测和图像描述。因此,我们筛选并结合了来自上述任务的五个不同数据集:ImageNet-22k、Object 365、Open Images、Conceptual Captions 和LAION,经过筛选。这种组合总共产生了1.26亿张图片的数据集。

2)Data Annotation

数据标注工作流程包括三个基本阶段,每个阶段都确保了标注的准确性和质量:(1) 利用专业模型(离线模型和在线服务)进行初始标注,(2) 数据过滤以纠正错误和删除无关的标注,以及(3) 用于数据精炼的迭代过程。
请添加图片描述
请添加图片描述

3)Data filtering and enhancement

数据过滤和增强。从专业模型获得的初始标注虽然全面,但容易受到噪音和不精确性的影响。针对这一挑战,文章实施了一个多方面的过滤过程,以精炼和消除不需要的标注。我们的一般过滤协议主要集中在两种类型的数据中:文本和区域数据。

1)过滤掉包含过多目标的文本,因为它们往往会引入噪音,并且可能无法准确反映相应图像中的实际内容。此外,通过测量它们在依赖解析树中节点程度来评估动作和对象的复杂性。我们保留具有一定最小动作和对象复杂性的文本,以确保图像中视觉概念的丰富性。

2)其次,在区域标注方面,特别是边界框部分,我们删除置信度阈值以下的噪声框。此外,我们还使用非极大值抑制来减少冗余或重叠的边界框。

4)Annotation-specific Variations

文本标注使用三种粒度对图像进行分类:简要、详细和更详细。简要文本仅包括一个句子,展示最显著的目标和活动,类似于COCO描述。相反,详细文本和更详细文本包含多个句子,描述图像中更丰富的目标、属性和动作。

对于简要文本,使用Florence-2模型作为专家,在公开可用的图像描述和图像文本数据集上进行训练,创建一个图像到文本的模型进行初始标注。采用迭代细化方法来减少这些文本中的噪音。对于详细文本,包括现有图像标注(如简要文本和区域-文本注释)的提示,被送到大型语言模型(LLMs)或大型多模态模型(LMMs)中生成全面描述。由于大型模型成本高昂,只生成了少量详细文本和更详细文本。这些用于微调描述专家,开发详细描述的专家以进行进一步的标注。

区域-文本对针对文本区域和视觉对象区域进行不同的标注。文本区域使用Azure AI Services的OCR API进行标记,而视觉对象最初使用在公共数据集上训练的DINO目标检测器进行标注。数据过滤包括置信度阈值和非极大值抑制,用于去除嘈杂的框。视觉对象区域的文本标注通过从图像到文本模型生成的简要文本进一步丰富。然后,每个区域接收三个文本标注:来自对象类别的短语、简要文本以及来自简要文本的名词短语块。Florence-1模型确定与每个图像区域最相似的文本标注。

文本短语区域三元组。文本短语区域三元组包括图像的描述性文本、与图像对象相关的该文本中的名词短语以及这些对象的区域注释。该文本包括之前生成的简要、详细和更详细文本。对于每个文本,Grounding DINO模型识别名词短语并为其创建边界框。此外,SAM模型为每个框生成分割掩模,提供更精确的对象定位。在数据过滤过程中,对名词短语和边界框应用置信度评分阈值以确保相关性。还使用黑名单排除类似代词和抽象概念等不相关名词短语。


5)overview

其实读了很多多模态的论文可以发现,目前的数据工程越来越复杂和精细化,为了获取丰富的数据,我认为主要有以下几个基本方式:

1)采用之前的多模态模型或者专家模型获取某一种标注结果,比如florence-2中使用grounding dino来创建边界框,利用sam生成mask。

2)使用LLM模型不断丰富描述,同时通过过滤生成更加精细化的文本描述。目前大多数多模态模型的数据工程都离不开LLM的文本描述获取,通过已有简单文本进行描述扩充,提取其中目标名词,确定目标语义动作都是现在大模型的基本操作。不过这步反而是最难设计的。

3)迭代训练。在准备好初版数据后可以训练一个初版模型。然后利用初版模型对数据进行处理,之后再采用上述操作进一步细化数据,迭代训练。

3.实验

Florence-2模型是在FLD-5B上训练的,用于学习通用图像表示。实验分为三个主要部分:(1) 评估了我们的方法在各种任务上的zero-shot性能,展示了其固有能力在不需要对任务特定数据进行额外微调的情况下,使用一个通用模型处理多个任务。(2) 通过在广泛的任务上进一步训练一个通用模型,展示了我们方法的适应性,实现了具有竞争力的最新性能。(3) 检查了学习到的视觉表示在下游任务中作为主干的性能,展示了我们的预训练方法相对于先前方法的优越性。

请添加图片描述
请添加图片描述
实验部分感兴趣可以看看原文,原文实验做的还是非常详细的,这里就不详细描述了。


总结

florence-2个人觉得确实完全打通了cv和nlp的墙壁,无论是其构建的数据集还是预训练模型都对未来多模态的发展有着很大的贡献。感觉在未来cv任务的整合精细化实现是一大趋势。Florence-2 展示了卓越的zero-shot 能力,可在广泛的视觉任务领域展现,如描述、目标检测、视觉定位和指称分割等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值