CV / YOLOv6
YOLOv6
YOLOv6 COCO object detection accelerated by RKNN on reComputer RK3576 and RK3588.
Choose the device you're using, the set up guide and documentation will update accordingly.
Getting Started
sudo docker run --rm --privileged --net=host --device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov6:latest \
python3 web_detection.py --platform rk3576 --model_path model/yolov6n.rknn --video_path video/test.mp4REST API
Use the REST API to run inference. Copy the commands below.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "yolov6-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "yolov6-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Model Details
Quick Start
1. Install Docker
Run the following commands on the development board to install 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. Run the Project (One command, dual-mode preview)
This deployment is based on the YOLOv6 modules in
reComputer-RK-CV. It
runs COCO object detection with RKNN-Toolkit-Lite2 and provides browser preview,
REST inference, and offline video processing.
Model Information
| Property | Value |
|---|---|
| Task | COCO 80-class object detection |
| Input | 640 x 640, letterboxed and converted from BGR to RGB |
| Variants | yolov6n.rknn, yolov6s.rknn, yolov6m.rknn |
| Default | model/yolov6n.rknn |
| Output | Classes, confidence scores, and source-image boxes |
Step A: Pull Images
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov6:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov6:latestStep B: Run with One Click
Select the model size by changing --model_path.
For RK3576:
sudo docker run --rm --privileged --net=host \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolov6:latest \
python3 web_detection.py --platform rk3576 \
--model_path model/yolov6n.rknn --video_path video/test.mp4For RK3588:
sudo docker run --rm --privileged --net=host \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov6:latest \
python3 web_detection.py --platform rk3588 \
--model_path model/yolov6n.rknn --video_path video/test.mp4Use model/yolov6s.rknn or model/yolov6m.rknn for the other catalog
variants. Replace --video_path video/test.mp4 with --camera_id -1 for
upload-only mode. Open http://<BOARD_IP>:8000 or /docs.
🔌 API Documentation
1. Model Inference Interface (Predict)
Endpoint: POST /api/models/yolov6/predict
Request Parameters (Multipart/Form-Data):
file: Optional image file to detect.video: Optional MP4 file.timestamp: Optional video timestamp in seconds; defaults to the first frame.realtime: Optional boolean; with no upload, use the active camera or local-video frame.conf: Optional request-level confidence threshold; defaults to0.25.iou: Optional request-level NMS IoU threshold; defaults to0.45.
Usage Examples:
curl -X POST "http://<BOARD_IP>:8000/api/models/yolov6/predict" \
-F "file=@bus.jpg" -F "conf=0.25" -F "iou=0.45"curl -X POST "http://<BOARD_IP>:8000/api/models/yolov6/predict" \
-F "video=@test.mp4" -F "timestamp=5.5"Response Format (JSON):
{
"success": true,
"source": "uploaded image",
"predictions": [
{
"class": "bus",
"confidence": 0.91,
"box": {"x1": 100, "y1": 120, "x2": 520, "y2": 430}
}
],
"image": {"width": 640, "height": 480}
}2. System Configuration Interface (Config)
GET /api/config returns obj_thresh and nms_thresh. Update them with
POST /api/config; request fields conf and iou override the global values.
The service also provides GET /api/health, GET /api/video_feed,
POST /api/video/upload, POST /api/video/analyze, and video status, list,
and download endpoints. Runtime files live under workspace/ unless
RK_CV_WORKSPACE is set. Replacement models must retain the input size and
YOLOv6 tensor layout expected by web_detection.py.
3. Command Line Arguments
| Argument | Default | Description |
|---|---|---|
--platform | Required | rk3576 or rk3588; must match the image. |
--model_path | Required | One of the packaged YOLOv6 RKNN files. |
--camera_id | 1 | Camera index; -1 enables upload-only mode. |
--video_path | None | Looping local MP4; overrides the camera. |
--class_path | COCO labels | Optional replacement class list. |
--host / --port | 0.0.0.0 / 8000 | FastAPI listen address and port. |
Real-time Video Stream Interface (Video Feed)
Get the latest annotated MJPEG stream for browser preview:
- Endpoint:
GET /api/video_feed - Example Usage:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Developer Guide (Production Recommendations)
Build Local Images
docker build -f docker/rk3576/yolov6.dockerfile \
-t rk3576-yolov6:local src/rk3576_yolov6
docker build -f docker/rk3588/yolov6.dockerfile \
-t rk3588-yolov6:local src/rk3588_yolov6Inputs and Outputs
Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.