iOS の TensorFlow サンプルを試してみる

TensorFlow(テンソルフロー) や iOS でのサンプル実行の方法を調べたメモ。



https://www.tensorflow.org/lite?hl=ja

iOS で TensorFlow を動かすには TensorFlow Lite を使用すると良い。
TensorFlow Lite はモバイルや組み込みデバイス向けにチューニングされた TensorFlow のバージョンである。

CocoaPods で導入するにはこうする。

platform :ios, '13.0'

target 'TargetName' do
  use_frameworks!

  pod 'TensorFlowLiteSwift'

end



https://www.tensorflow.org/lite/examples?hl=ja

実際にどんなことができるか、どんな動きになるかを試したい場合は、ここに各パターン(画像分類やセグメンテーションなど)のサンプルアプリのリンク(GitHub へのリンク)がある。

しかし GitHub 上にはあるが、上記のサンプルのコレクションページにはない物もあるので GitHub の examples を直接見た方が良いだろう。

https://github.com/tensorflow/examples/tree/master/lite/examples



AI / 機械学習というジャンルでは「推論結果を出したい」の前に、その推論に使用するモデルを用意する必要があるので骨が折れそうなイメージがあるが TensorFlow では、学習ずみのモデルを公開しているのでそれを使用することができる。

https://tfhub.dev/

ちなみに Apple の CoreML で TensorFlow のモデルを使用したい場合は、 CoreML 形式にコンバートされたモデルが Apple のサイトにあるので、ダウンロードできる。

https://developer.apple.com/machine-learning/models/



実際にサンプルを試すには各サンプルのルートで pod install してからワークスペースを実行するだけで OK。

たとえば以下のような物がある。


ImageSegmentation

画像に含まれる物体を分解できる。 人と背景や犬などが画像上のどのピクセルなのかを特定できる。

f:id:daisuke-t-jp:20200515172424p:plain:w250



StyleTransfer

ソースとなる画像にスタイルを適用することができる。

たとえば ソースの写真がこれで
f:id:daisuke-t-jp:20200515195125p:plain:w200


適用するスタイル画像にこれを選ぶと(ゴッホの星月夜)
f:id:daisuke-t-jp:20200515195131p:plain:w200


スタイル適用された画像はこう出力される。(ちょっとゴッホぽくなった)
f:id:daisuke-t-jp:20200515195137p:plain:w200



という感じにサンプルとコードを見ている中でいくつか気になる点が出てきたので、プルリクエストを送ってみた。

https://github.com/tensorflow/examples/pull/214 https://github.com/tensorflow/examples/pull/215 https://github.com/tensorflow/examples/pull/216 https://github.com/tensorflow/examples/pull/217

内容は、ダークモード時に UI が一部見えなくなる、不要なメモリ確保をしている、など。

無事プルリクエストはマージされたので、今後サンプルから学ぶ人のちょっとした足しになれば、いいなぁ、、、と。

それと、「不要なメモリ確保を削除」の PR が受け入れられたということは自分の TensorFlow Lite の認識(の一部)が、正解とズレていなかった証明になるので、安心した。。