医療系AIエンジニアの技術メモ

ディープラーニング(主に画像系)の技術メモブログです

Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution

スポンサーリンク


f:id:y_kurashina:20190427232332j:plain
Fig1. Octave Convolution Layerの概念図

論文URL

https://arxiv.org/pdf/1904.05049.pdf

2019年4月公開

ポイント

  • 畳み込み層に代わるOctave Convolution (OctConv)層をFacebook AIが提案
    • 特徴量マップを空間上の高周波成分と低周波成分に分け、低周波成分を低解像度化しておくことで、メモリ使用量と計算コストを削減
      • パラメータ数は通常の畳み込み層と変わらないことに注意
    • 畳み込み層をOctConv層に入れ替えるだけで、どんなモデルでも1%程度精度が改善

OctConv

  • 特徴量マップのチャンネルを空間上の高周波成分の特徴を持つチャンネルと低周波成分の特徴を持つチャンネルに分ける。(Fig1(b))
    • 低周波成分チャンネルの空間解像度をaverage poolingで半分に落とす(Fig1(c))
    • 低周波成分割合\alphaはハイパーパラメータ
    • 最初のOctConv層:\alpha _ {in} =0\alpha _ {out} = \alpha
      • \alpha _ {in} =0とは、入力特徴マップの全チャンネルに高周波成分が混ざっていることを意味する
    • 中間層:\alpha _ {in} = \alpha _ {out} = \alpha
      • 本論文では、\alphaは全層共通
    • 最後のOctConv層:\alpha _ {in} = \alpha\alpha _ {out} =0
      • \alpha _ {out} =0とすることで、解像度半分の低周波成分保持成分が無くなり、全特徴が通常の畳み込み層と同じ形式で出力される
  • 高周波&低周波チャンネルに以下の演算を行う(Fig2)
    1. 高周波成分から高周波成分への畳み込み (Fig2. 上の緑線)
    2. 低周波成分から低周波成分への畳み込み (Fig2. 下の緑線)
    3. 高周波成分から低周波成分への畳み込み (Fig2. 上の赤線)
      • average poolingで空間解像度をそろえる
    4. 低周波成分から高周波成分への畳み込み (Fig2. 下の赤線)
      • 最近隣内挿でアップサンプリング
    5. 高周波成分(1と4)と低周波成分(2と3)をそれぞれsum

f:id:y_kurashina:20190427231438j:plain
Fig2. Octave Convolution Layer

通常の畳み込み層に対する低周波成分\alpha毎のFLOP数とメモリ使用量割合

f:id:y_kurashina:20190427235658j:plain

低周波成分\alphaおよび各種モデルでのImageNet Top1 accuracy

  • いずれのモデルも\alpha=0.125もしくは0.25で最高性能となっている

f:id:y_kurashina:20190428000019j:plain