CV / PPSeg
PP-LiteSeg
reComputer RK3588
Segmentación semántica de Cityscapes con PP-LiteSeg acelerada por RKNN.
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 \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppseg:latest \
python web_service.py --platform rk3588 --model_dir /app/model --camera_id -1 --host 0.0.0.0 --port 8000API REST
Usa la API REST para ejecutar inferencia. Copia los comandos siguientes.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "pp-liteseg-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "pp-liteseg-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 servicio empaqueta el ejemplo PP-LiteSeg Cityscapes de reComputer-RK-CV con inferencia RKNN, vista previa web, REST API y procesamiento MP4 asíncrono.
Información del modelo
| Propiedad | Valor |
|---|---|
| Modelo | model/ppseg.rknn |
| Entrada | 512 x 512 RGB |
| Salida | Máscara de segmentación Cityscapes de 19 clases |
| Imagen de calentamiento | model/test.png |
Paso A: Descargar las imágenes
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppseg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppseg:latestPaso B: Ejecutar con un clic
Para RK3576:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-ppseg:latest \
python web_service.py --platform rk3576 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000Para RK3588:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-ppseg:latest \
python web_service.py --platform rk3588 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000Abra http://<BOARD_IP>:8000 o /docs. Use --camera_id N con un nodo /dev/videoN asignado para la cámara. Use --video video/test.mp4 para el vídeo incluido; --video y --video_path son alias y prevalecen sobre la cámara.
🔌 Documentación de la API
1. Interfaz de segmentación (Predict)
Endpoint: POST /api/models/ppseg/predict
Parámetros de solicitud (Multipart/Form-Data):
Suba file y use los parámetros opcionales específicos del modelo para ajustar la salida.
Ejemplos de uso:
curl -X POST "http://<BOARD_IP>:8000/api/models/ppseg/predict" \
-F "file=@test.png"La respuesta contiene el tiempo de inferencia, las dimensiones de origen y el número de píxeles por clase. La última superposición de máscara se sirve mediante GET /api/video_feed.
| Endpoint | Finalidad |
|---|---|
GET /api/health | Plataforma, nombres de modelos y disponibilidad. |
GET /api/video_feed | Última superposición de máscara de color como MJPEG. |
POST /api/video/upload | Subir un MP4 en el campo file. |
POST /api/video/analyze | Analizar un filename subido. |
GET /api/video/status | Progreso en segundo plano y errores. |
GET /api/video/list | Vídeos subidos y generados. |
GET /api/video/download/{filename} | Descargar un resultado. |
2. Interfaz de configuración del sistema (Config)
Los campos genéricos threshold y topk se conservan por compatibilidad del servicio, pero no cambian la segmentación argmax fija. Un modelo de sustitución debe conservar la salida esperada de 19 clases o actualizar la paleta y el código de posprocesamiento.
El runtime redimensiona la entrada a 512 x 512, convierte BGR a RGB, acepta una salida NCHW o NHWC de 19 clases, restaura la máscara con interpolación de vecino más cercano y superpone la paleta Cityscapes. Las fuentes de conversión están en rknn_model_zoo/examples/ppseg del proyecto upstream.
3. Argumentos de línea de comandos
| Argumento | Predeterminado | Descripción |
|---|---|---|
--platform | Obligatorio | rk3576 o rk3588. |
--model_dir | model | Directorio que contiene ppseg.rknn y test.png. |
--camera_id | -1 | Índice de cámara; -1 deshabilita la captura. |
--video, --video_path | Ninguno | Vídeo local en bucle; prevalece sobre la cámara. |
--host / --port | 0.0.0.0 / 8000 | Dirección y puerto de escucha de FastAPI. |
PYTHONUNBUFFERED=1 vacía los logs inmediatamente. RKNN_LOG_LEVEL=0 suprime mensajes conocidos e inofensivos de inicialización de modelos estáticos; elimínelo al depurar el inicio de RKNN.
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/ppseg.dockerfile \
-t rk3576-ppseg:local src/rk3576_ppseg
docker build -f docker/rk3588/ppseg.dockerfile \
-t rk3588-ppseg:local src/rk3588_ppsegEntradas y salidas
Input: image, video frame, or camera frame. Output: Cityscapes mask, class pixel counts, and overlay.