CV / CenterNet

CenterNet (resnet_v1_18)

COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.

16 Downloads
Größe
12.4 MB
Speicher
4GB+
Präzision
Hailo HEF / HailoRT 4.23.x

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Bereitstellen
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

REST API

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
  -F "file=@test.jpg"
Python
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 Series

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

EigenschaftWert
ArchitekturCenterNet (ResNet-18-Backbone)
AufgabeObjekterkennung
Eingabe512x512x3 RGB (Normalisierung in das HEF kompiliert)
Ausgabe3 Köpfe: wh (128x128x2), reg (128x128x2), dünnbesetzte Heatmap (128x128x80)
Klassen80 (COCO)
Parameter14.22M
Operationen31.21G
Hardware-mAP25.0 (COCO, Hailo Model Zoo-Referenz)
HEFHailo 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

ElementWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-8 über PCIe, verfügbar als /dev/hailo0
RuntimeHailoRT 4.23.x
Python im Container3.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:

bash
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/hailo0

Die 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

bash
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

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

REST-API

Vorhersage-Endpunkt:

text
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict

Beispiel-Bildanfrage:

bash
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_finder plus Score-Schwelle (0.2) behalten nur lokale Maxima über der Schwelle. Der Decoder nimmt diese Peaks, liest wh/reg an 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.