CV / RetinaFace
RetinaFace
reComputer RK3588
Gezichtsdetectie en schatting van vijf herkenningspunten met RetinaFace, versneld door 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.
sudo docker run --rm --privileged --net=host -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-retinaface:latest \
python web_service.py --platform rk3588 --model_dir /app/model --camera_id -1 --host 0.0.0.0 --port 8000REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl http://localhost:8080/v1/chat/completions -d '{
"model": "retinaface-rknn",
"messages": [{"role": "user", "content": "Hello"}]
}'import requests
resp = requests.post(
"http://localhost:8080/v1/chat/completions",
json={"model": "retinaface-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:
# 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 beschrijft de RetinaFace-service in reComputer-RK-CV. Hij detecteert gezichten en vijf gezichtslandmarks met RKNN-versnelling en biedt beeld-, camera-, lokale-video- en uploadvideomodi.
Modelinformatie
| Eigenschap | Waarde |
|---|---|
| Actief model | model/retinaface_mobile.rknn |
| Meegeleverd alternatief | model/retinaface_resnet50.rknn |
| Invoer | Letterbox-RGB van 320 x 320 |
| Uitvoer | Gezichtsvak, betrouwbaarheid en vijf landmarks |
| NMS | Vaste IoU-drempel van 0.5 |
Stap A: Images ophalen
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-retinaface:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-retinaface: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/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3576-retinaface:latest \
python web_service.py --platform rk3576 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000Voor RK3588:
sudo docker run --rm --privileged --net=host \
-e PYTHONUNBUFFERED=1 -e RKNN_LOG_LEVEL=0 \
--device /dev/dri/renderD129:/dev/dri/renderD129 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible:ro \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-retinaface:latest \
python web_service.py --platform rk3588 --model_dir /app/model \
--camera_id -1 --host 0.0.0.0 --port 8000Open http://<BOARD_IP>:8000 of /docs. Koppel /dev/videoN en gebruik --camera_id N voor een camera, of geef --video video/test.mp4 door voor lokale video.
🔌 API-documentatie
1. Interface voor gezichtsdetectie (Predict)
Endpoint: POST /api/models/retinaface/predict
Aanvraagparameters (Multipart/Form-Data):
Upload file; met threshold stelt u de gezichtsbetrouwbaarheid voor deze aanvraag in.
Gebruiksvoorbeelden:
curl -X POST "http://<BOARD_IP>:8000/api/models/retinaface/predict" \
-F "file=@test.jpg" -F "threshold=0.5"Elk resultaat bevat confidence, box als [x1,y1,x2,y2] en vijf landmarks. Werk de drempel voor voorbeeld/video bij met POST /api/config en JSON zoals {"threshold":0.5}.
Antwoordformaat (JSON):
{
"success": true,
"model": "retinaface",
"result": {
"count": 1,
"faces": [
{
"confidence": 0.96,
"box": [120, 80, 310, 290],
"landmarks": [[166, 145], [255, 144], [210, 190], [176, 232], [247, 231]]
}
]
}
}2. Interface voor systeemconfiguratie (Config)
Huidige configuratie ophalen
- Endpoint:
GET /api/config
Systeemconfiguratie bijwerken
- Endpoint:
POST /api/config - JSON:
{"threshold":0.5}
Het algemene veld topk is gereserveerd voor servicecompatibiliteit en wordt niet gebruikt. NMS gebruikt een vaste IoU-drempel van 0.5.
| Endpoint | Doel |
|---|---|
GET /api/health | Platform, modelnamen en gereedheid. |
GET /api/video_feed | Nieuwste gezichtsvakken en landmarks als MJPEG. |
POST /api/video/upload | Een MP4 uploaden. |
POST /api/video/analyze | Een geüploade filename analyseren. |
GET /api/video/status | Voortgang en fouten. |
GET /api/video/list | Geüploade en gegenereerde MP4-bestanden. |
GET /api/video/download/{filename} | Een resultaat downloaden. |
De upstream-constructor laadt momenteel expliciet retinaface_mobile.rknn. Voor retinaface_resnet50.rknn moet task_runtime.py worden gewijzigd en dezelfde indeling met drie uitgangen worden gevalideerd; alleen een Docker-opdrachtparameter volstaat niet. Frames worden letterboxed naar 320 x 320, van BGR naar RGB omgezet, met prior-vakken en vijf landmarks gedecodeerd, naar broncoördinaten hersteld, op betrouwbaarheid gefilterd en met NMS verwerkt.
3. Opdrachtregelargumenten
| Argument | Standaard | Beschrijving |
|---|---|---|
--platform | Vereist | rk3576 of rk3588. |
--model_dir | model | RetinaFace-RKNN-bestanden en test.jpg. |
--camera_id | -1 | Camera-index; -1 schakelt opname uit. |
--video, --video_path | Geen | Lokale video in een lus; overschrijft de camera. |
--host / --port | 0.0.0.0 / 8000 | Serviceadres en poort. |
RKNN_LOG_LEVEL=0 verbergt bevestigde onschadelijke initialisatieberichten voor statische vormen. Verwijder dit bij diagnose van RKNN-opstartproblemen.
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)
Lokaal bouwen
docker build -f docker/rk3576/retinaface.dockerfile \
-t rk3576-retinaface:local src/rk3576_retinaface
docker build -f docker/rk3588/retinaface.dockerfile \
-t rk3588-retinaface:local src/rk3588_retinafaceInvoer en uitvoer
Input: image, video frame, or camera frame. Output: face boxes, confidence scores, and five landmarks.