CV / PPSeg

PP-LiteSeg

reComputer RK3588

Semantische Cityscapes-segmentatie met PP-LiteSeg, versneld door RKNN.

57 downloads
Precisie
RKNN

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Implementeren
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

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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())

Modeldetails

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Snel aan de slag

1. Docker installeren

Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:

bash
# 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 docker

2. Het project uitvoeren (één opdracht, voorbeeld in twee modi)

Deze service verpakt het PP-LiteSeg Cityscapes-voorbeeld uit reComputer-RK-CV met RKNN-inferentie, webvoorbeeld, REST API en asynchrone MP4-verwerking.

Modelinformatie

EigenschapWaarde
Modelmodel/ppseg.rknn
Invoer512 x 512 RGB
UitvoerCityscapes-segmentatiemasker met 19 klassen
Opwarmingsafbeeldingmodel/test.png

Stap A: Images ophalen

bash
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:latest

Stap B: Met één klik uitvoeren

Voor 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

Voor 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

Open http://<BOARD_IP>:8000 of /docs. Gebruik --camera_id N met een gekoppeld /dev/videoN-knooppunt voor een camera. Gebruik --video video/test.mp4 voor de meegeleverde video; --video en --video_path zijn aliassen en overschrijven de camera.


🔌 API-documentatie

1. Segmentatie-interface (Predict)

Endpoint: POST /api/models/ppseg/predict

Aanvraagparameters (Multipart/Form-Data):

Upload file en pas de uitvoer aan met optionele modelspecifieke parameters.

Gebruiksvoorbeelden:

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

Het antwoord bevat inferentietijd, bronafmetingen en het aantal pixels per klasse. De nieuwste maskeroverlay wordt geleverd via GET /api/video_feed.

EndpointDoel
GET /api/healthPlatform, modelnamen en gereedheid.
GET /api/video_feedNieuwste kleurenmaskeroverlay als MJPEG.
POST /api/video/uploadEén MP4 uploaden in het veld file.
POST /api/video/analyzeEen geüploade filename analyseren.
GET /api/video/statusAchtergrondvoortgang en fouten.
GET /api/video/listGeüploade en gegenereerde video’s.
GET /api/video/download/{filename}Een resultaat downloaden.

2. Interface voor systeemconfiguratie (Config)

De algemene configuratievelden threshold en topk blijven bestaan voor servicecompatibiliteit, maar wijzigen de vaste argmax-segmentatie niet. Een vervangend model moet de verwachte uitvoer met 19 klassen behouden of het palet en de nabewerking aanpassen.

De runtime schaalt invoer naar 512 x 512, zet BGR om naar RGB, accepteert NCHW- of NHWC-uitvoer met 19 klassen, herstelt het masker met nearest-neighbor-interpolatie en legt het Cityscapes-palet eroverheen. Conversiebronnen staan in rknn_model_zoo/examples/ppseg van het upstream-project.

3. Opdrachtregelargumenten

ArgumentStandaardBeschrijving
--platformVereistrk3576 of rk3588.
--model_dirmodelMap met ppseg.rknn en test.png.
--camera_id-1Camera-index; -1 schakelt opname uit.
--video, --video_pathGeenLokale video in een lus; overschrijft de camera.
--host / --port0.0.0.0 / 8000FastAPI-luisteradres en -poort.

PYTHONUNBUFFERED=1 schrijft logs onmiddellijk weg. RKNN_LOG_LEVEL=0 onderdrukt bekende onschadelijke initialisatieberichten van statische modellen; verwijder dit bij diagnose van RKNN-opstartproblemen.


Realtime videostream (Video Feed)

Haal de nieuwste geannoteerde MJPEG-stream op voor de browserweergave:

  • Endpoint: GET /api/video_feed
  • Voorbeeldgebruik: <img src="http://<BOARD_IP>:8000/api/video_feed">

🛠️ Ontwikkelaarshandleiding (aanbevelingen voor productie)

Lokaal bouwen

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

Invoer en uitvoer

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