CV / MobileNet

MobileNetV2

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

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

MobileNetV2 op reComputer RK3576 en RK3588

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

De service uitvoeren

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

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.

Invoermodi en opstartargumenten

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.

REST API

Endpoint: POST /api/models/mobilenet/predict

Multipart-velden zijn file, video, timestamp, conf en topk. topk accepteert 1 tot 20 en is standaard 5.

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"

Voorbeeldantwoord:

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

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.

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.