Tensorflow Lite を Raspberry Pi にインストールする手順をまとめておきます。
以下の構成で動作確認をしています。
構成:
・ Raspberry Pi (bullseye、buster 他)
・ USB カメラ(ライブ画像のテストのため。古いものでも動きました。)
・ 作業用の Windows パソコン(必須ではありませんが、ファイルのダウンロードは処理が重いため、Windows パソコンを使いました。)
背景 ~ ラズパイに Tensorflow Lite をインストール!
ラズパイ Raspberry Pi を持っています。
Raspberry Pi に USB カメラを接続するとすぐにカメラが動く状態になっています。
物体検出など深層学習のプログラムを Raspberry Pi にインストールして動くようにできると、カメラや画像と連動させることで、応用範囲が格段に広がります。
そこで、Windows パソコンで Tensorflow Lite 関連の Zip ファイルをダウンロードし、自宅のローカルネットワーク経由で Raspberry Pi 上にコピーしてインストールを行ったところ、とくに問題なく Raspberry Pi 上で物体検出のプログラムが動きました。
ということで、必要なリンクや手順についてポイントをまとめ、公開しておくことにします。
ダウンロードやファイルの解凍自体は、Raspberry Pi 単体でも行うことができますので、Windows パソコンなどがなくても、ほぼ同等の要領でインストールができると思います。
なお、Raspberry Pi 上で深層学習のプログラムを動かすといった場合、以下のように、いくつかの選択肢が考えられます。
・ Tensorflow のフルバージョンを Raspberry Pi にインストールする。
・ Raspberry Pi 上で物体検出のみならず、機械学習も行う。
・ Raspberry Pi に YOLOv5 などをインストールする。
しかしながら、Raspberry Pi 上でこれらを実行するとなると、手間がかかる上、処理能力の問題があります。また、Raspberry Pi の SD カード上で機械学習を実行し、大量のデータの読み書きをするとなると、SD カードの容量や寿命、データやシステムの破損、実行時間なども気になります。
そこで、極力シンプルな Tensorflow Lite をインストールすることとし、物体検出を行ってみることにします。
(機械学習や YOLOv5 など、重い処理の実行は GPU つきの Windows パソコンで行い、デバイスでの応用は Raspberry Pi で行うのが妥当かなと思っています。)
機械学習関連のソフトウェアに関しては、常時、仕様変更、プログラムの更新、サイトの更新などが続いています。以下の内容は随時、変わる可能性がありますので、ご理解いただきますようお願いします。
リンク先のまとめ(外部リンク)
Tensorflow Lite の公式サイト(ダウンロード先)
・ https://www.tensorflow.org/lite/
ためしに、上記のサイトにアクセスし、「例をみる」(”See example” )ボタンをクリックしてみます。
例えば、物体検出をする場合は、「オブジェクト検出」(”Object Detection” )の「Raspberry Pi で試してみる」( “Try it on Raspberry Pi”)をクリックします。
すると、以下のリンク(GitHub)にジャンプします。
・ examples/lite/examples/object_detection/raspberry_pi at master · tensorflow/examples · GitHub ★1
要するに、上記(★1)の GitHub 上にあるファイルを Raspberry Pi にダウンロードしてシェルスクリプトを実行すると、インストールや設定が行われるようになっています。
物体検出などを実行するための Python のスクリプトは、★1にあります。
また、Raspberry Pi 用の Tensorflow Lite などのインストールのコマンドは、★1にあるシェルスクリプトに書かれています。
また、機械学習の学習済みモデルのありかと、学習済みモデルをダウンロードするためのコマンドも、同シェルスクリプトに書かれています。
インストールの手順
インストール手順は、常時変わる可能性がありますので、原則、上記のサイトに従ってください。
以下では、Raspberry Pi で設定する具体的な手順の一例についてまとめておきます。
なお、以下のステップ1、2は、Windows パソコンを使って、ダウンロード、Zip ファイルの解凍、ファイルのコピーなどを行っています。他の手段を使っても問題はありません。最終的に ⑧で、Raspberry Pi 上で作成したフォルダ内に、上記のファイル(★1)がコピーできればよいです。
ステップ1:関連ファイル一式のダウンロード
① Windows と Raspberry Pi をあらかじめネットワークに接続しておきます。
② Windows パソコンのブラウザで、上記のリンク(★1)にアクセスします。
③ ★1の画面左上の “<> Code” となっているところをクリックします。つぎに、画面中央の緑色の “Code” となっているところをクリックし、”Download ZIP” をクリックします。
→ Tensorflow のプログラム一式が、Windows パソコンにダウンロードされます。
④ ダウンロードされた Zip ファイル(example_master.zip)を右クリックし、「すべて展開…」をクリックします。
→ Windows パソコン内に、example_master フォルダが生成されます。
⑤ ④のフォルダ内で、lite → examples → object_detection → raspberry_pi の順にフォルダを手繰っていくと、フォルダ “raspberry_pi” 内に、★1のファイル一式があります。
以下の手順で、”raspberry_pi” フォルダ内のファイル一式を Raspberry Pi にコピーします。
ステップ2:Raspberry Pi での設定
⑥ Windows パソコンから Raspberry Pi にリモートデスクトップなどでアクセスします。
⑦ Raspberry Pi 内に Tensorflow Lite の物体検出用のフォルダを作ります。
例: /home/pi/TFLite1/object_detection1
⑧ ⑤のファイル一式を⑦のフォルダ内にコピーします。
具体的には、Windows パソコン上で⑤の “raspberry_pi” のフォルダ内ですべてのファイルを選択し、「コピー」を実行します。つぎに、リモートデスクトップでアクセスしている Raspberry Pi の画面に移り、⑦のフォルダ上で「貼り付け」を実行します。
→ ファイルがコピーできます。
フォルダについてはコピーできないと思いますので、Raspberry Pi 上で手動で test_data というフォルダを作り、test_data 内のファイルについても同様にコピーします。
※ 上記の手順により、”/home/pi/TFLite1/object_detection1/” のフォルダ内に以下のファイルが入っているようにします。
・ test_data フォルダ(この中に、さらに table.jpg、table_results.csv が入っている)
・ detect.py
・ README.md
・ setup.sh (インストール用のシェルスクリプト)
※ なお、このステップ1、2のファイルのダウンロードやコピーは、他の手段を使っても問題ありません。例えば、USB のメディアなどを使ってファイルを Raspberry Pi に移しても問題ありません。
ステップ3:Raspberry Pi 上での Tensorflow Lite のインストール
⑨ Raspberry Pi 上でコンソールを起動し、⑦のフォルダに移動します。
例:
$ cd /home/pi/TFLite1/object_detection1/
$ ls -al
※ ここで、以下の⑩でシェルスクリプトを実行すると、⑨で移動したフォルダ(カレントとなっているフォルダ)内にファイル等をダウンロードしてくる動きとなります。したがって、⑩は、⑨の移動後に実行するようにしてください。
※ また、上記の例では、”TFLite1″ のフォルダの下に “object_detection1” フォルダを作るようにしています。物体検出 “object_detection” 以外に、画像分類 “image_classification”、領域抽出 “image_segmentation” 等をインストールする場合も、同様の手順で設定できます。末尾の付番 “1” などは、プログラムを大きく修正する場合は、コピーして付番を “2”、”3″ などに変えることでバージョン管理できるよう意図しています。
⑩ 以下のコマンドを実行します。(シェルスクリプト setup.sh を実行します。)
例:
$ sh setup.sh
→ シェルスクリプト setup.sh が実行されます(記載されている内容に応じてインストールが行われます)。
→ ”Successfully installed …. ” と表示されたら、インストール成功です。
※ 私の環境では、いくらか WARNING が表示されましたが、特に問題なく動いています。
※ なお、ダウンロードした ZIP ファイルには、物体検出以外にも、Tensorflow Lite のサイトにあるプログラムがひととおり入っています。物体検出以外のプログラムも同様に動かすことが可能です。
Tensorflow Lite (物体検出)の実行方法
⑪ Raspberry Pi に USB カメラを接続します。
⑫ ⑨のフォルダに移動した状態で、以下を実行します。
$ python3 detect.py
→ 「object_detector」というウインドウが開いてライブ画像が表示されたら、成功です!
※ 物体を検出すると、赤枠と検出した物体の名前が表示されます。
※ 終了する場合は、ライブ画面上で [esc] キーを押してください。
物体検出を実行したようす
USB カメラを Raspberry Pi につないた状態で Python のスクリプトを実行すると、そのまま物体検出がスタートします。
ライブ画像を表示させて物体検出をさせると、キーボードなど、PC の周辺機器は正しく、画面に枠表示と名称表示がされます。一方、部屋の中の日用品は?な状態です。日本の日用品は、別途、機械学習させたほうがよさそうです。
ただし、再現率は高そうです。検出した名称が間違っていても安定性は高そうです。
物体を検出してトリガーとして使う程度であれば、Python のスクリプトを多少修正する程度で、すぐにでも役に立つものが作れそうです。
まとめ
Raspberry Pi に Tensorflow Lite をインストールするための参考リンクや手順などをまとめました。
数十分程度で動くようになりました。
物体検出(object_detection)などを動かしてみた事例を以下の関連リンクにアップしています。
また、上記の物体検出はデフォルトではライブカメラを使う設定となっています。
静止画を指定して物体検出を行うスクリプトについても以下にまとめています。
もし、関心があるようでしたら、参照してみてください。
関連リンク
・ Raspberry Pi で物体検出をやってみた
・ 動作確認済み USB カメラ 【おすすめ】
・ 初期設定のまとめ 【OpenCV & Raspberry Pi】
・ フルーツでの物体検出をやってみた 【YOLOv5】
・ 静止画でオブジェクト検出 【Raspberry Pi & Tensorflow Lite】
・ “GLIBCXX” エラーが出るとき 【Raspberry Pi & Tensorflow Lite】
・ 機械学習で株価予測 【Python】
外部リンク [PR]
・ Raspberry Pi 5 8GB 技適対応品/アクティブクーラー
・ Raspberry Pi 5用 27W USB-C PD(電源アダプタ)
※ なお、2020年以前ごろから、Tensorflow Lite を Raspberry Pi にインストールして物体検出のプログラムを動かしていましたが、最近、ファイル構成などが、かなり変更となっているようです。
以前、参照していたスクリプトと、学習済みモデルやラベルについて、参照していたリンクを以下に残しておくことにします。Raspberry Pi にすでに、Tensorflow Lite の旧バージョンがインストールしてある場合は、以下のリンクからスクリプトや学習済みモデルを入手すれば、そのまま動くと思います。
オブジェクト検出の関連ファイルの例
・ https://github.com/EdjeElectronics/TensorFlow-Lite-Object-Detection-on-Android-and-Raspberry-Pi
学習済みモデルとラベルのサンプル
・ https://storage.googleapis.com/download.tensorflow.org/models/tflite/coco_ssd_mobilenet_v1_1.0_quant_2018_06_29.zip