Raspberry Piで、オリジナルの学習モデルを使った物体検出(Raspberry Piの環境構築編)[3/4]

スマートホーム
スポンサーリンク

はじめに

オリジナルモデルを使った物体検出を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分程度かかるので、気長に待ちます☕️

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」に変更しておきましょう。

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」を実行するだけです。

pi@raspberrypi:~/tflite $ sh get_pi_requirements.sh 

④モデルファイルのダウンロード

最後に物体検出のテストを行うために、学習済のモデルファイルをダウンロードします。ダウンロードが完了したら、解凍先ディレクトリを指定して、zipファイルを解凍しましょう。ここで「detect.tflite」というファイルが学習済モデルです。また「labelmap.txt」は、物体名を格納したファイルです。

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=」パラメータには、先ほどモデルを解凍したフォルダを指定して下さい。

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回:オリジナルモデルを用いた物体検出 ←次の記事

関連記事

Raspberry Piで最強の防犯カメラを作ってみる(動画記録・配信、動体検知・Line通知、顔検知・顔認証、Alexa搭載)[1/6]
はじめに6ヶ月間の育児休業を取って、育児&家事に専念しているnaka-kazzです。我が家では、防犯のために玄関に防犯カメラを置いています。しかし、この防犯カメラ、スマホアプリを通じて動画を見たり動体検知をすることはできるのですが...
Raspberry PiとNode-redで、リビングに飾れる美しい「スマートホームコントローラ」を作ってみた
うちの子供達はリモコンが大好きで、すぐにどこかに持っていってしまいます。今回はスマートリモコン、Raspberry Pi、Node-redを使って、家中のリモコンを一つにまとめ、家電を一括操作できるスマートホームコントローラを作ってみたいと思います。
Raspberry Pi 4Bで4Kカメラは扱えるか?エンコード性能を徹底検証
Raspberry Pi 4Bで4K動画がどこまで扱えるかの情報がネットに無かったので、実機を使って検証してみました。4KとフルHD動画について、h264、mjpeg、非圧縮の6パターンについて検証しています
Raspberry PiとNode-redで、Hueブリッジ(Zigbee Hub)を作ってみた(スマホ&Alexa操作対応)[1/3]
最近は、スマート電球の「Hue」や「TRADFRI」、Aqaraの温度センサーなど、様々なzigbee機器が出てきています。しかし、これらを使用するにはHueブリッジなどのZigbee Hubの購入が必要で、しかもメーカを跨って相互に接続できません。そこで、Raspberry PiとNode-redを使って、メーカに関係なくZigbee機器を接続できるZigbee Hubを作ってみました。
Raspberry PiにAlexaをインストールしてみる(ウェイクワードエンジン変更・感度調整・systemd設定)
この記事は古くなっています。以下の2023年版の記事を参照ください。やりたいことAmazon Alexaを利用したければ、Amazon Echoを購入するのが手取り早いのですが、Alexaの機能をいろいろカスタ...
Jetson nanoで、オリジナルの学習モデルを使った物体検出[1/5]  〜IBM Cloud Annotationsを使ったアノテーション編〜
オリジナルの学習データを使って、Jetson nanoで物体検出を行う方法を全5回でまとめます。連載の1回目は、学習モデルを作成するための準備として、教師データをIBM Cloud Annotationsを使って作成していきます。
記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。質問・コメントは、↓のコメント蘭でもFacebookメッセンジャーでもどちらでも大丈夫です。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム開発者向け
スポンサーリンク
naka-kazzをフォローする
スマートホーム×DIY

コメント