CV / MobileNet
MobileNetV2
MobileNetV2 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-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
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 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 |
Stap A: Images ophalen
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: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-mobilenet:latest \
python3 web_classification.py \
--model_path model/rk3576_mobilenet_v2.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-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.
🔌 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:
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"Antwoordformaat (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.
| 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. |
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.
| 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.
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:
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.