パラメータ数を激減させる新しい畳み込み「MixConv」解説!
3つの要点
その1 パラメータ数を激減させる新しい畳み込みMixConvを提案
その2 MixConv層を含んだモデルをAIに自動生成(=NAS)させることでMixNetを開発
その3 MixNetはMobileNet-V3やMnasNetなどの小型画像認識モデルのみならずResNet-153に対してはパラメータ数1/9程度で性能を凌いだ
MixConv: Mixed Depthwise Convolutional Kernels
written by Mingxing Tan, Quoc V. Le
(Submitted on 22 Jul 2019 (v1), last revised 1 Dec 2019 (this version, v3))
Journal reference: BMVC 2019
Subjects: Computer Vision and Pattern Recognition (cs.CV); Machine Learning (cs.LG)
実装はTensorFlowとPyTorch(非公式)がGitHub上にあります。
導入
画像認識の分野は日進月歩で次々と新たなモデルが出てきています。2019年12月24日にGoogleから画像分類モデルBiTが発表されました。このモデルは多くのタスクでSoTAを達成したのですが、そのパラメータ数はなんと10億にも及ぶ巨大なモデルです。(拙著:解説記事)安定した高い精度で汎用的に使われるResNet-152(論文中ではResNet-153が比較対象として登場します。)も10億を誇るBiTの前ではもはや赤ちゃんです。そんな赤ちゃんResNet-152でもパラメータ数は6,000万もあり、実際のところモバイル機器にとっては大きすぎて使えません。サイズは小さくてかつ精度は高いモデルが欲しい、という贅沢な願いを叶えてくれるものこそが今回紹介する新しい畳み込みであるMixConvなのです。そしてこのMixConvを含めたNASによるモデルがMixNetです。
MixConvは、Depthwise Convolutionを理解すればとても簡単に理解できます。
本記事の構成は以下になります。
- MixConv解説
- MixNet解説
- 結論
1. MixConv
MixConvの前に通常のConvolutionとDepthwise Convolutionにさらっと触れてから、MixConvの説明に入ります。
1.1 通常のConvolution
Depthwise Convolutionに入る前に、まずは通常のConvolutionについておさらいしましょう。通常Convは以下の図で表せます。わかりやすさのためにチャネルと1枚目のフィルター、出力の対応関係を赤線で示しました。同様の対応関係が他のフィルターおよび出力に適用されます。
この時のパラメータ数は $C_{out}\cdot C_{in}\cdot (F_{width}\cdot F_{height})$ となります。上の図の例でいうと、入力チャネル数3で出力チャネルが4でフィルターの大きさが$3\times3$であるため、パラメータ数は単純に掛け合わせて$4\times3\times(3\times3)=108$ 個となります。
このように通常のConvではフィルター(図で言うと4つ)がそれぞれ入力チャネル数(3つ)だけフィルターを持っています。つまり、フィルターは全部で$C_{out}\times C_{in}$枚あることになりますが、ここで 各入力チャネルにフィルターは1枚ずつだけにしたらどうでしょうか。図で言うとフィルターの枚数は3枚だけになります。この考えこそが Depthwise Convolution になります。
1.2 Depthwise Convolution
単純に各チャネルにフィルターを1つだけにしたものです。そのためパラメータ数は$C_{in}\cdot (F_{width}\cdot F_{height})$ となり、通常のConvよりも $\frac{1}{C_{out}}$ 倍もパラメータ数が少なくなっています。
このDepthwise Conv.は実際にMobileNets(拙著解説記事)やMnasNet など小型かつ高精度を目的に作られたモデルたちに広く採用されています。
ここで通常のConvもDepthwise Convもフィルターの大きさは全て同じでした。ただし、フィルターの大きさが違えば獲得できる特徴量の大きさももちろん異なります。色々な大きさのフィルターを使えばより多様な特徴量を獲得できる という考えで作られたものが今回のMixConvです。
1.3 MixConv
MixConvとはつまり、チャネル(のグループ)ごとに異なる大きさのフィルターを使うようにしたDepthwise Conv です。ここでグループというのは入力チャネルに対して以下の図のようにグループ化することです。例えばチャネルを3つのグループに分けたら、グループ{1,2,3}に対してそれぞれ{3×3, 5×5, 7×7}のサイズのフィルターが適用されるということです。
MixConvにおいて、ハイパーパラメータとなるものは主に以下の3つ。
- グループの数: 入力チャネルを何グループに分けるか。
- グループごとのフィルターサイズ: 各グループで使うフィルターのサイズ。
- グループごとのチャネルサイズ: 各グループが何個チャネル持つか。
そして、論文中ではこれらのハイパーパラメータについて以下のように述べられています。
- MobileNetsに対しては4グループが良い。MixNetでは5グループ持つ層もある。
- グループ$i$のフィルターサイズは$2i+1$
- (1) 各グループ同じ数のチャネル を持つ、または (2) グループ$i$は全体のだいたい $2^{-i}$ の割合の数のチャネル を持つ。
Ex.)合計チャネル32で4グループ (1) {8,8,8,8} (2) {16,8,4,4} と分ける。
加えてDilated Conv.を使うかどうかという選択もあるのですが、Dilated Conv.の使用は大きいサイズのフィルターよりも基本的には精度が落ちることが実験で分かっています。
1.4 実験結果
MobileNetsのDepthwise Conv.をMixConvに変え、画像分類(ImageNet)及び物体検出(COCO)における精度を見てみます。
1.4.1 ImageNetの実験結果
MixConv(赤)とDepthwiseConv(青)を比べると、上の図のような結果になりました。
ここで、グラフのプロットの大きさはモデルの大きさ、つまり使用したフィルターサイズの大きさを示しており、例えば図左グラフにおける一番左のプロットは3×3フィルターのみを使用しています。左から二番目のプロットはそれぞれ{3×3,5×5}MixConv(赤)と5x5DepthwiseConv(青)を使用したモデルです。そのため一番右のプロットはそれぞれ{3×3,5×5,7×7,9×9,11×11,13×13}MixConv(赤)と13x13DepthwiseConv(青)を表していることがわかります。
この図から言えることは次の2つです。
- MixConvは低いFLOPS数で高い精度を叩き出す。
- MixConvはフィルターサイズが大きくなっても精度が落ちない。
1.4.2 COCOの実験結果
上の表でmixconv357とは{3×3,5×5,7×7}の3グループMixConvということです。
DepthwiseConvと比べてMixConvが少ないパラメータ数とFLOPS数で高い精度を叩き出していることがわかります。
2.MixNet
ここからはMixConvを用いた、MixNetについて解説していきます。
2.1 アーキテクチャ
Neural Architecture Search(=NAS)によって最適なモデルのアーキテクチャを探します。NASとは強化学習などを用いてアーキテクチャを自動的に探索させる方法です。探索空間はMobileNetV2をベースとしたMnasNetやFBNetと同じような設定にし、そこにMixConvも入れ込んで探索させました。ちなみに、MixConvにおいて各グループは大体同じくらいのチャネル数になるようにしています。こうして、NASによるMixNet-SとMの2つ と、MixNet-Mの各層のチャネル数を単純に1.3倍したMixNet-L の計3つのモデルを考案しています。
この図からわかることは、MixNetは前半部分では小さいMixConvを使って計算コストを抑え、後半部分では大きいMixConvを使う ことで高い精度を保っているということです。色々なサイズのMixConvをうまく使いわけていますね。
2.2 実験結果
上表はMixNetに加えて小型高性能ConvNetsたち(<600M FLOPS)のパラメータ数やFLOPS数およびImageNetに対する精度を示しています。ここでTypeカラムは人が考えたモデルであればmanualでNASによって得られたモデルであればautoとなっています。combinedはどちらも使っているモデルのことです。また、小型ではないですがResNet-153も比較対象として入れています。この表を見るとMixNetの凄さがわかりますが、ポイントをまとめると以下の3つ のことが言えます。
1. どの小型ConvNetsよりもMixNetが一番良い。
2. ImageNetタスクにおいてMixNet-Lは小型ConvNetsのSoTA(78.9 %)を達成。
3. MixNet-MはResNet-153の $\boldsymbol{\frac{1}{12}}$ のパラメータ数で同じ精度 を叩き出している。
これを横軸FLOPS数、縦軸Accにしたグラフにプロット(下図)すると、視覚的にもMixNet(赤)が優れていることがわかりますね。
論文の筆者はさらにMixNetでの転移学習についても実験しています。事前学習としてImageNetを使い、サブタスクとしてCIFAR10/100, Oxford-IIIT Pets, Food-101の4つのデータセットで評価をしています。結果は以下のグラフで、MixNet(赤)のFLOPS数が低くかつ精度が高い ことがわかります。特に、CIFAR-10においてはResNet-50と比べて11.4倍も効率的に1%の精度向上を達成しています。すごいです。
3. 結論
Depthwise Convolutionに様々なサイズのフィルターを使わせることで精度向上を達成させたMixConvは、既存の小型モデルに対しても有用なだけでなく、MixConvをフル活用したMixNetは小型モデルたちのSoTAを達成するほど高い有用性があることがわかりました。MixNetはTensorFlowとPyTorch(非公式)で実装されているので、今使っている画像分類モデルをもっと小さくしたいという方は試してみるのはいかがでしょうか!
この記事に関するカテゴリー