shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

ResNeSt: Split-Attention Networks #92

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

[arXiv:2004.08955] ResNeSt: Split-Attention Networks

著者・所属機関

Hang Zhang, Chongruo Wu, Zhongyue Zhang, Yi Zhu, Zhi Zhang, Haibin Lin, Yue Sun, Tong He, Jonas Mueller, R. Manmatha, Mu Li, Alexander Smola

投稿日時(YYYY-MM-DD)

2020-04-19

1. どんなもの?

本研究では特徴量のグループ間でAttention計算を行うSplit-Attentionブロックを通常のResNetのように積み重ねたResNeStを提案した。本手法は他の手法と同程度の計算量でありながら既存モデルを上回る精度を達成した。

2. 先行研究と比べてどこがすごいの?

物体検知などで使用されるモデルのバックボーンとしてNASを使った複雑なモデルが提案されているが、これらのモデルは計算コストや推論測度の面では人工的に設計されているResNetなどのもでるよりも不利である。

そのためバックボーンにResNetがよく採用されているが、このモデルは元々画像認識用に開発されたモデルであり、受容野に制限があったりチャンネル間同士の依存関係を捉える能力が不足していたりと、物体検知などのタスクに適しているかは不明である。

本研究ではチャンネル間の依存関係を捉えるために特徴マップをチャンネル方向に分割してAttention計算を行うSplit-Attentionを提案した。このブロックを積み重ねることでResNetのように扱うことが可能となる。

また画像認識と転移学習を実施して本手法の効果を検証した。

3. 技術や手法の"キモ"はどこにある?

3.1 ResNeSt

本手法ではまずは入力された特徴マップをK個に分割してグループを構築した後に、各グループ内で更にチャンネル数をR個に分割してそれぞれに畳み込み計算後に、チャンネル間をAttentionによって計算を行う。

image

Split-Attentionの計算は以下になる(c=C/K)。畳み込み計算を行った後で得られた特徴量マップを要素ごとに和を計算しGlobalAveragePooling層によってチャンネル方向の統計量を畳み込む。

後は線型結合層で次元数を調整した後に重みを計算して最終的な特徴マップを獲得する。

image

image

後は通常のResNetと同様にSkip-Connectionによって得られた特徴マップと入力された特徴マップを足し合わせる。

全体像は以下になる。

image

3.2 学習方法

4. どうやって有効だと検証した?

ImageNetで本手法の効果を検証した。左図はResNetとの精度の比較を示しており、右図はRとKに関するAblation Studyを行っている([radix]s[cardinality]x[width]d)。

それぞれのパラメータを増大させることで計算量の増大と引き換えに高い精度を達成しており、本モデルが精度と計算速などのうまいトレードオフを実現できていることがわかる。

image

ResNetベースのモデルと比較を行うと同程度のパラメータ数と計算量でより高い精度を達成できていることがわかる。

image

EfficientNetなどと精度とレイテンシの比較を1つのV100サーバーで実施した。本手法がEfficientNetよりもいいトレードオフを実現できている。

image

物体検知タスクでの精度を比較すると既存手法よりも大きく精度が向上していることがわかる。

image

インスタンスセグメンテーションタスクにおいても既存手法と精度の比較を行った。どのモデルにおいても本手法が既存モデルよりも高い精度を達成していることがわかる。

image

セマンティックセグメンテーションタスクにおいても既存手法と精度の比較を行った。どのモデルにおいても本手法が既存モデルよりも高い精度を達成していることがわかる。

image

5. 議論はあるか?

Depthwise畳み込みはGPU上では学習も推論も遅いので代替手段として有効

shimopino commented 4 years ago

チャンネルの導入

CVタスクでのBest Practice

shimopino commented 4 years ago

https://github.com/zhanghang1989/ResNeSt