CV / MSPN Pose

MSPN RegNetX-800MF

MSPN単人姿勢推定、17個のCOCOキーポイント対応(reComputer Rシリーズ + Hailo-8 / Hailo-10H)

51 ダウンロード
サイズ
5.8 MB
メモリ
4GB+
精度
Hailo HEF / HailoRT

使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。

はじめる

デプロイ
sudo docker run --rm \
  --name cm5-hailo8-mspn-regnetx-800mf \
  --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-hailo8-cv/mspn_regnetx_800mf:latest \
  python web_detection.py --model_path model/mspn_regnetx_800mf.hef --video_path video/test.mp4

REST API

REST API を使用して推論を実行します。以下のコマンドをコピーしてください。

Curl
curl -X POST "http://<Board_IP>:8000/api/models/mspn_regnetx_800mf/predict" \
  -F "file=@test.jpg"
Python
import requests

resp = requests.post(
    "http://<Board_IP>:8000/api/models/mspn_regnetx_800mf/predict",
    files={"file": open("test.jpg", "rb")},
    timeout=30,
)
print(resp.json())

モデル詳細

reComputer Rシリーズ

MSPN RegNetX-800MF(reComputer Rシリーズ CM5 + Hailo-8対応)

MSPN(Multi-Stage Pose Network)とRegNetX-800MFバックボーンにより、17個のCOCOキーポイントを用いた単人姿勢推定を実行します。HEFは64x48x17のヒートマップを出力し、アプリはチャネルごとにargmaxを取って入力空間にスケーリングし、COCOスケルトンを描画します。

このページはPCIe Hailo-8アクセラレータ搭載の**reComputer Rシリーズ(CM5 + Hailo-8)**を対象としています。

モデル情報

項目値
アーキテクチャMSPN + RegNetX-800MF
タスク単人姿勢推定
入力256x192x3 RGB(normalize_in_net、ImageNet RGB)
出力ヒートマップ 64x48x17(17個のCOCOキーポイント)
パラメータ数7.17M
演算量2.94G
ハードウェアAP70.3%
FPS2126
HEFHailo Model Zoo v2.19.0、Hailo-8

ハードウェアとホストのセットアップ

Hailo-8ドライバ、ファームウェア、ホストのlibhailort.so、イメージ内のPython wheelは、一致するHailoRTのメジャー/マイナーバージョン(4.23.x)を使用する必要があります。

bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

デモ動画で実行

bash
sudo docker run --rm \
  --name cm5-hailo8-mspn-regnetx-800mf \
  --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-hailo8-cv/mspn_regnetx_800mf:latest \
  python web_detection.py --model_path model/mspn_regnetx_800mf.hef --video_path video/test.mp4

http://<Board_IP>:8000 を開くと、キーポイントのスケルトンが重ね表示されたWebプレビューを確認できます。

USBカメラモード

bash
sudo docker run --rm \
  --name cm5-hailo8-mspn-regnetx-800mf \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  --device /dev/video0:/dev/video0 \
  -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-hailo8-cv/mspn_regnetx_800mf:latest \
  python web_detection.py --model_path model/mspn_regnetx_800mf.hef --camera_id 0

REST API

bash
curl -X POST "http://<Board_IP>:8000/api/models/mspn_regnetx_800mf/predict" \
  -F "file=@test.jpg"
エンドポイントメソッド用途
/api/models/mspn_regnetx_800mf/predictPOST17個のCOCOキーポイント(JSON)
/api/video_feedGETMJPEGプレビューストリーム

実装の詳細

  • ソースモジュール:src/rpi5_hailo8_mspn_regnetx_800mf/
  • Dockerfile:docker/hailo8/mspn_regnetx_800mf.dockerfile
  • normalize_in_net(ImageNet RGB平均/標準偏差)を内蔵。input_conversionなし —— letterbox後に生のuint8 RGBをそのまま入力します。
  • デコード:チャネルごとにargmax → 64x48空間の(x, y) → 256x192にスケーリング → 逆letterboxで元画像に復元。初回推論時に生のvstreamレイアウトを一度出力します。
  • 単人モデル:中央に1人が写っていることを前提とします。複数人の場合は先に検出器を実行し、人物ごとに切り出してください。
  • Model Zooのリファレンス実装では5x5ガウスぼかしと1/4ピクセルシフトを追加で適用しますが、本デモでは省略しています。

トラブルシューティング

  • HEFのロードに失敗する:HailoRTが4.23.xであり、マウントしたlibhailort.soがホストドライバと一致していることを確認してください。
  • /dev/hailo0が存在しない:lsmod | grep hailoを確認し、hailort-pcie-driverを再インストールしてください。
  • スケルトンが描画されない:キーポイント信頼度スライダーを下げてください(デフォルト0.30)。
  • キーポイントの位置がずれる:出力される入出力shapeが256x192入力と64x48x17ヒートマップに一致することを確認してください。

入力と出力

入力: 画像(256x192 RGB)。出力: x、y、信頼度付き17キーポイント(COCO形式)。