CV / ViTPose
ViTPose-Small
reComputer R Series (CM5 + Hailo-10H)
2D-houdingsschatting voor één persoon met 17 COCO-sleutelpunten via ViTPose-Small op reComputer R Series met Hailo-8.
Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.
Aan de slag
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-small \
--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:latest \
python web_detection.py --model_path model/vit_pose_small.hef --video_path video/test.mp4REST API
Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.
curl -X POST "http://<Board_IP>:8000/api/models/vit_pose_small/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/vit_pose_small/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modeldetails
reComputer R Series (CM5 + Hailo-10H)ViTPose-Small op reComputer R Series (CM5 + Hailo-10H)
ViTPose-Small schat de 2D-houding van één persoon: de HEF levert een heatmap van 64x48x17, de applicatie neemt per kanaal het argmax, schaalt de coördinaten naar de 256x192-invoer en zet ze terug naar het frame voordat de 17 COCO-keypoints worden getekend.
Deze pagina is gericht op reComputer R Series (CM5 + Hailo-10H) met een PCIe Hailo-10H-versneller.
Modelinformatie
| Eigenschap | Waarde |
|---|---|
| Architectuur | ViTPose-Small (Vision Transformer-backbone) |
| Taak | Poseschatting van één persoon (17 COCO-keypoints) |
| Invoer | 256x192x3 RGB (letterbox, normalisatie in de HEF gecompileerd) |
| Uitvoer | Heatmap 64x48x17 (argmax-decodering, geen on-chip NMS) |
| Parameters | 24.29M |
| Bewerkingen | 17.17G |
| HEF | Hailo Model Zoo v5.4.0, Hailo-10H (24,653,824 bytes) |
Hardware en hostinstellingen
| Onderdeel | Waarde |
|---|---|
| Board | reComputer R Series met Raspberry Pi CM5 |
| Versneller | Hailo-10H via PCIe, beschikbaar als /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| Python in de container | 3.13, aarch64 |
Installeer de Hailo-10H-pakketten op de host en controleer of stuurprogramma en apparaat gereed zijn voordat u de container start:
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# Na herstart
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0Uitvoeren met de demo-video
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-small \
--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:latest \
python web_detection.py --model_path model/vit_pose_small.hef --video_path video/test.mp4Open http://<Board_IP>:8000 voor het voorbeeld: het COCO-skelet wordt over de persoon getekend.
USB-cameramodus
sudo docker run --rm \
--name cm5-hailo10h-vit-pose-small \
--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:latest \
python web_detection.py --model_path model/vit_pose_small.hef --camera_id 0REST API
POST http://<Board_IP>:8000/api/models/vit_pose_small/predictcurl -X POST "http://<Board_IP>:8000/api/models/vit_pose_small/predict" \
-F "file=@test.jpg"| Endpoint | Methode | Doel |
|---|---|---|
/ | GET | Webvoorbeeld-interface |
/api/models/vit_pose_small/predict | POST | 17 COCO-keypoints (JSON) |
/api/video_feed | GET | MJPEG-previewstream |
/api/config | GET / POST | Runtime-drempels lezen of wijzigen |
/api/video/upload | POST | Bronvideo uploaden |
/api/video/analyze | POST | Offline video-analyse starten |
/api/video/status | GET | Voortgang van de analyse lezen |
/api/video/download/{filename} | GET | Geannoteerd resultaat downloaden |
Keypoints onder de drempel (0,30) worden weggelaten uit het skelet.
Implementatienotities
- Model voor één persoon: het netwerk verwacht de persoon gecentreerd in de uitsnede; voor scènes met meerdere personen moet een detector elke persoon eerst bijsnijden.
- De voorverwerking letterboxt naar 256x192 met zwarte rand, converteert BGR naar RGB en stuurt ruwe uint8-pixels; de ImageNet-normalisatie (gemiddelde
[123.675, 116.28, 103.53], std[58.395, 57.12, 57.375]in RGB) zit in de HEF. - De naverwerking neemt het argmax per heatmap-kanaal voor
(x, y)op 64x48, schaalt naar de 256x192-invoer en zet dit via de letterbox-informatie terug naar het frame. Geen on-chip NMS en geen DARK-subpixelverfijning. - De eerste inferentie logt eenmalig de uitvoervorm (
[ViTPose] raw output shape=...) om de indeling op de hardware te bevestigen.
Ontwikkelnotities
- Bronmodule:
src/hailo10h_vit_pose_small/ - Dockerfile:
docker/hailo10h/vit_pose_small.dockerfile - Container:
ghcr.io/seeed-projects/recomputer-hailo10h-cv/vit_pose_small:latest - De module gebruikt de HailoRT 5.1.1 InferModel-API en een Hailo-10H-specifieke HEF.
- Unit-tests draaien zonder apparaat:
python -m unittest discover -s tests -v.
Invoer en uitvoer
Invoer: afbeelding, video of USB-cameraframe. Uitvoer: 17 COCO-sleutelpunten (x, y, score) en MJPEG-voorbeeld met skelet.