nogawanogawa / paper_memo

4 stars 0 forks source link

A ConvNet for the 2020s #29

Closed nogawanogawa closed 2 years ago

nogawanogawa commented 2 years ago

論文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が達成できる限界をテストすることを目的としている。

アプローチ

nogawanogawa commented 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の進歩の多くは畳み込みを復活させることに焦点があたっていると言える。

nogawanogawa commented 2 years ago

目的

本研究では、CNNとTransformerのアーキテクチャ上の差異を調査し、ネットワーク性能を比較する際の交絡変数を特定する。この研究では、ConvNetsのViT以前とViT以後の時代のギャップを埋めるとともに、純粋なConvNetが達成できる限界をテストすることを目的としている。

アプローチ

nogawanogawa commented 2 years ago

Resnet -> ConvNext (like Transformer)

ResNet-50 / Swin-Tの群とResNet-200 / Swin-Bの群に大別する。 簡単のためResNet-50 / Swin-Tについて確認する。

下記がResNetから始まってSwin-Tに近づけるためにたどるフローとなっている。 (数字はimagenet-1KのAcc)

スクリーンショット 2022-02-03 8 15 51

学習手順 (76.1% -> 78.8%)

これらをResNetに適用するだけで、まず文献より性能が向上する。

nogawanogawa commented 2 years ago

Macro Design

Swin Transformersでは、各ステージが異なる特徴マップの解像度を持つマルチステージの設計を採用している。 この中で

という2つ設計上の考慮点がある。

stage compute ratio (78.8% -> 79.4%)

各ステージのブロック数をResNet-50の(3、4、6、3)から(3、3、9、s3)とswin-tに合わせるだけで性能が向上した

(メモ->conv_2~sonv_5の数を調整している) : https://www.bigdata-navi.com/aidrops/2611/

Patchify(79.4%->79.5%)

ResNetでは、ストライド2の7×7畳み込み層と、それに続くマックスプールを含んでいる。 これをswin-Tで使用されるpatchifyに変更する。

ResNetの"ステムセル"を、4×4、ストライド4のConv層を使用して実装されたpatchify層と置き換える。

(メモ->conv_1を重なりがない形に置き換え) : https://www.bigdata-navi.com/aidrops/2611/

nogawanogawa commented 2 years ago

ResNeXt-ify (->80.5%)

ResNeXtのエッセンスを取り込む。 ResNeXtの指針は、「より多くのグループを使い、幅を広げる」となっている。

nogawanogawa commented 2 years ago

Inverted Bottleneck(-> 80.6%)

逆ボトルネックを作る。 TransformerではMLPブロックの隠れ層が入力次元の4倍になっている。 そこで下図a -> bのようにブロックの設計を変更したところわずかに性能が向上した。

スクリーンショット 2022-02-03 9 03 39
nogawanogawa commented 2 years ago

Large Kernel Sizes (-> 80.6%)

Vision Transformerの特徴として、非局所的なattention機構を持つ点が挙げられる。 過去にConvでも大きなカーネルサイズが適用されることがあったが、これまでの標準はVGGNetで普及した3x3の畳み込み層を重ねることであった。

Transformerに近づけるために、カーネルサイズを大きくすることを考える。

depth

大きなカーネルを使用するにあたって、深さ方向の畳み込みの位置を変更する。 (上図b -> c) ここで、MSAブロックをMLP層の前に配置している。

この段階では一時的に性能が低下した(79.9%)

カーネルの拡大

上の準備を行った後、カーネルサイズを探索的に拡大させた。3,5,7,9,11など実験的に調べ、80.6%(7×7)にまで向上した。

nogawanogawa commented 2 years ago

Micro Design

最後にブロック内の検討を行う。

スクリーンショット 2022-02-03 17 00 07

ReLU -> GELU

Convの段階で広く活用されていたReLUはTransformerでも使用されている。 TransformerではさらにGELU(Gaussian Error Linear Unit )も使用されており、今回それをReLUと置き換える。

これは性能自体は変わらなかった。

活性化関数の削減

TransformerとResNetの違いの一つに活性化関数が少ないことが挙げられます。 MLPブロックに存在する活性化関数は1つだけで、ResNetに比べて活性化関数が少ないことがわかる。

GELU層の数を減らし、Transformerのスタイルに合わせると81.3%になった。

normalization層の削減、BN→LN

いくつかの問題が報告されているBatch normalizationを Layer Normalizationへ置き換え、これまでの修正をすべて反映させると81.5%までわずかに向上する。

ダウンサンプリングの分離

Swin Transformersでは、ステージ間に別のダウンサンプリング層が追加されています。 ResNetでは各ステージの最初のResブロックでストライド2の3×3の畳込みを使ってダウンサンプリングを行っている点で異なっている。

これは学習が発散する(?)恐れがある。 空間解像度を変更する際には、正規化レイヤーを追加することで、学習を安定させることができることがわかった。 そのため、 LN層を各ダウンサンプリング層の前に1つ、stemの後に1つ、そして最終的なグローバル平均プーリングの後に1つ追加した。

これによって、82.0%の精度を達成し、これはSwin-Tを上回る精度になっている。

nogawanogawa commented 2 years ago

評価

ImageNet-1K、22Kともに先行研究よりAccが高いことを確認

スクリーンショット 2022-02-03 17 32 29

計算量等についてもTransformerと同程度で戦えているように見える。

スクリーンショット 2022-02-03 17 33 43

CocoでObjectDetectionをした結果、Swin-Transformerと同等以上の性能は出せていそうなことを確認。 スクリーンショット 2022-02-03 17 34 27

ADE20KでSemantic segmentation の結果、Swin-Transformerと同等以上の性能が出せていそうなことを確認。 スクリーンショット 2022-02-03 17 35 37