Hanzo Huang2026-09-14

Schutzausrüstung in festgelegten Bereichen erkennen mit Raspberry Pi 5 und Hailo-8

Prüfe Schutzhelme, Warnwesten und Masken in einem selbst festgelegten Bereich – mit Hailo-8-beschleunigter Erkennung und einem Webdashboard auf dem Raspberry Pi 5.

CVObject DetectionPPEGitHub

Was ist PPE-Erkennung?

Bei der Erkennung persönlicher Schutzausrüstung (PSA, auf Englisch PPE) werden Personen und Ausrüstungsgegenstände wie Schutzhelme, Warnwesten und Masken mithilfe von Computer Vision erkannt. Dieses Projekt läuft auf einem Raspberry Pi 5 mit Hailo-8-Beschleuniger und zeigt die Ergebnisse in einem Webdashboard an. Die ausgewählte Schutzausrüstung wird nur bei Personen innerhalb eines gespeicherten Polygons geprüft. So lässt sich die Prüfung auf einen bestimmten Arbeitsbereich begrenzen.

Demo zur Erkennung von Schutzausrüstung in festgelegten Bereichen

Das Dashboard unterstützt hochgeladene Bilder, im Browser abgespielte Videos, eine USB-Kamera und RTSP/RTSPS-Kameras. Ob sich eine Person im Bereich befindet, wird anhand der Mitte der unteren Kante ihres Erkennungsrahmens bestimmt. Personen außerhalb des Bereichs erscheinen grau und werden weder bei erfüllten Anforderungen noch bei Verstößen mitgezählt.

Innerhalb des Bereichs ordnet die Anwendung die erkannte Schutzausrüstung den einzelnen Personen zu. Wird ein vorgeschriebener Gegenstand nicht als vorhanden erkannt, gilt er als fehlend. Widersprechen sich die Erkennungen für „vorhanden“ und „nicht vorhanden“, entscheidet die höhere Konfidenz. Die Zählergebnisse beruhen somit auf den Modellerkennungen und den eingestellten Regeln.

PPE-Modell und Datensatz

Die Modellbeschreibung verweist auf den Datensatz Construction Site Safety Image Dataset Roboflow auf Kaggle. Der Kaggle-Link führt zum Datensatz; für die Inferenz wird das bereits exportierte Modell aus dem Projekt-Repository verwendet. Für den Einstieg musst du den Datensatz daher nicht herunterladen.

Die Demo lädt models/ppe_hailo_model/ppe.hef, ein mit Ultralytics exportiertes Modell für Hailo-8 mit klassenweiser Non-Maximum Suppression (NMS). Die Metadaten geben eine Eingabegröße von 640 × 640 und folgende Klassenbezeichnungen an:

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

Im Dashboard kannst du Schutzhelm, Warnweste und Maske einzeln oder in Kombination vorschreiben. Die übrigen Erkennungsklassen lassen sich nicht als zusätzliche Anforderungen an die Schutzausrüstung festlegen.

Erste Schritte

Die folgenden Schritte orientieren sich an der Einrichtungsanleitung des ursprünglichen Repositorys und der Anleitung zur PPE-Demo.

1. Raspberry Pi und Hailo-Laufzeitumgebung vorbereiten

Verwende einen Raspberry Pi 5 mit Hailo-8-Beschleuniger und Raspberry Pi OS Bookworm in der 64-Bit-Version. Installiere die Hailo-Pakete:

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

Öffne nach dem Neustart ein Terminal und prüfe das Gerät sowie die Architektur:

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

Die Architektur muss aarch64 sein. Das mitgelieferte Python-Wheel benötigt HailoRT 4.23 und CPython 3.12 unter 64-Bit-ARM-Linux. Prüfe vor der Installation die Laufzeitversion: Falls dein Treiber zu einer anderen HailoRT-Version gehört, lade gemäß der Anleitung im Repository ein passendes Wheel aus der Hailo Developer Zone herunter.

2. Code herunterladen und Python-Umgebung erstellen

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

Die Anleitung im Repository empfiehlt Miniforge, um Python 3.12 zu installieren, ohne das System-Python zu ersetzen. Falls Miniforge noch nicht installiert ist, führe Folgendes aus:

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

Übernimm den vorgeschlagenen Installationspfad und erlaube dem Installer, die Shell zu initialisieren. Schließe das Terminal, öffne es erneut und wechsle zurück in das geklonte Verzeichnis pi-ai-demos. Erstelle und aktiviere die Umgebung:

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 sollte Python 3.12.x anzeigen. Prüfe anschließend die Abhängigkeiten:

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

3. Projekt starten

Starte die Anwendung bei aktivierter Umgebung aus dem Stammverzeichnis des Repositorys zunächst ohne USB-Kamera:

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

Öffne http://<pi-ip>:8000 in einem Browser im selben Netzwerk. Ersetze <pi-ip> durch die IP-Adresse des Raspberry Pi. Um die erste USB-Kamera zu verwenden, beende den Server mit Ctrl+C und führe dann Folgendes aus:

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

Prüfe das Backend in einem weiteren Terminal auf dem Raspberry Pi:

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

Vor der Analyse sollte die Antwort "model_exists":true und "hailo_platform_importable":true enthalten. Der Standardpfad zum Modell lautet models/ppe_hailo_model/ppe.hef. Aktiviere pi-hailo erneut, wenn du die Demo in einem neuen Terminal startest.

4. Quelle und Erkennungsbereich auswählen

  1. Lade ein Bild oder Video hoch, verwende die USB-Kamera oder gib eine vollständige rtsp://- bzw. rtsps://-URL ein und wähle Connect RTSP (RTSP verbinden).
  2. Wähle Edit area (Bereich bearbeiten) und zeichne ein Polygon mit mindestens drei Punkten. Mit Full frame (gesamtes Bild) kannst du stattdessen das ganze Bild prüfen.
  3. Wähle Save area (Bereich speichern). Für die Analyse wird immer das zuletzt gespeicherte Polygon verwendet. Der Bereich auf der Zeichenfläche lässt sich nur im Bearbeitungsmodus ändern.
  4. Lege die vorgeschriebene Ausrüstung fest: Schutzhelm, Warnweste, Maske oder eine Kombination daraus.
  5. Prüfe die eingeblendeten Erkennungen und die Anzahl der Personen mit erfüllten Anforderungen bzw. Verstößen innerhalb des gespeicherten Bereichs.

5. PPE-Regeln testen

Das ursprüngliche Projekt enthält Tests für die Bereichs- und Ausrüstungsregeln, die ohne zusätzliche Abhängigkeiten auskommen. Führe sie im Stammverzeichnis des Repositorys aus:

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