多模态MLLM都是怎么实现的(12)-Florence-2

news2025/1/24 1:25:29

 最近一直在打艾尔登法环DLC,疏于更新了,罪过罪过,今天把拉塔恩给过了,也该更新了,停更期间,催更的信息主要是啥时候更新GPU系列的第五篇,不是不更,是刚打完,正好有客户要听Florence-2,我连写slide带详细的讲一下,也就有了这篇文章,GPU系列5马上就更。

      闲言少叙,那么先更一张我打败拉塔恩和米凯拉的照片(极度讨厌米凯拉,白瞎拉塔恩了)

图片

       这把真的闲言少叙了,那么好,开始.....       

       Florence-2之前在这个系列的第10章简单写过,它能干啥,现在分析一下它的一些特点。

•本质:Series to Series, 所以还是NLP的 VLM

•数据集的能力(一般数据集整不了这个活儿)

•模型重点处理空间层次(理解从粗到细的不同层次的细节)和语义粒度(从高层次到细微描述的捕捉)

•训练方式上有一定创新

•Zero Shot和FT都很优秀

首先我们针对传统CV的标准任务,简单说两句:

目标检测

区域卷积神经网络(R-CNN):早期的方法如 R-CNN 系列(R-CNN、Fast R-CNN、Faster R-CNN)通过在图像中生成候选区域,然后使用 CNN 对每个区域进行分类和回归,以确定目标的类别和位置。

单阶段检测器:如 YOLO(You Only Look Once)和 SSD(Single Shot MultiBoxDetector),直接从图像中预测目标的类别和位置,具有较快的检测速度。

图像分割

全卷积网络(FCN):将传统的 CNN 改造为全卷积网络,用于密集像素级别的预测。FCN 用于语义分割,通过将卷积层的输出上采样到原始图像尺寸,实现对每个像素的分类。

U-Net:一种常用于医学图像分割的架构,它结合了下采样和上采样路径,以更精确地恢复空间信息。

 那VLM这东西本身有啥优点呢?

相比传统的单模态模型,VLM多模态模型在处理图像数据时,通常更关注特征的语义一致性,而不是输入的几何尺寸一致性。现代多模态融合技术,如Transformer等架构,也倾向于使用注意力机制来聚合不同模态的特征,这些机制比起传统CV对输入特征的尺寸有较强的鲁棒性。

VLM的弱点就是这些都干不了,展开说一下。

对象检测(Bounding Boxes):

•定位对象:边界框提供了对象在图像中的具体位置和尺寸,这对于后续的分析和处理非常关键。例如,在自动驾驶中,知道行人或其他车辆的准确位置有助于做出驾驶决策。

•计算和管理:边界框简化了许多计算和管理任务,例如在监控中计算目标移动轨迹或在库存管理中统计商品数量。

图像分割(Masks):

•精确的边界:遮罩提供了对象的精确轮廓,这在需要详细了解对象形状和表面特征的任务中非常有用,例如医学图像分析中肿瘤的体积测量。

•像素级分析:遮罩允许对对象的每个像素进行分析和处理,例如颜色、纹理等,这对于精细化操作和高精度需求的应用至关重要。

•用户交互:在某些应用中,边界框和遮罩可以用于用户交互。例如,用户可以点击边界框或遮罩来选择对象,进行进一步的操作,如编辑或分析。

•区域操作:在许多任务中,需要对图像的特定区域进行处理,如图像增强、去噪、特效添加等。边界框和遮罩明确指定了这些操作的目标区域。

 这本来不能干的事,同为VLM的Florence-2为啥就可以了呢?

我们从以下2个部分来解释:

1- 造数据

2-训练方式

其实啥模型有点特点也都是这两点。

首先说造数据,也就是它的dataset,FLD-5B dataset。它造这个数据集的主要原因是现在市面上的dataset不太满足它的训练要求。

•视觉注释的稀缺:现有的视觉数据集,如 ImageNet、COCO 和 Flickr30k 等,尽管标注精细,但由于任务和应用的专用性限制,难以捕捉到全面的空间层次和语义粒度信息。这种约束使得大规模生成全面注释变得至关重要。

•统一预训练框架的缺乏:传统模型在处理如目标检测、语义分割、图像标注等任务时表现良好,但在面对任务不可知(task-agnostic)的场景时,无法很好地适应。为了解决这一问题,开发一个能够在各种视觉任务中适应的综合性模型是必要的(这个是讲模型那部分的,论文里提到了,我就放这了。)。

