CV / CenterNet
CenterNet (resnet_v1_18)
COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.
使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
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.mp4REST API
REST API を使用して推論を実行します。以下のコマンドをコピーしてください。
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"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 SeriesCenterNet (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 |
| ハードウェアmAP | 25.0(COCO、Hailo Model Zoo参考値) |
| HEF | Hailo 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 |
| コンテナ内Python | 3.11、aarch64 |
ホストに対応パッケージをインストールし、コンテナ起動前にドライバとデバイスの準備完了を確認してください:
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コンテナには適合しません。
デモ動画で実行
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.mp4http://<Board_IP>:8000を開いてWebプレビューを確認できます。
USBカメラモード
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 0REST API
予測エンドポイント:
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict画像リクエストの例:
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 プレビュー。