CV / YOLOv5

YOLOv5-seg

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

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

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

はじめる

デプロイ
sudo docker run --rm \
  --name rk3588-yolov5n-seg \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  -e RKNN_LOG_LEVEL=0 \
  --device /dev/video0:/dev/video0 \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5_seg:latest \
  python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4

モデル詳細

reComputer R Series (CM5 + Hailo-8)

YOLOv5-seg(reComputer Rシリーズ CM5 + Hailo-8対応)

YOLOv5-seg(anchor-based インスタンスセグメンテーション)は80個のCOCOクラスを検出し、各インスタンスのピクセルマスクを生成します。HEFは3つの生の検出ヘッドとマスクプロトタイプテンソルを出力し、アプリはCPU上でanchorデコード、クラス別NMS、プロトタイプからのマスク組み立てを行います。

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

モデル情報

バリアントパラメータ数ハードウェアmAPHEFサイズ
YOLOv5n-seg1.99M22.94.7 MB
YOLOv5s-seg7.61M30.78.7 MB
YOLOv5m-seg32.60M36.628.1 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 v2.19.0、Hailo-8

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

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

bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

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

イメージの取得

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

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5n_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5s_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5m_seg:latest

デモ動画で実行

YOLOv5n-seg:

bash
sudo docker run --rm \
  --name cm5-hailo8-yolov5n-seg \
  --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/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 4.23 VStreams APIとHailo-8専用HEFを使用します。
  • ソースモジュール:src/rpi5_hailo8_yolov5n_seg/(..._s_seg/、..._m_seg/も同様)
  • Dockerfile:docker/hailo8/yolov5n_seg.dockerfile