Hanzo Huang2026-09-14

Beschermingsmiddelen detecteren binnen een zone met Raspberry Pi 5 en Hailo-8

Controleer veiligheidshelmen, veiligheidsvesten en maskers binnen een zelfgekozen zone, met Hailo-8-versnelde detectie en een webdashboard op Raspberry Pi 5.

CVObject DetectionPPEGitHub

Wat is PPE-detectie?

Bij de detectie van persoonlijke beschermingsmiddelen (PBM, in het Engels PPE) herkent computervisie mensen en hun beschermingsmiddelen, zoals veiligheidshelmen, veiligheidsvesten en maskers. Dit project draait op een Raspberry Pi 5 met een Hailo-8-accelerator en toont de resultaten in een webdashboard. Het controleert de vereiste uitrusting alleen bij mensen binnen een opgeslagen veelhoek. Zo kun je de controle beperken tot een specifieke werkzone.

Demo van detectie van beschermingsmiddelen binnen een zone

Het dashboard ondersteunt geüploade afbeeldingen, video's die in de browser worden afgespeeld, een USB-camera en RTSP/RTSPS-camera's. Het midden van de onderrand van het detectiekader bepaalt of iemand zich binnen de zone bevindt. Mensen buiten de zone worden grijs weergegeven en tellen niet mee bij het aantal personen dat aan de eisen voldoet of het aantal overtredingen.

Binnen de zone koppelt de toepassing de gedetecteerde beschermingsmiddelen aan de juiste persoon. Als een verplicht middel niet als aanwezig wordt gedetecteerd, geldt het als ontbrekend. Spreken de labels voor aanwezigheid en afwezigheid elkaar tegen, dan wordt het label met de hoogste betrouwbaarheidsscore gebruikt. De totalen zijn dus gebaseerd op de modeldetecties en de ingestelde regels.

PPE-model en dataset

De modelbeschrijving verwijst naar de Construction Site Safety Image Dataset Roboflow op Kaggle. Die link verwijst naar de dataset; voor de inferentie gebruikt de demo het geëxporteerde model dat al in de projectrepository staat. Je hoeft de dataset dus niet te downloaden om met deze handleiding aan de slag te gaan.

De demo laadt models/ppe_hailo_model/ppe.hef, een met Ultralytics geëxporteerd model voor Hailo-8 met non-maximum suppression (NMS) per klasse. De metadata vermelden een invoerformaat van 640 × 640 en de volgende klasselabels:

IDKlasselabel
0Hardhat
1Mask
2NO-Hardhat
3NO-Mask
4NO-Safety Vest
5Person
6Safety Cone
7Safety Vest
8machinery
9vehicle

In het dashboard kun je een veiligheidshelm, veiligheidsvest, masker of een combinatie daarvan verplicht stellen. De overige detectieklassen zijn geen aanvullende eisen voor beschermingsmiddelen.

Aan de slag

Deze stappen volgen de installatiehandleiding van de oorspronkelijke repository en de instructies voor de PPE-demo.

1. De Raspberry Pi en Hailo-runtime voorbereiden

Gebruik een Raspberry Pi 5 met een Hailo-8-accelerator en de 64-bits versie van Raspberry Pi OS Bookworm. Installeer de Hailo-pakketten:

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

Open na het opnieuw opstarten een terminal en controleer het apparaat en de architectuur:

bash
hailortcli fw-control identify
ls /dev/hailo0
uname -m

De architectuur moet aarch64 zijn. Het meegeleverde Python-wheel vereist HailoRT 4.23 en CPython 3.12 op 64-bits ARM Linux. Controleer de runtimeversie voordat je het gebruikt: hoort je driver bij een andere HailoRT-versie, haal dan een passend wheel op bij Hailo Developer Zone, zoals beschreven in de handleiding van de repository.

2. De code ophalen en de Python-omgeving maken

bash
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demos

De handleiding van de repository raadt Miniforge aan om Python 3.12 te installeren zonder de Python-versie van het systeem te vervangen. Is Miniforge nog niet geïnstalleerd, voer dan het volgende uit:

bash
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.sh

Accepteer de standaardinstallatielocatie en geef toestemming om de shell te initialiseren. Sluit de terminal, open deze opnieuw en ga terug naar de gekloonde map pi-ai-demos. Maak en activeer de omgeving:

bash
conda config --set auto_activate_base false
conda create --name pi-hailo python=3.12 pip -y
conda activate pi-hailo
python --version
python -m pip install -r requirements.txt
python -m pip install runtime/wheels/hailort-4.23.0-cp312-cp312-linux_aarch64.whl

python --version moet Python 3.12.x tonen. Controleer daarna de afhankelijkheden:

bash
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"
hailortcli fw-control identify

3. Het project starten

Start de toepassing vanuit de hoofdmap van de repository, met de omgeving geactiveerd, zonder USB-camera:

bash
python examples/cv/ppe-detection/run.py --camera-id -1

Open http://<pi-ip>:8000 in een browser op hetzelfde netwerk en vervang <pi-ip> door het IP-adres van de Raspberry Pi. Wil je de eerste USB-camera gebruiken, stop dan de server met Ctrl+C en voer het volgende uit:

bash
python examples/cv/ppe-detection/run.py --camera-id 0

Controleer de backend in een tweede terminal op de Raspberry Pi:

bash
curl http://127.0.0.1:8000/api/health

Voordat je de analyse start, moet de respons "model_exists":true en "hailo_platform_importable":true bevatten. Het standaardpad naar het model is models/ppe_hailo_model/ppe.hef. Activeer pi-hailo opnieuw wanneer je een nieuwe terminal opent om de demo te draaien.

4. Een bron en detectiezone kiezen

  1. Upload een afbeelding of video, gebruik de USB-camera of voer een volledige rtsp://- of rtsps://-URL in en kies Connect RTSP (RTSP verbinden).
  2. Kies Edit area (zone bewerken) en teken een veelhoek met minstens drie punten. Kies Full frame (volledig beeld) om het hele beeld te controleren.
  3. Kies Save area (zone opslaan). De analyse gebruikt altijd de laatst opgeslagen veelhoek. Je kunt de zone op het tekenvlak alleen in de bewerkingsmodus aanpassen.
  4. Kies de verplichte beschermingsmiddelen: een veiligheidshelm, veiligheidsvest, masker of een combinatie daarvan.
  5. Bekijk de detecties die over het beeld worden getoond en de aantallen personen binnen de opgeslagen zone die aan de eisen voldoen of een overtreding hebben.

5. De PPE-regels testen

Het oorspronkelijke project bevat tests voor de zone- en uitrustingsregels waarvoor geen extra afhankelijkheden nodig zijn. Voer ze uit vanuit de hoofdmap van de repository:

bash
python -m unittest discover examples/cv/ppe-detection/tests -v