Florence-2でのファインチューニング

Florence-2は、Microsoftが開発した軽量な視覚言語基盤モデルで、多様な画像-言語タスクを実行できる先進的なシステムです。このモデルは、画像キャプション生成、物体検出、グラウンディング、セグメンテーションなど、幅広いタスクに対応しています。MITライセンスの下でオープンソース化されており、コンパクトなサイズながら、Kosmos-2のような大規模モデルに匹敵する性能を発揮します。

## Florence-2の主な特徴：

1. 統一されたアーキテクチャ：seq2seqフレームワークを採用し、画像エンコーダーとマルチモダリティエンコーダー-デコーダーを統合しています。

2. 大規模データセットでの事前学習：FLD-5Bと呼ばれる1億2600万枚の画像と54億の注釈からなる大規模データセットを用いて学習されており、強力なゼロショット能力とファインチューニング能力を実現しています。

3. プロンプトベースの表現：様々なビジョンタスクを統一されたプロンプトベースの表現で処理し、アーキテクチャを簡素化しています。

4. 効率的なモデルサイズ：Florence-2-base（0.23B）とFlorence-2-large（0.77B）の2つのバリアントがあり、モバイルデバイスでも展開可能です。

5. 多様なタスク対応：キャプション生成、詳細キャプション生成、領域提案、物体検出、密な領域キャプション生成、フレーズグラウンディング、参照表現理解、オープン語彙検出、参照セグメンテーション、領域からテキストへの変換、テキスト検出と認識など、多岐にわたるタスクを実行できます。

## Florence-2でのファインチューニングのプロセス：

1. データの準備：対象タスクに関連する画像データセットを用意します。

2. モデルのロード：事前学習済みのFlorence-2モデルをロードします。

3. タスク定義：特定のタスクに対応するプロンプトを設計します。

4. 学習の実行：準備したデータセットを用いて、モデルをファインチューニングします。

5. 評価と調整：モデルの性能を評価し、必要に応じてハイパーパラメータを調整します。

Florence-2の主要なビジョンタスク：

1. キャプション生成：画像の内容を詳細に説明するキャプションを生成します。

2. 物体検出：画像内の特定の物体を識別し、その位置を示すバウンディングボックスを生成します。

3. 密な領域キャプション生成：画像内の複数の領域について詳細な説明を生成します。

4. フレーズグラウンディング：テキストで記述された物体や概念を画像内で特定し、その位置を示します。

5. 参照セグメンテーション：テキストの説明に基づいて、画像内の対応する領域をセグメント化します。

6. テキスト検出と認識：画像内のテキストを検出し、認識します。

## Azure Machine Learning SDKを使用したFlorence-2のファインチューニング：

Azure Machine Learning Python SDKとMLflowを使用してFlorence-2をファインチューニングする方法が提供されています。これにより、Visual Question Answering（VQA）などのタスクに対してFlorence-2を簡単にカスタマイズできるようになりました。

主な手順は以下の通りです：

1. Azure ML Clientの設定
2. 環境アセットの作成
3. データアセットの作成
4. コンピュートクラスターの作成
5. トレーニングジョブの開始
6. モデルアセットの作成
7. エンドポイントの作成
8. デプロイメントの作成

これらの手順を通じて、Florence-2を特定のタスクに合わせてファインチューニングし、Azure ML上でサービングすることが可能になります。

## ComfyUI-Florence-2拡張機能：

ComfyUIインターフェースにFlorence-2モデルを統合するComfyUI-Florence-2拡張機能が開発されました。この拡張機能は、画像生成、セグメンテーション、バウンディングボックスタスクなど、さまざまな出力タイプに対応しています。

ComfyUI-Florence-2の主な特徴：

1. 全出力タイプのサポート：画像生成、セグメンテーション、バウンディングボックス出力に対応しています。

2. カスタマイズ可能な設定：出力を好みに合わせて微調整できる様々な設定オプションを提供します。

3. ComfyUIとのシームレスな統合：既存のワークフローに簡単に組み込むことができます。

