CV / EfficientDet

EfficientDet-Lite2

BiFPNヘッドを備えたEfficientDet-Lite2は、Hailo-8上でCOCOの80種類の物体クラスを検出します。NMSとsigmoidはオンチップ(Hailo HPP)で実行されるため、アプリはNMS後のテンソルのみを解析します。efficientdetファミリーのLite2バリアントであり、3つのバリアントの中で最大のバックボーンと448x448入力を採用し、最高の精度を実現します。

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

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

はじめる

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

REST API

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

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

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

モデル詳細

reComputer R Series(CM5 + Hailo-8)上の EfficientDet-Lite2

EfficientDet-Lite2 は、HailoRT を介して Hailo-8 上で COCO 80クラスの物体検出を実行します。 NMS と sigmoid はオンチップ(Hailo HPP)で実行されるため、ホストは NMS 後のテンソルのみを解析します。これは efficientdet ファミリーの Lite2 バリアントであり、 3つ(lite0/lite1/lite2)の中で最大のバックボーンと 448x448 入力を使用し、 最高の精度を実現します。

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

モデル情報

プロパティ
アーキテクチャEfficientDet-Lite2(BiFPN)
タスク物体検出
入力448x448x3 RGB(正規化は HEF に組み込み済み:mean=127、std=128)
出力オンチップ NMS テンソル、NMS 後の形状は 89x5x100
クラス89スロット(labels_offset=1 により COCO カテゴリ ID 1..89、うち10個は未使用)
パラメータ数5.93M
演算量6.84G
後処理オンチップ 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-lite2 \
  --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_lite2:latest \
  python web_detection.py --model_path model/efficientdet_lite2.hef --video_path video/test.mp4

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

USB カメラモード

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

REST API

予測エンドポイント:

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

画像リクエストの例:

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

実装上の注意事項

  • 入出力仕様と後処理は Lite0/Lite1 ビルドと同一です。異なるのはバックボーンと入力サイズのみです(448x448、5.93M パラメータ → 3つの中で最高精度)。
  • 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] で、448x448 の レターボックス入力に対して [0,1] に正規化されています。アプリはピクセル単位へスケーリングし、レターボックス処理を元に戻します。
  • mean=127/std=128 の normalize_in_netpadding_color=127:アプリは グレー(127)でパディングしてレターボックス処理を行い、未加工の uint8 RGB ピクセルを入力します。 手動での正規化は不要です。
  • HailoRT は、NMS vstream をクラスごとの可変長リスト(スコア順 NMS)として返します。 パーサーはこの形式に加えて、オブジェクト形式と密形式のレイアウトにも対応します。最初の推論時に未加工の 型と形状がログへ出力されるため、ハードウェア上で確認できます。
  • クラスマッピング: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_lite2/
  • Dockerfile:docker/hailo8/efficientdet_lite2.dockerfile
  • コンテナ:ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite2:latest
  • このモジュールは HailoRT 4.23 VStreams API と Hailo-8 専用の HEF を使用します。
  • ファミリー:efficientdet(バリアント:lite0 / lite1 / lite2)。これは lite2 ビルドです。

入力と出力

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