CV / PPSeg

PP-LiteSeg

Produces 19-class Cityscapes masks with image, camera, and video service modes.

4 téléchargements
Précision
RKNN

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
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 8000

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

Curl
curl http://localhost:8080/v1/chat/completions -d '{
  "model": "pp-liteseg-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "pp-liteseg-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

Détails du modèle

PP-LiteSeg sur reComputer RK3576 et RK3588

Ce service empaquette l’exemple PP-LiteSeg Cityscapes de reComputer-RK-CV avec inférence RKNN, aperçu Web, REST API et traitement MP4 asynchrone.

Informations sur le modèle

PropriétéValeur
Modèlemodel/ppseg.rknn
Entrée512 x 512 RGB
SortieMasque de segmentation Cityscapes à 19 classes
Image de préchauffagemodel/test.png

Exécuter le service

RK3576

bash
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 8000

RK3588

bash
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 8000

Ouvrez http://<BOARD_IP>:8000 ou /docs. Utilisez --camera_id N avec un nœud /dev/videoN mappé pour une caméra. Utilisez --video video/test.mp4 pour la vidéo fournie ; --video et --video_path sont des alias et remplacent la caméra.

Arguments de démarrage

ArgumentValeur par défautDescription
--platformObligatoirerk3576 ou rk3588.
--model_dirmodelRépertoire contenant ppseg.rknn et test.png.
--camera_id-1Indice de caméra ; -1 désactive la capture.
--video, --video_pathAucunVidéo locale en boucle ; remplace la caméra.
--host / --port0.0.0.0 / 8000Adresse et port d’écoute FastAPI.

PYTHONUNBUFFERED=1 vide immédiatement les logs. RKNN_LOG_LEVEL=0 masque les messages connus et inoffensifs d’initialisation statique ; retirez-le pour diagnostiquer le démarrage RKNN.

REST API

Endpoint : POST /api/models/ppseg/predict

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/ppseg/predict" \
  -F "file=@test.png"

La réponse contient le temps d’inférence, les dimensions source et le nombre de pixels par classe. La dernière superposition du masque est servie par GET /api/video_feed.

EndpointFonction
GET /api/healthPlateforme, noms des modèles et état de préparation.
GET /api/video_feedDernière superposition colorée au format MJPEG.
POST /api/video/uploadTéléverser un MP4 dans le champ file.
POST /api/video/analyzeAnalyser un filename téléversé.
GET /api/video/statusProgression en arrière-plan et erreurs.
GET /api/video/listVidéos téléversées et générées.
GET /api/video/download/{filename}Télécharger un résultat.

Les champs génériques threshold et topk sont conservés pour la compatibilité, mais ne changent pas la segmentation argmax fixe. Un modèle de remplacement doit conserver la sortie attendue de 19 classes ou nécessiter une mise à jour de la palette et du post-traitement.

Le runtime redimensionne l’entrée en 512 x 512, convertit BGR en RGB, accepte une sortie NCHW ou NHWC à 19 classes, restaure le masque par interpolation au plus proche voisin et superpose la palette Cityscapes. Les sources de conversion se trouvent dans rknn_model_zoo/examples/ppseg du projet upstream.

Compiler localement

bash
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_ppseg

Entrées et sorties

Input: image, video frame, or camera frame. Output: Cityscapes mask, class pixel counts, and overlay.