55
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【精度対決】MobileNet V3 vs V2

Last updated at Posted at 2019-07-24

皆さん、エッジAIを使っていますか?

エッジAIといえば、MobileNet V2ですよね。
先日、後継機となるMobileNet V3論文発表されました。

世界中のエンジニアが、MobileNet V3のベンチマークを既に行っていますが、
自分でもベンチマークをしたくなりました。

本稿では、MobileNet V3のベンチマークをKerasで行いたいと思います。
image.png
(図は論文より引用)
コード全体はGithubで公開しています。

#設定

##MobileNet V3

  • コードはこちらから拝借しています。
  • 重みは初期化された状態で学習します。
  • V3にはsmalllargeがありますが、ラズパイのCPUで動かすことを想定してsmallを採用しました。
  • $\alpha$の値によって、モデルサイズが変動します。$\alpha$は大きいほど精度が出ますが、速度は遅くなります。

##MobileNet V2

  • KerasにはV2が標準装備されており、これを使います。
  • 重みは学習済が用意されていますが、V3と同じく初期化された状態で学習します。
  • $\alpha$はV3と同じ仕様です。

##その他

  • データセットはcifar-10を使用します。
  • 実験はColaboratory(GPU)で実施しました。
  • バッチサイズは1024、エポックは100、最適化手法はAdam(lr=0.001)、DataAugmentationを使用。

#結果
##精度の比較
早速、気になる精度を見てみましょう。
下の図は各モデルを10回学習させたときの精度の結果です。

image.png

V2に対し、V3は精度も良く、ばらつきも少ないです。
V3の推論時間が速ければ、V3を使った方が良さそうです。

##推論時間の比較

Colaboratoryで1000回実行して中央値などを取り出そうとしましたが、Colaboratoryに
クセがあるのか、実行する度に計測時間が変動しました。(メモリや使用時間の影響?)

ただし、相対的な推論時間の関係は崩れなかったので、相対比較はある程度信用できそうです。
下の図は、各モデルを1000回実行させたときの推論時間の平均値です。

image.png

推論時間の数値は信用しないでください。
※()の値は$\alpha$の数値です。

きれいな右肩上がりになっており、V2(0.5)とV2(1)の差が大きい印象です。
また、$V2(1)\fallingdotseq V3(0.2)$となっていて、精度を考慮するとV3(0.2)を
採用する方が良いようです。

表にまとめます。

速度 精度
V2(0.5) 速い 悪い
V3 small(0.2)
V3 small(0.5) 遅い 良い

今のところ、V2(0.5)の代替品はV3で存在しないようです。

##学習時間の比較
前述のとおり、実行する度に計測時間が変わったため、ここでは計測できませんでした。
ただ、V2とV3でそこまで学習時間の差は生まれない印象です。

##重みのサイズの比較

$\alpha$ 重みのサイズ(MB)
MobileNet V2 0.5 3.3
MobileNet V2 1 9.5
MobileNet V3 small 0.2 11.3
MobileNet V3 small 0.5 11.7

V2の方が圧倒的に軽い結果となりました。
また、V3の重みのサイズは、$\alpha$にあまり依存しないようです。

#転移学習について
実際に使うことを考えると、モデルをゼロから学習させることは稀だと思います。
通常は転移学習を使いますが、今のところ、Kerasで学習済の重み(V3)は公開され
ていません。しかし、Pytorchでは公開されています。

PytorchモデルをKerasやTensorFlow liteモデルへ変換する方法は、
以下の記事が参考になると思います。

皆さんも、どんどん転移学習しましょう。

#ラズパイで実行してみた
ラズパイでリアルタイム認識をしてみました。
コードはこちら

  • 使用機器:Raspberry Pi3 model B
  • 外付けGPU:未使用
  • V3 smallの$\alpha=0.2$
  • 入力画像サイズ:32 x 32 x 3

33tby-1m4wl.gif

だいたい15~20FPSの速度が出ました。
この速度なら、リアルタイムの処理もできそうです。

ちなみに、入力サイズ:96 x 96 x 3だと、10FPSになりました。

#まとめ

  • MobileNet V3はV2の代替品になるわけではなく、延長線上という印象。すなわち、「V2よりも精度を出したいけど、多少処理速度が遅くなってもOK」というときに使うと良い。
  • ただ、V3であっても速度はそこまで遅くはならない。
  • 最終的には、入力画像サイズを小さくすればV3の速度は上がるため、チューニングすれば、「V2と速度は同じだけど精度は上回る」という可能性もあり得る。
55
47
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?