Florence-2 概括版

📅 2026/7/29 0:13:54 👁️ 阅读次数 📝 编程学习
Florence-2 概括版

1. 核心目标与背景

核心目标:构建一个统一的视觉基础模型(Vision Foundation Model),通过统一的序列生成方式(Sequence-to-Sequence),同时解决不同粒度的视觉任务:

  • Image-level:图像分类、图像描述(Captioning)

  • Region-level:目标检测、区域定位(Grounding)

  • Pixel-level:像素级分割(Segmentation)

现有模型的两大痛点(Motivation):

  1. 训练数据不够全面:现有模型(如CLIP)主要依赖 Image-Text Pair,只能提供图像级全局语义,缺少目标位置、区域描述和像素级语义(如:狗在哪?Mask 是什么?)。

  2. 模型任务不统一:很多模型针对单一任务设计(检测输出 Box,分割输出 Mask,描述输出 Text),导致不同任务需要不同网络结构,难以实现真正的“基础模型”。

2. 核心创新一:Florence Data Engine 与 FLD-5B 数据集

要训练统一模型,最大的瓶颈是缺少多粒度数据。论文通过Florence Data Engine自动构建了FLD-5B数据集。

2.1 数据生成与迭代流程 (Data Engine)

采用“群体智慧”:不依赖单一模型,而是使用多个现有的视觉专家模型(Specialist Models)协同生成初始数据,再通过迭代优化(Train -> Predict -> Filter -> Refine)清洗噪声。

  • 流程:Web Images → 多专家模型协同标注 → Initial Annotations → 过滤与优化 → FLD-5B

2.2 FLD-5B 数据规模与组成

包含126M图像、5.4B视觉标注,远超同类数据集的精细度。单张图片包含多粒度标注:

  1. Text Annotation (全局):Image → Caption

  2. Region-Text Pair (区域):Image → Region (Box) → Text(如:[120,80,300,250]对应dog

  3. Phrase-Region Pair (细粒度):Text phrase → Specific Region

  4. Pixel-level (像素):Region → Segmentation Mask

对比优势:结合了 LAION 的“海量规模”与 COCO 的“多粒度精细标注”,为模型学习全局到像素级语义提供了数据基础。

3. 核心创新二:统一序列生成模型架构

Florence-2 摒弃了为不同任务设计不同 Head 的传统做法,采用Vision Encoder + Multimodal Encoder-Decoder架构,将所有视觉任务转换为 Token 序列生成。

3.1 整体架构

  • Vision Encoder (DaViT):将图像切分为 Patch 并提取视觉特征(Visual Tokens)。

  • Multimodal Encoder (BART-like):融合视觉特征(Visual Tokens)与任务指令文本(Text Tokens)。

  • Decoder (BART-like):统一进行自回归(Autoregressive)生成,输出 Text / Box / Mask Tokens。

为什么用 Encoder-Decoder 而不是 Decoder-only LLM?

视觉任务天然包含“输入(Image + Instruction)→ 输出(Structured Prediction)”的属性,Encoder-Decoder 更适合这种视觉到结构化数据的转换。

3.2 任务统一与特殊 Token 设计

非文本输出(坐标、Mask)无法直接用语言表达,Florence-2 设计了特殊 Token:

  • 位置 (Location):将连续坐标离散化。如[100, 200, 300, 400]转换为<loc_100> <loc_200> <loc_300> <loc_400>。回归问题变成了词汇表上的分类问题。

  • 分割 (Segmentation):使用<seg> mask tokens </seg>表示。

统一任务范式举例(Image + Prompt → Token Generation):

  • Caption:<image> What is in this image?A dog running in the park

  • Detection:<image> Detect objectsdog <loc_100> <loc_200> <loc_300> <loc_400>

  • Segmentation:<image> Segment dogdog <seg> mask tokens </seg>

4. 训练策略

本质是多任务自回归语言模型损失(Autoregressive Language Modeling Loss)。

  • 多任务混合训练:同一个 Batch 内混合 Caption、Detection、Grounding、Segmentation 的数据,共享一套模型参数,计算相同的 Token Prediction Loss。这使得不同任务能互相促进(如检测的空间能力辅助分割)。

  • 两阶段训练:

    1. 预训练 (Pre-training):使用 FLD-5B 学习通用视觉、空间定位、图文对齐能力。

    2. 微调 (Fine-tuning):在下游特定 Benchmark 数据上进一步优化。

  • 模型规模:Florence-2-base (232M), Florence-2-large (771M)。证明了通过高质量多粒度数据和统一架构,小模型也能具备强大的视觉基础能力(对比 Flamingo 80B)。

5. 总结与多模态模型演进对比

核心三大突破

  1. 数据基础:FLD-5B 解决了多粒度(Image/Region/Pixel)统一标注的缺失。

  2. 统一架构:抛弃独立检测/分割 Head,用 Encoder-Decoder 完成统一建模。

  3. 生成范式:创新性地用<loc><seg>Tokens 将坐标和掩码转化为序列生成问题。

多模态发展路线对比

模型核心贡献与特点输出形式
CLIP(2021)4亿图文对齐,奠定多模态基础相似度/分类
BLIP系列(2022-23)统一视觉语言预训练;通过 Q-Former 桥接冻结的 LLM 与视觉模型Text (图像描述/问答)
LLaVA / Qwen-VL(2023)视觉指令微调,侧重多模态对话和复杂问答推理Text (长文本回答)
Florence-2(2024)端到端训练,统一视觉基础任务(重基础视觉能力而非长篇对话)Text, Box<loc>, Mask<seg>

一句话总结:

Florence-2 的最大价值不在于提出了新的大语言模型,而是通过FLD-5B 多粒度数据集 + 特殊 Token 编码,成功将传统计算机视觉的“分类、检测、分割”三大独立任务,完美统一到了自然语言处理的“序列生成”框架下。