VITトランスの詳しい説明

I.はじめに

論文: https://arxiv.org/abs/2010.11929
元のソース コード: GitHub - google-research/vision_transformer
Pytorch バージョン コード: https://github.com/lucidrains/vit-pytorch

Transformer アーキテクチャは NLP タスクの事実上の標準になっていますが、CV での適用は依然として限定されています。ビジョンでは、アテンションは ConvNet と組み合わせて使用​​されるか、全体の構造を維持しながら ConvNet の一部のコンポーネントを置き換えるために使用されます。我々は、CNN へのこの依存は不要であり、画像パッチのシーケンスに直接適用される純粋な Transformer が画像分類タスクを適切に実行できることを実証します。大量のデータで事前トレーニングされ、いくつかの中小規模の画像認識ベンチマーク (ImageNet、CIFAR-100、VTAB など) に移行すると、Vision Transformer (ViT) は最新のベンチマークと比較して優れた結果を達成します。 -art CNN だけで、必要なトレーニング リソースが少なくなります。

2. 全体構成

ここに画像の説明を挿入
図は ViT 全体の構造を示しており、5 つの部分に分かれています。

  • 画像をトークンに分割する
  • トークンをトークン埋め込みに変換
  • トークン埋め込みと位置埋め込みの対応する位置を追加します。
  • トランスエンコーダへの入力
  • 複数の分類タスクを実行するための Cls 出力

3. VIT入力部

  1. 画像はトークンに分割されます
    。たとえば、224x224x3 の画像は 16x16 のトークンに分割され、各トークンのサイズは 14x14 となり、16x16x3=768 個のトークンが得られます。

  2. トークンをトークン埋め込みに変換
    16x16x3=768 トークンを直線化し、長さ 768 の 1 次元ベクトルに引き出し、
    線形レイヤーを接続し、768 を Transormer Encode で指定された埋め込みサイズ (1024) の長さにマッピングします。

  3. Token Embedding と Position Embedding の対応する位置を加算して、
    Cls に対応する Token Embedding (図の * の部分に相当) を生成し
    、すべてのシーケンスの位置コード (Cls シンボルと、対応するすべての Token Embedding の位置コードを含む) を生成します。図の0~9まで)
    Token EmbeddingとPosition Embeddingの対応する位置を追加

注意:
質問 1: なぜ Cls 記号を追加するのですか?
Cls は Bert で使用される記号です。NLP タスクの Cls は Bert の 2 つのタスクをある程度独立させることができ、ViT には多分類タスクが 1 つしかないため、Cls 記号は必要ありません。と論文の著者は述べています。 ViT のタスクでは、Cls を追加した場合と追加しなかった場合のトレーニング効果は類似しています。

この論文では、著者は元の Transformer と可能な限り一貫性を持たせたいと考えているため、クラス トークンも使用されます。これは、クラス トークンが NLP 分類タスクでも (文理解のグローバル機能としても) 使用されるためです。この記事では、これを画像の全体的な特徴として扱います。このトークンの出力を取得した後、MLP が続きます (MLP では、tanh は分類予測を行うための非線形活性化関数として使用されます)。

このクラス トークンの設計は、NLP から完全に借用されています。これは、以前のビジュアル フィールドでは行われていませんでした。たとえば、残差ネットワーク Res50 があります。最後の段階では、14×14 の特徴マップが生成され、その後、この中でfeature マップの上で実際にgap(global Average pooling、global Average pooling)と呼ばれる操作が行われ、プーリング後のフィーチャは実際に直線化されベクトルになりますこのとき、このベクトルはグローバル画像として理解できます特徴を選択し、この特徴を分類に使用します。

Transformer の場合、Transformer モデルがあり、その中に n 個の要素があり、その中に n 個の要素がある場合、最初に 1 つ追加するのではなく、n 個の出力に対してグローバル平均プーリングを実行して最終的な特徴を取得することができないのはなぜでしょうか。クラストークン、そして最後にクラストークンの出力を分類に使用しますか?

