CV / ResNet
ResNet50V2
ImageNet classification with configurable Top-K results, browser preview, and REST API access.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
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 -1API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "resnet50-v2-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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âche | Classification d’images |
| Entrée | Image RGB 224 x 224 |
| Sortie | Étiquettes ImageNet Top-K et scores de confiance configurables |
| Modèle RK3576 | model/rk3576_resnet50-v2-7.rknn |
| Modèle RK3588 | model/rk3588_resnet50-v2-7.rknn |
| Étiquettes | model/synset.txt |
Exécuter le service
RK3576
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 -1RK3588
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 -1Ouvrez 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.
| Argument | Valeur par défaut | Description |
|---|---|---|
--model_path | Obligatoire | Modèle RKNN choisi pour le SoC cible. |
--camera_id | 1 | Indice de caméra ; utilisez -1 pour le mode téléversement uniquement. |
--video_path | Aucun | Chemin du MP4 local ; remplace la caméra. |
--host | 0.0.0.0 | Adresse d’écoute FastAPI. |
--port | 8000 | Port 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.
curl -X POST "http://<BOARD_IP>:8000/api/models/resnet50v2/predict" \
-F "file=@dog_224x224.jpg" -F "topk=5" -F "conf=0.01"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 :
{
"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.
| Endpoint | Fonction |
|---|---|
GET /api/health | Service, plateforme, modèle et état de préparation. |
GET /api/video_feed | Aperçu MJPEG annoté. |
POST /api/video/upload | Téléverser une image ou un MP4. |
POST /api/video/analyze | Analyser un filename téléversé. |
GET /api/video/status | Progression du traitement et erreurs. |
GET /api/video/list | Fichiers 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
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_resnet50v2Entrées et sorties
Input: image, video frame, or camera frame. Output: Top-K ImageNet labels and confidence scores.