多模态:Florence2论文详解

news2024/10/3 18:04:09

文章目录

  • 前言
  • 一、介绍
  • 二、方法
    • 1.模型结构
      • 1)Vision encoder
      • 2)Multi-modality encoder decoder
      • 3)Optimization objective
    • 2.数据工程
      • 1)Image Collection
      • 2)Data Annotation
      • 3)Data filtering and enhancement
      • 4)Annotation-specific Variations
      • 5)overview
    • 3.实验
  • 总结


前言

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 能力,可在广泛的视觉任务领域展现,如描述、目标检测、视觉定位和指称分割等

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

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

相关文章

spring学习日记-day8-声明式事务

一、学习目标 声明式事务是Spring框架提供的一种事务管理方式,其主要特点是通过声明(而非编程)的方式来处理事务。这种方式让事务管理不侵入业务逻辑代码,从而提高了代码的可维护性和可读性。 定义:声明式事务…

[3.4]【机器人运动学MATLAB实战分析】PUMA560机器人逆运动学MATLAB计算

PUMA560是六自由度关节型机器人,其6个关节都是转动副,属于6R型操作臂。各连杆坐标系如图1,连杆参数如表1所示。 图1 PUMA560机器人的各连杆坐标系 表1 PUMA560机器人的连杆参数 用代数法对其进行运动学反解。具体步骤如下: 1、求θ1 PMUMA56

【数据结构笔记13】

408数据结构答题规范 原视频 视频参考,以下为视频的笔记 需要写的部分 如果题目要求了函数名、参数列表、返回值类型就按题目的来 函数的类型可以是返回值类型或者void类型,如果函数名不清楚里面的功能是什么,在函数title下面最好写一行注…

磁盘存储和文件系统管理【1.9】

磁盘存储和文件系统管理【1.9】 12、磁盘存储和文件系统12.1.管理存储12.1.1.新加10G硬盘并识别12.1.2.备份查看MBR分区表二进制信息12.1.3.删除破坏分区表12.1.4.恢复MBR分区表12.1.5.完整步骤12.1.6.fdisk分区12.1.7.gdisk分区12.2.文件系统12.2.1.查看支持的文件系统格式12.…

音视频入门基础:FLV专题(11)——FFmpeg源码中,解析SCRIPTDATASTRING类型的ScriptDataValue的实现

一、引言 从《音视频入门基础:FLV专题(9)——Script Tag简介》中可以知道,根据《video_file_format_spec_v10_1.pdf》第80到81页,SCRIPTDATAVALUE类型由一个8位(1字节)的Type和一个ScriptDataV…

Java类的生命周期-连接阶段

Java类的生命周期-连接阶段 上篇讲述了类的加载阶段,通过类加载器读取字节码文件后在方法区与堆区生成对应的存放类信息的对象,本篇将讲解他的下一阶段-连接阶段 上篇说到类加载的五大阶段: #mermaid-svg-6YmaEnIO4rCKbIZg {font-family:&quo…

Cpp::STL—vector类的模拟实现(11)

文章目录 前言一、各函数接口总览二、默认成员函数vector();vector(size_t n, const T& val T( ));template< class InputIterator> vector(InputIterator first, InputIterator last);vector(const vector<T>& v);vector<T>& operator(const v…

腾讯云SDK基本概念

本文旨在介绍您在使用音视频终端 SDK&#xff08;腾讯云视立方&#xff09;产品过程中可能会涉及到的基本概念。 音视频终端 SDK&#xff08;腾讯云视立方&#xff09; 应用 音视频终端 SDK&#xff08;腾讯云视立方&#xff09;通过应用的形式来管理您的项目&#xff08;Ap…

C/C++进阶(一)--内存管理

更多精彩内容..... &#x1f389;❤️播主の主页✨&#x1f618; Stark、-CSDN博客 本文所在专栏&#xff1a; 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏&#xff1a; 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…

免费录屏软件工具:助力高效屏幕录制

录屏已经成为了一项非常实用且广泛应用的技术。无论是制作教学视频、记录游戏精彩瞬间&#xff0c;还是进行软件操作演示等&#xff0c;我们都常常需要一款可靠的录屏软件。今天&#xff0c;就让我们一起来探索那些功能强大录屏软件免费版&#xff0c;看看它们是如何满足我们多…

ARTS Week 42

Algorithm 本周的算法题为 2283. 判断一个数的数字计数是否等于数位的值 给你一个下标从 0 开始长度为 n 的字符串 num &#xff0c;它只包含数字。 如果对于 每个 0 < i < n 的下标 i &#xff0c;都满足数位 i 在 num 中出现了 num[i]次&#xff0c;那么请你返回 true …

【数据结构强化】应用题打卡

应用题打卡 数组的应用 对称矩阵的压缩存储 注意&#xff1a; 1. 2.上三角的行优先存储及下三角的列优先存储与数组的下表对应 上/下三角矩阵的压缩存储 注意&#xff1a; 上/下三角压缩存储是将0元素统一压缩存储&#xff0c;而不是将对角线元素统一压缩存储 三对角矩阵的…

接口隔离原则在前端的应用

什么是接口隔离 接口隔离原则&#xff08;ISP&#xff09;是面向对象编程中的SOLID原则之一&#xff0c;它专注于设计接口。强调在设计接口时&#xff0c;应该确保一个类不必实现它不需要的方法。换句话说&#xff0c;接口应该尽可能地小&#xff0c;只包含一个类需要的方法&am…

SKD4(note上)

微软提供了图形的界面API&#xff0c;叫GDI 如果你想画某个窗口&#xff0c;你必须拿到此窗口的HDC #include <windows.h> #include<tchar.h> #include <stdio.h> #include <strsafe.h> #include <string>/*鼠标消息 * 键盘消息 * Onkeydown * …

实验 3 存储器实验

实验 3 存储器实验 1、实验目的 掌握静态随机存储器 RAM 的工作特性。掌握静态随机存储器 RAM 的读写方法。 2、实验要求 (1)做好实验预习&#xff0c;熟悉MEMORY6116 芯片各引脚的功能和连接方式&#xff0c;熟悉其他实验元器件的功能特性和使用方法&#xff0c;看懂电路图…

CSS | 响应式布局之媒体查询(media-query)详解

media type(媒体类型)是CSS 2中的一个非常有用的属性&#xff0c;通过media type我们可以对不同的设备指定特定的样式&#xff0c;从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强&#xff0c;是CSS 3的重要内容之一。随着移动互联网的发展&#xff0c;m…

中国靠谱热门交友软件app排行榜前十名测评

在信息飞速发展的时代&#xff0c;交友软件层出不穷。究竟哪些才是靠谱又热门的呢&#xff1f;这份交友软件 app 排行榜将为你揭晓&#xff0c;带你走进不同的社交天地&#xff0c;开启精彩交友之旅。 咕哇找搭子小程序&#xff1a;这是一个实名制的找搭子交友平台&#xff0c;…

基于ssm的学生社团管理系统 社团分配系统 社团活动调度平台 学生社团管理 信息化社团管理开发项目 社团活动管理 社团预约系统(源码+文档+定制)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

时尚科技融合:Spring Boot下的“衣依”服装销售平台

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

虚拟机三种网络模式详解

在电脑里开一台虚拟机&#xff0c;是再常见不过的操作了。无论是用虚拟机玩只有旧版本系统能运行的游戏&#xff0c;还是用来学习Linux、跑跑应用程序都是很好的。而这其中&#xff0c;虚拟机网络是绝对绕不过去的。本篇文章通俗易懂的介绍了常见的虚拟网络提供的三种网络链接模…