4. 複数のモデルサポート：Florence-2 Large、セグメンテーションモデル、バウンディングボックスモデル、オールインワンモデルなど、様々なモデルに対応しています。

この拡張機能により、Florence-2の高度な機能をComfyUIのユーザーフレンドリーなインターフェースで利用できるようになり、AIアート制作の可能性がさらに広がりました。

## ドキュメント視覚質問応答（DocVQA）

ComfyUI-Florence2の最新の開発により、ドキュメント視覚質問応答（DocVQA）機能が追加されました。この機能を使用すると、ドキュメント画像の内容に関する質問をすることができ、モデルはドキュメント内の視覚的および文字情報に基づいて回答を提供します。

DocVQAの主な特徴：

1. スキャンされたドキュメント、フォーム、領収書などのテキストが多い画像から情報を抽出できます。
2. 自然言語での質問に対して、ドキュメントの内容に基づいた回答を生成します。
3. ComfyUIワークフローに簡単に統合できます。

DocVQAの使用方法：

1. ドキュメント画像をComfyUIにロードします。
2. 画像をFlorence2 DocVQAノードに接続します。
3. ドキュメントに関する質問を入力します。
4. ノードがドキュメントの内容に基づいて回答を出力します。

質問の例：
- 「この領収書の合計金額はいくらですか？」
- 「このフォームに記載されている日付は何ですか？」
- 「この手紙の送信者は誰ですか？」

注意：回答の精度は、入力画像の品質と質問の複雑さに依存します。

## Kaggleでのフローレンス-2の実装：

[Florence-2-vision-language-model](https://www.kaggle.com/code/givkashi/florence-2-vision-language-model)

Kaggleに、Florence-2ビジョン言語モデルの実装例が公開されました。この実装では、Florence-2モデルを使用して画像キャプション生成や視覚的質問応答（VQA）タスクを実行する方法が示されています。

主な特徴：

1. 事前学習済みのFlorence-2モデルのロード
2. 画像のロードと前処理
3. キャプション生成タスクの実行
4. VQAタスクの実行
5. 結果の可視化

この実装例は、Florence-2モデルの実際の使用方法を理解し、自身のプロジェクトに適用する際の参考になります。

## まとめ

Florence-2は、その柔軟性と多様なタスクへの適用可能性から、コンピュータビジョンの分野で重要なツールとなっています。コンパクトなサイズながら高性能を発揮し、様々なビジョンタスクを統一的に処理できる能力は、今後のAI研究や応用において大きな可能性を秘めています。継続的な研究と開発により、さらなる進化と新たな応用が期待されます。

## 参考文献
1. [Florence-2: How it works and how to use](https://www.assemblyai.com/blog/florence-2-how-it-works-how-to-use/) (アクセス日: 2024-09-02)
2. [Florence-2 - Advancing a Unified Representation for a Variety of Vision Tasks](https://github.com/retkowsky/florence-2/blob/main/Florence-2%20-%20Advancing%20a%20Unified%20Representation%20for%20a%20Variety%20of%20Vision%20Tasks.ipynb) (アクセス日: 2024-09-02)
3. [Fine-tuning Florence-2 for VQA (Visual Question Answering) using the Azure ML Python SDK and MLflow](https://techcommunity.microsoft.com/t5/ai-machine-learning-blog/fine-tuning-florence-2-for-vqa-visual-question-answering-using/ba-p/4181123) (アクセス日: 2024-09-02)
4. [ComfyUI-Florence-2 detailed guide | ComfyUI](https://www.runcomfy.com/comfyui-nodes/ComfyUI-Florence-2) (アクセス日: 2024-09-02)
6. [GitHub - kijai/ComfyUI-Florence2: Inference Microsoft Florence2 VLM](https://github.com/kijai/ComfyUI-Florence2) (アクセス日: 2024-09-02)
7. [All You Need to Know About Florence-2!](https://medium.com/@sunidhi.ashtekar/all-you-need-to-know-about-florence-2-348e23f75768) (アクセス日: 2024-09-02)
8. [Florence-2-vision-language-model](https://www.kaggle.com/code/givkashi/florence-2-vision-language-model) (アクセス日: 2024-09-02)