オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】GLIP #アルゴリズム編

Index

GLIP

物体検出のおけるラベルの表現を豊かにするために、事前学習を導入した.

Grounded Language-Image Pre-training

Natural Language Supervision

画像認識・物体認識のアルゴリズムでは、通常、事前にラベルを固定してから学習を行うが、 生の自然言語を教師にする Natural Language Supervision という考えを導入した CLIP というアルゴリズムがあった.

Phrase Grounding

文章中のフレーズ・単語が、画像中のどの領域に対応するかを推定するマルチモーダルのタスクである Phrase Groundingがある.

Phrase Grounding を物体の種類と場所を特定する物体検出 / Object Detection のタスクに応用させた.

Phrase Grounding と Object Detection の融合

では、どのようなフレームワークにするのか.



入力は、画像とテキスト.

そして、テキストとしての入力は 2 つ.

  • ラベル情報
  • テキスト



画像から物体の領域が検出され、それぞれの領域の特徴量を抽出する.



入力されたテキストからも、特徴量を抽出する.



そして、それらの特徴量の関連性をベクトルの内積として表現する.



CLIP とは異なり、2 つの Encoder の中間出力に関連を持たせる.

Frame Work

さらにこの仕組みを細かくみていく.

Formulation / 定式化

式に描いてみる.

Object Detection

Object Detection の場合.

物体検出の損失はこんなもん.

 L\ =\ L_{cls}\ +\ L_{loc}



画像からの物体検出.

 O\ =\ Enc_{I}\ (Img)


  •  Img : 入力画像
  •  Enc_{I} : Image Encoder / Vision Transformer とか
  •  O : 物体検出結果
    • 物体の特徴量
    •  O\ \in\ R^{N\ \times\ d}
    •  N : 物体数



物体の分類とそのスコアを算出.

Two Stage.

 S_{cls}\ = \ OW^{T}


  •  W : 分類器  C の重みパラメータ
    •  W\ \in\ R^{c\ \times\ d}
  •  S_{cls} : 分類確率
    •  S_{cls}\ \in\ R^{N\ \times\ c}
    •  c : クラスの数



損失 (Class Loss) の計算.

 L_{cls}\ =\ loss(S_{cls};T)


  •  T\ \in\ \{0,\ 1\}^{N\ \times\ c} : ラベル

Object Detection + Phrase Grounding

Object Detection に Phrase Grounding を導入した形式で定式化する.

まずは、Class について.

[person, bicycle, car, ..., toothbrush]


このようなクラスであったら、こう.

Prompt = “Detect: person, bicycle, car, ... , toothbrush”



次は、処理.

画像からの物体検出.

 O\ =\ Enc_{I}\ (Img)


  •  Img : 入力画像
  •  Enc_{I} : Image Encoder / Vision Transformer、DyHead とか
  •  O : 物体検出結果
    • 物体の特徴量
    •  O\ \in\ R^{N\ \times\ d}
    •  N : 物体数



ここまでは、同様.

次は、テキストからの情報抽出.

 P\ =\ Enc_{L}\ (Prompt)


  •  Prompt : 入力テキスト (ラベル情報)
  •  Enc_{L} : Language Encoder / Transformer とか
  •  P : Embedding された情報
    • テキスト (単語 / token) の特徴量
    •  P\ \in\ R^{M\ \times\ d}
    •  M : 単語数 / token



トークンと物体の (類似度の) スコアを計算.

 S_{ground}\ =\ OP^{T}


  •  S_{ground} : トークンと物体の (類似度の) スコア
    •  S_{ground}\ \in\ R^{N\ \times\ M}



ラベルはこう.

  •  T\ \in\ \{0,\ 1\}^{N\ \times\ c} : ラベル
  •  T^{'}\ \in\ \{0,\ 1\}^{N\ \times\ M} : ラベル


 T\ \longrightarrow\ T^{'}


そして、損失を算出.

 loss(S_{ground};T^{'})

Deep Fusion

ここまでの定式化では、画像とテキストは別々の Encoder によって処理され、 スコアを計算するために、最後に各の情報が初めて触れ合う.

このようなモデルを Late Fusion Model と呼ぶ.

Vision と Language の情報の共有の精度を上げるために、より良い情報の共有の方法を導入する.

各 Encoder の中間レイヤーにより、中間的な特徴量が出力される.

 O^{i},\ P^{i},\ \ i\ \in\ \{ 0,\ 1,\ \cdots,\ L-1 \}


  •  O^{i} : レイヤー  i からの画像 (物体) の中間特徴量
  •  P^{i} : レイヤー  i からのテキスト (フレーズ / token) の中間特徴量
  •  L : レイヤーの数



それぞれの中間特徴量の情報を共有.

 O_{t2i}^{i},\ P_{i2t}^{i}\ = X-MHA  (O^{i},\ P^{i})


  • X-MHA : Cross-Modality Multi Head Attention
  •  O_{t2i}^{i} : text to image で情報を共有
  •  P_{i2t}^{i} : image to text で情報を共有



それぞれの中間特徴量に、互いの共有された情報を加えて、次のレイヤーの処理へと進む.

\begin{align}
O^{i+1}&\ =\ DyHeadModule (O^{i}\ +\ O_{t2i}^{i}) \\
P^{i+1}&\ =\ BERTLayer (P^{i}\ +\ P_{i2t}^{i})
\end{align}


上の場合は、画像から特徴量抽出に DyHead を、テキストからの特徴量抽出に BERT を利用.



最後のレイヤーの出力が、最終的な出力となる.

 
\begin{align}
O&\ =\ O^{L}\\
P&\ =\ P^{L}
\end{align}

学習データセット

  • Flickr30K
  • VG Caption

実装編

参考

  • Grounded Language-Image Pre-training
    • [2021]
    • Abstract
    • 1 Introduction
    • 3 Grounded Language Image Pre-training
      • 3.1 Unified Formulation
      • 3.2 Language-Aware Deep Fusion
      • 3.3 Pre-training with Scalable Semantic-Rich Data
    • arxiv.org
    • paperswithcode.com

Web サイト