CV / YOLOv8

YOLOv8-seg

reComputer RK3588/RK3576(RKNN)および reComputer R Series(Hailo-8 / Hailo-10H、HailoRT)向け YOLOv8n/s/m インスタンスセグメンテーション

227 ダウンロード
サイズ
~7.2MB
メモリ
1GB+
精度
INT8

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

はじめる

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

モデル詳細

reComputer R Series (CM5 + Hailo-8)

YOLOv8-seg を reComputer R Series(CM5 + Hailo-8)で実行

YOLOv8n/s/m-seg は HailoRT 4.23 を介して Hailo-8 上で実行されます。HEF は raw ヘッドを公開します (オンチップ NMS なし)。ホストは DFL ボックスをデコードし、シグモイドとクラスごとの NMS を 適用して、80 COCO クラス向けのプロトタイプマスク(32 係数 × 160×160×32 プロトタイプ、 各ボックスにクロップ)を組み立てます。

モデル情報

バリアント入力パッケージ済み HEFコンテナイメージ
YOLOv8n-seg640×640×3 RGB5.3 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB17.3 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB32.9 MByolov8m_seg

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

項目値
ボードRaspberry Pi CM5 搭載 reComputer R Series
アクセラレータPCIe 経由の Hailo-8、/dev/hailo0 として公開
ランタイムHailoRT 4.23.x(ホスト / コンテナで major.minor を一致させる必要があります)
コンテナ内 Python3.11、aarch64
bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

# After reboot
hailortcli fw-control identify
ls /dev/hailo0

# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start docker

デモ動画で実行

モデルバリアントに対応するコマンドを選択してください。

YOLOv8n-seg

bash
sudo docker run --rm \
  --name cm5-hailo8-yolov8n-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/yolov8n_seg:latest \
  python web_detection.py --model_path model/yolov8n_seg.hef --video_path video/test.mp4

YOLOv8s-seg

bash
sudo docker run --rm \
  --name cm5-hailo8-yolov8s-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/yolov8s_seg:latest \
  python web_detection.py --model_path model/yolov8s_seg.hef --video_path video/test.mp4

YOLOv8m-seg

bash
sudo docker run --rm \
  --name cm5-hailo8-yolov8m-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/yolov8m_seg:latest \
  python web_detection.py --model_path model/yolov8m_seg.hef --video_path video/test.mp4

http://<Board_IP>:8000 を開くと Web プレビューを表示できます(クラスごとに重ねられた インスタンスマスク + 検出ボックス)。

USB カメラモード

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

REST API

各バリアントには専用のエンドポイントがあります。

バリアントエンドポイント
YOLOv8n-segPOST /api/models/yolov8n_seg/predict
YOLOv8s-segPOST /api/models/yolov8s_seg/predict
YOLOv8m-segPOST /api/models/yolov8m_seg/predict

例:

bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov8n_seg/predict" \
  -F "file=@test.jpg"

レスポンスには class、confidence、box フィールドを持つ predictions エントリが含まれます (box は元フレームのピクセル単位の x1/y1/x2/y2 です)。インスタンスマスクは MJPEG プレビューに描画され、/api/video_feed が注釈付きストリームを配信します。

実装ノート

  • HEF は 10 個の raw テンソルを公開します。各ストライド(32/16/8)ごとに 64 チャネルの DFL ボックスヘッド、80 チャネルのクラスヘッド、32 チャネルのマスク係数ヘッドがあり、さらに 160×160×32 プロトタイプが 1 つあります。最初の推論時にすべてのテンソル名、形状、値の範囲が ログに出力されます。
  • ボックスのデコードにはセル中心に対する DFL ソフトマックス期待値(16 ビン)を使用します。 DFL を折り畳んだコンパイル(4 チャネルヘッド)は直接デコードされます。
  • クラスヘッドはデバイス上ですでにシグモイド活性化されている場合があります(Model Zoo alls スクリプト)。モジュールは値が raw ロジットの場合にのみシグモイドを適用します。
  • one2many 予測は信頼度と IoU スライダーで制御されるクラスごとの NMS を経由します。マスクは sigmoid(coeffs @ proto) で、入力にアップサンプリングされ、各ボックスにクロップされます (しきい値 0.5)。
  • レターボックスのパディングは 114 です(Model Zoo base/yolo.yaml)。mean 0 / std 255 の 正規化は HEF にコンパイルされています。

開発ノート

バリアントソースDockerfileコンテナ
YOLOv8n-segsrc/rpi5_hailo8_yolov8n_seg/docker/hailo8/yolov8n_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8n_seg:latest
YOLOv8s-segsrc/rpi5_hailo8_yolov8s_seg/docker/hailo8/yolov8s_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8s_seg:latest
YOLOv8m-segsrc/rpi5_hailo8_yolov8m_seg/docker/hailo8/yolov8m_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8m_seg:latest
  • 実行部は HailoRT 4.23 の InferVStreams ラッパーです(Python 3.11 + 同梱の cp311 ホイール)。 ネイティブの libhailort.so はホストから提供されます。
  • HEF:Hailo Model Zoo v2.19.0 の Hailo-8 ビルド。
  • 記載されている mAP 値(COCO インスタンスセグメンテーション)は Model Zoo のフル精度の 数値であり、このボードでの測定値ではありません。