ある設備保守会社が、作業員のスマートフォン上で配管のさびの画像を分類するCNNを動かしたい。端末の計算資源が限られるため、精度を大きく落とさずに、畳み込み層のパラメータ数と計算量を減らしたい。この目的に合う工夫として、最も適切なものを1つ選べ。
正解と解説を見る
解説
正解 A
この問題の論点:畳み込み層の軽量化
ポイント
畳み込みをチャネルごとの空間方向の計算と1×1の畳み込みに分けると、少ないパラメータと計算量で済みます。
選択肢ごとの解説
- A
適切 正解
通常の畳み込みは空間方向とチャネル方向を一度に計算します。これをチャネルごとの空間方向の畳み込みと、チャネルを混ぜる1×1の畳み込みに分けると、3×3のフィルタでは計算量がおよそ8〜9分の1になります。MobileNetで採用された工夫です。
- B
不適切
Dilated Convolutionは間隔を空けて広い範囲を見る手法です。3×3のフィルタなら、間隔を広げても入出力チャネルの組ごとの重みは9個のままで、1層あたりのパラメータ数は減りません。主な目的は受容野を広げることです。
- C
不適切
全結合層は入力と出力のすべての組み合わせに重みを持つため、画像ではパラメータ数が大きく増えます。小さなフィルタを使い回す畳み込み層より重くなるため、層の数を減らしても軽量化の目的に反します。
- D
不適切
フィルタの枚数(出力チャネル数)を増やすと、その層のパラメータ数と計算量は枚数に比例して増えます。次の層の入力チャネル数も増えるため、全体はさらに重くなります。
補足
入力チャネル数M、出力チャネル数N、フィルタサイズK×Kのとき、通常の畳み込みの重みはK×K×M×N個です。Depthwise Separable Convolutionでは、チャネルごとのK×Kの畳み込み(K×K×M個)と1×1の畳み込み(M×N個)の合計で済みます。たとえばK=3、M=N=64なら、36,864個が576+4,096=4,672個になり、約8分の1です。
試験での狙われ方
モバイル端末向けの軽量化という場面を示し、Depthwise Separable ConvolutionやMobileNetを選ばせる形が典型です。