CV / MobileNet
MobileNetV2
ImageNet classification with configurable Top-K results, browser preview, and REST API access.
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-mobilenet:latest \
python3 web_classification.py --model_path model/rk3576_mobilenet_v2.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": "mobilenet-v2-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'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
| Eigenschap | Waarde |
|---|---|
| Taak | Afbeeldingsclassificatie |
| Invoer | Afbeelding van 224 x 224 |
| Uitvoer | Instelbare Top-K ImageNet-labels en betrouwbaarheidsscores |
| RK3576-model | model/rk3576_mobilenet_v2.rknn |
| RK3588-model | model/rk3588_mobilenet_v2.rknn |
| Labels | model/synset.txt |
De service uitvoeren
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-mobilenet:latest \
python3 web_classification.py \
--model_path model/rk3576_mobilenet_v2.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-mobilenet:latest \
python3 web_classification.py \
--model_path model/rk3588_mobilenet_v2.rknn --camera_id -1Open 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.
| 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 de lokale MP4. Overschrijft --camera_id. |
--host | 0.0.0.0 | FastAPI-luisteradres. |
--port | 8000 | Servicepoort. |
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.
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:
curl -X POST "http://<BOARD_IP>:8000/api/models/mobilenet/predict" \
-F "video=@test.mp4" -F "timestamp=5.5" -F "topk=3"Voorbeeldantwoord:
{
"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.
| Endpoint | Doel |
|---|---|
GET /api/health | Platform, modelpad en gereedheid. |
GET /api/video_feed | Geannoteerd MJPEG-voorbeeld. |
POST /api/video/upload | JPG, JPEG, PNG, BMP of MP4 uploaden. |
POST /api/video/analyze | Asynchrone analyse starten met de geüploade filename. |
GET /api/video/status | Voortgang en foutstatus. |
GET /api/video/list | Geü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:
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_mobilenetInvoer en uitvoer
Input: image, video frame, or camera frame. Output: Top-K ImageNet labels and confidence scores.