CV / CenterNet

CenterNet (resnet_v1_18)

reComputer R Series (CM5 + Hailo-10H)

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

40 downloads
Grootte
12.4 MB
Geheugen
4GB+
Precisie
Hailo HEF / HailoRT 4.23.x

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
sudo docker run --rm \
  --name cm5-hailo10h-centernet-v18 \
  --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/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

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

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

Modeldetails

reComputer R Series (CM5 + Hailo-10H)

CenterNet (resnet_v1_18) op reComputer R Series (CM5 + Hailo-10H)

CenterNet met een ResNet-18-backbone voert COCO-objectdetectie over 80 klassen uit op Hailo-10H via HailoRT, met de on-chip max_finder-nabewerkingsvariant.

Deze pagina is gericht op de reComputer R Series (CM5 + Hailo-10H) met een PCIe-Hailo-10H-versneller.

Modelinformatie

EigenschapWaarde
ArchitectuurCenterNet (ResNet-18-backbone)
TaakObjectdetectie
Invoer512x512x3 RGB (normalisatie in de HEF gecompileerd)
Uitvoer3 koppen: wh (128x128x2), reg (128x128x2), sparse heatmap (128x128x80)
Klassen80 (COCO)
Parameters14.22M
Bewerkingen31.21G
Hardware-mAP25.0 (COCO, Hailo Model Zoo-referentie)
HEFHailo Model Zoo v5.4.0, Hailo-10H

De nauwkeurigheidswaarde komt uit de Hailo Model Zoo objectdetectietabel voor Hailo-10H. Het is geen op CM5 gemeten benchmark.

Hardware- en hostconfiguratie

ItemWaarde
BoardreComputer R Series met Raspberry Pi CM5
VersnellerHailo-10H via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 5.1.1
Python in container3.13, aarch64

Installeer de betreffende pakketten op de host en controleer of de driver en het apparaat klaar zijn voordat u de container start:

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

# Na herstart
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

Meng geen HailoRT 4.23.x (Hailo-8) drivers, bibliotheken of Python-wheels in deze Hailo-10H-container.

Uitvoeren met demovideo

bash
sudo docker run --rm \
  --name cm5-hailo10h-centernet-v18 \
  --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/centernet_resnet_v1_18_postprocess:latest \
  python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --video_path video/test.mp4

Open http://<Board_IP>:8000 voor de webpreview.

USB-cameramodus

bash
sudo docker run --rm \
  --name cm5-hailo10h-centernet-v18 \
  --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/centernet_resnet_v1_18_postprocess:latest \
  python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --camera_id 0

REST-API

Voorspellings-eindpunt:

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

Voorbeeldafbeeldingsverzoek:

bash
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
  -F "file=@test.jpg"

| Eindpunt | Methode | Doel | |---|---| | / | GET | Webpreview-interface | | /api/models/centernet_resnet_v1_18_postprocess/predict | POST | Detecties (JSON) | | /api/video_feed | GET | MJPEG-previewstream |

Implementatienotities

  • De HEF is gecompileerd met normalize_in_net=true (ImageNet-gemiddelde/-standaarddeviatie, RGB); de app letterboxt daarom naar 512x512, converteert BGR naar RGB en voert ruwe uint8-pixels in — geen handmatige normalisatie.
  • De heatmap-kop is al sparse: de on-chip max_finder plus scoredrempel (0.2) behouden alleen lokale maxima boven de drempel. De decoder neemt die pieken, leest wh/reg bij elke piek en reconstrueert boxen met de officiële Hailo Model Zoo-formule (stride 4, 128x128-featuremap → 512x512-invoer), en draait de letterbox terug naar het originele frame.
  • De twee 2-kanaalskoppen (wh, reg) worden op vstream-naam toegewezen wanneer het conv-nummer beschikbaar is (conv3 → wh, conv5 → reg), anders op netwerkuitvoervolgorde. De eerste inferentie print naam en vorm van elke vstream en de opgeloste toewijzing, zodat deze op de hardware kan worden geverifieerd.
  • De executor gebruikt de create_infer_model-API van HailoRT 5.1.1 met een persistent geconfigureerd model en geregistreerde FLOAT32-uitvoerbuffers, zodat HailoRT de uitvoer dequantiseert in plaats van ruwe on-chip fixed-pointwaarden te lezen.

Ontwikkelingsnotities

  • Bronmodule: src/hailo10h_centernet_resnet_v1_18_postprocess/
  • Dockerfile: docker/hailo10h/centernet_resnet_v1_18_postprocess.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo10h-cv/centernet_resnet_v1_18_postprocess:latest
  • De module gebruikt de InferModel-API van HailoRT 5.1.1 en een Hailo-10H-specifieke HEF.

Invoer en uitvoer

Invoer: afbeelding, video of frame van een USB-camera. Uitvoer: detectiekaders voor 80 COCO-klassen met betrouwbaarheidsscores, plus een geannoteerd MJPEG-voorbeeld.