CV / RetinaFace
RetinaFace
reComputer RK3588
Gesichtserkennung und Schätzung von fünf Gesichtspunkten mit RetinaFace, beschleunigt durch RKNN.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
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
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
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())Modelldetails
Armbian 26.8.7 Gnome oder neuer mit OTA overlayroot: Konfigurieren Sie den Docker-Speicher vor dem Starten von Containern um Overlay-Mount-Fehler zu vermeiden.
Schnellstart
1. Docker installieren
Führen Sie auf dem Entwicklungsboard die folgenden Befehle aus, um Docker zu installieren:
# 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. Projekt ausführen (ein Befehl, Vorschau in zwei Modi)
Diese Seite beschreibt den RetinaFace-Dienst aus reComputer-RK-CV. Er erkennt Gesichter und fünf Gesichtsmarken mit RKNN-Beschleunigung und bietet Bild-, Kamera-, lokale Video- und Uploadvideo-Modi.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Aktives Modell | model/retinaface_mobile.rknn |
| Enthaltene Alternative | model/retinaface_resnet50.rknn |
| Eingabe | Letterbox-RGB mit 320 x 320 |
| Ausgabe | Gesichtsbox, Konfidenz und fünf Landmarken |
| NMS | Fester IoU-Schwellenwert 0.5 |
Schritt A: Images abrufen
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:latestSchritt B: Mit einem Klick ausführen
Für 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 8000Für 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 8000Öffnen Sie http://<BOARD_IP>:8000 oder /docs. Ordnen Sie für eine Kamera /dev/videoN zu und verwenden Sie --camera_id N, oder übergeben Sie --video video/test.mp4 für ein lokales Video.
🔌 API-Dokumentation
1. Gesichtserkennungs-Schnittstelle (Predict)
Endpunkt: POST /api/models/retinaface/predict
Anfrageparameter (Multipart/Form-Data):
Laden Sie file hoch; threshold legt die Gesichtskonfidenz für diese Anfrage fest.
Anwendungsbeispiele:
curl -X POST "http://<BOARD_IP>:8000/api/models/retinaface/predict" \
-F "file=@test.jpg" -F "threshold=0.5"Jedes Ergebnis enthält confidence, box als [x1,y1,x2,y2] und fünf landmarks. Aktualisieren Sie den Vorschau-/Videoschwellenwert mit POST /api/config und JSON wie {"threshold":0.5}.
Antwortformat (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. Schnittstelle zur Systemkonfiguration (Config)
Aktuelle Konfiguration abrufen
- Endpunkt:
GET /api/config
Systemkonfiguration aktualisieren
- Endpunkt:
POST /api/config - JSON:
{"threshold":0.5}
Das allgemeine Feld topk ist für Dienstkompatibilität reserviert und wird nicht verwendet. NMS nutzt einen festen IoU-Schwellenwert von 0.5.
| Endpunkt | Zweck |
|---|---|
GET /api/health | Plattform, Modellnamen und Bereitschaft. |
GET /api/video_feed | Neueste Gesichtsboxen und Landmarken als MJPEG. |
POST /api/video/upload | MP4 hochladen. |
POST /api/video/analyze | Einen hochgeladenen filename analysieren. |
GET /api/video/status | Fortschritt und Fehler. |
GET /api/video/list | Hochgeladene und erzeugte MP4-Dateien. |
GET /api/video/download/{filename} | Ergebnis herunterladen. |
Der Upstream-Konstruktor lädt derzeit ausdrücklich retinaface_mobile.rknn. Für retinaface_resnet50.rknn müssen Sie task_runtime.py ändern und dasselbe Drei-Ausgabe-Layout prüfen; ein Docker-Befehlsparameter reicht nicht. Frames werden auf 320 x 320 letterboxed, von BGR nach RGB konvertiert, mit Prior-Boxen und fünf Landmarken decodiert, auf Quellkoordinaten zurückgeführt, nach Konfidenz gefiltert und mit NMS verarbeitet.
3. Befehlszeilenargumente
| Argument | Standard | Beschreibung |
|---|---|---|
--platform | Erforderlich | rk3576 oder rk3588. |
--model_dir | model | RetinaFace-RKNN-Dateien und test.jpg. |
--camera_id | -1 | Kameraindex; -1 deaktiviert die Aufnahme. |
--video, --video_path | Kein Wert | Lokales Video in Schleife; überschreibt die Kamera. |
--host / --port | 0.0.0.0 / 8000 | Dienstadresse und Port. |
RKNN_LOG_LEVEL=0 blendet bestätigte harmlose Meldungen zur Initialisierung statischer Formen aus. Entfernen Sie es bei der RKNN-Startdiagnose.
Echtzeit-Videostream (Video Feed)
Rufen Sie den neuesten annotierten MJPEG-Stream für die Browservorschau ab:
- Endpunkt:
GET /api/video_feed - Beispiel:
<img src="http://<BOARD_IP>:8000/api/video_feed">
🛠️ Entwicklerleitfaden (Empfehlungen für den Produktionseinsatz)
Lokal bauen
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_retinafaceEingaben und Ausgaben
Input: image, video frame, or camera frame. Output: face boxes, confidence scores, and five landmarks.