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.

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:
| ID | Klasselabel |
|---|---|
| 0 | Hardhat |
| 1 | Mask |
| 2 | NO-Hardhat |
| 3 | NO-Mask |
| 4 | NO-Safety Vest |
| 5 | Person |
| 6 | Safety Cone |
| 7 | Safety Vest |
| 8 | machinery |
| 9 | vehicle |
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:
sudo apt update
sudo apt install hailo-all
sudo rebootOpen na het opnieuw opstarten een terminal en controleer het apparaat en de architectuur:
hailortcli fw-control identify
ls /dev/hailo0
uname -mDe 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
git clone https://github.com/Hanzo-Huang/pi-ai-demos.git
cd pi-ai-demosDe 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:
sudo apt install curl
curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash Miniforge3-Linux-aarch64.shAccepteer 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:
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.whlpython --version moet Python 3.12.x tonen. Controleer daarna de afhankelijkheden:
python -c "import cv2, fastapi, hailo_platform, numpy; print('Python dependencies: OK')"
hailortcli fw-control identify3. Het project starten
Start de toepassing vanuit de hoofdmap van de repository, met de omgeving geactiveerd, zonder USB-camera:
python examples/cv/ppe-detection/run.py --camera-id -1Open 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:
python examples/cv/ppe-detection/run.py --camera-id 0Controleer de backend in een tweede terminal op de Raspberry Pi:
curl http://127.0.0.1:8000/api/healthVoordat 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
- Upload een afbeelding of video, gebruik de USB-camera of voer een volledige
rtsp://- ofrtsps://-URL in en kies Connect RTSP (RTSP verbinden). - Kies Edit area (zone bewerken) en teken een veelhoek met minstens drie punten. Kies Full frame (volledig beeld) om het hele beeld te controleren.
- 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.
- Kies de verplichte beschermingsmiddelen: een veiligheidshelm, veiligheidsvest, masker of een combinatie daarvan.
- 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:
python -m unittest discover examples/cv/ppe-detection/tests -v