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 AP | VQA Acc | TextVQA Acc |
|---|---|---|---|---|
| Florence-2-base | 232M | 34.7 | 61.6 | 63.6 |
| Florence-2-large | 771M | 37.5 | 64.7 | 72.9 |
| Florence-2-base-ft | 232M | 41.4 | – | 66.3 |
| Florence-2-large-ft | 771M | 43.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)として位置づけられる。