inteintegrity2026-08-11

Raspberry Pi 5 と Hailo-8 による小売棚の商品検出

Raspberry Pi 5 上の Hailo-8 高速推論で棚の商品と在庫変化を追跡し、ブラウザダッシュボードで商品の取り出しと在庫不足を確認できます。

CVObject DetectionRetailGitHub

Raspberry Pi 5 と Hailo-8 による小売棚の商品検出

このプロジェクトは、Raspberry Pi 5 と Hailo-8 アクセラレータを使用して小売棚の商品を検出し、棚の在庫を追跡し、商品の取り出しと在庫不足のイベントを映像上に表示します。2 つの Hailo-8 HEF モデルが棚の商品と手に持たれた商品をそれぞれ検出し、FastAPI/MJPEG ダッシュボードを通じてローカルネットワーク上のブラウザから確認できます。

ソースコード:https://github.com/Seeed-Projects/reComputer-AI-Lab-Project/tree/main/pi_project/retail_shelf_detection

機能

  • Raspberry Pi 5 上での Hailo-8 高速推論
  • 2 つの HEF モデルによる棚商品と手持ち商品の検出
  • 設定可能な棚領域と商品タイプのマッピング
  • 在庫数、商品取り出しイベント、在庫不足状態のオーバーレイ
  • ポート 8000 でのブラウザベースの MJPEG プレビューと在庫表示
  • デモ動画、モデルファイル、デバイス検証ツールを同梱
  • ネイティブ環境と Docker の両方に対応

ハードウェアとソフトウェア

コンポーネント要件
ボードRaspberry Pi 5、64 ビット ARM
アクセラレータHailo-8 M.2 Key M 2280
HailoRT4.23.x
ネイティブ OS64 ビット Debian または Raspberry Pi OS
コンテナランタイムarm64 対応 Docker

ホストのドライバー、ファームウェア、共有ライブラリ、Python パッケージには、互換性のある HailoRT バージョンを使用する必要があります。同梱モデルは Hailo-8 向けであり、Hailo-8L 向けではありません。

Docker でクイックスタート

GHCR からビルド済みの linux/arm64 イメージを取得します。

bash
sudo docker pull \
  ghcr.io/seeed-projects/recomputer-ai-lab-project/retail_shelf_detection:latest

同梱動画と Web ダッシュボードを実行します。

bash
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

同じネットワーク上のブラウザで次のアドレスを開きます。

text
http://<PI_IP>:8000

ダッシュボードには、注釈付き映像、推論 FPS、総在庫数、各棚領域の在庫状態が表示されます。

プロジェクトの取得

bash
git clone https://github.com/Seeed-Projects/reComputer-AI-Lab-Project.git
cd reComputer-AI-Lab-Project

Raspberry Pi OS で実行

ボード用の依存関係をインストールし、Python 仮想環境を作成します。

bash
cd pi_project/retail_shelf_detection
chmod +x scripts/*.sh
./scripts/install_rpi5.sh

Hailo パッケージのインストール後、インストーラーから要求された場合は再起動してください。その後、アクセラレータ、ランタイム、設定、HEF モデルを確認します。

bash
./scripts/probe.sh
python3 tools/check_deployment.py

同梱動画でブラウザダッシュボードを起動します。

bash
python3 web_detection.py \
  --config configs/runtime.json \
  --video_path input/demo.mp4

Web ダッシュボードを起動せずに処理済み MP4 を生成するには、次を実行します。

bash
./scripts/run_demo.sh

処理結果は outputs/restock_demo_hailo8.mp4 に保存されます。

ソースからコンテナをビルド

リポジトリには Dockerfile と、HailoRT 4.23.0、Python 3.11、aarch64 に対応する wheel が含まれています。リポジトリのルートからイメージをビルドします。

bash
sudo docker build \
  -f docker/hailo8/retail_shelf_detection.dockerfile \
  -t retail_shelf_detection:latest \
  pi_project/retail_shelf_detection

HailoRT がホスト上の別のパスにインストールされている場合は、ホストとコンテナのバージョン互換性を保ったまま、2 つの共有ライブラリのマウント先を調整してください。

Web API

  • GET /:ブラウザダッシュボード
  • GET /api/video_feed:注釈付き MJPEG 映像ストリーム
  • GET /api/status:推論、在庫、領域、イベントの状態
  • GET /healthz:サービスと推論のヘルス状態

設定のみを検証

--check-config を使用すると、HailoRT を読み込まずにパスと設定構造を確認できます。

bash
cd pi_project/retail_shelf_detection
python3 app/infer_video_hailo.py --check-config

別の動画または棚レイアウトを使用

別の入力・出力パスを選択するには、configs/runtime.json を更新します。カメラ位置、映像解像度、棚の形状、商品の配置が変わる場合は、configs/ にある棚領域と商品マッピングのファイルも更新してください。

プロジェクト構成

text
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 ストリーム