XLogo

Research

Articles

VisionTransformer 特徴理解

VisionTransformer_Top

記事のまとめ

  1. ViTとは画像分類に特化したTransformerである 。
  2. 画像を分割して分割画像を文章の単語のように入力する
  3. 多くのデータで全体的な相関が必要な画像分類に有用である。

概要

Vision Transformer(ViT)は2020年にGoogleによって公開された論文"An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale"で登場した画像処理に特化したTransformerのモデルです。本記事ではViTがどのような特徴を持っているか 他技術との違いを考察しながら解説します。
※この記事では上記論文の図を引用しています。
※本記事では曖昧さを回避するため、1次元の計算結果を示すために「\cdot」, 2次元以上の計算結果を示すために「×\times」 を使用しています。

TransformerやTransformer内部の処理について詳しく知りたい方は以前の記事をご参考ください。
Transformerの内部構造と文の生成top

Transformerの内部構造と文の生成

Multi Head Attentionの内部処理top

Multi Head Attentionの内部処理

Vision Transformerの特徴

Vision Transformerは画像処理、特に画像分類タスクに使用されることを考えられて作成されたモデルです。

画像分類タスクとは、画像の中にどのようなものが写っているか推定して分類を行うタスクです。 簡単な例ではMNISTデータセットを用いた手書き数字の分類が挙げられます。 ViTは分類を行うアーキテクチャとして開発され、LLMなどとは違い、「生成」は行いません。 以下が論文に掲載されているモデルアーキテクチャです。
ViT_ArchTechture

Transformerとのアーキテクチャ上の違い

一般的なTransformerとのアーキテクチャ上の違いは2つです。
Transformerと違い、ViTは画像分類に特化したモデルなので、入力として、画像を期待します。 また、データを生成しないのでDecoderが存在する必要がなく、Encoderの出力がモデルの出力となります。Encoderの内部は一般のTransformerと同様の機構です。

ViTの入力埋め込み手法

Embedding
ViTは2次元の画像を文章のような1次元の入力が期待されたTransformerに渡すために Embedding層(埋め込み層)で入力画像を一定のパッチサイズで分割します。

入力画像がH×WH \times Wで、パッチサイズをppと定義すると、画像はHPWP\frac{H}{P} \cdot \frac {W} {P}個の画像に分割されます。図では9つの画像に分割されています。この分割された画像を1次元のベクトルにフラット化します。 白黒画像ではチャンネルを1つ、RGB画像ではチャンネルを3つ持っているので、分割された画像のチャンネル数をCCとすると、画像一つのベクトルサイズはPPCP \cdot P \cdot C となります。

フラット化された画像はPositional Encoding層で画像のどの位置の分割画像なのかについての情報を付加します。ここでの詳しい式は省略します。 位置情報を付加した後は通常の文章と同じようにTransformerで処理を行います。

以上のように、ViTでは分割された画像がトークンとみなされ、文章の単語と同様に最小単位としての役割を担います。 そのため、"パッチサイズPPをどのように決定するか"が性能を決めるうえで重要な要素となります。

ViTではTransformerのEncoderを通して出力した特徴ベクトルを、MLPに通し、 クラス分類のラベルを出力します。

他技術との比較

ViTは他の画像処理を行うニューラルネットと比べてどのような特徴があるのか解説します。

Diffusion modelとの比較

Diffusion

引用:https://arxiv.org/abs/2209.00796

Diffusion modelはデータ生成を目的としたU-Netの発展型アーキテクチャです。そのため、ViTとは使用用途が異なります。 Diffusion modelは高性能な画像を作成できることで知られていますが、Transformerほど全体的な要素の関連を図ることはできません。 ViTと画像を生成するdecoderを備えたアーキテクチャを開発することで、より全体の要素の関連に着目した画像生成を行える可能性があります。

CNNとの比較

CNN

引用:https://insightsimaging.springeropen.com/articles/10.1007/s13244-018-0639-9

CNNは畳み込みニューラルネットワークの略で、主に画像処理に使われるアーキテクチャです。CNNの最大の特徴は 移動不変性があるという点です。

移動不変性とは、位置に関係なく要素を抽出できるという特徴です。例えば、位置aに犬が存在する画像のみで訓練されたモデルに対し、 、画像Bで位置bに犬が存在する画像を入力するとします。 すると、移動不変性を持たないアーキテクチャでは画像Bの位置bにいるものを犬と認識できません。CNNでは移動不変性をもつため、少ないデータでも効率的な学習が可能です。

ViTでは移動不変性を持たないため、様々な画像を学習する必要があります。ViTの利点はAttentionブロックを持つので計算が並列化しやすい点と、 離れたトークンとの関連性をつかみやすい点にあります。

まとめ

ViTは画像分類を行うニューラルネットワークで、Transformerに画像を分割して入力するアーキテクチャを持っています。 他技術に比べ、大量のデータで学習する際や全体の相関情報に注目して画像分類を行う際に有用な技術であるといえます。



ご愛読ありがとうございます。