# 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 Objekterkennung funktioniert. Von der Rohdatenerfassung bis zum fertigen Ergebnis. Die Anwendung bietet zwei Lernniveaus ("Schüler:innen" und "Student:innen") und ist für den Einsatz auf Messen, in Schulen oder Universitäten konzipiert. ## 🚀 Features 1. **Live-Objektdetektion:** Nutzt den Hardware-Beschleuniger des IMX500 Sensors. 2. **Zwei Lern-Niveaus:** * **Schüler:** 4 vereinfachte Schritte, spielerischer Zugang. * **Student:** 7 detaillierte Schritte mit technischer Tiefe (Pre-Processing, Tensoren, NMS). 3. **Interaktiver Workflow:** * *Live-Modus:* Echtzeit-Erkennung. * *Analyse-Modus:* Einfrieren eines Bildes und schrittweise Durchleuchtung der KI-Pipeline. 4. **Pixel-Inspektor:** In Schritt 1 können einzelne Pixel mit der Maus untersucht werden (RGB-Werte), um das Konzept der "Matrix" zu verdeutlichen. 5. **Gate-Animationen:** Zwischen den Analyseschritten werden animierte Erklärungen (Bildsequenzen) abgespielt. 6. **Bilingual & Audio:** Vollständig in Deutsch und Englisch verfügbar, inklusive Sprachausgabe für Erklärtexte. 7. **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:** 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:** Alle Befehle werden im Terminal ausgeführt. Das System benötigt Python 3, `picamera2` (vorinstalliert auf Bookworm) und `pygame`, sowie die IMX500 firmware `imx500`. Zuerst sicher gehen, dass der Raspberry PI die aktuelle Software hat: ```bash sudo apt update && sudo apt full-upgrade ``` Dann die Abhängigkeiten installieren: ```bash sudo apt install python3-libcamera python3-kms++ python3-pygame ``` Sowie ```bash sudo apt install imx500-all ``` Falls numpy fehlt: ```bash 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 ```text 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 1. Sprachwechsel: Klicke oben rechts auf den Button DE / EN, um die Sprache der Texte und des Audios zu wechseln. 2. Audio-Dateien: * Deutsch: schueler_step_X.mp3 * Englisch: schueler_step_X_english.mp3 * Die Dateien müssen im Ordner assets/audio/ liegen. ## 📝 Lizenz This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details