Raspberry Pi 5 と Hailo-8 による小売棚の商品検出
Raspberry Pi 5 上の Hailo-8 高速推論で棚の商品と在庫変化を追跡し、ブラウザダッシュボードで商品の取り出しと在庫不足を確認できます。
Raspberry Pi 5 と Hailo-8 による小売棚の商品検出
このプロジェクトは、Raspberry Pi 5 と Hailo-8 アクセラレータを使用して小売棚の商品を検出し、棚の在庫を追跡し、商品の取り出しと在庫不足のイベントを映像上に表示します。2 つの Hailo-8 HEF モデルが棚の商品と手に持たれた商品をそれぞれ検出し、FastAPI/MJPEG ダッシュボードを通じてローカルネットワーク上のブラウザから確認できます。
機能
- Raspberry Pi 5 上での Hailo-8 高速推論
- 2 つの HEF モデルによる棚商品と手持ち商品の検出
- 設定可能な棚領域と商品タイプのマッピング
- 在庫数、商品取り出しイベント、在庫不足状態のオーバーレイ
- ポート 8000 でのブラウザベースの MJPEG プレビューと在庫表示
- デモ動画、モデルファイル、デバイス検証ツールを同梱
- ネイティブ環境と Docker の両方に対応
ハードウェアとソフトウェア
| コンポーネント | 要件 |
|---|---|
| ボード | Raspberry Pi 5、64 ビット ARM |
| アクセラレータ | Hailo-8 M.2 Key M 2280 |
| HailoRT | 4.23.x |
| ネイティブ OS | 64 ビット Debian または Raspberry Pi OS |
| コンテナランタイム | arm64 対応 Docker |
ホストのドライバー、ファームウェア、共有ライブラリ、Python パッケージには、互換性のある HailoRT バージョンを使用する必要があります。同梱モデルは Hailo-8 向けであり、Hailo-8L 向けではありません。
Docker でクイックスタート
GHCR からビルド済みの linux/arm64 イメージを取得します。
sudo docker pull \
ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latest同梱動画と Web ダッシュボードを実行します。
sudo docker run --rm \
--name rpi5-hailo8-retail-shelf-detection \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latest \
python web_detection.py \
--config configs/runtime.json \
--video_path input/demo.mp4 \
--host 0.0.0.0 \
--port 8000同じネットワーク上のブラウザで次のアドレスを開きます。
http://<PI_IP>:8000ダッシュボードには、注釈付き映像、推論 FPS、総在庫数、各棚領域の在庫状態が表示されます。
プロジェクトの取得
git clone https://github.com/Seeed-Projects/reComputer-AI-Lab-Project.git
cd reComputer-AI-Lab-ProjectRaspberry Pi OS で実行
ボード用の依存関係をインストールし、Python 仮想環境を作成します。
cd pi_project/retail_shelf_detection
chmod +x scripts/*.sh
./scripts/install_rpi5.shHailo パッケージのインストール後、インストーラーから要求された場合は再起動してください。その後、アクセラレータ、ランタイム、設定、HEF モデルを確認します。
./scripts/probe.sh
python3 tools/check_deployment.py同梱動画でブラウザダッシュボードを起動します。
python3 web_detection.py \
--config configs/runtime.json \
--video_path input/demo.mp4Web ダッシュボードを起動せずに処理済み MP4 を生成するには、次を実行します。
./scripts/run_demo.sh処理結果は outputs/restock_demo_hailo8.mp4 に保存されます。
ソースからコンテナをビルド
リポジトリには Dockerfile と、HailoRT 4.23.0、Python 3.11、aarch64 に対応する wheel が含まれています。リポジトリのルートからイメージをビルドします。
sudo docker build \
-f docker/hailo8/retail_shelf_detection.dockerfile \
-t retail_shelf_detection:latest \
pi_project/retail_shelf_detectionHailoRT がホスト上の別のパスにインストールされている場合は、ホストとコンテナのバージョン互換性を保ったまま、2 つの共有ライブラリのマウント先を調整してください。
Web API
GET /:ブラウザダッシュボードGET /api/video_feed:注釈付き MJPEG 映像ストリームGET /api/status:推論、在庫、領域、イベントの状態GET /healthz:サービスと推論のヘルス状態
設定のみを検証
--check-config を使用すると、HailoRT を読み込まずにパスと設定構造を確認できます。
cd pi_project/retail_shelf_detection
python3 app/infer_video_hailo.py --check-config別の動画または棚レイアウトを使用
別の入力・出力パスを選択するには、configs/runtime.json を更新します。カメラ位置、映像解像度、棚の形状、商品の配置が変わる場合は、configs/ にある棚領域と商品マッピングのファイルも更新してください。
プロジェクト構成
pi_project/retail_shelf_detection/
├── app/ # 映像推論のエントリポイント
├── configs/ # モデル、領域、商品、イベントの設定
├── input/ # 同梱デモ動画
├── models/hef/ # Hailo-8 HEF モデル
├── runtime/ # HailoRT 統合と YOLO 後処理
├── shelf_monitor/ # 在庫、イベント、領域、描画ロジック
├── scripts/ # インストール、検証、デモ用スクリプト
├── tools/ # デプロイ検証
└── web_detection.py # FastAPI ダッシュボードと MJPEG ストリーム