CV / ResNet

ResNet50V2

reComputer RK3588

Beeldclassificatie met ResNet50V2, versneld door RKNN op reComputer RK3576 en RK3588.

63 downloads
Precisie
RKNN

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Implementeren
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

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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

Modeldetails

Armbian 26.8.7 Gnome of nieuwer met OTA overlayroot: Configureer de Docker-opslag voordat je containers start om overlay-mountfouten te voorkomen.

Snel aan de slag

1. Docker installeren

Voer de volgende opdrachten op het ontwikkelbord uit om Docker te installeren:

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

EigenschapWaarde
TaakAfbeeldingsclassificatie
InvoerRGB-afbeelding van 224 x 224
UitvoerInstelbare Top-K ImageNet-labels en betrouwbaarheidsscores
RK3576-modelmodel/rk3576_resnet50-v2-7.rknn
RK3588-modelmodel/rk3588_resnet50-v2-7.rknn
Labelsmodel/synset.txt

Stap A: Images ophalen

bash
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:latest

Stap B: Met één klik uitvoeren

Voor 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

Voor 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

Open 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:

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"

Antwoordformaat (JSON):

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.

EndpointDoel
GET /api/healthService, platform, model en gereedheid.
GET /api/video_feedGeannoteerd MJPEG-voorbeeld.
POST /api/video/uploadEen afbeelding of MP4 uploaden.
POST /api/video/analyzeEen geüploade filename analyseren.
GET /api/video/statusVerwerkingsvoortgang en fouten.
GET /api/video/listGeü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.

ArgumentStandaardBeschrijving
--model_pathVereistRKNN-model dat voor de doel-SoC is geselecteerd.
--camera_id1Camera-index; gebruik -1 voor alleen uploads.
--video_pathGeenPad naar lokale MP4; overschrijft de camera.
--host0.0.0.0FastAPI-luisteradres.
--port8000Servicepoort.

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

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

Invoer en uitvoer

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