CV / CenterNet
CenterNet (resnet_v1_18)
COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with 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-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.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/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modelldetails
reComputer R SeriesCenterNet (resnet_v1_18) auf reComputer R Series (CM5 + Hailo-8)
CenterNet mit ResNet-18-Backbone führt COCO-Objekterkennung über 80 Klassen auf Hailo-8 über HailoRT durch, mit der On-Chip-max_finder-Nachbearbeitungsvariante.
Diese Seite richtet sich an die reComputer R Series (CM5 + Hailo-8) mit einem PCIe-Hailo-8-Beschleuniger.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Architektur | CenterNet (ResNet-18-Backbone) |
| Aufgabe | Objekterkennung |
| Eingabe | 512x512x3 RGB (Normalisierung in das HEF kompiliert) |
| Ausgabe | 3 Köpfe: wh (128x128x2), reg (128x128x2), dünnbesetzte Heatmap (128x128x80) |
| Klassen | 80 (COCO) |
| Parameter | 14.22M |
| Operationen | 31.21G |
| Hardware-mAP | 25.0 (COCO, Hailo Model Zoo-Referenz) |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
Der Genauigkeitswert stammt aus der Hailo Model Zoo Objekterkennungstabelle für Hailo-8. Es ist keine auf CM5 gemessene Benchmark.
Hardware- und Host-Einrichtung
| Element | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-8 über PCIe, verfügbar als /dev/hailo0 |
| Runtime | HailoRT 4.23.x |
| Python im Container | 3.11, aarch64 |
Installieren Sie die entsprechenden Pakete auf dem Host und stellen Sie sicher, dass Treiber und Gerät bereit sind, bevor Sie den Container starten:
sudo apt update
# Beide Kandidaten müssen vor der Installation 4.23.x sein.
apt-cache policy hailort hailort-pcie-driver
sudo apt install hailort=4.23.0 hailort-pcie-driver=4.23.0
sudo reboot
# Nach dem Neustart
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0Die erwartete HailoRT-Version für dieses Image ist 4.23.x. Fahren Sie nicht fort, wenn apt-cache policy HailoRT 5.x auswählt; diese Runtime zielt auf Hailo-10H und passt nicht zu diesem Hailo-8-Container.
Mit Demovideo ausführen
sudo docker run --rm \
--name cm5-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --video_path video/test.mp4Öffnen Sie http://<Board_IP>:8000, um die Webvorschau anzuzeigen.
USB-Kameramodus
sudo docker run --rm \
--name cm5-hailo8-centernet \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
--device /dev/hailo0:/dev/hailo0 \
--device /dev/video0:/dev/video0 \
-v /usr/lib/libhailort.so.4.23.0:/usr/lib/libhailort.so.4.23.0:ro \
-v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --camera_id 0REST-API
Vorhersage-Endpunkt:
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predictBeispiel-Bildanfrage:
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|
| / | GET | Webvorschau-Oberfläche |
| /api/models/centernet_resnet_v1_18_postprocess/predict | POST | Erkennungen (JSON) |
| /api/video_feed | GET | MJPEG-Vorschaustream |
Implementierungshinweise
- Das HEF wurde mit
normalize_in_net=true(ImageNet-Mittelwert/-Standardabweichung, RGB) kompiliert; die App letterboxt daher auf 512x512, konvertiert BGR zu RGB und speist rohe uint8-Pixel ein — keine manuelle Normalisierung. - Der Heatmap-Kopf ist bereits dünnbesetzt: der On-Chip-
max_finderplus Score-Schwelle (0.2) behalten nur lokale Maxima über der Schwelle. Der Decoder nimmt diese Peaks, liestwh/regan jedem Peak und rekonstruiert Boxen mit der offiziellen Hailo Model Zoo-Formel (Stride 4, 128x128-Featuremap → 512x512-Eingabe) und rechnet das Letterboxing auf das Originalbild zurück. - Die beiden 2-Kanal-Köpfe (wh, reg) werden über den vstream-Namen zugeordnet, wenn die Conv-Nummer verfügbar ist (conv3 → wh, conv5 → reg), andernfalls über die Netzwerkausgabereihenfolge. Die erste Inferenz gibt Name/Form jedes vstreams und die aufgelöste Zuordnung aus, damit sie auf der Hardware überprüft werden kann.
Entwicklungsnotizen
- Quellmodul:
src/rpi5_hailo8_centernet_resnet_v1_18_postprocess/ - Dockerfile:
docker/hailo8/centernet_resnet_v1_18_postprocess.dockerfile - Container:
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest - Das Modul verwendet die VStreams-API von HailoRT 4.23 und ein Hailo-8-spezifisches HEF.
Eingaben und Ausgaben
Eingabe: Bild, Video oder Einzelbild einer USB-Kamera. Ausgabe: Erkennungsrahmen für 80 COCO-Klassen mit Konfidenzwerten sowie eine annotierte MJPEG-Vorschau.