iPhoneでTensorflow Liteを試してみる
先日モバイル向けのTensorflowである、Tensorflow Liteがリリースされました。
Tensorflow Liteは、フル機能のTensorflowと異なり、iOS/Androidデバイスにて、学習済みのモデルを高速・高性能で動作させるための仕組みであり、学習や、任意のモデルの構築(MobileNetsなどの一部のモデルしか利用できません)はできません。
しかし、Googleが提供する学習済みのMobileNetsなどを転移学習することで、任意の対象画像の分類が可能ですので、色々な用途に応用できそうです。
今回は、iOS向けのTenforflow Liteのサンプルを実行してみます。
Tensorlow Liteを入手
Tensorflow Liteは、Githubより入手できます。git clone、もしくはzipで適当なフォルダにダウンロード・任意のフォルダへ展開します(以下、tfフォルダとします)。
下準備
Xcode 8とビルド用のコマンドラインツールをインストール
コマンドラインツールは、コンソールより以下のコマンドによりインストールできます。
xcode-select --install
次に、以下をコンソールでタイプして各種ツールをインストールします(要homebrew)
brew install automake brew install libtool
Tensorflow Liteライブラリのビルド
コンソールにて、tfフォルダへ移動し、以下をタイプします。
tensorflow/contrib/lite/download_dependencies.sh tensorflow/contrib/lite/build_ios_universal_lib.sh
これで、tensorflow/contrib/lite/gen/lib/libtensorflow-lite.aが生成されます。
cameraサンプルを実行
サンプルは、simple, cameraの2種類あります。simpleは本当にシンプルでつまらないので、ここではcameraを紹介します。
まず、cameraサンプルのプロジェクトを開く前に、以下を実行します。
cd tensorflow/contrib/lite/examples/ios/camera pod install
なお、cocoapodsが未導入の場合は、こちらを参考に、cocoapodsを導入ください。
次に、/tensorflow/tensorflow/contrib/lite/examples/ios/camera/tflite_camera_example.xcodeprojをクリックして、XCodeを起動し、以下の操作を行います。
- General->Signingを正しく設定(Automatically manage signingをチェックすると楽)
- Build Phases->Link Binary With Librariesより、libPods-tflite_camera_example.aを削除
- Product->Cleanでクリーンする
- ビルド→実行
すると、以下のように、カメラを向けたものの分類がリアルタイムに行われます。
当方の環境(iPhone X)では、30fps以上の性能が出ていました。また、身の回りのもので試しただけなのでまだなんとも、ですが、なかなかの精度で分類できていたように思います。
終わりに
最新のスマホ環境では、Tensorflow Lite(+MobileNet)による分類は、かなり快適に動作するようです。
次回は、UnityよりTensorflow Liteを利用し、簡単なアプリを作成してみようと思います。