aifield / CV_News

Computer Vision系勉強会用のリポジトリです。
3 stars 1 forks source link

#5 Swin Transformer: Hierarchical Vision Transformer using Shifted Windows #5

Open Kentea-Watanabe opened 2 years ago

Kentea-Watanabe commented 2 years ago

論文情報

一言説明

Vision Transformerって?

入力画像をパッチに分割し、Transformerへ入力

image

Vision Transformerの問題点

なんで計算量が膨大になるの? 自然言語 画像
単語(文字数) 画像(高さ×幅)

画像内のすべてのPatchに対してAttentionの計算を行うため、計算コストは画像サイズに対して二乗(h×w)で増加する

Swin Transformer 全体像

transformer_v2

技術や手法のキモ

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に分割することができる。 llayer

このWindowを(M/2, M/2)(2,2)シフトさせると、上図右のようになる。 元のWindowの大きさを保っているのは1つのみ。 この状態でそのまま処理を進めるのはやや複雑な処理となる。

そのため、SW-MSAにおいては、cyclic shiftという工夫をしている。 下図のように、Windowをシフトしてはみ出した部分(薄く表示されているA, B, C)をWindowの反対位置へ移動させる。 →Windowの数やWindowあたりのパッチ数は一定となる。 標準的なMSAでよく使用されるマスクを設定してあげることで、無関係なパッチ間でAttentionが生じないようにできるので、複雑な実装を回避することができる。 cylce

こうして得られた特徴マップの移動していた部分を本来の位置へと戻す(reverse cyclic shift)ことで、SW-MSAの処理が完了する。

実験

実験設定

タスク

結果

EfficientNetB7のモデルと同様の精度 image

タスク

タスク

結果

image

読んだ所感

まとめきれなかった内容

参考文献・読んだ記事