CV / DeepLab v3

DeepLabV3 RKNN

reComputer RK3588

Semantische segmentatie met DeepLabV3, versneld door RKNN op reComputer RK3576 en RK3588.

68 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 -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-deeplabv3:latest \
  python3 web_service.py --platform rk3588 --model_path /app/model/deeplabv3.rknn \
  --sample_path /app/model/test.jpg --overlay_alpha 0.5 --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": "deeplab-v3-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "deeplab-v3-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 pagina beschrijft de semantische-segmentatieservice DeepLabV3 uit reComputer-RK-CV. De service ondersteunt stilstaande beelden, camera’s, lokale video in een lus, analyse van geüploade MP4-bestanden en een MJPEG-voorbeeld met overlay.

Modelinformatie

EigenschapWaarde
Model/app/model/deeplabv3.rknn
Invoer513 x 513 RGB
UitvoerPASCAL VOC-logits met 21 klassen
RenderingArgmax-masker met instelbare dekking van de kleuroverlay

De service valideert zowel NCHW- als NHWC-uitvoerindelingen en herstelt het masker naar de bronresolutie.

Stap A: Images ophalen

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-deeplabv3:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-deeplabv3:latest

Stap B: Met één klik uitvoeren

Voor RK3576:

bash
sudo docker run --rm --privileged -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-deeplabv3:latest \
  python3 web_service.py --platform rk3576 \
  --model_path /app/model/deeplabv3.rknn \
  --sample_path /app/model/test.jpg --overlay_alpha 0.5 \
  --camera_id -1 --host 0.0.0.0 --port 8000

Voor RK3588:

bash
sudo docker run --rm --privileged -p 8000:8000 \
  -v /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-deeplabv3:latest \
  python3 web_service.py --platform rk3588 \
  --model_path /app/model/deeplabv3.rknn \
  --sample_path /app/model/test.jpg --overlay_alpha 0.5 \
  --camera_id -1 --host 0.0.0.0 --port 8000

Open http://<BOARD_IP>:8000 of /docs. Koppel voor een USB-camera het knooppunt /dev/videoN en stel --camera_id N in. Gebruik voor een gekoppelde lokale video --video /data/input.mp4; lokale video heeft voorrang op de camera.


🔌 API-documentatie

1. Segmentatie-interface (Predict)

Endpoint: POST /api/models/deeplabv3/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/deeplabv3/predict" \
  -F "file=@test.jpg" -F "overlay_alpha=0.65"

Het antwoord vermeldt afbeeldingsgrootte, inferentietijd, dekking en alle aanwezige PASCAL VOC-klassen met hun aantal pixels. De nieuwste gerenderde overlay is beschikbaar via GET /api/video_feed.

Antwoordformaat (JSON):

json
{
  "success": true,
  "model": "deeplabv3",
  "inference_time": 0.052,
  "result": {
    "classes": [{"id": 15, "class": "person", "pixels": 18234}],
    "width": 1280,
    "height": 720,
    "overlay_alpha": 0.65
  }
}

2. Interface voor systeemconfiguratie (Config)

GET/POST /api/config beheert de globale overlaydekking. Er zijn ook endpoints voor status, MP4-upload, analysestatus, lijst en download. Modellen met een ander aantal klassen vereisen overeenkomstige wijzigingen in labels en uitvoerverwerking.

3. Opdrachtregelargumenten

ArgumentStandaardBeschrijving
--platformVereistrk3576 of rk3588.
--model_pathmodel/deeplabv3.rknnDeepLabV3 RKNN-bestand.
--sample_pathmodel/test.jpgAfbeelding voor opwarming en eerste voorbeeld.
--overlay_alpha0.5Begindekking van het masker, van 0 tot 1.
--camera_id-1Camera N, of -1 voor alleen uploads.
--video, --video_pathGeenLokale video in een lus; overschrijft de camera.
--host / --port0.0.0.0 / 8000Serviceadres en containerpoort.

Wijzig bij gebruik van -p alleen de hostzijde als poort 8000 bezet is. De containerservice moet voor de statuscontrole op poort 8000 blijven.


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)

Verwerkingsdetails

De invoer wordt geschaald naar 513 x 513 en van BGR naar RGB omgezet. De runtime accepteert NCHW- of NHWC-logits, controleert 21 kanalen, herstelt de logits naar de bronresolutie, past argmax toe en legt de PASCAL VOC-kleurenkaart eroverheen. POST /api/video/analyze accepteert een geüploade filename; status- en resultaatbestanden zijn beschikbaar via /api/video/*.

Lokaal bouwen

bash
docker build -f docker/rk3576/deeplabv3.dockerfile \
  -t rk3576-deeplabv3:local src/rk3576_deeplabv3

docker build -f docker/rk3588/deeplabv3.dockerfile \
  -t rk3588-deeplabv3:local src/rk3588_deeplabv3

Invoer en uitvoer

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