CV / PP-YOLOE
PP-YOLOE
reComputer RK3588
Detección de objetos COCO con PP-YOLOE acelerada por RKNN en reComputer RK3576 y RK3588.
Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.
Primeros pasos
Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.
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-ppyoloe:latest \
python web_detection.py --platform rk3588 --model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1API REST
Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "ppyoloe-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "ppyoloe-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())Detalles del modelo
Armbian 26.8.7 Gnome o posterior con OTA overlayroot: Configura el almacenamiento de Docker antes de ejecutar contenedores para evitar errores de montaje de overlay.
Inicio rápido
1. Instalar Docker
Ejecute los siguientes comandos en la placa de desarrollo para instalar Docker:
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
# Aliyun
sudo sh get-docker.sh --mirror Aliyun
# systemd
sudo systemctl enable docker
sudo systemctl start docker2. Ejecutar el proyecto (un comando y vista previa de doble modo)
Este despliegue sigue los módulos PP-YOLOE de reComputer-RK-CV. El servicio proporciona inferencia RKNN NPU, vista previa web, REST API y análisis de vídeo asíncrono.
Información del modelo
| Propiedad | Valor |
|---|---|
| Tarea | Detección de objetos COCO de 80 clases |
| Entrada | RGB letterbox de 640 x 640 |
| Variantes | ppyoloe_s.rknn, ppyoloe_m.rknn |
| Predeterminado | model/ppyoloe_s.rknn |
| Posprocesamiento | Decodificación DFL y NMS por clase |
Paso A: Descargar las imágenes
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppyoloe:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppyoloe:latestPaso B: Ejecutar con un clic
Para 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-ppyoloe:latest \
python web_detection.py --platform rk3576 \
--model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1Para 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-ppyoloe:latest \
python web_detection.py --platform rk3588 \
--model_path model/ppyoloe_s.rknn \
--class_path model/coco_80_labels_list.txt --camera_id -1Cambie a PP-YOLOE-M con --model_path model/ppyoloe_m.rknn. Para entrada de cámara, asigne /dev/videoN y defina el --camera_id correspondiente.
🔌 Documentación de la API
1. Interfaz de inferencia del modelo (Predict)
Endpoint: POST /api/models/ppyoloe/predict
Parámetros de solicitud (Multipart/Form-Data):
Puede usar file, video, timestamp, realtime, conf e iou; los umbrales predeterminados son 0.25 y 0.45.
Ejemplos de uso:
curl -X POST "http://<BOARD_IP>:8000/api/models/ppyoloe/predict" \
-F "file=@bus.jpg" -F "conf=0.30" -F "iou=0.45"Formato de respuesta (JSON):
{
"success": true,
"source": "uploaded image",
"predictions": [
{
"class": "bus",
"confidence": 0.91,
"box": {"x1": 120, "y1": 80, "x2": 520, "y2": 430}
}
],
"image": {"width": 640, "height": 480}
}2. Interfaz de configuración del sistema (Config)
La prioridad de entrada es imagen, fotograma MP4 subido y, por último, cámara activa o vídeo de ejemplo. GET/POST /api/config controla los umbrales globales de objeto y NMS. El runtime también expone estado, MJPEG, carga de vídeo, análisis asíncrono, estado, lista y descarga.
web_detection.py realiza preprocesamiento letterbox, inferencia RKNN, decodificación DFL de PP-YOLOE, NMS por clase, restauración de coordenadas, renderizado y serialización de API. Los modelos de sustitución deben ser compatibles con ese decodificador DFL y la disposición de salida.
3. Argumentos de línea de comandos
| Argumento | Predeterminado | Descripción |
|---|---|---|
--platform | Obligatorio | rk3576 o rk3588. |
--model_path | Obligatorio | Archivo RKNN PP-YOLOE-S o PP-YOLOE-M. |
--class_path | Etiquetas COCO | Nombres de clase usados para serialización y dibujo. |
--camera_id | 1 | Índice de cámara; -1 habilita el modo de solo carga. |
--video_path | Ninguno | MP4 local en bucle; prevalece sobre la cámara. |
--host / --port | 0.0.0.0 / 8000 | Dirección y puerto del servicio. |
Interfaz de vídeo en tiempo real (Video Feed)
Obtenga el último flujo MJPEG anotado para la vista previa en el navegador:
- Endpoint:
GET /api/video_feed - Ejemplo de uso:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Guía para desarrolladores (recomendaciones de producción)
Compilar localmente
docker build -f docker/rk3576/ppyoloe.dockerfile \
-t rk3576-ppyoloe:local src/rk3576_ppyoloe
docker build -f docker/rk3588/ppyoloe.dockerfile \
-t rk3588-ppyoloe:local src/rk3588_ppyoloeEntradas y salidas
Input: image, video frame, or camera frame. Output: COCO classes, confidence scores, and boxes.