CV / YOLOv5
YOLOv5-seg
reComputer R Series (CM5 + Hailo-10H)
YOLOv5-segインスタンスセグメンテーションモデル。reComputer RK3588/RK3576(RKNN)とreComputer Rシリーズ + Hailo-8 / Hailo-10Hに対応。
使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
sudo docker run --rm \
--name cm5-hailo10h-yolov5n-seg \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5n_seg:latest \
python web_detection.py --model_path model/yolov5n_seg.hef --video_path video/test.mp4モデル詳細
reComputer R Series (CM5 + Hailo-10H)YOLOv5-seg(reComputer Rシリーズ CM5 + Hailo-10H対応)
YOLOv5-seg(anchor-based インスタンスセグメンテーション)は80個のCOCOクラスを検出し、各インスタンスのピクセルマスクを生成します。HEFは3つの生の検出ヘッドとマスクプロトタイプテンソルを出力し、アプリはCPU上でanchorデコード、クラス別NMS、プロトタイプからのマスク組み立てを行います。
このページはPCIe Hailo-10Hアクセラレータ搭載の**reComputer Rシリーズ(CM5 + Hailo-10H)**を対象としています。
モデル情報
| バリアント | パラメータ数 | ハードウェアmAP | HEFサイズ |
|---|---|---|---|
| YOLOv5n-seg | 1.99M | 23.1 | 3.4 MB |
| YOLOv5s-seg | 7.61M | 30.8 | 11.6 MB |
| YOLOv5m-seg | 32.60M | 36.7 | 18.5 MB |
共通プロパティ:
| 項目 | 値 |
|---|---|
| アーキテクチャ | YOLOv5-seg(3 anchors、stride 8/16/32) |
| 入力 | 640x640x3 RGB(normalize_in_net、mean 0 / std 255) |
| 出力 | proto(160x160x32)+ 3つの検出ヘッド(各351チャネル) |
| Letterboxパディング色 | 114(グレー、YOLOの慣例) |
| HEF | Hailo Model Zoo v5.4.0、Hailo-10H |
精度値はHailo Model Zooの参考ベンチマークであり、CM5上での実測値ではありません。
ハードウェアとホストのセットアップ
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0HailoRT 4.23.x(Hailo-8)のドライバ、ライブラリ、Python wheelをこのHailo-10Hコンテナに混在させないでください。
イメージの取得
イメージはGHCRで公開されています。コンテナを起動する前に取得してください:
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5n_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5s_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5m_seg:latestデモ動画で実行
YOLOv5n-seg:
sudo docker run --rm \
--name cm5-hailo10h-yolov5n-seg \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5n_seg:latest \
python web_detection.py --model_path model/yolov5n_seg.hef --video_path video/test.mp4YOLOv5s-seg / YOLOv5m-segも同じコマンドで、yolov5n_segをyolov5s_segまたはyolov5m_segに置き換えるだけです。
http://<Board_IP>:8000を開くと、インスタンスマスク付きのWebプレビューを確認できます。
USBカメラモード
--device /dev/video0:/dev/video0を追加し、--video_path video/test.mp4を--camera_id 0に置き換えます。
REST API
curl -X POST "http://<Board_IP>:8000/api/models/yolov5n_seg/predict" \
-F "file=@test.jpg"| エンドポイント | メソッド | 用途 |
|---|---|---|
/api/models/yolov5n_seg/predict | POST | 検出ボックス + インスタンスマスク(JSON) |
/api/video_feed | GET | MJPEGプレビューストリーム |
実装の詳細
- デコードはHailo Model Zooの
yolov5_seg後処理に準拠します:anchorデコード(xy = (sigmoid(xy) * 2 + grid - 0.5) * stride、wh = (sigmoid(wh) * 2) ** 2 * anchor_grid)→ objectness × クラススコア → クラス別NMS →sigmoid(coeffs @ proto)を入力サイズにアップサンプルし、各ボックスでクロップ。 - 3つの検出ヘッドは351チャネルで識別し、空間サイズ順(stride 32 → 16 → 8)に並べます。protoヘッドは160x160x32テンソルです。初回推論時に各vstreamの名前と形状を出力するため、実機でマッピングを確認できます。
- 実行エンジンはHailoRT 5.1.1の
create_infer_modelAPIを使用し、構成を永続化してFLOAT32出力バッファを登録します。 - ソースモジュール:
src/hailo10h_yolov5n_seg/(..._s_seg/、..._m_seg/も同様) - Dockerfile:
docker/hailo10h/yolov5n_seg.dockerfile