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-seg | 640×640×3 RGB | 5.3 MB | yolov8n_seg |
| YOLOv8s-seg | 640×640×3 RGB | 17.3 MB | yolov8s_seg |
| YOLOv8m-seg | 640×640×3 RGB | 32.9 MB | yolov8m_seg |
ハードウェアとホストのセットアップ
| 項目 | 値 |
|---|---|
| ボード | Raspberry Pi CM5 搭載 reComputer R Series |
| アクセラレータ | PCIe 経由の Hailo-8、/dev/hailo0 として公開 |
| ランタイム | HailoRT 4.23.x(ホスト / コンテナで major.minor を一致させる必要があります) |
| コンテナ内 Python | 3.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.mp4YOLOv8s-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.mp4YOLOv8m-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.mp4http://<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 0REST API
各バリアントには専用のエンドポイントがあります。
| バリアント | エンドポイント |
|---|---|
| YOLOv8n-seg | POST /api/models/yolov8n_seg/predict |
| YOLOv8s-seg | POST /api/models/yolov8s_seg/predict |
| YOLOv8m-seg | POST /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-seg | src/rpi5_hailo8_yolov8n_seg/ | docker/hailo8/yolov8n_seg.dockerfile | ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8n_seg:latest |
| YOLOv8s-seg | src/rpi5_hailo8_yolov8s_seg/ | docker/hailo8/yolov8s_seg.dockerfile | ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8s_seg:latest |
| YOLOv8m-seg | src/rpi5_hailo8_yolov8m_seg/ | docker/hailo8/yolov8m_seg.dockerfile | ghcr.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 のフル精度の 数値であり、このボードでの測定値ではありません。