👁️🗨️
ビジョン言語モデル(VLM) と ビジョン基盤モデル(VFM)の違いは? Phi-3.5-vision / Florence-2 を具体例に
Vision Language Model(VLM) と Text指示ができるVision Foundation Model(VFM) の違いと用法が判らなかったので、マイクロソフト系のVLM(phi-3.5-vision)とVFM(Florence-2)を題材に調べてみました。
調べていて思ったんですが、VLMとVFMの比較というよりも、phi-3.5-visionとFlorence-2の比較になっています。ただ、具体例を持ち出さずにVLMとVFMを比較しても空中戦になる気がするので、致し方ないかなとも。。
結論としては、違いはこの表の通りで、用法としては以下が目安になりそうです。
- VLM(phi-3.5-vision): 一般的なビジネスシナリオ利用向け。比較的長い文章を生成するタスク向け。
- VFM(Florence-2): ピクセル・リージョン単位のタスク向け。現実の物体を含むシナリオ向け。比較的省リソースなタスク向け。
以上を目安にして両方を試すのが良さそうです。例えば、ROI抽出タスクの場合はVFMを使うべきというのが明確ですが、画像のキャプション生成タスクの場合は両方を試してみるまで分からないかなと。
ターゲット
この2つ、似てます。
Transformer使ってて、入力はテキストと画像で、出力はテキストで。
VLM(phi-3.5-vision)
VFM(Florence-2)
比較
観点 | VLM(phi-3.5-vision) | VFM(Florence-2-large-ft) | VLM(phi-3.5-vision)を基準にVFM(Florence-2-large-ft)を見てみると、 |
---|---|---|---|
パラメータ数 | 4.2B | 0.77B(Large), 0.23B(Base) | 圧倒的に軽量 |
主たるアーキテクチャー | Decoder-onlyモデル | Encoder-Decoderモデル | よりタスク特化型 |
画像エンコーダー | CLIP(ViT) | DaViT | より局所特徴を捉えやすい |
画像位置埋込の粒度 | パッチレベル | ピクセルレベル? | より局所特徴を捉えやすい |
学習データ | オフィス関連データ多め?(OCR、図表理解、画像入り文書理解) | 画像タスク関連データを広く(キャプション・ROI抽出・セグメンテーション) | - |
- 主たるアーキテクチャーから見るに、VLM(phi-3.5-vision)はつらつらと文書を生成するタスク寄り、VFM(Florence-2)は特化したタスクの回答生成寄りと言えるかもしれません。
- 画像エンコーダーは、VLM(phi-3.5-vision)、VFM(Florence-2)のそれぞれでCLIP(ViT)とDaViT を採用しています。したがって、VFM(Florence-2)のほうがLocal attentionがある分だけ、画像の局所特徴をとらえやすいと言えるでしょう。ちなみに埋込特徴量次元数は両者とも1024でした。CLIPの埋込特徴量次元数、 ViTの埋込特徴量次元数。
- 画像位置埋込の粒度については、VFM(Florence-2) のほうが画像の細かい部分を意識しています。論文中には次のような記載があり、明確にピクセルレベルを意識しています。
We fine-tune Florence-2 models by adding a collection of public datasets that cover image-level, region-level, pixel-level tasks, yielding one generalist model for various vision tasks.
。実装面では、この辺りを見るに埋込方法が凝っていることまで分かったのですが、手法詳細まではよく分かりませんでした。他方、VLM(phi-3.5-vision)のViTのパッチサイズはここに14とあり、パッチレベルと言えるでしょう。 - 学習データについては、簡単に言うと表のとおりです。VLM(phi-3.5-vision) は画像を含むテキスト、FLD-5Bの画像とテキストのペア、OCRデータ、チャート・テーブルデータを事前学習として、自然画像理解、チャート/テーブル/図の理解/推論、PowerPointの理解、複数画像の比較、ビデオ要約、モデルの安全性で事後学習との事です。
VFM(Florence-2) は、全て?のFLD-5Bデータで事前学習した後に、ダウンストリームタスクでのFine-tuningを行っているようです。詳細は以下の通りです。
VFM(Florence-2)の事前学習データ
VFM(Florence-2)のFine-tuningデータ
VFM(Florence-2)の実行例。以下のような現実物体を対象としたものが多い気がしました。
まとめ
最初に記述した結論の通りかなと。
結論としては、以下を基準にして両方を試すのが良さそうです。
- VLM(phi-3.5-vision): 一般的なビジネスシナリオ利用向け。比較的長い文章を生成するタスク向け。
- VFM(Florence-2): ピクセル・リージョン単位タスク向け。現実の物体を含むシナリオ向け。比較的省リソースなタスク向け。
phi-3.5-visionのほうがアーキ図や実行例などの公開資料少ない印象がありました。
Llama-visionやYOLO-worldでも比較したいな。
Discussion