はじめに
オリジナルモデルを使った物体検出をRaspberry Piで行うべく、以下を実現しようとしています。
これを実現するために4回に分けて記事を記載予定で、今回は3つ目の記事です。
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Raspberry Piの環境構築 ←この記事
第4回:オリジナルモデルを用いた物体検出
第3回:Raspberry Piの環境構築
前回は無料でGPUを使えるGoogle Colabを使って、TensorFlowのモデルを学習する事をやってみました。今回は、物体検出に必要なソフトウェアをRaspberry Piにインストールしていきます。TensorFlowは開発が早いので、各種ライブラリのバージョンを合わせてインストールする事がポイントです。
Raspberry Pi OSのインストール
まずは、Raspberry PiにOSをインストールしていきます。Raspberry Pi OSのインストール方法はあちこちに情報がありますので、さくさくいきますね。今回は執筆時点で最新版の2021年1月11日版のRaspberry Pi OS with desktopを利用しました。
①OSイメージのダウンロード
最近はRaspberry Pi Imagerを使うのが良いらしいですが、ダウンロードが途中で止まったりなど、私はあまり好きではないので、昔ながらのWebサイトからイメージをダウンロードする方法でインストールします。
②OSイメージの書き込み
OSイメージは、balenaEtcherでSDカードに書き込みましょう!
③初期設定
OSイメージをSDカードに書き込んだら、Raspberry Piに挿して起動して、Wifiやローケールなどの初期設定を行います。この辺りは、まあいつもの作業って感じですよね?
④SSH・VNC・カメラの有効化
Raspberry Pi OSが起動できるようになったら、raspi-configを用いて、外部から接続するためにSSH、VNCを有効にします。ついでに、カメラも有効化しておきましょう‼️
※当然ですが、Raspberry Piにカメラモジュールを挿しておいて下さい。
以上で、Raspberry Pi OSのインストールは完了です。
TensorFlow Lite等のインストール
ここからは、物体検出に必要なTensorFlow Liteなどのソフトウェアをインストールしていきます。
①TensorFlowのインストール
まずは、今回の主役のTensorFlowをインストールします。TensorFlowは、バージョンがどんどん上がっていますが、バージョン差異で良くハマります。ですので、バージョンを指定して1.14系をインストールしましょう。インストールには10分程度かかるので、気長に待ちます☕️
1 2 3 4 5 6 7 8 |
pi@raspberrypi:~ $ su パスワード: root@raspberrypi:/home/pi# pip3 install tensorflow==1.14.0 ・・・省略・・・ Successfully installed absl-py-0.11.0 astor-0.8.1 cached-property-1.5.2 cachetools-4.2.1 gast-0.2.2 google-auth-1.24.0 google-auth-oauthlib-0.4.2 google-pasta-0.2.0 grpcio-1.35.0 h5py-3.1.0 importlib-metadata-3.4.0 keras-applications-1.0.8 keras-preprocessing-1.1.2 markdown-3.3.3 opt-einsum-3.3.0 protobuf-3.14.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 rsa-4.7 setuptools-52.0.0 tensorboard-2.0.2 tensorflow-1.14.0 tensorflow-estimator-1.14.0 termcolor-1.1.0 typing-extensions-3.7.4.3 wrapt-1.12.1 zipp-3.4.0 root@raspberrypi:/home/pi# exit pi@raspberrypi:~ $ |
②TensorFlow Liteアプリのクローン
TensorFlow Liet用のアプリは自分で作成しても良いのですが、ここは先人の知恵を使ってサクサクいきたいと思います。今回は「EdjeElectronics」さんの「TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi」を利用していきます。ありがとうございます😊
以下のようにしてGithub上のファイルをクローンします。またフォルダ名が長いので「tflite」に変更しておきましょう。
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberrypi:~ $ git clone https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi.git Cloning into 'TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi'... remote: Enumerating objects: 626, done. remote: Total 626 (delta 0), reused 0 (delta 0), pack-reused 626 Receiving objects: 100% (626/626), 107.23 MiB | 7.75 MiB/s, done. Resolving deltas: 100% (329/329), done. pi@raspberrypi:~ $ mv TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi tflite pi@raspberrypi:~ $ cd tflite/ pi@raspberrypi:~/tflite $ |
③必要ライブラリのインストール
次にTensorFlow Liteアプリの実行に必要なライブラリをインストールします。インストールは簡単で「get_pi_requirements.sh」を実行するだけです。
1 2 |
pi@raspberrypi:~/tflite $ sh get_pi_requirements.sh |
④モデルファイルのダウンロード
最後に物体検出のテストを行うために、学習済のモデルファイルをダウンロードします。ダウンロードが完了したら、解凍先ディレクトリを指定して、zipファイルを解凍しましょう。ここで「detect.tflite」というファイルが学習済モデルです。また「labelmap.txt」は、物体名を格納したファイルです。
1 2 3 4 5 6 |
pi@raspberrypi:~/tflite $ wget https://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip pi@raspberrypi:~/tflite $ unzip coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip -d coco_ssd_mobilenet_v1_1.0_quant Archive: coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip inflating: coco_ssd_mobilenet_v1_1.0_quant/detect.tflite inflating: coco_ssd_mobilenet_v1_1.0_quant/labelmap.txt pi@raspberrypi:~/tflite $ |
以上でTensorFlow Lite等のインストールは完了です。
物体検出のテスト
ここからは、いよいよRaspberry Piを用いた物体検出をやっていきます‼️
①VNCでRaspberry Piへログイン
物体検出のアプリを起動すると画面に物体検出の様子が表示されるので、VNCでのログインが必要です。PCでVNC Viewerを起動して、Raspberry PiへVNC接続します。
②物体検出のテスト
VNC上でターミナルを立ち上げ、以下のようにしてTensorFlow Liteのアプリを起動します。「modeldir=」パラメータには、先ほどモデルを解凍したフォルダを指定して下さい。
1 2 3 |
pi@raspberrypi:~ $ cd tflite/ pi@raspberrypi:~/tflite $ python3 TFLite_detection_webcam.py --modeldir=./coco_ssd_mobilenet_v1_1.0_quant |
すると以下のようにカメラで撮影した画像に対して、物体検出を行い画面に表示してくれます‼️
おもちゃの車もペットボトルもテーブルもちゃんと認識していますね‼️
おわりに
今回はRaspberry PiにOSやTensorFlowなどのソフトウェアをインストールし、ダウンロードした学習済のモデルを用いてTensorFlow Liteによる物体検出を行いました。次回はいよいよ最終回。自分で学習させたモデルを用いて物体検出を行ってみたいと思います。
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Raspberry Piの環境構築
第4回:オリジナルモデルを用いた物体検出 ←次の記事
コメント