Open Kentea-Watanabe opened 2 years ago
入力画像をパッチに分割し、Transformerへ入力
画像内のすべてのPatchに対してAttentionの計算を行うため、計算コストは画像サイズに対して二乗(h×w)で増加する
隣接2×2のパッチ(チャネル数C)を1つにまとめ、チャネル数が4倍になったあと(チャネル数4C)線形変換を行うことでチャネル数を半分に減らす。CNNで言うPoolingのようなことを行っている。 →階層が深くなるにつれて特徴マップが小さくなるように設計し、階層的な特徴量を取得している。
ほとんどTransformerと同じ 違うのは
W-MSAとSW-MSAはBlock毎に交互に適応される。
特徴マップをサイズがM×Mのwindowに区切り、window内でのみself-attentionを求める
入力された特徴マップの解像度が8×8で、64個のパッチからなるとする(下図左)。 M=4として、1つのWindowにはM^2=16個のパッチを含む、重なりの無いWindowに分割することができる。
このWindowを(M/2, M/2)(2,2)シフトさせると、上図右のようになる。 元のWindowの大きさを保っているのは1つのみ。 この状態でそのまま処理を進めるのはやや複雑な処理となる。
そのため、SW-MSAにおいては、cyclic shiftという工夫をしている。 下図のように、Windowをシフトしてはみ出した部分(薄く表示されているA, B, C)をWindowの反対位置へ移動させる。 →Windowの数やWindowあたりのパッチ数は一定となる。 標準的なMSAでよく使用されるマスクを設定してあげることで、無関係なパッチ間でAttentionが生じないようにできるので、複雑な実装を回避することができる。
こうして得られた特徴マップの移動していた部分を本来の位置へと戻す(reverse cyclic shift)ことで、SW-MSAの処理が完了する。
EfficientNetB7のモデルと同様の精度
論文情報
一言説明
Vision Transformerって?
入力画像をパッチに分割し、Transformerへ入力
Vision Transformerの問題点
画像内のすべてのPatchに対してAttentionの計算を行うため、計算コストは画像サイズに対して二乗(h×w)で増加する
Swin Transformer 全体像
技術や手法のキモ
Patch MergingというPoolingのように画像の縦横を小さくする機構を導入
隣接2×2のパッチ(チャネル数C)を1つにまとめ、チャネル数が4倍になったあと(チャネル数4C)線形変換を行うことでチャネル数を半分に減らす。CNNで言うPoolingのようなことを行っている。 →階層が深くなるにつれて特徴マップが小さくなるように設計し、階層的な特徴量を取得している。
Swin Transformer Block
ほとんどTransformerと同じ 違うのは
W-MSAとSW-MSAはBlock毎に交互に適応される。
W-MSA
特徴マップをサイズがM×Mのwindowに区切り、window内でのみself-attentionを求める
SW-MSA
入力された特徴マップの解像度が8×8で、64個のパッチからなるとする(下図左)。 M=4として、1つのWindowにはM^2=16個のパッチを含む、重なりの無いWindowに分割することができる。
このWindowを(M/2, M/2)(2,2)シフトさせると、上図右のようになる。 元のWindowの大きさを保っているのは1つのみ。 この状態でそのまま処理を進めるのはやや複雑な処理となる。
そのため、SW-MSAにおいては、cyclic shiftという工夫をしている。 下図のように、Windowをシフトしてはみ出した部分(薄く表示されているA, B, C)をWindowの反対位置へ移動させる。 →Windowの数やWindowあたりのパッチ数は一定となる。 標準的なMSAでよく使用されるマスクを設定してあげることで、無関係なパッチ間でAttentionが生じないようにできるので、複雑な実装を回避することができる。
こうして得られた特徴マップの移動していた部分を本来の位置へと戻す(reverse cyclic shift)ことで、SW-MSAの処理が完了する。
実験
実験設定
タスク
結果
EfficientNetB7のモデルと同様の精度
タスク
結果
タスク
結果
読んだ所感
まとめきれなかった内容
参考文献・読んだ記事