CV / EfficientDet

EfficientDet-Lite1

BiFPNヘッドを備えたEfficientDet-Lite1は、Hailo-8上でCOCOの80物体クラスを検出します。NMSとsigmoidはオンチップ(Hailo HPP)で実行されるため、アプリはNMS処理後のテンソルのみを解析します。efficientdetファミリーのLite1バリアントで、Lite0より大規模なバックボーンと384x384入力を採用し、より高い精度を実現します。

1 ダウンロード
サイズ
16 MB
メモリ
4GB+
精度
Hailo HEF / 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.mp4

REST API

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

Curl
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
  -F "file=@test.jpg"
Python
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 後のテンソルを解析
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-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.mp4

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

USB カメラモード

bash
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 0

REST API

推論エンドポイント:

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

画像リクエストの例:

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

実装上の注意事項

  • 入出力仕様と後処理は 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_netpadding_color=127 を使用します。アプリは グレー(127)のパディングでレターボックス化し、未加工の uint8 RGB ピクセルを入力します。 手動での正規化は行いません。
  • HailoRT は NMS vstream をクラスごとの可変長リスト(NMS-by-score)として返します。 パーサーはこの形式に加え、object/dense レイアウトにも対応します。最初の推論時に未加工の 型と形状をログへ記録し、ハードウェア上で検証できるようにします。
  • クラスマッピング: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_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プレビュー。