Closed nogawanogawa closed 2 years ago
AlexNetの登場から、2010年代はimage recognitionの世界は目覚ましい進歩を遂げている。 VGGNet, Inceptions, ResNe(X)t, DenseNet, MobileNet, EfficientNet, RegNetなど、多くの畳込みNNが登場し、その手法を一般化してきた。 このキーアイデアはスライディングウィンドウによる計算戦略で、これによって効率よく画像に対する処理を行うことが可能になった。
同じ頃、NLPの世界では全く別の発展を遂げていた。RNNに代わってTransformerが主流となっていた。 そして、2020年にはViTの登場により、画像とNLPという異なるタスクについてTransformerが採用される様相になっていった。
しかし、CVの主要なタスクは画像認識だけではなく、それらのタスクでは畳み込みのアイデアに依存している。 畳み込みでは帰納的バイアスに依存しているのに対し、Transformerでは帰納的バイアスを持たないため、汎用的なCVのタスクに使用されるにはまだ課題を残していた。
Hierarchical Transformersはこの課題を解決するために採用されたアプローチで、ConvNetと似た動作になる。そしてSwin TransformerはTransformerが画像分類以外のタスクにおいても最先端の性能を達成できることを示した。 それと同時に、Swin Transformerの成功と急速な普及は、畳み込みの本質が無用の長物になっているのではなく、むしろずっと望まれ、色あせることがないことも明らかにした。つまり、CVでのTransformerの進歩の多くは畳み込みを復活させることに焦点があたっていると言える。
本研究では、CNNとTransformerのアーキテクチャ上の差異を調査し、ネットワーク性能を比較する際の交絡変数を特定する。この研究では、ConvNetsのViT以前とViT以後の時代のギャップを埋めるとともに、純粋なConvNetが達成できる限界をテストすることを目的としている。
ResNet-50 / Swin-Tの群とResNet-200 / Swin-Bの群に大別する。 簡単のためResNet-50 / Swin-Tについて確認する。
下記がResNetから始まってSwin-Tに近づけるためにたどるフローとなっている。 (数字はimagenet-1KのAcc)
これらをResNetに適用するだけで、まず文献より性能が向上する。
Swin Transformersでは、各ステージが異なる特徴マップの解像度を持つマルチステージの設計を採用している。 この中で
という2つ設計上の考慮点がある。
各ステージのブロック数をResNet-50の(3、4、6、3)から(3、3、9、s3)とswin-tに合わせるだけで性能が向上した
(メモ->conv_2~sonv_5の数を調整している) : https://www.bigdata-navi.com/aidrops/2611/
ResNetでは、ストライド2の7×7畳み込み層と、それに続くマックスプールを含んでいる。 これをswin-Tで使用されるpatchifyに変更する。
ResNetの"ステムセル"を、4×4、ストライド4のConv層を使用して実装されたpatchify層と置き換える。
(メモ->conv_1を重なりがない形に置き換え) : https://www.bigdata-navi.com/aidrops/2611/
ResNeXtのエッセンスを取り込む。 ResNeXtの指針は、「より多くのグループを使い、幅を広げる」となっている。
逆ボトルネックを作る。 TransformerではMLPブロックの隠れ層が入力次元の4倍になっている。 そこで下図a -> bのようにブロックの設計を変更したところわずかに性能が向上した。
Vision Transformerの特徴として、非局所的なattention機構を持つ点が挙げられる。 過去にConvでも大きなカーネルサイズが適用されることがあったが、これまでの標準はVGGNetで普及した3x3の畳み込み層を重ねることであった。
Transformerに近づけるために、カーネルサイズを大きくすることを考える。
大きなカーネルを使用するにあたって、深さ方向の畳み込みの位置を変更する。 (上図b -> c) ここで、MSAブロックをMLP層の前に配置している。
この段階では一時的に性能が低下した(79.9%)
上の準備を行った後、カーネルサイズを探索的に拡大させた。3,5,7,9,11など実験的に調べ、80.6%(7×7)にまで向上した。
最後にブロック内の検討を行う。
Convの段階で広く活用されていたReLUはTransformerでも使用されている。 TransformerではさらにGELU(Gaussian Error Linear Unit )も使用されており、今回それをReLUと置き換える。
これは性能自体は変わらなかった。
TransformerとResNetの違いの一つに活性化関数が少ないことが挙げられます。 MLPブロックに存在する活性化関数は1つだけで、ResNetに比べて活性化関数が少ないことがわかる。
GELU層の数を減らし、Transformerのスタイルに合わせると81.3%になった。
いくつかの問題が報告されているBatch normalizationを Layer Normalizationへ置き換え、これまでの修正をすべて反映させると81.5%までわずかに向上する。
Swin Transformersでは、ステージ間に別のダウンサンプリング層が追加されています。 ResNetでは各ステージの最初のResブロックでストライド2の3×3の畳込みを使ってダウンサンプリングを行っている点で異なっている。
これは学習が発散する(?)恐れがある。 空間解像度を変更する際には、正規化レイヤーを追加することで、学習を安定させることができることがわかった。 そのため、 LN層を各ダウンサンプリング層の前に1つ、stemの後に1つ、そして最終的なグローバル平均プーリングの後に1つ追加した。
これによって、82.0%の精度を達成し、これはSwin-Tを上回る精度になっている。
ImageNet-1K、22Kともに先行研究よりAccが高いことを確認
計算量等についてもTransformerと同程度で戦えているように見える。
CocoでObjectDetectionをした結果、Swin-Transformerと同等以上の性能は出せていそうなことを確認。
ADE20KでSemantic segmentation の結果、Swin-Transformerと同等以上の性能が出せていそうなことを確認。
論文URL
https://arxiv.org/abs/2201.03545
著者
Zhuang Liu, Hanzi Mao, Chao-Yuan Wu, Christoph Feichtenhofer, Trevor Darrell, Saining Xie
会議
2022/1/16時点でarxivのみ
背景
目的
本研究では、CNNとTransformerのアーキテクチャ上の差異を調査し、ネットワーク性能を比較する際の交絡変数を特定する。この研究では、ConvNetsのViT以前とViT以後の時代のギャップを埋めるとともに、純粋なConvNetが達成できる限界をテストすることを目的としている。
アプローチ