CV / EfficientDet
EfficientDet-Lite1
BiFPNヘッドを備えたEfficientDet-Lite1は、Hailo-8上でCOCOの80物体クラスを検出します。NMSとsigmoidはオンチップ(Hailo HPP)で実行されるため、アプリはNMS処理後のテンソルのみを解析します。efficientdetファミリーのLite1バリアントで、Lite0より大規模なバックボーンと384x384入力を採用し、より高い精度を実現します。
使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite1 \
--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/efficientdet_lite1:latest \
python web_detection.py --model_path model/efficientdet_lite1.hef --video_path video/test.mp4REST API
REST API を使用して推論を実行します。以下のコマンドをコピーしてください。
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/efficientdet_lite1/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())モデル詳細
reComputer R Series(CM5 + Hailo-8)上の EfficientDet-Lite1
EfficientDet-Lite1 は、HailoRT を介して Hailo-8 上で COCO 80 クラスの物体検出を実行します。 NMS と sigmoid はオンチップ(Hailo HPP)で実行されるため、ホストは NMS 後のテンソルのみを解析します。これは efficientdet ファミリーの Lite1 バリアントであり、Lite0 よりも 大規模なバックボーンと 384x384 入力を使用して、より高い精度を実現します。
このページは、PCIe Hailo-8 アクセラレータを搭載した reComputer R Series(CM5 + Hailo-8) を対象としています。
モデル情報
| プロパティ | 値 |
|---|---|
| アーキテクチャ | EfficientDet-Lite1(BiFPN) |
| タスク | 物体検出 |
| 入力 | 384x384x3 RGB(正規化は HEF にコンパイル済み:mean=127、std=128) |
| 出力 | オンチップ NMS テンソル、NMS 後の形状は 89x5x100 |
| クラス | 89 スロット(labels_offset=1 により COCO カテゴリ ID 1..89、うち 10 個は未使用) |
| パラメータ数 | 4.73M |
| 演算量 | 4G |
| 後処理 | オンチップ NMS(HPP)+ sigmoid。ホストは NMS 後のテンソルを解析 |
| HEF | Hailo Model Zoo v2.19.0、Hailo-8 |
精度値は Hailo Model Zoo のリファレンス値です。CM5 上で測定された ベンチマークではありません。
ハードウェアとホストのセットアップ
| 項目 | 値 |
|---|---|
| ボード | Raspberry Pi CM5 搭載 reComputer R Series |
| アクセラレータ | PCIe 接続の Hailo-8、/dev/hailo0 として公開 |
| ランタイム | HailoRT 4.23.x |
| コンテナ内の Python | 3.11、aarch64 |
コンテナを起動する前に、ホストへ Hailo-8 パッケージをインストールし、ドライバとデバイスが 使用可能であることを確認します。
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot
# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0このイメージで想定される HailoRT のバージョンは 4.23.x です。
デモ動画での実行
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite1 \
--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/efficientdet_lite1:latest \
python web_detection.py --model_path model/efficientdet_lite1.hef --video_path video/test.mp4Web プレビューを表示するには、http://<Board_IP>:8000 を開きます。
USB カメラモード
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite1 \
--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/efficientdet_lite1:latest \
python web_detection.py --model_path model/efficientdet_lite1.hef --camera_id 0REST API
推論エンドポイント:
POST http://<Board_IP>:8000/api/models/efficientdet_lite1/predict画像リクエストの例:
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
-F "file=@test.jpg"| エンドポイント | メソッド | 用途 |
|---|---|---|
/ | GET | Web プレビュー UI |
/api/models/efficientdet_lite1/predict | POST | 検出結果(JSON) |
/api/video_feed | GET | MJPEG プレビューストリーム |
実装上の注意事項
- 入出力仕様と後処理は Lite0 ビルドと同一です。異なるのは バックボーンと入力サイズのみです(384x384、4.73M パラメータ → より高い精度)。
- HEF はオンチップで NMS を実行します(
device_pre_post_layers: nms=true, sigmoid=true, hpp=true)。アプリは公式のtf_postproc_nmsに従って NMS 後のテンソルのみを解析するため、nms_threshは無視されます(API の互換性維持のみ)。 - NMS 後の各行は
[ymin, xmin, ymax, xmax, score]で、384x384 のレターボックス化された入力に対して [0,1] の範囲に正規化されています。アプリはピクセル単位にスケーリングし、レターボックスを解除します。 - mean=127/std=128 の
normalize_in_netとpadding_color=127を使用します。アプリは グレー(127)のパディングでレターボックス化し、未加工の uint8 RGB ピクセルを入力します。 手動での正規化は行いません。 - HailoRT は NMS vstream をクラスごとの可変長リスト(NMS-by-score)として返します。 パーサーはこの形式に加え、object/dense レイアウトにも対応します。最初の推論時に未加工の 型と形状をログへ記録し、ハードウェア上で検証できるようにします。
- クラスマッピング:
cls_id(0..88)→ COCO カテゴリ IDcls_id+1(labels_offset=1)。未使用の 10 個の COCO ID は「N/A」で、描画されません。 ラベルがずれている場合は、最初の推論ログから再確認してください。 - デフォルト値:信頼度 0.25、IOU 0.45(NMS はオンチップのため、IOU は影響しません)。Model Zoo の評価では 0.001 / 0.5 を使用します。より多くの結果を確認するには、信頼度スライダーを下げてください。
開発上の注意事項
- ソースモジュール:
src/rpi5_hailo8_efficientdet_lite1/ - Dockerfile:
docker/hailo8/efficientdet_lite1.dockerfile - コンテナ:
ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite1:latest - このモジュールは HailoRT 4.23 VStreams API と Hailo-8 専用 HEF を使用します。
- ファミリー:efficientdet(バリアント:lite0 / lite1 / lite2)。これは lite1 ビルドです。
入力と出力
入力:画像、動画、またはUSBカメラフレーム。出力:信頼度付きのCOCO 80クラス検出ボックス、およびアノテーション付きMJPEGプレビュー。