CV / YOLOv5

YOLOv5-seg

reComputer R Series (CM5 + Hailo-10H)

YOLOv5-segインスタンスセグメンテーションモデル。reComputer RK3588/RK3576(RKNN)とreComputer Rシリーズ + Hailo-8 / Hailo-10Hに対応。

662 ダウンロード
サイズ
~5.4MB
メモリ
1GB+
精度
INT8 / Hailo HEF

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

はじめる

デプロイ
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)**を対象としています。

モデル情報

バリアントパラメータ数ハードウェアmAPHEFサイズ
YOLOv5n-seg1.99M23.13.4 MB
YOLOv5s-seg7.61M30.811.6 MB
YOLOv5m-seg32.60M36.718.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の慣例)
HEFHailo Model Zoo v5.4.0、Hailo-10H

精度値はHailo Model Zooの参考ベンチマークであり、CM5上での実測値ではありません。

ハードウェアとホストのセットアップ

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

HailoRT 4.23.x(Hailo-8)のドライバ、ライブラリ、Python wheelをこのHailo-10Hコンテナに混在させないでください。

イメージの取得

イメージはGHCRで公開されています。コンテナを起動する前に取得してください:

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

bash
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

YOLOv5s-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

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

実装の詳細

  • デコードは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_model APIを使用し、構成を永続化してFLOAT32出力バッファを登録します。
  • ソースモジュール:src/hailo10h_yolov5n_seg/(..._s_seg/、..._m_seg/も同様)
  • Dockerfile:docker/hailo10h/yolov5n_seg.dockerfile