1行定義
Depthwise Separable Convolutionとは、畳み込みをチャネルごとの畳み込みと1×1の畳み込みに分け、計算量を減らす手法のことです。
くわしく
Depthwise Separable Convolutionは、畳み込み層の計算を軽くするための工夫です。スマートフォン向けのMobileNetや、Inceptionモジュールを発展させたXceptionなどで使われています。
通常の畳み込みがしていること
複数のチャネルがある入力に対して、通常の畳み込みは、縦・横・チャネルの3方向にまたがるフィルタを使います。「空間方向の模様を見ること」と「チャネルどうしの情報を混ぜること」を、1回の計算で同時に行います。フィルタの大きさをK×K、入力チャネル数をM、出力チャネル数をNとすると、パラメータ数はK×K×M×Nです。
2段階に分ける
Depthwise Separable Convolutionは、この2つの仕事を別々の層に分けます。
- Depthwise畳み込み:入力のチャネルごとに、K×Kのフィルタを1枚ずつ当てます。空間方向の模様だけを見て、チャネルどうしは混ぜません。パラメータ数は
K×K×Mです。 - Pointwise畳み込み:1×1の畳み込みで、各位置のチャネルの値を混ぜ合わせ、N個の出力チャネルを作ります。パラメータ数は
M×Nです。
たとえばK=3、M=32、N=64なら、通常の畳み込みは18,432個です。分けると288+2,048=2,336個になり、約8分の1に減ります。計算量も同じ割合で減ります。
注意点
分けると、通常の畳み込みが表せる計算の一部しか表せなくなります。それでもMobileNetの論文では、精度の低下はわずかだと報告されています。同じ項目で学ぶDilated Convolutionは、フィルタの要素の間隔をあけ、パラメータを増やさずに受容野を広げる手法です。計算量を減らすための手法ではありません。
覚え方
「まずチャネルごとに見る(Depthwise)、次にチャネルを混ぜる(Pointwise)」と覚えます。
G検定での出題
出題のされ方
通常の畳み込みをDepthwise畳み込みとPointwise畳み込みに分ける仕組み、パラメータ数の計算、MobileNetなどの軽量なモデルで使われることが問われます。Dilated Convolutionとの区別も問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| Depthwise Separable Convolutionこのページの用語 | 畳み込みをチャネルごとの畳み込みと1×1の畳み込みに分け、計算量を減らす手法 |
| Dilated Convolution | フィルタの要素の間に間隔を空けて入力に適用することで、パラメータ数を増やさずに受容野を広げる畳み込み |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
フィルタが3×3で出力チャネル数が十分に多いとき、Depthwise Separable Convolutionの計算量は、通常の畳み込みのおよそ8〜9分の1になる。
答えを見る
答え ◯ 正しい
計算量の比は`1/N + 1/9`です(Nは出力チャネル数)。Nが大きいほど1/9に近づきます。MobileNetの論文でも、8〜9分の1と説明されています。
-
Depthwise Separable Convolutionは、通常の畳み込みとまったく同じ計算結果を、少ない計算量で再現する手法である。
答えを見る
答え × 誤り
表せる計算の範囲を絞ることで、計算量を減らしています。一般には通常の畳み込みと同じ結果にならず、精度がわずかに下がる場合があります。
-
通常の畳み込みをDepthwise Separable Convolutionに置き換えると、出力される特徴マップの縦横のサイズは必ず小さくなる。
答えを見る
答え × 誤り
縦横のサイズは、ストライドとパディングで決まります。置き換えで減るのはパラメータ数と計算量で、縦横のサイズを保ったまま置き換えることもできます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目18 畳み込み層)
- Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam, MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, arXiv:1704.04861 (2017) (3.1 Depthwise Separable Convolution)
- François Chollet, Xception: Deep Learning with Depthwise Separable Convolutions, arXiv:1610.02357 (2016)