ResNeXtの論文を初心者向けに図解する

Yutaka_kun
LSC PSD
Published in
5 min readMay 14, 2020

ResNeXtはどのブログでも他のモデルと一緒にさらっと解説されているだけで、がっつり解説しているものがありませんでした。なので自分で論文を読んでまとめます。初心者向けに書いてますので、上級者の方には少々まどろっこしいと思います。参考になりましたら”拍手”の方をよろしくおねがします。

参照した論文は以下
Aggregated residual transformations for deep neural networks.

まずはざっくり説明

・ResNeXtは同じ形状のブロックの繰り返しで構成されている
・ブロックの深さと幅に加えて”cardinality”の要素が新たに追加された
・”cardinality”により複雑さを維持しながら精度が向上した

と論文は主張しています。

新要素”cardinality”ってなに??

cardinalityは和訳すると「基数」や「要素の数」といった意味合いがありますが、この記事ではわかりやすく”分岐数”ということにしておきましょう。

(左)基本構造(中央)ResNetのブロック構造(右)ResNeXtのブロック構造

ふむふむ、基本構造はResNetと同じようにベースとなるブロックを積み重ねていくイメージですね。(ResNetの構造がいまいち理解できていない方はこちらの記事を参考にしてください)
違う点は入力をいくつかに分岐させている点です。(上の図では32分岐)この分岐の数が”cardinality”でこの値は自分で設定できます。論文ではこの分岐は多い方が精度がいいと言ってます。任意の数に分岐し1×1、3×3、1×1のカーネルで畳み込んだ後、ResNetと同様にresidual(前の層の残り)が加算されます。

RresNeXtのキモ

ResNeXtのブロックが三つ並んでますが、これはどれも同じ意味です。
(a)(b)において1層目は256チャンネルの入力を32分岐して4チャンネルづつに分割した後1×1のカーネルで畳み込んでいます。しかし分岐しようがしまいが同じことです。(紙に手書きしてみればすぐわかります)
そしてこれは3層目にも同じことが言えるので、(a)(b)の1層目3層目は(c)の1層目3層目のように書くことができます。

2層目は各4チャンネルに対して3×3のカーネルで畳み込みを実施しています。パラメーター数は

4×3×3×4×32=4608

ResNetのResblock2層目(64チャネルの入力を3×3のカーネルで畳み込んで64チャンネルを出力する部分)のパラーメター数は

64×3×3×64=36864

となり、ResNeXtの方がパラメーター数が大幅に削減できていることがわかります。

ResNeXtブロックの2層目はkerasのSeparableConv2Dのイメージ

(※この関数は論文とは無関係です。イメージしやすかったので、、、)

SeparableConv2D(filters=128, kernel_size=(3, 3), strides=(1, 1), depth_multiplier=4)

SeparableConv2Dは入力チャンネルを任意の数に分割して任意のカーネルで畳み込んたあと、出力されたチャンネルを”連結”(加算ではない)してくれます。ちょうど(b)のイメージですね。
(SeparableConv2Dイメージがわかない人はこちら

depth_multiplier=4で4チャンネルずつに分割ができます。

精度はどんなもん??

ImageNet-1/ImageNet-5K,CIFAR-10/CIFAR-100,COCO object detection setを使って他のモデルとの精度を比較していますが、ResNeXtの精度の方が良いと言っています。(このあたりの細かいデータは論文の表を直接をみた方が早いです)

例えばResNet-50とResNeXt-50の比較において、ResNeXt-50の分岐を2分岐させるだけでResNetの精度を上回ります。4分岐8分岐32分岐と微増ですが徐々に精度が上がっていきます。

またResNet-200とResNeXt-101との精度もResNeXt-101の方が上です。
つまりResNeXt-101はResNet-200の半分の複雑性でResNet-200の精度を達成しているということですね。

あとはlossやら学習率、など実験の初期設定がつらつらと書かれて終わりです。(この辺も論文を直接見た方が早いです)

僕は最初論文を読んだ時、3つの図がどれも同じ意味ということが直感的にわかりませんでした。(この辺が直感的にわからない人は、もう一度チャンネルの畳み込みがどういうものなのかがっつり勉強した方がいいです)

一度理解してしまえばなんでこんな簡単なことがわからなかったんだろうと思うんですが、、、理解するまでが大変ですね、、、

では今回はこのへんで。

--

--

Yutaka_kun
LSC PSD
Editor for

Microbiology technician,Machine learning engineer(beginner)