CV / ResNet
ResNet50V2
ResNet50V2 image classification accelerated by RKNN on reComputer RK3576 and RK3588.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
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 -1REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
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())Modeldetails
Snel aan de slag
1. Docker installeren
Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:
# 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. Het project uitvoeren (één opdracht, voorbeeld in twee modi)
Deze pagina is gebaseerd op de ResNet50V2-README’s in reComputer-RK-CV. De service voert ImageNet-classificatie uit op de Rockchip NPU en biedt browser-, MJPEG-, status- en REST-interfaces.
Modelinformatie
| Eigenschap | Waarde |
|---|---|
| Taak | Afbeeldingsclassificatie |
| Invoer | RGB-afbeelding van 224 x 224 |
| Uitvoer | Instelbare Top-K ImageNet-labels en betrouwbaarheidsscores |
| RK3576-model | model/rk3576_resnet50-v2-7.rknn |
| RK3588-model | model/rk3588_resnet50-v2-7.rknn |
| Labels | model/synset.txt |
Stap A: Images ophalen
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-resnet50v2:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-resnet50v2:latestStap B: Met één klik uitvoeren
Voor 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 -1Voor RK3588:
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 -1Open http://<BOARD_IP>:8000 voor de webpagina of http://<BOARD_IP>:8000/docs voor OpenAPI.
🔌 API-documentatie
1. Interface voor modelinferentie (Predict)
Endpoint: POST /api/models/resnet50v2/predict
Aanvraagparameters (Multipart/Form-Data):
Optionele velden zijn file, video, timestamp, conf en topk; topk loopt van 1 tot 20 en conf van 0.0 tot 1.0. Zonder upload wordt de actieve videobron gebruikt.
Gebruiksvoorbeelden:
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"Antwoordformaat (JSON):
{
"success": true,
"model": "resnet50v2",
"source": "uploaded image",
"predictions": [
{"class": "n02099601 golden retriever", "confidence": 0.89}
],
"image": {"width": 224, "height": 224}
}2. Interface voor systeemconfiguratie (Config)
GET /api/config geeft conf_thresh terug; werk dit via JSON bij met POST /api/config. conf op verzoekniveau heeft voorrang.
| Endpoint | Doel |
|---|---|
GET /api/health | Service, platform, model en gereedheid. |
GET /api/video_feed | Geannoteerd MJPEG-voorbeeld. |
POST /api/video/upload | Een afbeelding of MP4 uploaden. |
POST /api/video/analyze | Een geüploade filename analyseren. |
GET /api/video/status | Verwerkingsvoortgang en fouten. |
GET /api/video/list | Geüploade en gegenereerde bestanden. |
GET /api/video/download/{filename} | Een resultaat downloaden. |
3. Opdrachtregelargumenten
De toepassing accepteert een geüploade afbeelding, een geselecteerd frame uit een geüploade MP4, een lokale videolus of een cameraframe.
| Argument | Standaard | Beschrijving |
|---|---|---|
--model_path | Vereist | RKNN-model dat voor de doel-SoC is geselecteerd. |
--camera_id | 1 | Camera-index; gebruik -1 voor alleen uploads. |
--video_path | Geen | Pad naar lokale MP4; overschrijft de camera. |
--host | 0.0.0.0 | FastAPI-luisteradres. |
--port | 8000 | Servicepoort. |
Koppel /dev/videoN aan de container wanneer camera N wordt gekozen.
Realtime videostream (Video Feed)
Haal de nieuwste geannoteerde MJPEG-stream op voor de browserweergave:
- Endpoint:
GET /api/video_feed - Voorbeeldgebruik:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Ontwikkelaarshandleiding (aanbevelingen voor productie)
Model vervangen
De runtime schaalt invoer naar 224 x 224, zet BGR om naar RGB, past softmax toe en filtert Top-K-resultaten. Een vervangend model moet invoerindeling, normalisatie, kanaalvolgorde en uitvoerformaat behouden. Werk synset.txt bij als de klassen wijzigen. Runtimebestanden staan onder workspace/; stel RK_CV_WORKSPACE in voor een andere locatie.
Lokaal bouwen
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_resnet50v2Invoer en uitvoer
Input: image, video frame, or camera frame. Output: Top-K ImageNet labels and confidence scores.