•FLD-5B数据集的收集:Florence-2的核心在于利用多任务学习和丰富的视觉注释来实现通用的表示。FLD-5B 数据集是通过自动化注释引擎收集的,其中包括 5.4 亿个注释,覆盖 1.26亿张图像。注释引擎的第一部分使用专门的模型进行协作和自动化注释,避免传统的手工注释。第二部分则通过训练有素的模型进一步过滤这些注释,确保其准确性和无偏性。

图片

图片

它这个dataset主要分为3个维度:

1.语义粒度(Semantic Granularity)

•细粒度语义(Fine-grained Semantic):包括详细的描述性注释,如“一个女人骑着红色自行车,背景中有一辆红色汽车”,描述了场景中的多个对象及其属性。

•粗粒度语义(Coarse Semantic):包括更简洁的描述,如“一个女人骑着自行车沿街道前行,旁边有一辆红色汽车”。这种注释提供了少量的上下文信息,但不如细粒度语义详细。

•无语义(None Semantic):包括最基本的标注,如简单的对象分类(如“人”、“车”、“道路”),没有提供更多的语义信息。

2.空间层次(Spatial Hierarchy)

•图像级(Image-level):包括整体的图像分类或标签。

•区域级(Region-level):涉及图像中特定区域的标注,这些区域通常由边界框或区域建议方法定义。

•像素级(Pixel-level):涉及更细粒度的标注,如语义分割,提供了对象的精确轮廓或遮罩。

3. 注释类型

•分类(Classification):最简单的形式,仅对图像进行类别标注。

•视觉定位和目标检测(Visual Grounding & Object Detection):不仅识别对象,还确定其在图像中的位置。细粒度的描述可以关联到特定对象(如红色自行车)。

•区域建议(Regional Proposal):提出可能包含对象的图像区域,通常用于进一步的检测或分割。

•分割(Segmentation):提供对象的像素级分割,标识对象的边界和形状。

•短语分割(Phrase Segmentation):将图像中的区域与描述性短语关联起来,例如“街上的红色老式汽车”。

刚才我们聊了,这东西没现成的,所以它得自己做,基于现有的数据进行清洗和标注。

所以就涉及到了数据打标的流程。

目标

数据打标的主要目标是生成可以支持多任务学习的综合性标注。标注覆盖了文本、区域-文本对和文本-短语-区域三种类型。

数据打标流程

打标工作流程分为三个主要阶段,每个阶段都确保标注的准确性和质量:

1.初始标注:使用专门的模型进行标注。这些模型包括离线模型和在线服务,专门用于特定类型的标注。

2.数据过滤和增强:纠正错误并移除不相关的标注。

3.迭代数据精炼:通过多次迭代不断提高标注质量。

图片

1.初始标注(Initial Annotation with Specialists)

图像收集:首先从各种来源收集图像。

专家模型标注:使用多种专门的模型对图像进行初步标注。这些模型包括:

•Azure OCR API:用于文字识别(OCR),提取图像中的文本信息。

Caption Model:生成图像描述(图像字幕),提供文本描述。

Grounding Model:定位模型,将文本描述中的元素与图像中的特定区域联系起来。

•Object/Proposal Detection:检测图像中的对象,并提出潜在的对象区域。

Segmentation Model:生成图像分割掩码,精确划分图像中的不同区域。

2.数据过滤与增强(Data Filtering and Enhancement)

目的:提高标注数据的质量和准确性,去除错误和不相关的注释(用各种工具如DiHT,Spacy啥的)。

LMM Annotator:大型语言模型注释器,用于生成文本注释。

LMM Aggregator:聚合器,整合多种模型的注释结果。

Text Filter:文本过滤器,用于过滤不相关或低质量的文本注释。

Region Score:区域评分,用于评估标注区域的准确性和相关性。

•NMS(Non-MaximumSuppression):非极大值抑制,用于去除冗余或重叠的对象检测框。

Blacklist:黑名单机制,用于过滤掉不需要的或不相关的标注。

Florence-1:早期版本的 Florence 模型,可能用于参考或基准比较。

3. 迭代数据精炼(Iterative Data Refinement)

目的:通过多轮迭代精炼数据,进一步提高标注的质量和覆盖范围。

过程:

•小规模增强数据微调:使用小规模的高质量数据对模型进行微调,提升模型的精度。

大规模数据训练:使用大量数据进行训练,以提高模型的泛化能力。

4.最终注释(Final Annotations)

结果:经过多个阶段和模型处理,生成的最终数据集包含各种类型的注释:

