CV / MobileNet

MobileNetV2

MobileNetV2 image classification accelerated by RKNN on reComputer RK3576 and RK3588.

2 downloads
Precisie
RKNN

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

Aan de slag

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/rk3576-mobilenet:latest \
  python3 web_classification.py --model_path model/rk3576_mobilenet_v2.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": "mobilenet-v2-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
import requests

resp = requests.post(
    "http://localhost:8080/v1/chat/completions",
    json={"model": "mobilenet-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:

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 MobileNetV2-README’s in reComputer-RK-CV. De service voert ImageNet-classificatie uit met RKNN-Toolkit-Lite2 en biedt een webvoorbeeld, MJPEG-stream, statuscontrole en REST API.

Modelinformatie

EigenschapWaarde
TaakAfbeeldingsclassificatie
InvoerAfbeelding van 224 x 224
UitvoerInstelbare Top-K ImageNet-labels en betrouwbaarheidsscores
RK3576-modelmodel/rk3576_mobilenet_v2.rknn
RK3588-modelmodel/rk3588_mobilenet_v2.rknn
Labelsmodel/synset.txt

Stap A: Images ophalen

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-mobilenet:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-mobilenet: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-mobilenet:latest \
  python3 web_classification.py \
  --model_path model/rk3576_mobilenet_v2.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-mobilenet:latest \
  python3 web_classification.py \
  --model_path model/rk3588_mobilenet_v2.rknn --camera_id -1

Open http://<BOARD_IP>:8000 voor de webpagina of http://<BOARD_IP>:8000/docs voor OpenAPI. Vervang --camera_id -1 door een gekoppeld camera-ID of gebruik --video_path video/test.mp4 voor de meegeleverde video.


🔌 API-documentatie

1. Interface voor modelinferentie (Predict)

Endpoint: POST /api/models/mobilenet/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/mobilenet/predict" \
  -F "file=@bell.jpg" -F "topk=5" -F "conf=0.01"

Een frame op 5.5 seconden in een MP4 classificeren:

bash
curl -X POST "http://<BOARD_IP>:8000/api/models/mobilenet/predict" \
  -F "video=@test.mp4" -F "timestamp=5.5" -F "topk=3"

Antwoordformaat (JSON):

json
{
  "success": true,
  "model": "mobilenet",
  "source": "uploaded image",
  "predictions": [
    {"class": "n02123045 tabby, tabby cat", "confidence": 0.91}
  ],
  "image": {"width": 640, "height": 480}
}

2. Interface voor systeemconfiguratie (Config)

GET /api/config geeft de globale conf_thresh terug. Werk deze bij met POST /api/config en JSON zoals {"conf_thresh":0.1}. Een conf op verzoekniveau overschrijft de globale drempel voor dat verzoek.

EndpointDoel
GET /api/healthPlatform, modelpad en gereedheid.
GET /api/video_feedGeannoteerd MJPEG-voorbeeld.
POST /api/video/uploadJPG, JPEG, PNG, BMP of MP4 uploaden.
POST /api/video/analyzeAsynchrone analyse starten met de geüploade filename.
GET /api/video/statusVoortgang en foutstatus.
GET /api/video/listGeüploade en gegenereerde bestanden.
GET /api/video/download/{filename}Een gegenereerd resultaat downloaden.

3. Opdrachtregelargumenten

De toepassing accepteert een geüploade afbeelding, een frame uit een geüploade MP4 gekozen op tijdstempel, een lokale videolus of een cameraframe. Lokale video heeft voorrang.

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

Koppel voor een USB-camera het juiste apparaatknooppunt, bijvoorbeeld --device /dev/video0:/dev/video0, en geef --camera_id 0 door.


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 voorverwerking behoudt de vereiste BGR-kanaalvolgorde, past softmax toe en filtert Top-K-resultaten. Een vervangend model moet invoerindeling, kanaalvolgorde, normalisatie en uitvoerformaat behouden. Werk synset.txt bij als de klassenset verandert. Uploads en uitvoer staan onder workspace/; stel RK_CV_WORKSPACE in voor een andere map.

Lokaal bouwen

Voer uit vanuit de hoofdmap van de upstream-repository:

bash
docker build -f docker/rk3576/mobilenet.dockerfile \
  -t rk3576-mobilenet:local src/rk3576_mobilenet

docker build -f docker/rk3588/mobilenet.dockerfile \
  -t rk3588-mobilenet:local src/rk3588_mobilenet

Invoer en uitvoer

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