CV / DeepLab v3

DeepLabV3 RKNN

reComputer RK3588

DeepLabV3 für semantische Segmentierung, beschleunigt mit RKNN auf reComputer RK3576 und RK3588.

68 Downloads
Präzision
RKNN

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.

Bereitstellen
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

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

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

Modelldetails

Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.

Schnellstart

1. Docker installieren

Führen Sie auf dem Entwicklungsboard die folgenden Befehle aus, um Docker zu installieren:

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. Projekt ausführen (ein Befehl, Vorschau in zwei Modi)

Diese Seite beschreibt den semantischen Segmentierungsdienst DeepLabV3 aus reComputer-RK-CV. Er unterstützt Standbilder, Kameras, lokale Videoschleifen, die Analyse hochgeladener MP4-Dateien und eine MJPEG-Vorschau mit Überlagerung.

Modellinformationen

EigenschaftWert
Modell/app/model/deeplabv3.rknn
Eingabe513 x 513 RGB
AusgabePASCAL-VOC-Logits mit 21 Klassen
DarstellungArgmax-Maske mit konfigurierbarer Deckkraft der Farbüberlagerung

Der Dienst prüft sowohl NCHW- als auch NHWC-Ausgabelayouts und stellt die Maske in der Quellauflösung wieder her.

Schritt A: Images abrufen

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

Schritt B: Mit einem Klick ausführen

Für 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

Für 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

Öffnen Sie http://<BOARD_IP>:8000 oder /docs. Ordnen Sie für eine USB-Kamera deren /dev/videoN-Knoten zu und setzen Sie --camera_id N. Verwenden Sie für ein eingebundenes lokales Video --video /data/input.mp4; das lokale Video hat Vorrang vor der Kamera.


🔌 API-Dokumentation

1. Segmentierungs-Schnittstelle (Predict)

Endpunkt: POST /api/models/deeplabv3/predict

Anfrageparameter (Multipart/Form-Data):

Laden Sie file hoch und passen Sie die Ausgabe mit modellspezifischen optionalen Parametern an.

Anwendungsbeispiele:

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/deeplabv3/predict" \
  -F "file=@test.jpg" -F "overlay_alpha=0.65"

Die Antwort enthält Bildgröße, Inferenzzeit, Deckkraft sowie alle vorhandenen PASCAL-VOC-Klassen mit ihrer Pixelanzahl. Die neueste gerenderte Überlagerung ist über GET /api/video_feed verfügbar.

Antwortformat (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. Schnittstelle zur Systemkonfiguration (Config)

GET/POST /api/config verwaltet die globale Deckkraft. Zusätzlich stehen Endpunkte für Zustand, MP4-Upload, Analysestatus, Liste und Download bereit. Modelle mit anderer Klassenzahl erfordern entsprechende Änderungen an Labels und Ausgabeverarbeitung.

3. Befehlszeilenargumente

ArgumentStandardBeschreibung
--platformErforderlichrk3576 oder rk3588.
--model_pathmodel/deeplabv3.rknnDeepLabV3-RKNN-Datei.
--sample_pathmodel/test.jpgBild für Aufwärmphase und erste Vorschau.
--overlay_alpha0.5Anfängliche Maskendeckkraft von 0 bis 1.
--camera_id-1Kamera N, oder -1 nur für Uploads.
--video, --video_pathKein WertLokales Video in Schleife; überschreibt die Kamera.
--host / --port0.0.0.0 / 8000Dienstadresse und Container-Port.

Ändern Sie bei Verwendung von -p nur die Host-Seite, wenn Port 8000 belegt ist. Für die Zustandsprüfung muss der Container-Dienst auf Port 8000 bleiben.


Echtzeit-Videostream (Video Feed)

Rufen Sie den neuesten annotierten MJPEG-Stream für die Browservorschau ab:

  • Endpunkt: GET /api/video_feed
  • Beispiel: <img src="http://<BOARD_IP>:8000/api/video_feed">

🛠️ Entwicklerleitfaden (Empfehlungen für den Produktionseinsatz)

Verarbeitungsdetails

Die Eingabe wird auf 513 x 513 skaliert und von BGR nach RGB konvertiert. Die Laufzeit akzeptiert NCHW- oder NHWC-Logits, prüft 21 Kanäle, stellt die Logits in Quellauflösung wieder her, wendet argmax an und überlagert die PASCAL-VOC-Farbkarte. POST /api/video/analyze akzeptiert einen hochgeladenen filename; Status- und Ergebnisdateien sind über /api/video/* verfügbar.

Lokal bauen

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

Eingaben und Ausgaben

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