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

1. デプス単位分離可能畳み込み とは [概要]

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

(※ 管理人としては,Chanel attentionと呼びかたが統一される意味で,「チャンネル単位畳み込み」で業界で統一してほしかったところである.Depthだと,どこの深さか多様性があるので一義に定まらない).

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

2. 「空間方向(チャンネルごと)の計算」と「チャンネル方向計算」への分離

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

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

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

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

  1. 深さ方向畳み込み(各チャンネル内で2Dの空間方向に畳み込み):チャンネルごとに専用の(depthwise)フィルタを1枚ずつ用意し,空間方向に畳み込む (図1 左側).
  2. 1 x 1 畳み込み:(チャンネル間で1Dのチャンネル方向に畳み込み):特徴マップ上の各点(x,y)で,チャンネル方向に畳み込む (図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の場合だと,基本型畳み込み層のように, k = 3 で [3 x 3]畳み込みを,2つへと分離).

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

3 デプス単位分離可能畳み込みのもたらしたインパクト

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

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

ちょうどこの当時は,「物体認識や物体検出が精度できるようになったので,この巨大なCNNを,なんとかスマホや組み込み環境などの,中スピード計算装置上でも,Deep Learningを使えるように今後できないか」という時期であった.同時期に登場した,NASや,モデル蒸留も,エッジデバイス向けの軽量CNN学習の目的で流行っていくこととなる.

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

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

入力画像領域のクラスラベル「1つ」を主に出力するだけの物体認識・物体検出と比べた際に,「密な推定問題」では,全画素で予測値を推定しないとならないので,各出力画素周辺で,それぞれ広いコンテキストの収集が必要となる.DeepLab v1,v2や,DilatedNet (+ それらをベースラインとして用いたPSPNet)などにおける,膨張畳み込みの使用などが登場していた頃である.

そんな中,DeepLab v3+ では,Xception の バックボーン構造にインスパイアされたかたちで,膨張畳み込みを,分離可能畳み込み化することを提案した.この DeepLab v3+ あたりの時期以降,密な推定タスクに特化した研究でも,分解可能畳み込みがよく研究されていく(paper with codeで使用論文一覧と,タスク割合の円グラフを見ていただくと,その広まり具合がわかりやすい)

関連記事

関連書籍

References

  • T.B.D.

参照外部リンク