CV / CenterNet

CenterNet (resnet_v1_18)

COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.

16 ダウンロード
サイズ
12.4 MB
メモリ
4GB+
精度
Hailo HEF / HailoRT 4.23.x

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

はじめる

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

REST API

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

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

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

モデル詳細

reComputer R Series

CenterNet (resnet_v1_18)(reComputer Rシリーズ CM5 + Hailo-8対応)

CenterNet(ResNet-18バックボーン)は、オンチップのmax_finder後処理バリアントを使用して、Hailo-8上でHailoRT経由でCOCO 80クラスの物体検出を実行します。

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

モデル情報

項目値
アーキテクチャCenterNet(ResNet-18バックボーン)
タスク物体検出
入力512x512x3 RGB(正規化はHEFに組み込み済み)
出力3ヘッド:wh(128x128x2)、reg(128x128x2)、スパースヒートマップ(128x128x80)
クラス数80(COCO)
パラメータ数14.22M
演算量31.21G
ハードウェアmAP25.0(COCO、Hailo Model Zoo参考値)
HEFHailo Model Zoo v2.19.0、Hailo-8

精度値はHailo Model Zoo Hailo-8物体検出テーブルによるもので、CM5上での実測値ではありません。

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

項目値
ボードRaspberry Pi CM5搭載reComputer Rシリーズ
アクセラレータHailo-8(PCIe接続)、/dev/hailo0として公開
ランタイムHailoRT 4.23.x
コンテナ内Python3.11、aarch64

ホストに対応パッケージをインストールし、コンテナ起動前にドライバとデバイスの準備完了を確認してください:

bash
sudo apt update

# インストール前に両方の候補が4.23.xであることを確認してください。
apt-cache policy hailort hailort-pcie-driver

sudo apt install hailort=4.23.0 hailort-pcie-driver=4.23.0
sudo reboot

# 再起動後
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

このイメージに必要なHailoRTバージョンは4.23.xです。apt-cache policyが5.xを選択した場合は続行しないでください。それはHailo-10Hのランタイムであり、このHailo-8コンテナには適合しません。

デモ動画で実行

bash
sudo docker run --rm \
  --name cm5-hailo8-centernet \
  --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/centernet_resnet_v1_18_postprocess:latest \
  python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --video_path video/test.mp4

http://<Board_IP>:8000を開いてWebプレビューを確認できます。

USBカメラモード

bash
sudo docker run --rm \
  --name cm5-hailo8-centernet \
  --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/centernet_resnet_v1_18_postprocess:latest \
  python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --camera_id 0

REST API

予測エンドポイント:

text
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict

画像リクエストの例:

bash
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
  -F "file=@test.jpg"

| エンドポイント | メソッド | 用途 | |---|---| | / | GET | WebプレビューUI | | /api/models/centernet_resnet_v1_18_postprocess/predict | POST | 検出結果(JSON) | | /api/video_feed | GET | MJPEGプレビューストリーム |

実装の詳細

  • このHEFはnormalize_in_net=true(ImageNet平均/標準偏差、RGB)でコンパイルされているため、アプリは画像を512x512にletterboxし、BGRをRGBに変換して生のuint8ピクセルを入力します(手動の正規化は不要)。
  • ヒートマップヘッドはすでにスパースです:オンチップのmax_finderとスコア閾値(0.2)が閾値以上の局所最大値のみを保持します。デコーダはこれらのピークを取得し、各ピークのwh/regを読み取り、Hailo Model Zooの公式式(stride 4、128x128特徴マップ → 512x512入力)で検出ボックスを再構築し、letterboxの逆変換で元画像に戻します。
  • 2つの2チャネルヘッド(wh、reg)は、vstream名に畳み込み番号が含まれる場合は名前でマッピングされ(conv3 → wh、conv5 → reg)、それ以外はネットワーク出力順でマッピングされます。初回推論時に各vstreamの名前/形状と解決されたマッピングを出力するため、実機で確認できます。

開発ノート

  • ソースモジュール:src/rpi5_hailo8_centernet_resnet_v1_18_postprocess/
  • Dockerfile:docker/hailo8/centernet_resnet_v1_18_postprocess.dockerfile
  • コンテナ:ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest
  • このモジュールはHailoRT 4.23 VStreams APIとHailo-8専用HEFを使用します。

入力と出力

入力:画像、動画、または USB カメラのフレーム。出力:信頼度付きの COCO 80クラス検出ボックス、およびアノテーション付き MJPEG プレビュー。