TensorFlow の iOS 向けビルド
手順
Xcode のセットアップ
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
必要なパッケージのインストール
$ brew install automake
$ brew install libtool
TensorFlow
$ git clone https://github.com/tensorflow/tensorflow -b r1.0
Configure
$ cd tensorflow
$ ./configure
いくつか質問聞かれます
iOS 向けの静的ライブラリのビルド
tensorflow/contrib/makefile/build_all_ios.sh
以下のファイルが tensorflow/contrib/makefile/gen/lib/
あたりに作成されれば成功
libtensorflow-core.a
, libprotobuf.a
, libprotobuf-lite.a
その他ツールのインストール
Bazel を使って以下もインストール、時間かかる
もしエラーが出てしまった場合は bazel version
でバージョンが 0.1.4 以上か確認する
(指定されているオプションがそれより前は存在しないため) 詳細
bazel build tensorflow/python/tools:freeze_graph
bazel build tensorflow/python/tools:optimize_for_inference
だいたいそれぞれかかった時間は以下の通りで、16GBのMacBook Proで50分くらいかかってしまった
Elapsed time: 541.116s, Critical Path: 0.17s
Elapsed time: 2329.343s, Critical Path: 2184.19s
iOS向けGraphファイルの作成
上記の freeze_graph
を使って、以前に作った graph.rb
ファイルと weight や bias を全て一つのファイルにまとめる
bazel-bin/tensorflow/python/tools/freeze_graph \
--input_graph=../tensorflow_try/tmp/graph.pb --input_checkpoint=../tensorflow_try/tmp/model \
--output_node_names=model/y_pred,inference/inference --input_binary \
--output_graph=/tmp/voice/frozen.pb
ここで中断した…
Overall
Python で作成した TensorFlow のモデルを iOS にインストールすることは可能 だがそこまでするメリットがあまりない 具体的には結構ビルドする手間もかかるし、何よりファイルサイズが大きく アプリのサイズとしては現実的ではない なので素直に全てサーバサイドで Web API として提供するのがストレートだと思う