Microsoft が 公開している軽量VLMのFlorence 2をColaboratoryで味見しています。
Florence 2 は以下のようなタスクが実行できるモデルです。
一般的にVLMで言う、フリーワードでのプロンプトではなく、タスクに応じたプロンプトの指定が必要です。
- CAPTION:キャプション
- DETAILED_CAPTION:詳細なキャプション
- MORE_DETAILED_CAPTION:より詳細なキャプション
- OD:物体検出
- DENSE_REGION_CAPTION:高密度領域キャプション
- REGION_PROPOSAL:領域提案
- CAPTION_TO_PHRASE_GROUNDING:キャプションからフレーズへの接地
- OPEN_VOCABULARY_DETECTION:オープンボキャブラリー物体検出
- REFERRING_EXPRESSION_SEGMENTATION:参照セグメンテーション
- REGION_TO_SEGMENTATION:領域指定セグメンテーション
- REGION_TO_CATEGORY:領域→カテゴリー
- REGION_TO_DESCRIPTION:領域→説明
- OCR:単純OCR
- OCR_WITH_REGION:領域検出OCR
タスクにもよりますが、T4 GPUで数百ms~数秒程度で推論が完了します。
精度はどのタスクも結構頑張っている感じがします。
用途によっては全然使えるレベルです。
あくまで個人的な感想ですが、、、以下みたいな印象です。
- 物体検出系(物体検出も詳細キャプション付き物体検出も)は結構使えそう
- セグメンテーション系は精度が今ひとつだけど、結果が座標列で返ってくるのはありがたい
- 領域指定セグメンテーションのほうが精度期待できるので、他の仕組みと組み合わせる?
- キャプション系は速いけど、フォーマット指定できないから、今どきの他のLLMを考えると使い勝手が今ひとつ
- OCRは別のOSSとかサービス使うかな
ちょっと可視化の仕方に手を加えている👀 https://t.co/Jqvkm8tEXz pic.twitter.com/jLB9rjgGI2
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2024年8月17日
Florence 2 の セグメンテーションタスク(<REFERRING_EXPRESSION_SEGMENTATION>)を試している。
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2024年8月17日
入力テキストは「road」
何というか、おしい、、、👀 https://t.co/Jqvkm8tEXz pic.twitter.com/6W37bzOaMT
Florence 2で領域指定セグメンテーション。
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2024年8月17日
悪くはない👀 https://t.co/Jqvkm8tEXz pic.twitter.com/9DnKpBMwa5
処理時間はタスクによってマチマチです。
当たり前っちゃ当たり前ですが、、、
— 高橋 かずひと@闇のパワポLT職人 (@KzhtTkhs) 2024年8月17日
Florence 2さん、タスク間で処理時間に差があるな👀 https://t.co/Jqvkm8tEXz pic.twitter.com/7ZweRuCaFp
今回試したノートブックは以下にコミットしています。
上記で上げたタスクが一通り実行できます。
また、T4 GPUでの処理時間目安をREADMEにまとめています👻