简要描述(Brief Caption):简短的图像描述。

详细描述(Detailed Caption):详细的图像描述。

更详细的描述(More Detailed Caption):更细粒度的图像描述。

分割(Segmentation):像素级分割掩码。

OCR:光学字符识别结果。

对象检测(Object Detection):对象识别和定位。

区域建议(Region Proposal):提出潜在对象的区域。

密集描述(Dense Caption):详细描述图像中的多个对象或场景。

因为这种极其全涵盖,和复杂的dataset才能为后面的统一训练界面打下好的基础,大家是不是也想要这个数据集呢?不好意思,模型开源,数据集不开源

图片

图片

然后讲它的这个综合多任务学习,也就是说一个训练任务,训练完了以后,模型能match N种下游任务。

为了开发一个通用的视觉基础模型,论文提出了多任务学习的方法,旨在捕捉不同层次的语义和空间理解。每个任务目标都针对视觉理解的特定方面。

1.图片级理解(Image-level Understanding):

1.任务:捕捉图像的高级语义,通过语言描述提供对图像的全面理解。

2.应用:图像分类、标注、视觉问答等任务。帮助模型理解图像的整体上下文和语义关系。

2.区域/像素级识别(Region/Pixel-level Recognition)

1.任务:识别详细的对象及其在图像中的位置,捕捉对象之间及其与环境的空间关系。

2.应用:目标检测、分割、指代表达理解等。这些任务要求模型精确定位图像中的细节对象和区域。

3.精细语义对齐(Fine-grained Visual-Semantic Alignment)

1.任务:需要对图像和文本的精细理解。包括定位文本短语(如对象、属性或关系)对应的图像区域。

2.应用:这项任务挑战模型去理解视觉细节的局部特征及其语义上下文,以及视觉元素和文本之间的互动。

图片

多任务提示(Multi-task Prompts)

多任务提示提供了模型需要回答的多个问题或执行的任务。这些任务涵盖了从简单描述到复杂对象和区域的识别:

1.图像描述:例如,“图像描述了什么?”这类任务要求模型生成一个总体的图像描述。

2.对象定位:如“定位图像中的对象”,要求模型识别和标注图像中的具体对象。

3.短语定位:例如,“在描述中定位短语:一个女人在骑自行车”,要求模型将文本描述与图像中的特定区域关联起来。

4.区域描述:例如,“区域 (0.41, 0.15, 0.63, 0.73) 描述了什么?”要求模型识别和描述特定的图像区域。

5.多边形掩码:例如,“区域 (0.41, 0.15, 0.63, 0.73) 的多边形掩码是什么?”要求模型生成精确的像素级对象分割。

大家可能看到4和5这种比较奇怪,这是啥,这就是坐标,下面不分来讲。

任务形式化(Task Formulation)

这部分解释了如何将不同的视觉任务转换为统一的序列到序列问题:

文本任务:当提示或答案是纯文本格式时,模型将其作为序列到序列任务进行处理。

区域特定任务:对于涉及特定区域的任务,使用量化坐标的位置信令(location tokens)来表示区域。这些任务需要标记图像中的具体位置,如对象检测或密集区域描述。

区域表示的类型:

•边界框表示(Box Representation):用于对象检测等任务,表示为顶点坐标(x0, y0, x1, y1)。

四边形框表示(Quad Box Representation):用于文本检测和识别,四边形框的四个顶点坐标。

多边形表示(Polygon Representation):用于细粒度的分割任务,使用多边形的顶点坐标来表示区域。

用这些x,y的坐标,不就能整出来OD和seg的效果了吗,就是这么来的。

另外值得说的就是它的visual-encoder,这个还是比clip啥的要先进一些

视觉编码器(Vision Encoder)

使用 DaViT(Dual-AttentionVision Transformer)作为视觉编码器,处理输入图像并生成视觉令牌嵌入(visual token embeddings)。这些嵌入包含图像的关键视觉特征。

DaViT这里就不细讲了,这块如果大家感兴趣点赞到30个,我就单开一张细讲。

简单说就是你们平时玩的attention都是token级别的,dual-attention就是两个么,哪两个,除了token的p级别还有channel的C级别。

其实Yolov8开始有人就引入 daual attentioion机制了

双重注意力机制(Dual-Attention Mechanism)

双重注意力机制的核心思想是使用两种不同类型的注意力机制来捕捉图像的不同方面的信息,从而提高模型的表达能力。

空间注意力(Spatial Attention)

