AI・機械学習
上級

Florence-2(フローレンスツー)

Microsoftが2024年発表の統合ビジョン基盤モデル。キャプション・検出・グラウンディング・OCRを単一Seq2Seqアーキテクチャで処理。FLD-5Bデータセットで学習。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
統合ビジョンモデル
基盤モデル
Microsoft
Seq2Seq
マルチタスク

Florence-2 とは

Florence-2は、Microsoftが2024年6月にMIT Licenseで公開した統合ビジョン基盤モデル(Vision Foundation Model, VFM)。単一のSeq2Seqアーキテクチャで10以上の視覚タスクを処理できる点が特徴で、タスクごとに異なる専用ヘッドを持つ従来設計から脱却している。

FLD-5B 事前学習データ

Florence-2の能力の核心はFLD-5B(Florence Large-scale Diverse)データセット:

  • 5.4Bアノテーション: 画像キャプション・テキストグラウンディング・物体検出・セグメンテーション・OCRを統合
  • 126Mユニーク画像から収集
  • Florence-1の自動アノテーションパイプラインを拡張して構築
  • 多様なドメイン(自然画像・ドキュメント・スクリーンショット)

アーキテクチャ

DaViT + Bart構成

入力画像 → DaViT(ビジョンエンコーダ)→ 視覚トークン
入力テキストプロンプト → Bartエンコーダ → テキストトークン
                                        ↓
                            Seq2Seqデコーダ
                                        ↓
                     テキスト出力 or 座標出力
  • DaViT(Dual Attention Vision Transformer): 局所・大域アテンションを交互に適用
  • Bart系デコーダ: テキスト・座標・マスクを統一テキストトークンとして出力
  • タスク固有ヘッド不要:全出力を自然言語形式にエンコード

モデルサイズと性能

モデルパラメータCOCO APVQA AccTextVQA Acc
Florence-2-base232M34.761.663.6
Florence-2-large771M37.564.772.9
Florence-2-base-ft232M41.4–66.3
Florence-2-large-ft771M43.4–76.4

(ft = FT版: COCO/SA-1B等でファインチューニング済み)

対応タスクとプロンプト

from transformers import AutoProcessor, AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    "microsoft/Florence-2-large",
    trust_remote_code=True
).to("cuda")
processor = AutoProcessor.from_pretrained(
    "microsoft/Florence-2-large",
    trust_remote_code=True
)

# 各タスクのプロンプト例
tasks = {
    "<CAPTION>": "詳細キャプション生成",
    "<DETAILED_CAPTION>": "詳細キャプション",
    "<MORE_DETAILED_CAPTION>": "超詳細キャプション",
    "<OD>": "物体検出",
    "<DENSE_REGION_CAPTION>": "密度高い領域キャプション",
    "<REGION_PROPOSAL>": "領域提案",
    "<CAPTION_TO_PHRASE_GROUNDING>": "キャプション→座標グラウンディング",
    "<REFERRING_EXPRESSION_COMPREHENSION>": "参照表現理解",
    "<OCR>": "OCRテキスト抽出",
    "<OCR_WITH_REGION>": "領域付きOCR",
    "<SEGMENTATION>": "セグメンテーション",
}

# 実行例
for task_prompt, description in tasks.items():
    inputs = processor(text=task_prompt, images=image, return_tensors="pt").to("cuda")
    output_ids = model.generate(**inputs, max_new_tokens=1024)
    result = processor.batch_decode(output_ids, skip_special_tokens=False)[0]
    parsed = processor.post_process_generation(result, task=task_prompt, image_size=image.size)
    print(f"{description}: {parsed}")

ファインチューニング活用

  • ドキュメント解析: 請求書・領収書のキーバリュー抽出
  • 衛星画像: 建物・道路の密度検出
  • 医療画像: 病変位置のテキスト記述→座標変換
  • 小売: 商品棚のOCR+位置情報統合

Phi-3-Vとの関係

Florence-2の視覚エンコーダはMicrosoftのPhi-3-V(Phi-3 Vision)にも採用。Phi-3-Vはより大きな言語モデル(3.8B LLM)とFlorence-2視覚エンコーダを組み合わせた視覚言語モデル(VLM)として位置づけられる。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7