IMX500-Object-Detection-UI/README.md
2026-02-04 19:24:54 +01:00

142 lines
5.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# IMX500-Object-Detection-UI
Eine interaktive, didaktische Anwendung für den Raspberry Pi 4/5 mit der Sony IMX500 AI Camera. Diese Software visualisiert Schritt für Schritt wie Objketerkennung funktioniert. Von der Rohdatenerfassung bis zum fertigen Ergebnis.
Die Anwendung bietet zwei Lernniveaus ("Schüler" und "Student") und ist für den Einsatz auf Messen, in Schulen oder Universitäten konzipiert.
## 🚀 Features
* **Live-Objektdetektion:** Nutzt den Hardware-Beschleuniger des IMX500 Sensors.
* **Zwei Lern-Niveaus:**
    * **Schüler:** 4 vereinfachte Schritte, spielerischer Zugang.
    * **Student:** 7 detaillierte Schritte mit technischer Tiefe (Pre-Processing, Tensoren, NMS).
* **Interaktiver Workflow:**
    * *Live-Modus:* Echtzeit-Erkennung.
    * *Analyse-Modus:* Einfrieren eines Bildes und schrittweise Durchleuchtung der KI-Pipeline.
* **Pixel-Inspektor:** In Schritt 1 können einzelne Pixel mit der Maus untersucht werden (RGB-Werte), um das Konzept der "Matrix" zu verdeutlichen.
* **Gate-Animationen:** Zwischen den Analyseschritten werden animierte Erklärungen (Bildsequenzen) abgespielt.
* **Bilingual & Audio:** Vollständig in Deutsch und Englisch verfügbar, inklusive Sprachausgabe für Erklärtexte.
* **Didaktische Visualisierung:**
    * Simulation von Auflösungsreduzierung (Pixelation).
    * Visualisierung von Feature-Maps (Sobel-Filter).
    * Darstellung von Bounding Boxes und Confidence Scores.
## 🛠 Hardware-Voraussetzungen
* **Raspberry Pi 4 oder 5**
* **Betriebssystem:** Raspberry Pi OS **Bookworm (64-bit)** (Desktop-Version empfohlen für GUI).
* **Kamera:** Raspberry Pi AI Camera (Sony IMX500).
* **Display:** Touchscreen oder Monitor + Maus/Tastatur.
* **Audio:** Lautsprecher oder Kopfhörer (für die Sprachausgabe).
## 📦 Installation
1.  **Repository klonen / Dateien kopieren:**
```bash
git clone https://github.com/watsonove/IMX500-Object-Detection-UI/
```
    Stelle sicher, dass alle Projektdateien (`app.py`, `detector.py`, `steps.py`, Ordner `ui/` und `assets/`) vorhanden sind.
2.  **Abhängigkeiten installieren:**
    Das System benötigt Python 3, `picamera2` (vorinstalliert auf Bookworm) und `pygame`, sowie die IMX500 firmware `imx500`.
    ```bash
    sudo apt update
    sudo apt full-upgrade
   
    sudo apt install imx500-all
    sudo apt install python3-libcamera python3-kms++ python3-pygame
    # Falls numpy fehlt:
    sudo apt install python3-numpy
    ```
Nachdem du nun die Voraussetzungen installiert hast, starte den Raspberry Pi neu:
```bash
sudo reboot
```
3.  **Assets prüfen:**
    Stelle sicher, dass die Ordnerstruktur korrekt ist (siehe unten "Projektstruktur"). Besonders wichtig sind die Bildsequenzen in `assets/schritt_X_experte/`.
## ▶️ Starten der Anwendung
Starte die Anwendung über das Terminal. Du musst den Pfad zu deiner Model-Datei angeben (z. B. ein MobileNet oder EfficientDet Modell, das für den IMX500 kompiliert ist).
```bash
python3 app.py --model=/usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk
```
## 🎮 Steuerung
Die Anwendung ist für Tastatur- und Mausbedienung optimiert.
| Taste / Aktion | Funktion |
| :----------------- | :---------------------------------------------------------------------- |
| **LEERTASTE** | **Freeze / Unfreeze:** Wechselt zwischen Live-Kamera und Analyse-Modus. |
| **ENTER** | **Weiter:** Geht zum nächsten Schritt oder bestätigt das "Gate". |
| **BACKSPACE** | **Zurück:** Geht zum vorherigen Schritt oder zurück zum Gate. |
| **Mausklick** | Bedienung der UI-Buttons (Sprache, Home, Audio, Level-Wahl). |
| **Mausbewegung** | Im "Schritt 1" (Analyse): Zeigt RGB-Werte unter dem Mauszeiger an. |
| **Q** oder **ESC** | Beendet das Programm. |
## 📂 Projektstruktur
imx500_gui/
├── app.py # Hauptprogramm (Controller, Event-Loop)
├── detector.py # Hardware-Interface (Kamera, IMX500 Post-Processing)
├── steps.py # Texte und Bild-Transformationen (Logik)
├── README.md # Dokumentation
├── ui/ # UI-Modul (View)
│ ├── __init__.py
│ ├── renderer.py # Zeichenfunktionen (Balken, Overlay, Pixel-Grid)
│ ├── textlayout.py # Textumbruch und -formatierung
│ └── theme.py # Farben und Design-Konstanten
└── assets/ # Medien-Dateien
├── Kanit-Bold.ttf # Schriftart
├── landingpagebg.jpg # Hintergrundbild
├── audio/ # MP3 Sprachdateien (DE & EN)
├── schritt_1_experte/ # Bildsequenz Animation Schritt 1
├── schritt_2_experte/ # Bildsequenz Animation Schritt 2
├── ... # (weitere Ordner bis schritt_7)
└── schritt_7_experte/
## 🌍 Sprache & Audio
* Sprachwechsel: Klicke oben rechts auf den Button DE / EN, um die Sprache der Texte und des Audios zu wechseln.
*Audio-Dateien:
    *Deutsch: schueler_step_X.mp3
    *Englisch: schueler_step_X_english.mp3
    *Die Dateien müssen im Ordner assets/audio/ liegen.
## 📝 Lizenz
Dieses Projekt wurde für Bildungszwecke entwickelt.
---
Entwickelt für Raspberry Pi AI Camera.