•功能:空间注意力用于关注图像中不同空间位置的特征。这种注意力机制可以帮助模型捕捉图像中重要的区域和对象位置,忽略背景或不相关的部分。

•实现:通过计算每个像素或图像块的注意力权重,模型可以动态调整对这些位置的关注程度,从而提取出重要的视觉信息。

通道注意力(Channel Attention)

•功能:通道注意力关注的是图像特征图中的不同通道,这些通道通常代表不同的特征类型(如颜色、边缘、纹理等)。通道注意力机制使模型能够权衡和强调不同通道中的信息。

•实现:通过对特征图的每个通道计算注意力权重,模型可以选择性地增强或抑制特定通道的特征。

DaViT 的优势

•丰富的特征表示:通过结合空间和通道注意力,DaViT 能够从图像中提取更加丰富和多样的特征表示。这对于复杂的视觉任务,如细粒度的图像分类、目标检测和语义分割等非常有益。

•动态特征调整:双重注意力机制允许模型在不同的任务和输入情况下动态调整其特征提取策略,从而适应各种视觉任务的需求。

目标函数:使用标准的交叉熵损失函数来优化模型的所有任务。损失函数 L 计算输入 x(图像和提示组合)和目标 y 之间的差异,通过最小化损失函数来优化模型参数 θ。

图片

图片

图片

前3个表是拿经过特定领域数据训练的模型和florence2的B和L级别相比(B是0.23 L是0.7,都嗷嗷小)除了coco的数据集以外,其他的,没经过微调的florence-2都比特定领域数据训练的模型表现好,尤其是标准视觉的特定区域的CV任务,可能VQA要差点(VQA这玩意和模型大小的差距还是挺明显的)

但是看图6

图 6 展示了 Florence-2 模型与其他模型在训练效率上的对比,横坐标为训练的 epoch数,纵坐标为相应的性能指标。

图表说明:

1.(a) Mask-RCNN 在COCO检测任务上的mAP

Florence-2模型展示了6.9 点的 mAP 提升,相对于其他模型有显著的效率提升(4倍效率增益)。

2.(b) DINO 在COCO检测任务上的mAP:

Florence-2在检测任务上的表现优于DINO,表现出 5.5 点的提升和 4倍的效率增益。

3.(c)UpperNet在ADE20K语义分割任务上的mIoU:

Florence-2 v2 模型展示了5.9 点的 mIoU 提升,效率提升同样显著。

还是非常能打的。

写了这么多很详细,也补偿一下各位读者,够读几分钟的了,后面我一定快更,毕竟游戏打完了

图片

,黑神话暂时不玩,等媒体和玩家的评价。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1978021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Unity 面向对象补全计划 七大原则 之 里氏替换

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,尤其是关于继承的两篇文章&#xff…

算法022:寻找峰值

寻找峰值. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/find-peak-element/ 这个题跟上一个题很像,也是寻找一个峰值。此题还特意强调了如果有多个峰…

【数学思维培养】罗博深小学数学青少年数学思维分级课程(3-4年级)

