CV / DeepLab v3
DeepLabV3 RKNN
DeepLabV3 semantic segmentation accelerated by RKNN on reComputer RK3576 and RK3588.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
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 8000REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "deeplab-v3-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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
Schnellstart
1. Docker installieren
Führen Sie auf dem Entwicklungsboard die folgenden Befehle aus, um Docker zu installieren:
# 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 docker2. 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
| Eigenschaft | Wert |
|---|---|
| Modell | /app/model/deeplabv3.rknn |
| Eingabe | 513 x 513 RGB |
| Ausgabe | PASCAL-VOC-Logits mit 21 Klassen |
| Darstellung | Argmax-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
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:latestSchritt B: Mit einem Klick ausführen
Für RK3576:
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 8000Für RK3588:
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:
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):
{
"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
| Argument | Standard | Beschreibung |
|---|---|---|
--platform | Erforderlich | rk3576 oder rk3588. |
--model_path | model/deeplabv3.rknn | DeepLabV3-RKNN-Datei. |
--sample_path | model/test.jpg | Bild für Aufwärmphase und erste Vorschau. |
--overlay_alpha | 0.5 | Anfängliche Maskendeckkraft von 0 bis 1. |
--camera_id | -1 | Kamera N, oder -1 nur für Uploads. |
--video, --video_path | Kein Wert | Lokales Video in Schleife; überschreibt die Kamera. |
--host / --port | 0.0.0.0 / 8000 | Dienstadresse 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
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_deeplabv3Eingaben und Ausgaben
Input: image, video frame, or camera frame. Output: PASCAL VOC semantic mask, class pixel counts, and overlay.