深さ単位分離可能畳み込み (Depthwise Separable Convolution)

記事を共有する:

1. 深さ単位分離可能畳み込み (Depthwise Separable Convolution) とは [概要]

深さ単位分離可能畳み込み (Depthwise Separable Convolution) とは,一般的な2D畳み込み層のカーネル群による3D畳み込み処理を,その処理と等価な「深さ単位畳み込み(2D)」 →「点単位畳み込み(1D)」の2ステージ処理へと分離(separate)することで,計算を簡素化する畳み込み層である.チャンネル単位分離可能畳み込み (Channelwise Separable Convolution)とも呼ぶことがある

※ 管理人としては,「チャンネル単位畳み込み」で業界で統一してほしかった.Depthを使った名前だと,どのdepthのことを言っているか定まらない.Channel を用いたほうが,Channel 方向であると呼び名でからである.

重みパラメータ数も,順伝搬時の演算量も,軽量化することができる畳み込み層である.物体認識CNNバックボーンのXception において,各ブロックを計算コストパラメータ化する目的で,当初提案された.提案されて以降は,MobileNetを始めとしたエッジデバイスに搭載する目的の「軽量CNNバックボーン」の構築によく利用される (3.1節).また,広い受容野の計算が必要な「密な推定」タスク向けに,計算負荷を下げる目的でよく用いられる (3.2節).

2. [空間方向]と[チャンネル方向]への分離

深さ単位分離可能畳み込み (Depthwise Separable Convolution)
図1. 深さ単位分離可能畳み込み (Depthwise Separable Convolution)

深さ単位分離可能畳み込みにおける2つへの分離は,以下の仮定に基づいている:

空間方向の相関チャンネル方向の相関は,2つの層にそれぞれ分割して学習したほうが,計算が効率的になるうえに,画像認識精度も向上する畳みカーネル群を学習可能になってとても良い.

この仮定の元で,畳み込み層の処理を,以下の2つの順に処理を分割して,代替させた(図6):

処理手順

  1. 深さ方向畳み込み (=チャンネルごとの個別畳み込み) (図1 左側).
    • 各チャンネル内で空間方向に2D畳み込み
    • チャンネルごとに専用の(depthwise)フィルタを1枚ずつ用意し,空間方向に2D畳み込み
  2. 1 x 1 畳み込み:(図1 右側)
    • チャンネル間で1チャンネル方向に1D畳み込み
    • 特徴マップ上の各点 $(x,y)$ で,チャンネル方向に1 x 1 畳み込み

こうしてチャンネル内の(2D)畳み込みチャンネル間の(1D)畳み込みの2つの計算(およびカーネル)に,処理を独立に分離させることで,計算効率が向上した上に,CNNの表現力も向上した.

2.1 もう少し具体的に

深さ単位分離可能畳み込み(図1)では,基本型(2節)の畳み込みカーネルの [k × k] x Cのサイズを,

  • 前半:[k × k] x 1 (深さ単位畳み込み層)
  • 後半:[1 × 1] x C (点単位畳み込み層)

の前後半2層へと分離し,個別の畳み込み計算を行う.

前半の深さ単位畳み込みは,入力各1チャンネルに対して,1枚しか空間フィルタを用意しない,K枚ずつ畳み込む基本型(2.1節)からすると,かなり軽量な計算で済む.また,全体でも,各層のパラメータ数を([k x k] + C) へと削減できる.MobileNet v1の場合だと,基本型畳み込み層のように, k = 3 で [3 x 3]畳み込みを,2つへと分離する.

ただし2層に分離後も,後半の 1 x 1 畳み込み層側は,以前として全画素でKチャンネル畳み込む密な計算であり,まだ計算コストは高めではあった.それが,その後は,MobileNet v2や ShuffleNetなどで,1 x 1 畳み込み層側も,効率化・高速化されていくのだが,この記事では述べない.

3. 深さ単位分離可能畳み込みのもたらしたインパクト

3.1 「軽量CNNバックボーン化」の方向性を加速

MobileNetでも,深さ単位分離可能畳み込みが使用された.これにより,畳み込み層のパラメータ数を9分の1程度に落としながらも,物体認識性能を同等レベルに保持することに成功した.よって,スマートフォンや組み込みデバイス上でもDeep Neural Networkを活用できる可能性を初めて示し,CNN軽量化の路線にパラダイムシフトを起こした.よってMobileNet登場以後,こうした「軽量CNNバックボーン化」の方向性をフォローした研究が,大量に発生することになる

ちょうどこの当時の現状は,「物体認識や物体検出が精度できるようになった」という状況であった.そこで,この巨大なCNNを,なんとかスマホや組み込み環境などの「中規模エッジ計算装置上」でも使えるようにできていけないかと,各社考え出す時期であった.同時期に登場した,NAS (Neural Architecture Search)や,モデル蒸留なども,エッジデバイス向けの軽量CNN学習の目的で,流行っていくこととなった.

3.2 「密な推定問題」の各タスクへも波及

この当時は(2016~2017頃),出力画像の全部の画素で異なる値を出力をおこなう,密な推定問題(dense prediction task)」の研究も盛んになりはじめていた(セマンティックセグメンテーション人物姿勢推定など).また,深層生成モデルを用いた画像生成・画像対画像変換ネットワークが登場したことで,同じ枠組みで学習可能な,古典的なビジョン問題 (例えばステレオデプス推定,画像補間,超解像)などに対しても,分離可能畳み込みが使用されはじめた.

入力画像領域のクラスラベル「1つ」だけを主に出力するだけの物体認識物体検出と比べた際に,「密な推定問題」では,全画素で予測値を推定しないとならない.よって,各出力画素周辺での広いコンテキストの収集が,全出力座標位置で必要となる.まず,DeepLab v1,v2や DilatedNet (さらに,それらをベースラインとして用いたPSPNet)などにおける,膨張畳み込み層の使用などが,新たに登場していた.そんな中,DeepLab v3+ では,Xception のバックボーン構造にインスパイアされたかたちで,膨張畳み込みを,分離可能畳み込み化することを提案した.この DeepLab v3+ あたりの時期以降,密な推定タスクに特化した研究でも,分解可能畳み込みがよく研究されていく

paper with code の depthwise separable convolution のページで,使用論文一覧と,タスク割合の円グラフを見ていただくと,その広まり具合がわかりやすい

関連書籍

References

参照外部リンク