|
2019年10月1日、GoogleのTensorFlow開発チームはオープンソースの機械学習ライブラリ TensorFlow 2.0 を発表しました。JavaScript 向けの TensorFlow.js、モバイルやIoT向けの TensorFlow Lite、大規模な実装向けの TensorFlow Extended などを提供し、機械学習向けの包括的なプラットフォームを目指しています。低レベルのAPIも強化し、研究者向けの機能強化も加わった。モバイル デバイスや組み込みデバイスにモデルをデプロイするための軽量なライブラリとして、TensorFlow Lite が利用できます。JavaScript を使用して ML モデルを開発するためのライブラリとして、TensorFlow.jsが開発されています。
TensorFlow Lite は、Android、iOS、Linux をプラットフォームとするIoT 機器にインストールして、画像分類、物体検出、セグメンテーション、テキスト分類、音声識別などの機械学習を実行することができます。公式ページは、https://www.tensorflow.org/liteです。このページでは、TensorFlow Liteをmobile phoneやRaspberry Pi にインストールして、画像分類、物体検出、テキスト分類などを行うアプリを導入する手続きについて説明します。PyTorch Mobile を活用してIot 機器に機械学習アプリをインストールする方法については、別のページにて行う予定です。
Last updated: 2019.11.25
iOS で Image Classification と Object Detection |
TensorFlow Lite を iOS にインストールして、Image Classification と Object Detectionを実行する手続について説明します。Mac PC を前提として、必要な環境は
* Device with iOS 12.0 or above * Xcode 10.0 or above * Valid Apple Developer ID * Xcode command-line tools * CocoaPods
です。Apple ID (メールアドレス)は自分で登録して下さい。これがないと、iOS 機器にアプリがインストールできません。CocoaPodsが必要なのでインストールします。
$ sudo gem install cocoapods
Tensorflow Lite の examples をPCにインストールします。
$ git clone https://github.com/tensorflow/examples.git
examples という名称のフォルダーが作成されます。最初に、image_classification デモアプリをインストールしましょう。iOS向けの workspace file を作成します。
$ cd examples/lite/examples/image_classification/ios $ pod install
examples/lite/examples/image_classification/ios の中に、ImageClassification.xcworkspace が作成されます。Xcode を用いて、このファイルを開きます。`ImageClassification` project をクリックして、project "configurationのsigning and capabilities" を選択します。"automatically manage signing"を選択して、"team"に自分の(personal team)IDをdropdownから選択して入力します。"Bundle Identifier"に好みのアプリ名称を入力する。これでサインインできます。
iOS 機器をPCに接続して、"Generic iOS Device"のセルで接続した機器を選択します。シミュレーションとして、自身のiPhone を選択して、3角形をクリックして、コンパイルをします。ここで、Mac側とiPhone側に信頼するかどうかを尋ねるダイアログがでるので、それらを了承します。エラーがなければ、しばらくすると、実機の画面にアプリが登録されます。Macでワーニングが出た場合は、書かれているようにします。iPhoneの「設定」「一般」から「デバイス管理」に入り、登録した「Apple ID」を信頼する、をクリックします。もう一度、シミュレーションを実行すると、成功すると思います。"Build succeeded"と表示されて、接続した機器にアプリがインストールされます。PCとの接続を切り離して、iOS実機で使用できます。TFL Classify という名称のアプリです。
TensorFlow Lite の Object Detection Applicationも上記のimage_classificationの説明と同様な手続きを経て、インストールします。
$ cd examples/lite/examples/object_detection/ios/ $ pod install
examples/lite/examples/object_detection/ios の中に、swift コードの ObjectDetection.xcworkspace が作成されます。これをXcode で開いて、上記と同様の作業を行えば、object_detection アプリがiOS 実機で使用可能となります。TFL Detect という名称のアプリがインストールされます。
Apple DeveloperのCore ML 3を利用して作成した機械学習アプリのインストールについては、iOSモバイル機器に ML アプリを実装のページを参照ください。
Raspberry Pi で Image Classification と Object Detection |
TensorFlow Lite を Raspberry Pi にインストールして、Image Classification と Object Detectionを実行する手続について説明します。Raspberry Piの基本的なセットアップは準備できていることを前提にします。Python quickstartに従って、TensorFlow Lite interpreterをインストールします。Raspberry Piのバージョンによってインストールのwheelが異なります。Raspbian Buster、Python 3.7のケースでは
$ pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl
Devian Stretch with Python 3.5のケースでは、
$ pip3 install tflite_runtime-1.14.0-cp35-cp35m-linux_armv7l.whl
とインストールします。
Tensorflow liteは Picameraを使用することを前提にコードが書かれています。Picameraを使用するケースでの設定は以下のように行います。
Camera Module portにPicameraの端子cableを接続します。Camera Module ribbon cableをportのプラスチック・クリップを上にスライドして、開いた隙間に挿入して、クリップを戻します。cable接続面はこのクリップの反対側です。
次に、Raspiのカメラ機能の設定を行います。Raspberry Pi 設定のインターフェイスの項目で、cameraの設定を'Enabled'にします。Raspiを再起動します。詳しくはgetting-started-with-picameraを読んでください。ただし、説明の中で
raspistill -o Desktop/image.jpg
このコマンドは、rootで実行していない限り、エラーを出すので、無視して下さい。通常の使用では問題ありません。
Webcameraを使用するときは、Tensorflow liteのpicameraの映像を取り込む当該部分を修正して下さい。
TensorflowのGit repoを Raspberry Pi に取り込みます。
$ git clone https://github.com/tensorflow/examples --depth 1
このライブラリを実行するために必要な環境設定を行います。必要なPython パッケージと MobileNet model と その labels fileをダウンロードします。
$ cd examples/lite/examples/image_classification/raspberry_pi $ bash download.sh /tmp
/tmp ディレクトリにモデルとラベルが保存されていることを確認して下さい。/tmp ディレクトリへの保存は一時的なので、Raspiを終了すると消えます。MobileNet modelを使用するごとに読み込む必要があります。これを避けるために、/tmpの代わりに、/home/pi とすれば、入力は1回で済みます。
以下のコマンドを使って画像分類のアプリを実行します。
$ cd examples/lite/examples/image_classification/raspberry_pi $ bash download.sh /home/pi #初回に1回入力すれば保存されます $ python3 classify_picamera.py \ --model /home/pi/mobilenet_v1_1.0_224_quant.tflite \ --labels /home/pi/labels_mobilenet_quant_v1_224.txt
Raspberry Piに接続したディスプレイにpicameraからの映像が表示されて、画像の分類が表示されます。
物体検出アプリをインストール時も、上記と同様に行います。
$ cd examples/lite/examples/object_detection/raspberry_pi $ bash download.sh /home/pi #初回に1回入力 $ python3 detect_picamera.py \ --model /home/pi/detect.tflite \ --labels /home/pi/coco_labels.txt
Raspberry Piに接続したディスプレイに検出された物体に枠取りされて物体名が表されます。