CV
reComputer RK3576/RK3588 向けコンピュータビジョンアプリケーションガイド。
対応プラットフォーム
| プラットフォーム | チップ | 演算能力 | イメージ名 |
|---|---|---|---|
| RK3588 | RK3588/RK3588S | 6 TOPS | rk3588-yolo |
| RK3576 | RK3576 | 6 TOPS | rk3576-yolo |
クイックスタート
1. Docker のインストール
開発ボード上で以下のコマンドを実行して Docker をインストールします:
# Download installation script
curl -fsSL https://get.docker.com -o get-docker.sh
# Install using Aliyun mirror source
sudo sh get-docker.sh --mirror Aliyun
# Start Docker and enable auto-start on boot
sudo systemctl enable docker
sudo systemctl start docker2. プロジェクトの実行(1 つのコマンドでデュアルモードプレビュー)
本プロジェクトは ローカル GUI と ウェブブラウザ の同時プレビューに対応しています。ディスプレイが接続されていない場合は自動的に検出して Web モードへ切り替わります。
ステップ A:ディスプレイ権限の設定(任意)
モニタが接続されており、ローカルでウィンドウを確認したい場合:
xhost +local:dockerステップ B:イメージの取得
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3588-yolo:latest
sudo docker pull ghcr.io/Seeed-Projects/recomputer-rk-cv/rk3576-yolo:latestステップ C:ワンクリックで実行
For RK3588:
sudo docker run --rm --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-yolo:latest \
python web_detection.py --model_path model/yolo11n.rknn --camera_id 1For RK3576:
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-yolo:latest \
python web_detection.py --model_path model/yolo11n.rknn --camera_id 0アクセス先:http://<Board_IP>:8000
Note: If you need custom classes, you can add
-v $(pwd)/class_config.txt:/app/class_config.txt \mount and--class_pathparameter. The program defaults to COCO 80 classes.
Example:
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/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-yolo:latest \
python web_detection.py --model_path model/yolo11n.rknn --camera_id 1 --class_path class_config.txt🔌 API ドキュメント
This project provides RESTful interfaces compatible with the Ultralytics Cloud API standard, supporting object detection via image uploads using HTTP POST requests.
1. Model Inference Interface (Predict)
Endpoint: POST /api/models/yolo11/predict
Request Parameters (Multipart/Form-Data):
file: (Optional) Image file to be detected.video: (Optional) MP4 video file to be detected.timestamp: (Optional) Timestamp in the video file (seconds), returns detection results for the frame at that point. Default is 0.realtime: (Optional) Boolean. Iftrueor if nofile/videoparameters are provided, returns detection results for the current camera frame.conf: (Optional) Confidence threshold for a single request, range 0.0-1.0.iou: (Optional) NMS IOU threshold for a single request, range 0.0-1.0.
Usage Examples:
1. Image Detection:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "file=@/home/cat/001.jpg"2. Video Specific Frame Detection:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "video=@/home/cat/test.mp4" -F "timestamp=5.5"3. Get Current Camera Frame Detection:
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict" -F "realtime=true"
# Or without file parameters
curl -X POST "http://127.0.0.1:8000/api/models/yolo11/predict"Response Format (JSON):
{
"success": true,
"source": "video frame at 5.5s",
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 200, "x2": 300, "y2": 500 }
}
],
"image": { "width": 1280, "height": 720 }
}2. System Configuration Interface (Config)
Used to dynamically adjust thresholds for real-time video streams and default inference.
Get Current Configuration
- Endpoint:
GET /api/config - Response:
{"obj_thresh": 0.25, "nms_thresh": 0.45}
Update System Configuration
- Endpoint:
POST /api/config - Request Body (JSON):
{"obj_thresh": 0.3, "nms_thresh": 0.5} - Response:
{"status": "success"}
3. Command Line Arguments
web_detection.py supports the following arguments:
| Argument | Description | Default |
|---|---|---|
--model_path | Path to RKNN model file | (Required) |
--camera_id | Camera device ID (e.g., fill 1 for /dev/video1) | 1 |
--video_path | Path to video file (overrides camera_id if provided) | None |
--class_path | Path to custom class configuration file (class_config.txt) | None (Default COCO 80) |
--host | Web server listening address | 0.0.0.0 |
--port | Web server port | 8000 |
Custom Class Configuration (class_config.txt) Format:
Name classes with double quotes, separated by commas, for example:
"person", "bicycle", "car", "motorbike"
リアルタイムビデオストリームインターフェース(Video Feed)
Get real-time MJPEG video stream with detection boxes drawn, can be directly embedded in HTML <img> tags.
- Endpoint:
GET /api/video_feed - Example Usage:
<img src="http://<Board_IP>:8000/api/video_feed">
プラットフォーム別ドキュメント
自動ビルド
This project supports automated multi-platform image building via GitHub Actions.
- Modifying the
src/rk3588/directory automatically triggers therk3588-yoloimage build. - Modifying the
src/rk3576/directory automatically triggers therk3576-yoloimage build. - Manual trigger is supported, with the option to specify
image_tag.
🛠️ 開発者ガイド(本番運用の推奨事項)
Code Description
web_detection.py:- Dual-mode Support: Integrates FastAPI, supporting both local rendering and MJPEG streaming output.
- Environment Adaptive: Automatically detects the
DISPLAYenvironment variable, silently skipping GUI initialization if not present. - RKNN Inference: Encapsulates RKNN initialization, model loading, and multi-core inference logic.
- Dynamic Loading: Supports dynamic class configuration loading via
--class_path. - Post-processing: YOLOv11 specific Box decoding and NMS logic.
Modifying Models
- Place the trained and converted .rknn model into the
model/directory of the corresponding platform. - Add the
--model_pathargument to the running command to point to the new model (default already configured in Dockerfile).