LoginSignup
16
19

More than 1 year has passed since last update.

Raspberry Pi × TensorFlow Liteで物体検出を楽しむ

Last updated at Posted at 2023-04-23

この記事について

  • Raspberry PiTensorFlowPythonのいずれにも詳しくない筆者が、物体検出をやって楽しんだ成果の記録です。
  • TensorFlow公式の物体検出のサンプルプログラムを実行します。

動作環境

  • ボード
    • Raspberry Pi 4 Model B
  • OS
    • Raspberry Pi OS (32-bit または 64-bit)
    • デスクトップ環境
  • カメラ
  • Python
    • Python 3.9
    • 執筆時点で Raspberry Pi OS に入ってたやつそのまま

CleanShot_2023-04-22_at_17.57.27.png

Raspberry Pi ボードは以下のモデルでTensorFlow Lite がサポートされているようです。

  • Raspberry Pi 2
  • Raspberry Pi 3
  • Raspberry Pi 4
  • Raspberry Pi Zero 2

準備するもの

サンプルプログラムについて

  • TensorFlow公式の tensorflow/examples を使います。
  • その中の lite/examples/object_detection/raspberry_pi ディレクトリに物体検出のサンプルプログラムが入っています。
  • Raspberry Pi 上の Python でTensorFlow Liteを使用して、Pi カメラからストリーミングされた画像を使用してリアルタイムの物体検出を実行します。カメラプレビューで検出された各物体の周囲に境界ボックスを描画します。

雰囲気を感じる

ハードウェアのセットアップ

まずは、 Raspberry Pi OS を使用してRaspberry Pi をセットアップする必要があります。

Raspberry Pi Foundation 公式の資料がありますし、「Raspberry Pi 初期セットアップ」でネット検索してもいろいろ情報が見つかるはずです。

Raspberry Pi のアップデート

sudo apt update && sudo apt full-upgrade

# のちにGitを使うのでインストールしておく
sudo apt install git

# OpenCVを使うために必要らしい
sudo apt install libatlas-base-dev

カメラのセットアップ

サンプルプログラムはRaspberry Pi カメラモジュールUSB カメラのどちらでも機能するようです。

Raspberry Pi カメラモジュールを使用する場合は、カメラモジュールを有効化する必要があります。Raspberry Pi のターミナルからraspi-configコマンドを打ち設定画面を開きます。

Raspberry Pi カメラモジュールには向きがありますので、正しく接続するように注意してください。

サンプルプログラムをダウンロードする

Raspberry Pi のターミナルから以下のようにサンプルプログラムGitリポジトリをクローンします。

# コードを置く場所をつくり、その中に入る
mkdir -p ~/src && cd ~/src

# サンプルプログラムを全部ダウンロード
# 「--depth 1」オプションをつけて不要なGit関連データを取り込まないようにする
git clone https://github.com/tensorflow/examples --depth 1 tensorflow_examples

# 物体検出のディレクトリが深い階層にあるのでアクセスしやすいところにコピーする
cp -r ~/src/tensorflow_examples/lite/examples/object_detection/raspberry_pi \
  ~/src/tflite_object_detection

# 他のコードは不要なので消してもよい
rm -rf ~/src/tensorflow_examples

サンプルプログラムに付属のスクリプトを使用して必要な Python パッケージをインストールし、EfficientDet-Lite モデルをダウンロードします。

# 物体検出のディレクトリへ入る
cd ~/src/tflite_object_detection

# 必要な Python パッケージをインストールし、EfficientDet-Lite モデルをダウンロード
./setup.sh

サンプルプログラムを実行する

モニターにデスクトップが表示されている状態でターミナルからサンプルプログラムを実行します。実行すると、物体検知用のウインドウが開きます。

よくわかりませんが、環境変数DISPLAY=:0がセットされていないとエラーになりました。

DISPLAY=:0 python3 detect.py

raspi-object-detection-20230422_131913.jpg

さいごに

一見簡単そうでしたが、やってみると最初はなかなかうまくいきませんでした。

CleanShot 2023-04-22 at 19.17.44@2x.png

元氣があればなんでもできる!

ダメになりそうな時それが一番大事!

本記事は以下のモクモク會での成果です。みなさんから刺激と元氣をいただき、ありがとうございました。

もしご興味のある方はお氣輕にご參加ください。

20230216_133626.jpg

16
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
19