BLIP and BLIP-2
BLIP と BLIP-2 は、image captioning、VQA、image-text retrieval に強い vision-language model です。Salesforce Research が提案し、後続の LLM-based VLM の基盤になっています。
BLIP の核心
BLIP は、
- Image-text contrastive (ITC)
- Image-text matching (ITM)
- Image-conditioned text generation (LM)
の 3 つの objective を一つの multi-task framework で同時に学習します。これによって、retrieval にも captioning にも強い model が得られます。
加えて、CapFilt という data engine で、
- Noisy web caption を Captioner で書き直す
- Filter で低品質 caption を除く
ことで、training data の質を上げます。
BLIP-2
BLIP-2 は、frozen image encoder と frozen LLM を組み合わせ、その間を Q-Former (Querying Transformer) で橋渡しする設計です。
- Frozen image encoder (例: EVA-CLIP) と frozen LLM (例: OPT、FlanT5) を再学習しない
- Q-Former だけを学習することで、少ないパラメータで強力な vision-language alignment を実現
これにより、
- 既存の強力な VLM / LLM をそのまま活用
- 学習コストが小さい
- 多くの benchmark で SoTA
- 後続の LLaVA、MiniGPT-4 などの先駆けとなった
という impact がありました。
用途
- Image captioning
- VQA
- Image-text retrieval
- LLM ベース vision chat (BLIP-2 + LLM)
- 視覚機能を持つ agent / robot の認識モジュール
数式で見る BLIP の multi-task objective
BLIP は、一つの multi-task framework で三つの loss を組み合わせます。Image-text contrastive、image-text matching、language modeling の三つです。Image embedding を 、text embedding を 、ITM head を 、生成器を とすると、概念的には次のように書けます。
各項の意味は次の通りです。
- は CLIP 型の contrastive で、retrieval 能力を支えます。
- は二値分類で、対応するか否かを細かく判定します。Hard negative mining と組み合わせることで、近接した text の区別を学べます。
- は image-conditioned next-token loss で、captioning や VQA に必要な生成能力を与えます。
この式の気持ちは、「検索能力と生成能力を別々の model で持つのではなく、共通の visual representation の上で両方を同時に学ぶ」というものです。
数式で見る Q-Former の役割
BLIP-2 では、frozen image encoder と frozen LLM を繋ぐ Q-Former が、少数の learnable query を介して image feature を圧縮します。Image feature を 、learnable queries を とすると、概念的には次のような cross-attention になります。
その後、 は projection を通って LLM 側の token 空間に入ります。
この式の気持ちは、「数千個の image patch token をそのまま LLM に渡すのではなく、 個の少数 query が要点を抽出して LLM に渡す」というものです。LLM と image encoder を freeze したまま少数の中間 module だけを学習できるため、計算コストを抑えながら強い alignment を得られます。
関連ページ
主なソース
- BLIP paper: https://arxiv.org/abs/2201.12086
- BLIP-2 paper: https://arxiv.org/abs/2301.12597
- LAVIS / BLIP repository: https://github.com/salesforce/LAVIS