ホーム » MobileNet

MobileNet」カテゴリーアーカイブ

TensorFlow : Mobile : TensorFlow Lite へのイントロダクション

TensorFlow : Mobile : TensorFlow Lite へのイントロダクション (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 12/10/2017

* 本ページは、TensorFlow の本家サイトの Mobile – Introduction to TensorFlow Lite を翻訳した上で
適宜、補足説明したものです:

* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

TensorFlow Lite はモバイルと組み込みデバイスのための TensorFlow の軽量ソリューションです。
それは低レイテンシーと小さなバイナリ・サイズで、モバイル機械学習推論を可能にします。
TensorFlow Lite はまた Android Neural Networks API によりハードウェアアクセラレーションもサポートします

TensorFlow Lite は低レイテンシーの獲得のために多くのテクニックを使用します。それはモバイル・アプリのためのカーネルの最適化、事前融合 (pre-fused) された活性化、そして量子化されたカーネルのようなテクニックで、より小さく高速な (固定小数点数学) モデルを可能にします。

TensorFlow Lite ドキュメントの多くは当面は GitHub 上 にあります。

 

TensorFlow Lite は何を含みますか?

TensorFlow Lite は、モバイル・プラットフォームのために調整された、量子化されかつ浮動小数点であるコア演算子のセットをサポートします。それらは性能と量子化された精度を更に拡張するために事前融合された活性化とバイアスを組み込みます。更に、TensorFlow Lite はモデルのカスタム演算を使用することもまたサポートします。

TensorFlow Lite は FlatBuffers に基づく新しいモデルファイルフォーマットを定義します。FlatBuffers はオープンソースの、効率的なクロスプラットフォームのシリアライゼーション・ライブラリです。それは protocol buffers に似ていますが、主な違いは、オブジェクト毎のメモリ割当てとしばしば結合した、データにアクセス可能になる前に FlatBuffers は二次表現への解析/アンパックステップを必要としないことです。また、FlatBuffers のコード・フットプリント (メモリ消費量) は protocol buffers よりも一桁小さいです。

TensorFlow Lite はモバイルに最適化された新しいインタプリタを持ち、これはアプリケーションをスリムで高速に保持するというキーとなる目標を持ちます。インタプリタは最小限のロード、初期化、そして実行遅延を確かなものにするために、静的グラフ順序付け (= graph ordering) とカスタム・メモリアロケーターを使用します。

TensorFlow Lite は、デバイス上で利用可能であれば、ハードウェア・アクセラレーションを利用するためのインターフェイスを提供します。Android O-MR1 の一部としてリリースされた、Android Neural Networks ライブラリを通してそれを行います。

 

新しいモバイル固有ライブラリが何故必要なのでしょう?

機械学習は計算パラダイムを変えています、そしてモバイルと組み込みデバイス上で新しいユースケースの新興のトレンドを見ています。消費者の期待もまた、カメラと音声相互作用モデルにより駆動される、彼らのデバイスとの自然で人間のような相互作用へと傾いています。

この領域の興味を煽っている幾つかの要因があります :

  • シリコン層の革新はハードウェア・アクセラレーションの新しい可能性を可能にし、Android Neural Networks API のようなフレームワークがそれらを活用することを容易にしています。
  • リアルタイム・コンピュータビジョンと音声言語理解における最近の進歩はモバイルに最適化されたベンチマーク・モデル (e.g. MobileNet, SqueezeNet) のオープンソース化につながっています。
  • 広く利用可能なスマート家電がオンデバイス・インテリジェンスのための新しい可能性を作ります。
  • より強固なユーザデータのプライバシーのためのパラダイムへの興味、そこではユーザデータはモバイルデバイスを離れる必要がありません。
  • 「オフライン」ユースケースにサーブする能力、そこではデバイスはネットワークに接続される必要がありません。

私たちは機械学習アプリケーションの次の波はモバイルと組み込みデバイス上で意義のある処理を持つことであると信じます。

 

TensorFlow Lite developer preview ハイライト

TensorFlow Lite は developer preview として利用可能で以下を含みます :

  • 量子化されかつ浮動小数点のコア演算子のセット、それらの多くはモバイル・プラットフォームのために調整されています。これらはカスタム・モデルを作成して実行するために利用可能です。開発者は自身のカスタム演算子を書き、そしてそれらをモデルで使用することもできます。
  • FlatBuffers ベースの新しいモデル・ファイルフォーマット。
  • モバイル上でより高速な実行のために最適化されたカーネルを持つオンデバイス・インタプリタ。
  • TensorFlow で訓練されたモデルを TensorFlow Lite フォーマットに変換するための TensorFlow コンバータ。
  • より小さいサイズ: 総てのサポートされる演算子がリンクされるとき TensorFlow Lite は 300 KB より小さく、InceptionV3 と Mobilenet をサポートするために必要な演算子のみを使用するときには 200 KB よりも少ないです。
  • テスト済みモデル :
    次のモデルの総ては動作することが保証されてすぐに使用できます :

    • Inception V3、画像に存在する有力なオブジェクトを検知するためのポピュラーなモデルです。
    • MobileNet、オンデバイスや組み込みアプリケーションのための制限されたリソースに配慮しながら、効率的に精度を最大化するために設計されたモバイルファーストなコンピュータ・ビジョン・モデルのファミリーです。それらは、様々なユースケースのリソース制約に適合するためにパラメータ化された、小さく、低レイテンシーな、低消費電力モデルです。MobileNet モデルは Inception V3 よりも小さくしかし 精度がより低い です。
    • On Device Smart Reply、文脈的に関連するメッセージを提案することにより受信したテキスト・メッセージのためのワンタッチな返信を提供するオンデバイス・モデルです。モデルは時計やスマホのようなメモリ制約のあるデバイスのために特に構築されていて、Android Wear 上の Smart Replies を総ての first-party と third-party アプリケーションへと舗装するために成功的に使用されています。
  • MobileNet モデルの量子化されたバージョン、これは非量子化 (浮動小数点) バージョンよりもより高速に動作します。
  • 物体分類のための量子化された MobileNet モデルによる TensorFlow Lite の利用を示すための新しい Android デモアプリケーション。
  • Java と C++ API サポート。

[注意] これは開発者リリースで、来たるバージョンでは API の変更があるかもしれません。
このリリースとの後方あるいは前方互換性は保証しません。

 

Getting Started

上で示された事前テストされたモデルで TensorFlow Lite を試すことをお勧めします。
既存のモデルを持つのであれば、モデルがコンバータとサポートされる演算子セットの両者と互換であるかをテストする必要があります。モデルをテストするためには、GitHub 上のドキュメント を見てください。

カスタム・データセットのために Inception-V3 あるいは MobileNet を再訓練する

上で言及した事前訓練されたモデルは、事前定義された 1000 クラスから成る ImageNet データセット上で訓練されています。これらのクラスが貴方のユースケースにとって関連がないか有用でないのであれば、それらのモデルを再訓練する必要があるでしょう。このテクニックは転移学習と呼ばれ、これはある問題について既に訓練されたモデルから始めて、そしてそれは類似の問題について再訓練されます。スクラッチからの深層学習は数日かかりますが、転移学習はかなり迅速に完了できます。これを行なうためには、関連するクラスでラベル付けされたカスタム・データセットを生成する必要があります。

TensorFlow for Poets codelab はこのプロセスを一歩ずつ歩き通します。再訓練コードは浮動小数点と量子化された推論の両者のための再訓練をサポートします。

 

TensorFlow Lite アーキテクチャ

次のダイアグラムは TensorFlow Lite のアーキテクチャ的なデザインを示します :

 
ディスク上の訓練済みの TensorFlow モデルから始めて、TensorFlow Lite コンバータを使用してそのモデルを TensorFlow Lite ファイルフォーマット (.tflite) に変換します。 それから貴方のモバイル・アプリケーションでその変換されたファイルが使用できます。

TensorFlow Lite モデルファイルの配備には以下を使用します :

  • Java API: Android 上 C++ API 回りの便利なラッパーです。
  • C++ API: TensorFlow Lite モデルファイルをロードしてインタプリタを起動します。Android と iOS の両者で同じライブラリが利用可能です。
  • インタプリタ: カーネルのセットを使用してモデルを実行します。インタプリタは選択的カーネル・ローディング (= selective kernel loading) をサポートします; カーネルなしではそれは 100 KB だけで、そして総てのカーネルをロードすると 300 KB です。TensorFlow Mobile により必要とされる 1.5 M から意義深い削減です。
  • Android デバイスの選択においては、ハードウェア・アクセラレーションのためにインタプリタは Android Neural Networks API を使用し、利用できるものがない場合にはデフォルトで CPU 実行を選択します。

インタプリタにより使用可能な C++ API を利用してカスタムカーネルを実装することもできます。

 

Future Work

将来のリリースでは、TensorFlow Lite は更なるモデルと組み込み演算子をサポートし、固定小数点と浮動小数点モデルの両者のための性能改善、開発者ワークフローを容易にするツールの改善そして他のより小さなデバイスのためのサポート等々を含むでしょう。(私たちが) 開発を続けるにつれて、TensorFlow Lite が小さなデバイスのためのモデルを対象とした開発者の経験を大きく単純化することを望んでいます。

将来の計画は、特定のデバイス上の特定のモデルのために最善の可能な性能を得るために特殊な機械学習ハードウェアを使用することを含みます。

 

Next Steps

developer プレビューについては、ドキュメントの殆どは GitHub 上にあります。
更なる情報とコードサンプル、デモ・アプリケーション等については GitHub 上の TensorFlow Lite レポジトリ を見てください。

 

以上

Keras / TensorFlow : MobileNet と Inception-ResNet の概要と性能評価

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 で発表されました :

併せて TF-Slim のチェックポイントファイルと技術ペーパーも公開されています (後述)。

上のブログ記事を簡単に要約しておきますと :

  • 近年、ニューラルネットワークが視覚認識技術の最先端を推し進めることで、深層学習はコンピュータ・ビジョンの大きな進歩に貢献してきました。
  • 物体、ランドマーク、ロゴやテキスト認識のような視覚認識技術の多くが Cloud Vision API を通してインターネット接続デバイスに提供されていますが、他方、モバイル・デバイスの増え続ける計算パワーは (いつでもどこでも、インターネット接続に関わらず、) これらの技術をユーザの手に配布可能です。
  • けれども、モバイルや組み込みアプリケーション上の視覚認識には多くの課題があります — モデルはリソース制約のある環境で、i.e. 制限された計算力、消費電力やストレージのみを使用して高い精度で迅速に動作しなければなりません。
  • 今日、モバイルや組み込みアプリケーションのための制限されたリソースに留意する一方で、精度を効率的に最大化するためにデザインされた、TensorFlow のためのモバイル・ファーストなコンピュータ・ビジョン・モデルのファミリである、MobileNet のリリースを発表します
  • MobileNet は様々なユースケースのリソース制約に適合するためにパラメータ化された、小さく、低遅延で低消費電力なモデルです。Inception のような他のポピュラーなラージスケール・モデルが使用される方法と同様にして、このモデルは分類・検出・埋め込みやセグメンテーションのために構築可能です。
  • このリリースは TF-Slim を使用した TensorFlow 実装の MobileNet のためのモデル定義を含みます。そしてあらゆるサイズのモバイル・プロジェクトでの利用のために、16 個の事前訓練された ImageNet 分類チェックポイントも含んでいます。モデルは TensorFlow Mobile によってモバイル・デバイス上で効率的に実行可能です。

そして参照先として :

 

Inception-ResNet 概要

本記事の主題ではありませんが Inception-ResNet の基本的な発想は、
(誰しも考えることですが) Inception アーキテクチャに残差接続を導入するメリットがあるか否かです。
詳細については以下のペーパーを参照してください :

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 のトレーニング効率が高いことが分かります :

 

以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com