CV / YOLOX
YOLOX
YOLOX COCO object detection on reComputer RK3576, RK3588, and CM5 with Hailo-8 or Hailo-10H.
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-yolox:latest \
python3 web_detection.py --platform rk3576 --model_path model/yolox_s.rknn \
--class_path model/coco_80_labels_list.txt --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": "yolox-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "yolox-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Model Details
reComputer RKQuick 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 page is based on the YOLOX services in
reComputer-RK-CV. The
runtime performs RKNN inference, YOLOX branch decoding, objectness/class-score
fusion, and class-aware NMS.
Model Information
| Property | Value |
|---|---|
| Task | COCO 80-class object detection |
| Input | 640 x 640 letterboxed RGB |
| Variants | yolox_s.rknn, yolox_m.rknn |
| Default | model/yolox_s.rknn |
| Labels | model/coco_80_labels_list.txt |
Step A: Pull Images
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolox:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-yolox:latestStep B: Run with One Click
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-yolox:latest \
python3 web_detection.py --platform rk3576 \
--model_path model/yolox_s.rknn \
--class_path model/coco_80_labels_list.txt --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-yolox:latest \
python3 web_detection.py --platform rk3588 \
--model_path model/yolox_s.rknn \
--class_path model/coco_80_labels_list.txt --video_path video/test.mp4Use model/yolox_m.rknn for the medium variant. Keep the class-path argument
when switching models. Open http://<BOARD_IP>:8000 or /docs.
🔌 API Documentation
1. Model Inference Interface (Predict)
Endpoint: POST /api/models/yolox/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/yolox/predict" \
-F "file=@bus.jpg" -F "conf=0.25" -F "iou=0.45"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}
}The service accepts image, uploaded-video frame, and current-source requests.
2. System Configuration Interface (Config)
GET/POST /api/config controls obj_thresh and nms_thresh; request-level
conf and iou override them. Health, MJPEG, video upload, asynchronous
analysis, status, list, and download endpoints are also available.
Input is letterboxed, converted to RGB, decoded by branch, and processed with objectness/class-score fusion and class-aware NMS. Replacement models must match this included YOLOX decoder and class configuration.
3. Command Line Arguments
| Argument | Default | Description |
|---|---|---|
--platform | Required | rk3576 or rk3588. |
--model_path | Required | YOLOX-S or YOLOX-M RKNN file. |
--class_path | Required by the packaged command | COCO class-name file. |
--camera_id | 1 | Camera index; -1 enables uploads only. |
--video_path | None | Looping local MP4; overrides the camera. |
--host / --port | 0.0.0.0 / 8000 | Service 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/yolox.dockerfile \
-t rk3576-yolox:local src/rk3576_yolox
docker build -f docker/rk3588/yolox.dockerfile \
-t rk3588-yolox:local src/rk3588_yoloxInputs and Outputs
Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.