CV / ResNet

ResNet50V2

ImageNet classification with configurable Top-K results, browser preview, and REST API access.

2 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 --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-resnet50v2:latest \
  python3 web_classification.py --model_path model/rk3576_resnet50-v2-7.rknn --camera_id -1

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": "resnet50-v2-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "resnet50-v2-rknn", "messages": [{"role": "user", "content": "Hello"}]},
)
print(resp.json())

Détails du modèle

ResNet50V2 sur reComputer RK3576 et RK3588

Cette page est adaptée des README ResNet50V2 de reComputer-RK-CV. Le service exécute la classification ImageNet sur le NPU Rockchip et fournit des interfaces navigateur, MJPEG, contrôle d’état et REST.

Informations sur le modèle

PropriétéValeur
TâcheClassification d’images
EntréeImage RGB 224 x 224
SortieÉtiquettes ImageNet Top-K et scores de confiance configurables
Modèle RK3576model/rk3576_resnet50-v2-7.rknn
Modèle RK3588model/rk3588_resnet50-v2-7.rknn
Étiquettesmodel/synset.txt

Exécuter le service

RK3576

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-resnet50v2:latest \
  python3 web_classification.py \
  --model_path model/rk3576_resnet50-v2-7.rknn --camera_id -1

RK3588

bash
sudo docker run --rm --privileged --net=host \
  -e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-resnet50v2:latest \
  python3 web_classification.py \
  --model_path model/rk3588_resnet50-v2-7.rknn --camera_id -1

Ouvrez http://<BOARD_IP>:8000 pour la page Web ou http://<BOARD_IP>:8000/docs pour OpenAPI.

Modes d’entrée et arguments de démarrage

L’application accepte une image téléversée, une image choisie dans un MP4 téléversé, une vidéo locale en boucle ou une image caméra.

ArgumentValeur par défautDescription
--model_pathObligatoireModèle RKNN choisi pour le SoC cible.
--camera_id1Indice de caméra ; utilisez -1 pour le mode téléversement uniquement.
--video_pathAucunChemin du MP4 local ; remplace la caméra.
--host0.0.0.0Adresse d’écoute FastAPI.
--port8000Port du service.

Mappez /dev/videoN dans le conteneur lors de la sélection de la caméra N.

REST API

Endpoint : POST /api/models/resnet50v2/predict

Les champs multipart sont file, video, timestamp, conf et topk.

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/resnet50v2/predict" \
  -F "file=@dog_224x224.jpg" -F "topk=5" -F "conf=0.01"
bash
curl -X POST "http://<BOARD_IP>:8000/api/models/resnet50v2/predict" \
  -F "video=@test.mp4" -F "timestamp=5.5" -F "topk=3"

Exemple de réponse :

json
{
  "success": true,
  "model": "resnet50v2",
  "source": "uploaded image",
  "predictions": [
    {"class": "n02099601 golden retriever", "confidence": 0.89}
  ],
  "image": {"width": 224, "height": 224}
}

GET /api/config renvoie conf_thresh ; mettez-le à jour en JSON avec POST /api/config. Le conf de la requête est prioritaire.

EndpointFonction
GET /api/healthService, plateforme, modèle et état de préparation.
GET /api/video_feedAperçu MJPEG annoté.
POST /api/video/uploadTéléverser une image ou un MP4.
POST /api/video/analyzeAnalyser un filename téléversé.
GET /api/video/statusProgression du traitement et erreurs.
GET /api/video/listFichiers téléversés et générés.
GET /api/video/download/{filename}Télécharger un résultat.

Remplacement du modèle

Le runtime redimensionne l’entrée en 224 x 224, convertit BGR en RGB, applique softmax et filtre les résultats Top-K. Un modèle de remplacement doit conserver la disposition d’entrée, la normalisation, l’ordre des canaux et le format de sortie attendus. Mettez à jour synset.txt si les classes changent. Les fichiers sont stockés sous workspace/ ; définissez RK_CV_WORKSPACE pour changer cet emplacement.

Compiler localement

bash
docker build -f docker/rk3576/resnet50v2.dockerfile \
  -t rk3576-resnet50v2:local src/rk3576_resnet50v2

docker build -f docker/rk3588/resnet50v2.dockerfile \
  -t rk3588-resnet50v2:local src/rk3588_resnet50v2

Entrées et sorties

Input: image, video frame, or camera frame. Output: Top-K ImageNet labels and confidence scores.