CV / CenterNet

CenterNet (resnet_v1_18)

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

16 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-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

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

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

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

Deze pagina is gericht op de reComputer R Series (CM5 + Hailo-8) met een PCIe-Hailo-8-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 v2.19.0, Hailo-8

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

Hardware- en hostconfiguratie

ItemWaarde
BoardreComputer R Series met Raspberry Pi CM5
VersnellerHailo-8 via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 4.23.x
Python in container3.11, 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

# Beide kandidaten moeten 4.23.x zijn vóór installatie.
apt-cache policy hailort hailort-pcie-driver

sudo apt install hailort=4.23.0 hailort-pcie-driver=4.23.0
sudo reboot

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

De verwachte HailoRT-versie voor deze image is 4.23.x. Ga niet verder als apt-cache policy HailoRT 5.x selecteert; die runtime is voor Hailo-10H en past niet bij deze Hailo-8-container.

Uitvoeren met demovideo

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

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

USB-cameramodus

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

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.

Ontwikkelingsnotities

  • Bronmodule: 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
  • De module gebruikt de VStreams-API van HailoRT 4.23 en een Hailo-8-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.