【数学思维培养】罗博深小学数学青少年数学思维分级课程(3-4年级) 背景前摇: 虽然我是学理工科计算机的,但我感觉我在数学方面一直都存在劣势,无论是写程序到了涉及数学计算的地方(比如向量、余弦等&#…

【数据分析--带你认识数据分析,了解数据分析的】

前言: 💞💞大家好,我是书生♡,本阶段和大家一起分享和探索数据分析—基础介绍,本篇文章主要讲述了:数据分析的介绍,Python开源库,配置Jupyter等等。欢迎大家一起探索讨论…

C++程序的编译链接过程

一、预处理 (1) 将所有的#define删除,并且展开所有的宏定义 (2) 处理所有的条件预编译指令,如#if、#ifdef (3) 处理#include预编译指令,将被包含的文件插入到该预编译…

html+css 实现hover边框彩色流动

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

人工智能深度学习系列—深入探索IoU Loss及其变种:目标检测与分割的精度优化利器

文章目录 1. 背景介绍2. Loss计算公式3. 使用场景4. 代码样例5. 总结 1. 背景介绍 在深度学习的目标检测和分割领域,评估预测结果与真实标注之间的一致性是提升模型性能的关键。IoU Loss(Intersection over Union Loss)及其变种损失函数&…

【人工智能五】人工智能基础习题

文章目录 壹. 内容补充一. VR/AR/MR的区别1. 三者概念2. 区别 二. 深度学习重要算法及人物介绍1. 反向传播算法2. 卷积神经网络 贰. 习题精选1一. 选择二. 判断题三. 填空题四. 简单题1. 综合2. 深度学习与神经网络 壹. 内容补充 一. VR/AR&…

人工智能与机器学习的相关介绍

文章目录 人工智能的发展历程人工智能与机器学习关系图谱数据处理机器学习ML和深度学习DL的区别人工智能按照学习方式划分监督学习算法无监督学习算法总结 人工智能的发展历程 重要的时间点了解一下: 早在1950年人工智能就已经开始兴起 1997年deep blue战胜了人类国…

一款功能强大的屏幕演示工具,免费版足够使用!

鼠标换肤 | 屏幕画笔 | 放大镜 | 聚光灯 | 屏幕放大 | 倒计时,功能强大的屏幕演示工具 屏幕演示工具适用于Windows平台,特别是Windows 10及以上版本。该软件提供了多种实用功能,包括鼠标换肤、屏幕画笔、放大镜、聚光灯、屏幕放大和倒计时等…

k8s集群的资源发布方式(滚动/蓝绿/灰度发布)及声明式管理方法

目录 1.常见的发布方式 2.滚动发布 3.蓝绿发布 4.实现金丝雀发布(Canary Release) 5.声明式管理方法 1.常见的发布方式 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚优点:用户无感知,部署和回滚速度较…

基于强化学习算法玩CartPole游戏

什么事CartPole游戏 CartPole(也称为倒立摆问题)是一个经典的控制理论和强化学习的基础问题,通常用于测试和验证控制算法的性能。具体来说,它是一个简单的物理模拟问题,其目标是通过在一个平衡杆(倒立摆&a…

Cesium初探-坐标转换

Cesium的坐标系分三种:屏幕坐标、笛卡尔空间直角坐标、地理坐标。 屏幕坐标 屏幕坐标系是一个是平面直角坐标系,即二维笛卡尔坐标系,屏幕左上角为原点(0,0),单位为像素值,屏幕水平方向为X轴&a…

Python | SyntaxError: invalid syntax 深度解析

Python | SyntaxError: invalid syntax 深度解析 在Python编程中,SyntaxError: invalid syntax是一个常见的错误,它表明Python解释器在尝试解析代码时遇到了语法问题。这个错误通常是由于代码中存在拼写错误、缺少符号(如括号、冒号或逗号&a…

Java中的Map(如果想知道Java中有关Map的知识点,那么只看这一篇就足够了!)

前言:在Java编程语言中,集合框架(Collection Framework)提供了一系列用于存储和操作数据的接口和类。其中,Map和Set是两个非常重要的接口,分别用于存储键值对和无重复元素的集合。 ✨✨✨这里是秋刀鱼不做梦…

Nerd Fonts

文章目录 关于 Nerd Fonts重要告示TL;DR字体的各种下载选项 特点 Glyph Setsshell中的图标名称 修补字体Variations 字体安装Option 1: Release Archive DownloadOption 2: Homebrew FontsOption 3: Unofficial Chocolatey or Scoop RepositoriesOption 4: Arch Extra Reposito…

AI在医学领域:医学成像中针对深度神经网络(DNN)的对抗性攻击及其防御策略

关键词:对抗性攻击、医学图像、深度神经网络、模型安全、鲁棒性 机器学习(ML)是医学领域快速发展的一个分支,它利用计算机科学和统计学的方法来解决医学问题。众所周知,攻击者可能通过故意为机器学习分类器创建输入来…

C++11 包装器

1.function包装器 1.1 概念介绍 ret func(x); 上面 func 是什么呢?那么 func 可能是函数名,函数指针,函数对象 ( 仿函数对象 ), 也可能是lamber 表达式对象,这些都是可调用的类型。 函数包装器,也称为函…

comfyui老照片修复工作流,直接复制到comfyui中即可使用

ComfyUI是一个基于web的图形用户界面,用于直观地构建和运行AI模型流程。它特别适合于使用Stable Diffusion等模型进行图像生成任务。然而,ComfyUI本身并不直接提供老照片修复的功能,但你可以通过组合不同的节点来实现这一目标。 老照片修复通常涉及到几个关键步骤: 图像去…

人像修复-插件磨皮

破锤和DR5插件磨皮 破锤插件(更快磨皮)DR5(更好保留皮肤纹理) 破锤插件(更快磨皮) 打开方式:滤镜->Imagenomic->Portraiture 磨皮阈值一般控制在10-20之间若环境与肤色接近,容…