精度を維持したままパラメータ数を大幅に削減「GhostNet」

精度を維持したままパラメータ数を大幅に削減「GhostNet」

3つの要点

✔️特徴マップの冗長性に着目し、単純な処理によりモデルを軽量化

✔️精度を維持したままモデルの軽量化、高速推論を実現した

✔️GhostNetはMobileNetV3などの最新の効率的なモデルを推論速度と精度の両面で上回っている

GhostNet: More Features from Cheap Operations

written by Kai Han, Yunhe Wang, Qi Tian, Jianyuan Guo, Chunjing Xu, Chang Xu

(Submitted on 27 Nov 2019)

subjects : Computer Vision and Pattern Recognition (cs.CV)

本論文の実装はこちら(TensorFlow)こちら(PyTorch)にあります。

1.導入

近年のCNNの発展により、画像分類において機械学習は人間を超える性能を発揮しています。
その一方、モデルのパラメータ数は増えており、スマートフォンや自動運転車などのメモリと計算リソースが限られている組み込みデバイスには不向きです。
今回紹介するGhostNetは非常に効率のいいモデルであり、モバイルデバイスでの高速推論を可能にしています。

この論文のキーワードは特徴マップの冗長性です。
下の画像はResNet-50によって生成された特徴マップです。これは類似したペアが多数存在しており、冗長性を持っていることが確認できます。(論文ではこれらのペアを互いに”ゴースト(Ghost)”と呼んでいます)

筆者はこの特徴マップの冗長性は高精度のCNNのために重要な特性であると主張しています。
そこで、この冗長な特徴マップを削除するのではなく、少数の特徴マップに単純な線形変換を施し、特徴マップを生成することで畳み込みのフィルター数を減らし、モデルを軽量化するということが本論文で提案されている手法です。

この手法を用いて本論文では既存のCNNモデルに統合できるGhostモジュールとそれを活用したGhostNetが提案されています。Ghostモジュールは元のCNNモデルの精度を維持しつつ2倍の速度で推論をすることに成功しており、GhostNetはMobileNetV3などの最新の高効率なモデルを上回る性能を発揮しています。

2.Ghostモジュール

Ghostモジュールでは畳み込みを二段階に分けて行われます。従来の畳み込み層によりn個の特徴マップを得る処理をGhostモジュールに置き換えたときの処理の流れは以下のようになっています。

① 畳み込みを適用し、m個の特徴マップを取得する
② m個の特徴マップそれぞれに線形変換を施す
③ ①の出力と②の出力を連結することでn(=s・m)個の特徴マップを取得する


このGhostモジュールを適用したモデルは理論的にはサイズはs倍軽量になり、推論はs倍高速になります。

ここで”線形変換”について言及します。Ghostモジュールでは特徴マップを生成するための単純な処理としてアフィン変換やウェーブレット変換など様々な手法を用いることができます。しかし、不規則なモジュールはコンピュータユニットの効率を悪くするため、変換手法は固定させたほうが良いと筆者は主張しています。
そこで変換手法としてdw畳み込みを用いることを筆者は勧めており、公式実装でもこれが使われています。

このGhostモジュールは既存のCNNモデルに簡単に適用でき、精度を維持しつつモデルサイズの圧縮、推論の高速化が期待できます。

3.GhostNet

Ghostモジュールに基づき効率的なCNNモデル、GhostNetを確立します。まず、Ghostモジュールを活用して、ボトルネック(G-bneck)を作成します。
ボトルネックの構造は以下のようになっており、ストライド幅によりdw畳み込みが適用されます。
また、ResBlockのようにショートカットが適用されています。

GhostNetの全体の構造は以下の表のようになっています。GhostNetはMobileNetV3を参考に作成されており、比較すると構造がかなり似ていることが確認できます。ただ、活性化関数としてMobileNetV3はSwishを一部で採用していますが、GhostNetはモデルをより軽量にするためにReLUのみを使用しています。

4.実験結果

4.1 Ghostモジュールの有効性

ResNet56、VGG16にGhostモジュールを埋め込み、CIFAR-10データセットで実験を行います。
実験結果が以下の表です。

理論通り、モデルは1/2倍に圧縮されており、推論は2倍高速になっていますが、精度はほとんど低下しておらず、VGG16の場合は逆に向上しています。
これはVGG16が特に冗長性があることを示しています。ここでVGG16とGhost-VGG16の特徴マップを比較してみます。

上がGhost-VGG16の特徴マップ、下がVGG16の特徴マップです。なお、赤枠が通常の畳み込みにより生成された特徴マップ、緑枠が赤枠の特徴マップにdw畳み込み処理をして得られた特徴マップです。VGG16とGhost-VGG16を比較すると特徴マップが上手く生成されていることが確認できます。

4.2 GhostNetの有効性

ImageNetデータセットでGhostNetの有効性を検証します。結果を以下の図に示します。


GhostNetはMobileNetやFBNetなどの最新の高効率なモデルと比べても、精度とFLOPs数の高いトレードオフを示しています。

4.3 backboneとしての有効性

backboneとしてのGhostNetの性能を検証するために、MS COCOデータセットで物体検出の実験を行います。
Faster R-CNNとRetinaNetの二つのフレームワークにおいて、MobileNetV2,3と比較検討されます。
結果が以下の表です。

GhostNetをbackboneとして使用した時、MobileNetをbackboneとして使用した場合に比べ、大幅に低い計算コストでほぼ同等のmAPを実現できています。

5.結論

Ghostモジュールを用いることで畳み込み層のフィルター数を減らし、精度を維持したまま、モデルの軽量化を実現しました。
さらに、Goshtモジュールを使用して構築されたGhostNetは推論速度と精度の両方で最先端の効率的なモデルよりも優れています。

この記事をシェアする