CV / DeepLab v3

DeepLabV3 RKNN

DeepLabV3 semantic segmentation accelerated by RKNN on reComputer RK3576 and RK3588.

8 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 -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

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

Détails du modèle

Démarrage rapide

1. Installer Docker

Exécutez les commandes suivantes sur la carte de développement pour installer Docker :

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. Exécuter le projet (une commande, aperçu double mode)

Cette page documente le service de segmentation sémantique DeepLabV3 de reComputer-RK-CV. Il prend en charge les images fixes, les caméras, la vidéo locale en boucle, l’analyse de fichiers MP4 téléversés et un aperçu MJPEG avec superposition.

Informations sur le modèle

PropriétéValeur
Modèle/app/model/deeplabv3.rknn
Entrée513 x 513 RGB
SortieLogits PASCAL VOC à 21 classes
RenduMasque Argmax avec opacité de superposition colorée configurable

Le service valide les dispositions de sortie NCHW et NHWC, puis restaure le masque à la résolution source.

Étape A : télécharger les images

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

Étape B : exécuter en un clic

Pour 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

Pour 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

Ouvrez http://<BOARD_IP>:8000 ou /docs. Pour une caméra USB, mappez son nœud /dev/videoN et définissez --camera_id N. Pour une vidéo locale montée, utilisez --video /data/input.mp4 ; la vidéo locale est prioritaire sur la caméra.


🔌 Documentation de l’API

1. Interface de segmentation (Predict)

Endpoint : POST /api/models/deeplabv3/predict

Paramètres de requête (Multipart/Form-Data) :

Téléversez file et utilisez les paramètres facultatifs propres au modèle pour ajuster la sortie.

Exemples d’utilisation :

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

La réponse indique la taille de l’image, le temps d’inférence, l’opacité et toutes les classes PASCAL VOC présentes avec leur nombre de pixels. La dernière superposition rendue est disponible via GET /api/video_feed.

Format de réponse (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 de configuration système (Config)

GET/POST /api/config gère l’opacité globale de la superposition. Des endpoints d’état, de téléversement MP4, d’état d’analyse, de liste et de téléchargement sont également fournis. Un modèle avec un nombre de classes différent exige des modifications correspondantes des étiquettes et du traitement de sortie.

3. Arguments de ligne de commande

ArgumentValeur par défautDescription
--platformObligatoirerk3576 ou rk3588.
--model_pathmodel/deeplabv3.rknnFichier RKNN DeepLabV3.
--sample_pathmodel/test.jpgImage de préchauffage et d’aperçu initial.
--overlay_alpha0.5Opacité initiale du masque, de 0 à 1.
--camera_id-1Caméra N, ou -1 pour les téléversements uniquement.
--video, --video_pathAucunVidéo locale en boucle ; remplace la caméra.
--host / --port0.0.0.0 / 8000Adresse du service et port du conteneur.

Avec -p, ne modifiez que le côté hôte si le port 8000 est occupé. Le service du conteneur doit rester sur le port 8000 pour son contrôle d’état.


Interface de flux vidéo en temps réel (Video Feed)

Obtenez le dernier flux MJPEG annoté pour l’aperçu dans le navigateur :

  • Endpoint: GET /api/video_feed
  • Exemple d’utilisation: <img src="http://<BOARD_IP>:8000/api/video_feed">

🛠️ Guide du développeur (recommandations de production)

Détails du traitement

L’entrée est redimensionnée en 513 x 513 et convertie de BGR vers RGB. Le runtime accepte des logits NCHW ou NHWC, vérifie les 21 canaux, restaure les logits à la résolution source, applique argmax et superpose la palette PASCAL VOC. POST /api/video/analyze accepte un filename téléversé ; les fichiers d’état et de résultat sont exposés par les endpoints /api/video/*.

Compiler localement

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

Entrées et sorties

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