CV / ViTPose
ViTPose-Small-BN
reComputer R Series (CM5 + Hailo-10H)
2D-Einzelpersonen-Pose-Schätzung mit ViTPose-Small-BN auf der reComputer R Series mit Hailo-8.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-bn \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/vit_pose_small_bn:latest \
python web_detection.py --model_path model/vit_pose_small_bn.hef --video_path video/test.mp4REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://<Board_IP>:8000/api/models/vit_pose_small_bn/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/vit_pose_small_bn/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modelldetails
reComputer R Series (CM5 + Hailo-10H)ViTPose-Small-BN auf reComputer R Series (CM5 + Hailo-10H)
ViTPose-Small-BN schätzt die 2D-Pose einer einzelnen Person: Das HEF liefert eine 64x48x17-Heatmap, die Anwendung nimmt das Argmax je Kanal, skaliert die Koordinaten auf die 256x192-Eingabe und führt sie auf das Bild zurück, bevor sie die 17 COCO-Keypoints zeichnet.
Diese Seite richtet sich an reComputer R Series (CM5 + Hailo-10H) mit einem PCIe-Hailo-10H-Beschleuniger.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Architektur | ViTPose-Small-BN (Vision-Transformer-Backbone) |
| Aufgabe | Posenschätzung einer Person (17 COCO-Keypoints) |
| Eingabe | 256x192x3 RGB (Letterbox, Normalisierung im HEF kompiliert) |
| Ausgabe | Heatmap 64x48x17 (Argmax-Dekodierung, kein On-Chip-NMS) |
| Parameter | 24.32M |
| Operationen | 17.17G |
| HEF | Hailo Model Zoo v5.4.0, Hailo-10H (23,314,432 bytes) |
Hardware und Host-Setup
| Element | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-10H über PCIe, verfügbar als /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| Python im Container | 3.13, aarch64 |
Installieren Sie die Hailo-10H-Pakete auf dem Host und prüfen Sie Treiber und Gerät, bevor Sie den Container starten:
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# Nach dem Neustart
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0Ausführung mit dem Demo-Video
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-small-bn \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/vit_pose_small_bn:latest \
python web_detection.py --model_path model/vit_pose_small_bn.hef --video_path video/test.mp4Öffnen Sie http://<Board_IP>:8000 für die Vorschau: das COCO-Skelett wird über die Person gezeichnet.
USB-Kameramodus
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-small-bn \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo10h-cv/vit_pose_small_bn:latest \
python web_detection.py --model_path model/vit_pose_small_bn.hef --camera_id 0REST API
POST http://<Board_IP>:8000/api/models/vit_pose_small_bn/predictcurl -X POST "http://<Board_IP>:8000/api/models/vit_pose_small_bn/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Web-Vorschau-Oberfläche |
/api/models/vit_pose_small_bn/predict | POST | 17 COCO-Keypoints (JSON) |
/api/video_feed | GET | MJPEG-Vorschaustream |
/api/config | GET / POST | Laufzeit-Schwellenwerte lesen oder ändern |
/api/video/upload | POST | Quellvideo hochladen |
/api/video/analyze | POST | Offline-Videoanalyse starten |
/api/video/status | GET | Analysefortschritt lesen |
/api/video/download/{filename} | GET | Annotiertes Ergebnis herunterladen |
Keypoints unterhalb des Schwellenwerts (0,30) werden im Skelett weggelassen.
Implementierungshinweise
- Ein-Personen-Modell: Das Netz erwartet die Person mittig im Ausschnitt; für Szenen mit mehreren Personen muss ein Detektor jede Person zuerst ausschneiden.
- Die Vorverarbeitung letterboxt auf 256x192 mit schwarzem Rand, wandelt BGR in RGB um und übergibt rohe uint8-Werte; die ImageNet-Normalisierung (Mittel
[123.675, 116.28, 103.53], Std[58.395, 57.12, 57.375]in RGB) ist im HEF kompiliert. - Die Nachverarbeitung nimmt das Argmax je Heatmap-Kanal für
(x, y)auf 64x48, skaliert auf die 256x192-Eingabe und führt es über die Letterbox-Informationen auf das Bild zurück. Kein On-Chip-NMS und keine DARK-Subpixel-Verfeinerung. - Die erste Inferenz protokolliert einmal die Ausgabeform (
[ViTPose] raw output shape=...), um das Layout auf der Hardware zu bestätigen.
Entwicklungshinweise
- Quellmodul:
src/hailo10h_vit_pose_small_bn/ - Dockerfile:
docker/hailo10h/vit_pose_small_bn.dockerfile - Container:
ghcr.io/seeed-projects/recomputer-hailo10h-cv/vit_pose_small_bn:latest - Das Modul nutzt die HailoRT-5.1.1-InferModel-API und ein Hailo-10H-spezifisches HEF.
- Unit-Tests laufen ohne Gerät:
python -m unittest discover -s tests -v.
Eingaben und Ausgaben
Eingabe: Bild, Video oder USB-Kamerabild. Ausgabe: 17 COCO-Keypoints (x, y, Score) mit Skelettüberlagerung.