CV / YOLOv10

YOLOv10x

YOLOv10x is the larger YOLOv10 detector packaged with the R20 HailoRT web preview.

Size
33.26 MB
Memory
4GB+
Precision
Hailo HEF / HailoRT 4.23.x

Choose the device you're using, the set up guide and documentation will update accordingly.

Getting Started

Deploy
sudo docker run --rm \
  --name cm5-hailo-yolov10x \
  --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-r20-cv/yolov10:latest \
  python web_detection.py --model_path model/yolov10x.hef --video_path video/test.mp4

REST API

Use the REST API to run inference. Copy the commands below.

Curl
curl -X POST "http://<R20_IP>:8000/api/models/yolov11/predict" \
  -F "file=@test.jpg"
Python
import requests

resp = requests.post(
    "http://<R20_IP>:8000/api/models/yolov11/predict",
    files={"file": open("test.jpg", "rb")},
    timeout=30,
)
print(resp.json())

Model Details

YOLOv10 on reComputer R Series (CM5 + Hailo)

YOLOv10 object detection assets and Docker workflow for reComputer R Series with Hailo-8.

This page is adapted from rpi5_hailo8_yolov10/README.md in reComputer-R20-CV. It targets reComputer R Series (CM5 + Hailo) with a PCIe Hailo-8 accelerator.

Hardware and Host Setup

ItemValue
BoardreComputer R Series with Raspberry Pi CM5
AcceleratorHailo-8 M.2 over PCIe, exposed as /dev/hailo0
OSRaspberry Pi OS Bookworm, aarch64
Host driverhailo-all apt package
Validated HailoRT4.23.x; host driver, firmware, native library, and Python wheel must share major.minor
bash
sudo apt update
sudo apt install hailo-all
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

Run With Demo Video

bash
sudo docker run --rm --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-r20-cv/yolov10:latest \
  python web_detection.py --model_path model/yolov10n.hef --video_path video/test.mp4

Open http://<R20_IP>:8000 to view the web preview. The image includes the module source, demo video, HailoRT Python wheel, and HEF files listed below.

The libhailort.so bind mounts intentionally come from the host. If your firmware is not 4.23.0, replace both paths with the version reported by hailortcli fw-control identify; rebuild the image if the major.minor version differs.

USB Camera Mode

bash
sudo docker run --rm --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-r20-cv/yolov10:latest \
  python web_detection.py --model_path model/yolov10n.hef --camera_id 0

Switch HEF variants

Override the image default by passing a different --model_path:

bash
sudo docker run --rm --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-r20-cv/yolov10:latest \
  python web_detection.py --model_path model/yolov10b.hef --video_path video/test.mp4

HEF Files

HEFSizeNotes
yolov10n.hef7.36 MBNano detector
yolov10b.hef28.42 MBBalanced detector
yolov10x.hef33.26 MBLarge detector

REST API

Prediction endpoint:

text
POST http://<R20_IP>:8000/api/models/yolov11/predict

Note: The current local YOLOv10 source registers the prediction route as /api/models/yolov11/predict; update web_detection.py if you want the runtime API to use /api/models/yolov10/predict.

Example image request:

bash
curl -X POST "http://<R20_IP>:8000/api/models/yolov11/predict" \
  -F "file=@test.jpg"

Common service endpoints:

EndpointMethodPurpose
/GETWeb preview UI
/api/models/yolov11/predictPOSTSingle-frame inference from uploaded image/video or current frame
/api/video_feedGETMJPEG preview stream
/api/configGET / POSTRead or update runtime thresholds
/api/video/uploadPOSTUpload a video for offline analysis
/api/video/analyzePOSTStart offline analysis
/api/video/statusGETPoll analysis progress
/api/video/listGETList uploaded and processed videos
/api/video/download/{filename}GETDownload processed output

Development Notes

  • Source module: src/rpi5_hailo8_yolov10/
  • Dockerfile: docker/hailo8/yolov10.dockerfile
  • Main service: web_detection.py wraps HailoRT inference, post-processing, MJPEG preview, REST prediction, and offline video analysis.
  • When swapping in a custom HEF, keep the output layout compatible with the module post-processing code or update post_process_hailo().

Inputs and Outputs

Input: image, video, or USB camera frame. Output: detection boxes, classes, confidences, and annotated MJPEG preview.