ためのトランスフォーマー」をPyTorchで実装したものです。ビジョントランスフォーマーは、畳み込み層のない画像に純粋なトランスフォーマーを適用します。画像をパッチに分割し、パッチの埋め込みにトランスフォーマーを適用します。パッチ埋め込みは、パッチの平坦化されたピクセル値に単純な線形変換を適用することによって生成されます。次に、標準のトランスエンコーダに、分類トークンとともにパッチ埋め込みが供給されます。トークンのエンコーディングは、画像をMLPで分類するために使用されます。トランスにパッチを供給する際、学習した位置埋め込みがパッチ埋め込みに追加されます。これは、パッチ埋め込みにはそのパッチがどこから来たかについての情報がないためです。位置埋め込みは、各パッチ位置のベクトルのセットで、他のパラメーターとともに勾配降下法でトレーニングされます。VITは、大規模なデータセットで事前にトレーニングしておくとうまく機能します。この論文では、MLP分類ヘッドで事前にトレーニングし、微調整の際には単一の線形層を使用することを提案しています。この論文は、3億の画像データセットで事前にトレーニングされたVITでSOTAを上回っています。パッチサイズを同じに保ちながら、推論時には高解像度の画像を使用します。新しいパッチ位置の位置埋め込みは、学習した位置埋め込みを補間することによって計算されます。トレーニングする実験です。これは小さなデータセットでトレーニングされているため、あまりうまくいきません。誰でも走ってVITで遊べる簡単な実験です。用紙は画像を同じサイズのパッチに分割し、パッチごとに平坦化されたピクセルを線形変換します。実装が簡単なため、畳み込み層でも同じことを実装します。super().__init__()#カーネルサイズでストライドの長さがパッチサイズと同じコンボリューションレイヤーを作成します。これは、画像をパッチに分割し、各パッチで線形変換を行うのと同じです。self.conv(x)#形を手に入れよう。x#パラメータ化された位置エンコーディングの追加これにより、学習した位置埋め込みがパッチ埋め込みに追加されます。トークンの埋め込みに基づいて画像を分類するための2層のMLPヘッドです。x#ビジョントランスフォーマーこれにより、パッチ埋め込み、位置埋め込み、変圧器、分類ヘッドが組み合わされます。つのトランスレイヤーのコピーです。それをコピーして変圧器を作ります。パッチ埋め込みレイヤーです。位置埋め込みレイヤーです。torch.Tensor):#パッチの埋め込みを入手してください。これにより形状のテンソルが得られます。トランスフォーマー出力を取得します。