実験を通じて、著者の最終結論は次のとおりです。どちらの方法も可能です。つまり、グローバル平均プーリングを通じてグローバル特徴を取得して分類することも、クラス トークンを使用して分類することもできます。この記事のすべての実験はクラス トークンを使用して行われています。主な目的は、元の Transformer にできるだけ近い状態を維持することです (できるだけ近くにいること)。著者は、人々に、何らかの良い効果がクラス トークンによるものである可能性があると考えてほしくないのです。特定のトリックまたは特定の cv にいくつかの変更がもたらされます。作者は、標準の Transformer がまだビジョンを実行できることを証明したいだけです。
![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/68249c6c44dc4e9d9b3c0f030503e3cd.png

質問 2: 位置エンコーディングが必要なのはなぜですか?
RNN は、自然なタイミング関係で 1 つずつ計算され、どの単語が前にあり、どの単語が後ろにあるのかをモデルに伝えることができます。しかし、Transformer では、その単語は一緒に入力され、その後アテンション層を介して、位置エンコーディングがないと、モデルはどの単語が前にあり、どれが後ろにあるのかを認識できません。したがって、どの単語/トークンが前にあり、どの単語/トークンが後ろにあるかをモデルに伝えるための位置情報をモデルに与える必要があります。

著者はまた、主に 3 種類のアブレーション実験を数多く行ってきました。

  • 1d: NLP で一般的に使用される位置コード、つまり論文の最初から最後まで使用される位置コードです。
  • 2d: たとえば、1d では、画像は 9 正方形のグリッドにフォーマットされ、1 から 9 までの数字が画像ブロックを表すために使用されます。2d では、11、12、13、21 などが画像を表すために使用されます。ブロックには全体的な構造情報が含まれているため、視覚的な問題に近いものになります。具体的な方法としては、元の 1 次元位置コードの次元は d ですが、横座標と縦座標の両方を表す必要があるため、横座標の次元は D/2、縦座標の次元も D/2 になります。つまり、横座標と縦座標を表す D/2 ベクトルがあり、最後に 2 つの D/2 ベクトルが結合されて長さ D のベクトルが得られます。これは 2 次元位置コードと呼ばれます
  • 相対位置エンベディング (相対位置エンコーディング): 1D 位置エンコーディングでは、2 つのパッチ間の距離は、絶対距離またはそれらの間の相対距離 (テキストで言及されているオフセット) のいずれかで表すことができ、これも方法として考えることができます。画像ブロック間の位置情報を表現する

しかし、このアブレーション実験の最終結果も次の図に示すように、3 つの表現方法の効果は類似しています。
ここに画像の説明を挿入

4. VITエンコーダー部

ここに画像の説明を挿入
ViT におけるトランスフォーマーとエンコーダーの違い:

  • 標準層を進めます。
  • パッド記号はありません。

5、CLS多分類出力

最終的に、各トークンは 1024 の出力を取得し、最初の (cls) 1024 ベクトルが取り出され、完全に接続された層が多重分類のために接続されます。

6. 誘導バイアス

CNN と比較して、ビジョントランスフォーマーは画像固有の誘導バイアスがはるかに少ないです。たとえば、CNN では局所性 (ローカリティ) と変換等分散 (翻訳等分散) がモデルの各層に反映されます。この事前知識はモデル全体に​​相当します。全体のモデル

ただし、ViT の場合、MLP 層のみがローカルで変換が可変ですが、セルフ アテンション層はグローバルであり、この種の画像の 2D 情報は基本的に ViT では使用されません (画像が最初にパッチに切り分けられる場合のみ) ) および位置エンコーディング、それ以外の場合、視覚問題に対する誘導バイアスは使用されません)

さらに、位置エンコーディングは実際には最初にランダムに初期化され、2D 情報を持たず、画像ブロック間の距離情報やシーン情報などをすべて最初から学習する必要があります。

これは後の結果への伏線でもあります。ビジョン トランスフォーマーはあまり多くの誘導バイアスを使用しないため、小規模および中規模のデータ セットに対する事前トレーニングの効果が畳み込みニューラル ネットワークほど良くないことは理解できます。

7. 参考資料

https://blog.csdn.net/qq_38253797/article/details/126085344

https://blog.csdn.net/ SeptemberH/article/details/123730336

おすすめ

転載: blog.csdn.net/qq_54372122/article/details/131626883