CV / YOLOv5
YOLOv5n_seg
YOLOv5n-Segインスタンスセグメンテーションシリーズの軽量バージョン。コンパクトで高効率、ピクセルレベルのオブジェクトセグメンテーションとマスク予測向けに設計され、エッジデプロイに最適です。
使用しているデバイスを選択してください。セットアップガイドとドキュメントがそれに応じて更新されます。
はじめる
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.mp4REST API
REST API を使用して推論を実行します。以下のコマンドをコピーしてください。
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict"
import requests
import json
resp = requests.post(
"http://127.0.0.1:8000/api/models/yolov5_seg/predict",
json={},
timeout=30
)
result = resp.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
モデル詳細
クイックスタート
1. Dockerのインストール
開発ボードで以下のコマンドを実行してDockerをインストールします:
# インストールスクリプトをダウンロード
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyunミラーソースを使用してインストール
sudo sh get-docker.sh --mirror Aliyun
# Dockerを起動し、起動時の自動起動を有効化
sudo systemctl enable docker
sudo systemctl start docker2. プロジェクトの実行(ワンコマンド、デュアルモードプレビュー)
このプロジェクトは「Webブラウザ」からのプレビューをサポートしています。プロジェクトは単一コマンドで実行できます。さらに、ユーザーのカスタマイズ開発とテストを容易にするFast-APIインターフェースも提供されています。
ステップA: イメージのプル
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolov5_seg:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolov5_seg:latestステップB: ワンクリックで実行
RK3588の場合:
sudo docker run --rm --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.mp4RK3576の場合:
sudo docker run --rm --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/rk3576-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4アクセス: http://<Board_IP>:8000
注意: カスタムクラスが必要な場合は、
-v $(pwd)/class_config.txt:/app/class_config.txt \マウントと--class_pathパラメータを追加できます。プログラムはデフォルトでCOCO 80クラスを使用します。
例:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
-v $(pwd)/class_config.txt:/app/class_config.txt \
--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 --class_path class_config.txt🔌 APIドキュメント
このプロジェクトはUltralytics Cloud API標準に準拠したRESTfulインターフェースを提供し、画像、動画のアップロードまたは直接カメラ呼び出しによるインスタンスセグメンテーションをサポートします。
1. モデル推論インターフェース(Predict)
エンドポイント: POST /api/models/yolov5_seg/predict
リクエストパラメータ(Multipart/Form-Data):
file: (オプション)検出する画像ファイル。video: (オプション)検出するMP4動画ファイル。timestamp: (オプション)動画ファイル内のタイムスタンプ(秒)、その時点のフレームの検出結果を返します。デフォルトは0です。realtime: (オプション)ブール値。trueの場合、またはfile/videoパラメータが提供されていない場合、現在のカメラフレームの検出結果を返します。conf: (オプション)単一リクエストの信頼度しきい値、範囲0.0〜1.0。iou: (オプション)単一リクエストのNMS IOUしきい値、範囲0.0〜1.0。
使用例:
1. 画像検出:
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "file=@/home/cat/001.jpg"2. 動画の特定フレーム検出:
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. 現在のカメラフレーム検出の取得:
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict" -F "realtime=true"
# またはファイルパラメータなしで
curl -X POST "http://127.0.0.1:8000/api/models/yolov5_seg/predict"レスポンス形式(JSON):
{
"success": true,
"source": "video frame at 5.5s",
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 },
"polygons": [
[100, 200], [150, 210], [160, 300]
]
}
],
"image": { "width": 1280, "height": 720 }
}2. システム設定インターフェース(Config)
リアルタイムビデオストリームとデフォルト推論のしきい値を動的に調整するために使用します。
現在の設定の取得
- エンドポイント:
GET /api/config - レスポンス:
{"obj_thresh": 0.25, "nms_thresh": 0.45}
システム設定の更新
- エンドポイント:
POST /api/config - リクエストボディ(JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - レスポンス:
{"status": "success"}
3. リアルタイムビデオストリームインターフェース(Video Feed)
検出ボックスとセグメンテーションマスクが描画されたリアルタイムMJPEGビデオストリームを取得し、HTMLの<img>タグに直接埋め込むことができます。
- エンドポイント:
GET /api/video_feed - 使用例:
<img src="http://<Board_IP>:8000/api/video_feed">
🛠️ 開発者ガイド(本番環境推奨事項)
コード説明
web_detection.py:- デュアルモードサポート: FastAPIを統合し、ローカルレンダリングとMJPEGストリーミング出力の両方をサポートします。
- 環境適応:
DISPLAY環境変数を自動検出し、存在しない場合はGUI初期化を静かにスキップします。 - RKNN推論: RKNN初期化、モデル読み込み、マルチコア推論ロジックをカプセル化します。
- 動的読み込み:
--class_pathによる動的なクラス設定読み込みをサポートします。 - 後処理: 高性能Numpyベースのバウンディングボックスデコード、NMS、および輪郭抽出(
cv2.findContours)。
モデルの変更
- 学習・変換済みの.rknnモデルを
model/ディレクトリに配置します。 - 実行コマンドに
--model_path引数を追加して新しいモデルを指定します。