CV / RetinaFace

RetinaFace

reComputer RK3588

Gezichtsdetectie en schatting van vijf herkenningspunten met RetinaFace, versneld door RKNN.

52 downloads
Precisie
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.

Implementeren
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 8000

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": "retinaface-rknn",
  "messages": [{"role": "user", "content": "Hello"}]
}'
Python
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:

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 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

EigenschapWaarde
Actief modelmodel/retinaface_mobile.rknn
Meegeleverd alternatiefmodel/retinaface_resnet50.rknn
InvoerLetterbox-RGB van 320 x 320
UitvoerGezichtsvak, betrouwbaarheid en vijf landmarks
NMSVaste IoU-drempel van 0.5

Stap A: Images ophalen

bash
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: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/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 8000

Voor RK3588:

bash
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 8000

Open 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:

bash
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):

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.

EndpointDoel
GET /api/healthPlatform, modelnamen en gereedheid.
GET /api/video_feedNieuwste gezichtsvakken en landmarks als MJPEG.
POST /api/video/uploadEen MP4 uploaden.
POST /api/video/analyzeEen geüploade filename analyseren.
GET /api/video/statusVoortgang en fouten.
GET /api/video/listGeü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

ArgumentStandaardBeschrijving
--platformVereistrk3576 of rk3588.
--model_dirmodelRetinaFace-RKNN-bestanden en test.jpg.
--camera_id-1Camera-index; -1 schakelt opname uit.
--video, --video_pathGeenLokale video in een lus; overschrijft de camera.
--host / --port0.0.0.0 / 8000Serviceadres 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

bash
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_retinaface

Invoer en uitvoer

Input: image, video frame, or camera frame. Output: face boxes, confidence scores, and five landmarks.