CV / EfficientDet

EfficientDet-Lite0

BiFPNヘッドを備えたEfficientDet-Lite0が、Hailo-8上でCOCOの80物体クラスを検出します。NMSとsigmoidはオンチップ(Hailo HPP)で実行されるため、アプリはNMS処理後のテンソルのみを解析します。EfficientDetファミリーのLite0バリアントです。

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

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

はじめる

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

REST API

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

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

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

モデル詳細

reComputer R Series(CM5 + Hailo-8)での EfficientDet-Lite0

EfficientDet-Lite0 は、HailoRT を介して Hailo-8 上で COCO 80 クラスの物体検出を実行します。 NMS と sigmoid はオンチップ(Hailo HPP)で実行されるため、ホストは NMS 後のテンソルのみを解析します。これは efficientdet ファミリーの Lite0 バリアントです。

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

モデル情報

プロパティ
アーキテクチャEfficientDet-Lite0(BiFPN)
タスク物体検出
入力320x320x3 RGB(正規化は HEF に組み込み済み:mean=127、std=128)
出力オンチップ NMS テンソル、NMS 後の形状は 89x5x100
クラス89 スロット(labels_offset=1 により COCO カテゴリ ID 1..89、うち 10 個は未使用)
パラメータ数3.56M
演算量1.94G
後処理オンチップ NMS(HPP)+ sigmoid、ホストは NMS 後のテンソルを解析
HEFHailo 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
コンテナ内の Python3.11、aarch64

ホストに Hailo-8 パッケージをインストールし、コンテナを起動する前に ドライバとデバイスの準備が完了していることを確認します。

bash
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 です。

デモ動画での実行

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

Web プレビューを表示するには、http://<Board_IP>:8000 を開きます。

USB カメラモード

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

REST API

推論エンドポイント:

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

画像リクエストの例:

bash
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite0/predict" \
  -F "file=@test.jpg"
エンドポイントメソッド用途
/GETWeb プレビュー UI
/api/models/efficientdet_lite0/predictPOST検出結果(JSON)
/api/video_feedGETMJPEG プレビューストリーム

実装上の注意事項

  • 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] であり、320x320 のレターボックス化された 入力に対して [0,1] に正規化されています。アプリはピクセル単位に変換し、レターボックスを解除します。
  • mean=127/std=128 の normalize_in_net + padding_color=127:アプリは グレー(127)のパディングでレターボックス化し、未処理の uint8 RGB ピクセルを入力します。 手動での正規化は不要です。
  • HailoRT は、NMS vstream をクラス別リスト(NMS-by-score)、 オブジェクト配列、または密な float32 (1,89,5,100)/(1,89,100,5) として返す場合があります。パーサーは 3 形式すべてに対応しています。ハードウェア上で確認できるよう、初回推論時に未処理データの型と形状を ログに記録します。
  • クラスマッピング:cls_id(0..88)→ COCO カテゴリ ID cls_id+1labels_offset=1)。未使用の 10 個の COCO ID は「N/A」であり、描画されません。 ラベルがずれている場合は、初回推論ログから再確認してください。
  • デフォルト値:信頼度 0.25、IOU 0.45(NMS はオンチップで実行されるため、IOU は影響しません)。Model Zoo の評価では 0.001 / 0.5 を使用します。より多くの結果を確認するには、信頼度スライダーを下げてください。

開発上の注意事項

  • ソースモジュール:src/rpi5_hailo8_efficientdet_lite0/
  • Dockerfile:docker/hailo8/efficientdet_lite0.dockerfile
  • コンテナ:ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite0:latest
  • このモジュールは HailoRT 4.23 VStreams API と Hailo-8 専用 HEF を使用します。
  • ファミリー:efficientdet(lite0 / lite1 / lite2 バリアントを予定)。これは lite0 ビルドです。

入力と出力

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