Keras / TensorFlow : MobileNet と Inception-ResNet の概要と性能評価
作成 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/09/2017
MobileNet は 6 月に Google Research Blog でアナウンスされたモデルで、TF-Slim 用のモデルのチェックポイントも併せて公開されました。その名前から分かるように、モバイルや組み込み用アプリケーションのようなリソースに制約のある環境でも上手く動作するように設計されたモデルです。
Keras 実装の MobileNet も Keras 2.0.6 から利用可能になりましたので、今回は University of Oxford の VGG が提供している 102 Category Flower Dataset を題材にして、MobileNet の性能を評価してみます。
また、Keras 2.0.9 から Inception-ResNet の実装も提供されていますので、併せて評価します。
比較対象は定番の AlexNet, Inception-v3, ResNet-50, Xception を利用します。
MobileNet 概要
MobileNet は6月に Google Research Blog で発表されました :
- MobileNets: Open-Source Models for Efficient On-Device Vision
(Google Research Blog, Wednesday, June 14, 2017)
併せて TF-Slim のチェックポイントファイルと技術ペーパーも公開されています (後述)。
上のブログ記事を簡単に要約しておきますと :
- 近年、ニューラルネットワークが視覚認識技術の最先端を推し進めることで、深層学習はコンピュータ・ビジョンの大きな進歩に貢献してきました。
- 物体、ランドマーク、ロゴやテキスト認識のような視覚認識技術の多くが Cloud Vision API を通してインターネット接続デバイスに提供されていますが、他方、モバイル・デバイスの増え続ける計算パワーは (いつでもどこでも、インターネット接続に関わらず、) これらの技術をユーザの手に配布可能です。
- けれども、モバイルや組み込みアプリケーション上の視覚認識には多くの課題があります — モデルはリソース制約のある環境で、i.e. 制限された計算力、消費電力やストレージのみを使用して高い精度で迅速に動作しなければなりません。
- 今日、モバイルや組み込みアプリケーションのための制限されたリソースに留意する一方で、精度を効率的に最大化するためにデザインされた、TensorFlow のためのモバイル・ファーストなコンピュータ・ビジョン・モデルのファミリである、MobileNet のリリースを発表します。
- MobileNet は様々なユースケースのリソース制約に適合するためにパラメータ化された、小さく、低遅延で低消費電力なモデルです。Inception のような他のポピュラーなラージスケール・モデルが使用される方法と同様にして、このモデルは分類・検出・埋め込みやセグメンテーションのために構築可能です。
- このリリースは TF-Slim を使用した TensorFlow 実装の MobileNet のためのモデル定義を含みます。そしてあらゆるサイズのモバイル・プロジェクトでの利用のために、16 個の事前訓練された ImageNet 分類チェックポイントも含んでいます。モデルは TensorFlow Mobile によってモバイル・デバイス上で効率的に実行可能です。
そして参照先として :
- getting started のための情報 – TensorFlow-Slim image classification model library
更にモデルの具体的な説明は – MobileNet_v1 - モバイルでモデルをどのように実行するかを学習するためには : TensorFlow Mobile
- MobileNet の技術詳細 (ペーパー) :
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
Inception-ResNet 概要
本記事の主題ではありませんが Inception-ResNet の基本的な発想は、
(誰しも考えることですが) Inception アーキテクチャに残差接続を導入するメリットがあるか否かです。
詳細については以下のペーパーを参照してください :
- Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
Christian Szegedy, Sergey Ioffe, Vincent Vanhoucke, Alex Alemi
(Submitted on 23 Feb 2016 (v1), last revised 23 Aug 2016 (this version, v2))
abstract だけ翻訳しておきます :
近年、非常に深い畳み込みネットワークは画像認識性能における最大限の進歩の中心で在り続けています。一つの例は Inception アーキテクチャであり、これは比較的低い計算コストで非常に良い性能を獲得できることを示してきました。最近、より伝統的なアーキテクチャと結合した残差接続の導入は 2015 ILSVRC チャレンジにおいて最先端の性能を生成しました ; その性能は最新世代 Inception-v3 ネットワークと同様のものです。このことは、Inception アーキテクチャを残差接続と結合するメリットがあるかどうかという疑問を生じます。ここで、残差接続を有するトレーニングは Inception ネットワークのトレーニングを本質的に加速するという明確な実証的なエビデンスを与えます。残差 Inception ネットワークが、thin margin による残差接続がない高コストな Inception ネットワークよりも同様に優れていることの何某かのエビデンスもまたあります。残差と非残差 (= non-residual) Inception ネットワークの両者に対して幾つかの新しい合理化されたアーキテクチャも提示します。これらのバリエーションは ILSVRC 2012 分類タスクにおいて単一フレームの認識性能を本質的に改善します。更に、正当な活性化スケーリングが非常にワイドな残差 Inception ネットワークのトレーニングをどのように安定させるかも示します。3つの残差と1つの Inception-v4 のアンサンブルで、ImageNet 分類 (CLS) チャレンジのテストセット上で 3.08 パーセント top-5 エラーを獲得しました。
データセット : 102 Category Flower Dataset
今回の題材は、University of Oxford の VGG が提供している、102 Category Flower Dataset です。
以下は最初の 100 画像ほどを示しています :
トレーニングと評価
MobileNet, Inception-ResNet の他にも、比較のために AlexNet, Inception-v3, ResNet-50, Xception も同じ条件でトレーニングして評価してみました。
※ MobileNet のハイパー・パラメータは (Keras 実装の) デフォルト値を使用しています。
※ トレーニングは 100 エポックを上限に実行しています。
損失
エポック数に対する収束の速さは、AlexNet を別にすれば、
Xception, Inception-ResNet, MobileNet > ResNet-50, Inception といったところでしょうか。
いずれも 0 にきれいに漸近しています :
検証精度
検証精度は Inception-ResNet > Xception > Inception-v3 = MobileNet > ResNet-50 です。
これは予想通りの結果と言えましょう :
テスト精度
テスト精度も検証精度と同様ですが、Inception-v3 の方が MobileNet よりも多少良い感じです :
Inception-ResNet > Xception > Inception-v3 >= MobileNet > ResNet-50。
AlexNet | 64.12 % |
Inception-ResNet | 88.24 % |
Inception-v3 | 80.78 % |
MobileNet | 77.84 % |
ResNet-50 | 73.63 % |
Xception | 84.12 % |
パラメータ数
MobileNet の強みの一つはその (トレーニング可能な) パラメータ数にあります。
比較的新しいモデルのパラメータ数は 20 million が一つの目安ですが、MobileNet は僅か 3.3 million です。
逆に Inception-ResNet は 54 million あります :
AlexNet | 22,000,294 |
Inception-ResNet | 54,432,966 |
Inception-v3 | 21,977,350 |
MobileNet | 3,311,526 |
ResNet-50 | 23,743,590 |
Xception | 21,015,950 |
トレーニングの速さ
パラメータ数の少なさはトレーニングの速さに直結します。
以下は 1 ステップあたりにかかる時間と、1 時間に遂行可能なステップ数を算出したものです :
alexnet | 1.30 min/step | 46.41 steps / hour |
inception_resnet | 19.84 min/step | 3.02 steps / hour |
inception_v3 | 9.60 min/step | 6.25 steps / hour |
mobilenet | 3.52 min/step | 17.07 steps / hour |
resnet50 | 11.34 min/step | 5.29 steps / hour |
xception | 10.35 min/step | 5.80 steps / hour |
以下は後者 (1 時間に遂行可能なステップ数) を視覚化したものです。
(AlexNet を別にすれば、) MobileNet のトレーニング効率が高いことが分かります :
以上