Sleep like a pillow

Deep Learning関係の話。

MixConv: Mixed Depthwise Convolutional Kernels

arxiv.org

どんなもの?

  • Depthwise Convolutionは近年の軽量なCNNでよく使われているが、カーネルサイズについては深く議論されていない。
  • 本論文では、異なるカーネルサイズ(3x3以外も)を用いることによる影響を体系的に調査し、複数のカーネルサイズを組み合わせて使用することで精度と計算効率の両方が向上することを発見した。
  • この発見に基づいてmixed depthwise convolution (MixConv)を提案。
  • MobileNetのdepthwise convolutionをMixConvに置き換えることで、分類タスクと物体検出タスクの両方で精度と計算効率が向上した。
  • さらに、MixConvを組み込んだアーキテクチャであるMixNetsをAutoMLで探索。MixNet-LがImageNetで近年の軽量なCNNの中ではSOTAな精度の78.9%(top1-acc)を示した。

技術や手法のキモ

MixConv Feature Map

  • MixConvの構造は以下の通り。 f:id:uiiurz1:20190812182254j:plain
  • 入力マップをチャネル方向で分割して異なるカーネルサイズのdepthwise convolutionをかけ、それぞれをチャネル方向でconcatしたものを出力マップとする。
  • tensorflow実装は以下のようになる。 f:id:uiiurz1:20190812100506p:plain

MixConv Design Choices

Group Size  g

  • 入力マップを g分割して g種類のカーネルサイズを使用するというパラメータ。
  •  g=1のときは通常のdepthwise convolutionと同じになる。
  • MobileNetについては g=4が良かったが、アーキテクチャを探索する際にはより多様な範囲を探索するために1~5とした。

Kernel Size Per Group

  • 理論上は各グループのカーネルサイズは任意であるが、2つのグループが同じカーネルサイズなのは意味がないので、各グループは異なるカーネルサイズであるという制約を設けた。
  • さらに、カーネルサイズが小さいほどパラメータ数とFLOPSが小さいため、各グループのカーネルサイズは 3 \times 3から始まり \times 2ずつ増加していくという制約を設けた。言い換えると i番目のグループのカーネルサイズは 2i + 1
  • 例えば、4-group MixConvの各グループのカーネルサイズは \left\{3 \times 3, 5 \times 5, 7 \times 7, 9 \times 9 \right\}

Channel Size Per Group

  • 各グループのチャネルの分割について2つの方式を考えた。
  • (1) Equal partition: 各グループのチャネル数は同じ。
  • (2) Exponential partition:  i番目のグループのチャネル数は全チャネルのおよそ 2^{-i}
  • 例えば、チャネル数が32の4-group MixConvの各グループのチャネル数は、equal partitionだと (8, 8, 8, 8)で、exponential partitionだと (16, 8, 4, 4)

Dilated Convolution

  • カーネルサイズを大きくする代わりにDilated Convolutionが良く使われるが、実験ではdilatedではない方が精度が良かった。

MixConv Performance on MobileNets

ImageNet Classification Performance

  • MobileNetについて、ただ単にdepthwise convolutionのカーネルサイズを大きくした場合と、MixConvを使った場合とでImageNetを用いて性能を比較した。
  • 結果は以下のようになった。 f:id:uiiurz1:20190812182213j:plain
  • (1) MixConvの方がパラメータとFLOPSが少なく、精度も同等以上だった。→MixConvは精度と計算効率を向上させる。
  • (2) depthwise convolutionのカーネルサイズを大きくしていくとある程度の大きさから精度が低下したが、MixConvではそのようなことはなかったため、MixConvはカーネルサイズの大きさによる影響を受けにくいと言える。→MixConvは大きなカーネルサイズを用いる場合により安定した精度を得ることができる。

COCO Detection Performance

f:id:uiiurz1:20190812182500j:plain - COCOでもMixConvの方が性能が良かった。

Ablation Study

MixConv for Single Layer

  • MobileNetV2の15のdepthwise convレイヤのうち一つを、カーネルサイズが 9 \times 9のDepthwiseConv9x9、もしくは \left\{3 \times 3, 5 \times 5, 7 \times 7, 9 \times 9 \right\}カーネルを持つMixConv3579に置き換えたときのレイヤごとの性能比較を行った。結果は以下の通り。 f:id:uiiurz1:20190812221253j:plain
  • ほとんどのレイヤで大きな精度の違いは見られないが、ストライドが2のレイヤについては精度が大きく向上している。
  • MixConv3579のパラメータとFLOPSはDepthwiseConv9x9の半分であるにもかかわらず、多くのレイヤでDepthwiseConv9x9と同じかわずかに良い性能を示している。

Channel Partition Methods

  • 2つのチャネル分割の方式であるequal partition (MixConv)とexponential partition (MixConv+exp)を比較した。結果は以下の通り。 f:id:uiiurz1:20190812222953j:plain
  • exponential partitionはより多くのチャネルが小さなサイズのカーネルに割り当てられるため、予想通り、より少ないパラメータとFLOPSになっている。
  • MobileNetV1についてはexponential partitionの方がわずかに性能が良いが、V1とV2の両方を見るとどちらが優れているか明確に判断できない。
  • exponential partitionの制約として、大きなカーネルが十分に高解像度のパターンを十分に捉えられない可能性がある。

Dilated Convolution

  • dilated convolutionについても比較。結果はChannel Partition Methodsの図参照。
  • dilated convolutionはカーネルサイズが小さいときには妥当な性能であるが、カーネルサイズが大きくなると精度が急激に低下している。
  • 仮説としては、大きなサイズのカーネルのdilation rateが大きいと、多くの局所的な情報をスキップしてしまうため、精度に悪影響を与えていると考えられる。

MixNet

  • アーキテクチャの探索によって得られたMixNetの構造は以下の通り。
  • f:id:uiiurz1:20190813070952j:plain
  • MixNet-S, M, Lがあり、MixNet-LはMixNet-Mのdepth multiplierを1.3にしたもの。
  • 最初の方のレイヤは特徴マップのスケールが大きいため、カーネルサイズを小さくすることで計算コストを抑えており、一方で後ろの方のレイヤではカーネルサイズを大きくすることで精度を向上させている。

有効性の検証

  • ImageNetでの性能を比較したものが以下の表。 f:id:uiiurz1:20190813072156j:plain
  • 精度と計算効率の両方でSOTA。
  • MixNet-MはResNet-152と同等のtop-1 accだが、パラメータ数は1/12、FLOPSは1/31小さい。

所感

  • MixNetはMobileNetと比較するとチャネル数が全体的に小さい。MixConvを使うことでチャネル数が小さくても十分な特徴表現を獲得できるということなのか。