TensorFlowは、Windows、Ubuntu、Macなど、色々なOSで利用できることがよく知られていますね。
今回は、
パソコンにインストールしたTensorFlowで写真に写っているモノが判別できても面白くない!
という方に向けて、Androidスマホのカメラで写したモノを判別するアプリを紹介します。
AndroidスマホでTensorFlowを利用できれば、どこでも何でもカメラに写して試せるので、非常に面白いですよ。
娘の洋服を写したら「pajama」(パジャマ)と判別されてショックを受けたりしました(笑)
ちなみに、TensorFlowはRaspberry Piにもインストールできます。
Raspberry PiにTensorFlowをインストールする方法については、以下の記事で紹介していますので、Raspberry Piをお持ちの方はぜひ試してみてください。
Androidにデモアプリをインストールしてみよう
実は、TensorFlowの公式ページに、デモアプリが用意されており、簡単にインストールできます。
デモアプリをインストールする手順を紹介しますので、ぜひ試して見てください。
なお、スマホの機種やAndroidのバージョンによって、少しずつ操作が異なる可能性がありますので、注意してください。
(1)Androidスマホで以下のサイトにアクセスします。
この記事では、Chromeを使ってアクセスしました。
参考:https://www.tensorflow.org/mobile/tflite/demo_android
(2)「Download the pre-built binary」の「pre-built binary APK」をタップします。
TfLiteCameraDemo.apkファイルがダウンロードされます。
(3)「開く」をタップします。
(4)以下の画面が表示されたときは、「設定」をタップします。
この画面が表示されなかった場合は、手順(7)まで進みます。
(5)「この提供元のアプリを許可」をタップします。
(6)「戻る」をタップして、前の画面に戻ります。
(7)「インストール」をタップします。
(8)「開く」をタップします。
(9)「許可」をタップします。
(10)カメラで何かを写します。
エアコンのリモコンを写してみたところ、画面下部に「remote control:0.8235294」と表示されますので、デモアプリは写っているモノを約82%の確率でリモコンであると判断しているようです。
次の行を見ると「cellular telephone:0.101960786」(携帯電話:約10%)とも表示されていますね。
確かに携帯電話でこういう形のモノがあってもよさそうです。
設定を元に戻そう
さて、上の手順ではサラッと設定してしまいましたが、今、あなたのスマホは、Chromeで任意のアプリをダウンロードしてインストールできる危険な状態になっています。
そこで、忘れずに設定を戻しておきましょう。
(1)設定画面で「アプリと通知」をタップします。
(2)「特別なアプリアクセス」をタップします。
(3)「不明なアプリのインストール」をタップします。
(4)「Chrome」をタップします。
他のアプリを使用してダウンロードした場合は、そのアプリをタップします。
(5)「この提供元のアプリを許可」をタップします。
Android Studioでビルドしてみよう
次は、Android Studioを使って、TensorFlowを使ったAndroidアプリをビルドしてみましょう。
上で説明したアプリとは別のモノになりますが、TensorFlowを使ったサンプルアプリをビルドする操作が、以下のサイトで説明されています。
参考:https://www.tensorflow.org/mobile/android_build
ここからはパソコンで操作します。
なお、上記のサイトで想定しているAndroid Studioのバージョンと、最新のAndroid Studioのバージョンが異なるため、手順が多くなっています。
(1)ターミナルやコマンドプロンプトで以下のコマンドを入力し、GitHubにあるTensorFlowのリポジトリをクローンします。
この記事では、コマンドプロンプトで「D:\TensorFlow」フォルダに移動してから、以下のコマンドを入力しました。
git clone https://github.com/tensorflow/tensorflow
GitHubやGitについては、以下の記事で紹介していますので、よく分からない方は一読してから進むと良いでしょう。
(2)Android Studioをインストールします。
Androidの開発環境を構築する方法については、以下の記事でまとめたサイトで説明されていますので、参考にしてみてください。
(3)Android Studioを起動し、「Open an existing Android Studio project」をクリックします。
以下の画面が表示されないときは、「File」→「Open project」の順にクリックしてください。
(4)(1)でコマンドを入力したフォルダ内の「tensorflow\tensorflow\examples\android」を選択し、「OK」をクリックします。
(5)「1:Project」をクリックし、「Gradle Scripts」→「build.gradle (Project: android)」の順にダブルクリックします。
(6)「buildscript」の「repositories」に、「google()」を追加します。
(7)「def nativeBuildSystem = ‘bazel’」を「def nativeBuildSystem = ‘none’」に修正します。
(8)「dependencies」の「compile」を「implementation」に修正します。
(9)「File」→「Save All」の順にクリックします。
(10)「File」→「Settings」の順にクリックします。
(11)「Appearance & Behavior」→「System Settings」の順にダブルクリックし、「Android SDK」をクリックして、「Android 6.0 (Marshmallow)」にチェックをつけ、「OK」をクリックします。
(12)「OK」をクリックします。
(13)「Accept」を選択し、「Next」をクリックします。
(14)「Finish」をクリックします。
(15)「Try Again」をクリックします。
(16)「Install Build Tools xx.x.x and sync project」と表示されたときは、「Install Build Tools xx.x.x and sync project」をクリックします。
(17)「Finish」をクリックします。
(18)「Update」をクリックします。
(19)「Update Build Tools version and sync project」と表示されたときは、「Update Build Tools version and sync project」をクリックします。
(20)「Run」→「Run ‘android’」の順にクリックします。
(21)以下の画面が表示されたら、開発者モードとUSBデバッグをオンにしたAndroidスマホを、USBケーブルでパソコンと接続します。
(22)Androidスマホで、USBデバッグを許可します。
USBデバッグを許可する操作については、以下のサイトで詳しく説明されています。
機種によって操作が異なる場合がありますので、注意してください。
参考:https://tunesgo.wondershare.jp/android/debug-mode.html
(23)パソコンの「Select Deployment Target」画面にAndroidスマホの名前が表示されたら、「OK」をクリックします。
途中で以下の画面が表示されたときは「Proceed without Instant Run」をクリックしてください。
以上で、「TensorFlow Demo」がビルドされ、Androidスマホにインストールされます。
「TensorFlow Demo」をインストールすると、TF Classify、TF Detect、TF Speech、TF Stylizeのアイコンが追加されます。
私の手元では、TF Stylizeは強制停止して使用できませんでしたが、残りの3つは動作しているようでした。
お試しください!
Bazelでビルドすることもできる
ビルドツールBazelを使ってもビルドできます。
詳しくは、以下のサイトの「Build the demo using Bazel」をご覧ください。
参考:https://www.tensorflow.org/mobile/android_build
まとめ
今回は、TensorFlowを使用したデモアプリをAndroidスマホにインストールして実際に試してみたり、Android Studioを使用してビルドしたりしてみました。
TensorFlowもAndroid Studioもどんどんバージョンアップしていますので、公式サイトのチュートリアルどおりに操作しても成功しませんでした。
もちろん、この記事を書いた後にTensorFlowもAndroid Studioもバージョンアップしている可能性がありますので、ここで説明した手順ですんなり操作できるかどうかは、やってみなければわかりません。
この記事がみなさんの挑戦の助けになることを祈っています。
頑張りましょう!