Tutti Lab

元シリコンバレー在住のおっさん技術者、モバイルVRアプリ開発に挑戦中

iPhoneでTensorflow Liteを試してみる

先日モバイル向けのTensorflowである、Tensorflow Liteがリリースされました。
Tensorflow Liteは、フル機能のTensorflowと異なり、iOS/Androidデバイスにて、学習済みのモデルを高速・高性能で動作させるための仕組みであり、学習や、任意のモデルの構築(MobileNetsなどの一部のモデルしか利用できません)はできません。
しかし、Googleが提供する学習済みのMobileNetsなどを転移学習することで、任意の対象画像の分類が可能ですので、色々な用途に応用できそうです。
今回は、iOS向けのTenforflow Liteのサンプルを実行してみます。

f:id:tuti107:20171126172347p:plain

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を起動し、以下の操作を行います。

  1. General->Signingを正しく設定(Automatically manage signingをチェックすると楽)
  2. Build Phases->Link Binary With Librariesより、libPods-tflite_camera_example.aを削除
  3. Product->Cleanでクリーンする
  4. ビルド→実行

すると、以下のように、カメラを向けたものの分類がリアルタイムに行われます。

f:id:tuti107:20171126175605p:plain

当方の環境(iPhone X)では、30fps以上の性能が出ていました。また、身の回りのもので試しただけなのでまだなんとも、ですが、なかなかの精度で分類できていたように思います。

終わりに

最新のスマホ環境では、Tensorflow Lite(+MobileNet)による分類は、かなり快適に動作するようです。
次回は、UnityよりTensorflow Liteを利用し、簡単なアプリを作成してみようと思います。