はじめに
オリジナルモデルを使った物体検出をRaspberry Piで行うべく、以下を実現しようとしています。
これを実現するために4回に分けて記事を書いてきましたが、今回はいよいよ最終回です。
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Raspberry Piの環境構築
第4回:オリジナルモデルを用いた物体検出 ←この記事
第4回:オリジナルモデルを用いた物体検出
前回はRaspberry PiにOSやTensorFlow Liteをインストールし環境構築を行いました。今回は、第2回で学習したオリジナルモデルを用いて、物体検出を行なう方法です。
オリジナルモデルの準備
まずは、第2回で学習したオリジナルモデルをRaspberry Piに格納して準備を行います。
①モデルファイルの解凍
第2回でGoogle ColabからダウンロードしたmyModel.zipをRaspberry Piの「/home/pi/tflite」フォルダにアップロードして、以下のように解凍します。
pi@raspberrypi:~/tflite $ unzip myModel.zip -d myModel
Archive: myModel.zip
inflating: myModel/checkpoint
inflating: myModel/detect.tflite
extracting: myModel/flower_model.zip
inflating: myModel/frozen_inference_graph.pb
inflating: myModel/labelmap.txt
inflating: myModel/model.ckpt.data-00000-of-00001
inflating: myModel/model.ckpt.index
inflating: myModel/model.ckpt.meta
inflating: myModel/pipeline.config
creating: myModel/saved_model/
creating: myModel/saved_model/variables/
inflating: myModel/saved_model/saved_model.pb
inflating: myModel/tflite_graph.pb
inflating: myModel/tflite_graph.pbtxt
pi@raspberrypi:~/tflite $
②label.txtの作成
解凍したモデルにlabelmap.txtが含まれますが、これはJson形式になっており、tfliteでは使えません。そこで、以下のようにラベル名だけを記載した、テキスト形式のlabelmap.txtを作成します。
pi@raspberrypi:~/tflite $ cd myModel
pi@raspberrypi:~/tflite/myModel $ mv labelmap.txt labelmap.txt.org
pi@raspberrypi:~/tflite/myModel $ cat labelmap.txt
Undefined
flower
pi@raspberrypi:~/tflite/myModel $
以上で準備は完了です。
オリジナルモデルを用いた物体検出
それでは、いよいよオリジナルモデルを用いた物体検出をやってみましょう。VNCでログインしたターミナルから以下のコマンドを入力します。
pi@raspberrypi:~/tflite $ python3 TFLite_detection_webcam.py --modeldir=./myModel
すると以下のように、カメラ画像が画面に表示されるので、検出したい物体をカメラの前に持っていきましょう!どうですか?以下の動画のように、物体が検出されるはずです‼️
おわりに
今回は、第2回で学習させたオリジナルモデルを用いて、TensorFlow Liteを用いた物体検出をやってみました。COCOモデルなど学習済みのモデルは非常に有用ですが、検出したい物体が特殊な場合には、オリジナルの学習モデルを作る必要があり、今回の方法が使えると思われます。
Raspberry Piの処理能力は高いとは言えないので、もっと高速に物体検出がやりたい人はGPUが搭載されたJetson nanoなどを使いましょう!
第1回:IBM Cloud Annotationsを用いたアノテーション
第2回:Google Colabを用いたモデルの学習
第3回:Raspberry Piの環境構築
第4回:オリジナルモデルを用いた物体検出
コメント