CV / PPSeg
PP-LiteSeg
Produces 19-class Cityscapes masks with image, camera, and video service modes.
Elige el dispositivo que estás usando. La guía de configuración y la documentación se actualizarán en consecuencia.
Primeros pasos
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 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
PP-LiteSeg en reComputer RK3576 y RK3588
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 |
Ejecutar el servicio
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 8000RK3588
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.
Argumentos de inicio
| 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.
REST API
Endpoint: POST /api/models/ppseg/predict
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. |
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.
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.