ResNeXt: 残差ブロックのワイド化によるResNet改善版

1. ResNeXtとは [概要]

ResNeXt とは,ResNetの残差ブロックをワイド化したResNet改良版である[Xie et al., 2017] .当時様々なチームが研究していた流行の研究テーマである「経路を並列に増やしワイドな構造にすれば,更にCNNの性能向上が期待できる(例:WideResNetなど [Zagoruyko and Komodakis, 2016] )」という方向性を,既にワイド化していたInceptionブロックから着想を得たかたちで,ResNetの残差ブロック内に導入したのがResNeXtといえる.また,複数経路化にともなう計算増化分を効率化するために,AlexNetグループ化畳み込み(Grouped convolution) [Krizhevsky et al,. 2012] を導入している.

この記事ではResNeXtについて,その中心部品であるResNeXtブロックを中心にみていく.

ResNeXtは,元のResNetと同じくらい,物体画像識別以外の様々な別タスクでも,CNNバックボーンとして採用されることになり,重要なアーキテクチャである.当時著者らのチームが発表した インスタンスセグメンテーション向けのMask R-CNN [He et al., 2017] においても,ResNeXtをバックボーンに用いた実験でその良さが実証された影響で,インスタンスセグメンテーションだけでなく,他のタスクでもResNeXt が頻繁に使用されることになる.物体検出でも, 非DETR路線の主要手法においては,ResNeXtがCNNバックボーンとして重宝されつづけている(例:FCOS, ATSS, OTAなど).

2. ResNeXt の詳細

ResNext [Xie et al., 2017] は,ResNetの著者ら研究グループによる,ResNetのセルフ改善版である.ブロック内のボトルネックに,グループ化畳み込み(Grouped convolution) [Krizhevsky et al,. 2012] を代わりに使用することで,ResNetからの精度向上を達成した.

つまり,全体の深さや全体の幅を増やさずに,残差ブロック単位で,その中のグループ分割数を増やすだけで,計算効率性をモデル精度を向上したResNetの発展型の1つである.

WideResNet [Zagoruyko and Komodakis, 2016]など,ResNet登場直後の2016年当時流行していた「ResNetのワイド化」の1提案がResNeXtであるのだが,他の同時期の提案と異なる特徴は「ブロック内で32経路にワイド化した上,それらをグループ化畳み込みに等価変換して1経路にまとめた」という点である.

2.1 ResNextの残差ブロック:複数経路化

ResNeXtの残差ブロック(基本構造)
図1. ResNeXtの残差ブロック(基本構造).

InceptionNet [Szegedy et al., 2015] のInceptionブロックで精度向上の実績が出ていた「分岐-変換-結合(split-transform-merge)」の仕組みを,ResNetの残差ブロックにも導入したいと著者らは考えた.

しかし,InceptionNetシリーズのInceptionブロックは,それぞれ研究者が手作りで設計した複雑な(各経路でカーネルサイズが異なる)ブロック構造により複数経路に分岐させており,アレンジが効かない問題があった.ResNextの著者陣としては「より簡単な構造の複数経路化(ワイド化)」で高精度を達成化することで,より汎用性が高いCNNバックボーンを設計したい,というのがResNeXt提案の動機であった.

そこで,ResNetの残差経路側を,まずは32本の「ボトルネックを複数経路に並べる」というシンプルなブロック構造に,変更することを考えた.著者らは,分割する経路数(グループ数)$G = 32$のことを(数学用語の)濃度(Cardinality)と論文中では呼んでいる(要は,残差ブロックを32経路の変換で並列化した際に,その変換集合の濃度が32であると言っている.)

そこで,「分岐-変換-結合」型の残差ブロックを,基本構造としてまず提案した (図1).元の入力256-64-256チャンネルの出力特徴マップになるボトルネックを,「256-4-256チャンネル出力」の特徴マップ× 32経路 (= 32濃度) 」に(1)分割してワイド化する.そして32経路において,同一のボトルネック構造で個々に畳み込む(2)変換 .それらから出力された32個の特徴マップを再度 (3) 結合するという,ブロックのワイド化設計である.

2.2 残差ブロックのグループ畳み込み化

ResNeXt用の残差ブロックへの等価変換
図2. ResNeXt用の残差ブロックへの等価変換.
(a) 32経路を,チャンネル方向に結合した 「図1の等価表現」
(b) ResNeXt で,最終的に用いられる完成版の「残差ブロック」

2.1節の複数経路化(ワイド化)した残差ブロックでも,精度は向上する.しかし,32経路も並列化するので計算こすとは高くなっているので,できれば画像認識精度は保持しながらも,もう少しネットワーク構造の効率化を行いたい.

そこで著者らは,グループ化畳み込み [Krizhevsky et al,. 2012] を利用し,図1の残差ブロックを,計算効率化された等価なグループ化畳み込みモジュールに変換し,32パス → 1パスで [256 – 128 – 256] のボトルネックに変更することを提案した (図2-(b)).

まず図2-(a)は, 図1の残差ブロックを,早期結合(32経路 x 4チャンネル = 128チャンネル)に変更した,等価残差ブロックの図である.これでも少し良くなっているが,

そして図2-(b)は,図2-(a)の128チャンネル出力のところを,32グループのグループ化畳み込み(各4チャンネル)へ変更することより等価変換した,ResNeXtの残差ブロックの完成形である,これは 論文中の ResNext-101層 (32 x 4d) モデルに相当している.

Inceptionの分割した各経路ではバラバラなサイズの畳み込み層を用いていた.それに対してResNeXtでは,32チャンネル全てを,同じボトルネックに統一して畳み込みを行うことにした.これにより,元の32経路に相当する「32グループでのグループ化畳み込み」へ等価変換することが可能となった.

3. ResNeXt のまとめ

ResNextは,ResNeXtの「残差ブロック内の効率的ワイド化」による改善版であった.WideResNetやInception-ResNetと並んで,ResNext改善版として直後に登場したうちの1つである.つまりは,深さを増やさなくても「残差ブロックを複数パスにしワイド化するだけで,更に性能向上することが確認できた」というResNetの発展型である.具体的には,InceptionNet の[分岐-変換-結合]のアイデアを,よりシンプルに「同じモジュールで複数経路化」し,更にそれを「グループ化畳み込み層に差し替える」ことで,高精度で汎用性も高くなったResNet系バックボーン(もとい単純な方法でワイド化したブロック)を提案できた.

またResNeXtは,著者らが同じFacebookラボの成果である Mask R-CNN [He et al., 2017]と連動して提案されたこともポイントである.このおかげで,ResNeXt はその後,人気の定番CNNバックボーンとなった.

関連書籍

References

  • [He et al., 2016a] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016
  • [He et al., 2017] He, K., Gkioxari, G., Dolla ́r, P., Girshick, R.: Mask r-cnn. In ICCV, 2017.
  • [Xie et al., 2017] Xie,S., Girshick, R., Dollar,P. , Tu,Z., He,K. Aggregated residual transformations for deep neural networks. In CVPR, 2017.
  • [Zagoruyko and Komodakis, 2016] Sergey Zagoruyko and Nikos Komodakis. Wide residual networks. In BMVC, 2016.

参照外部リンク

  • https://medium.datadriveninvestor.com/resnext-explained-part-1-17a6b510fb0a