🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
119 lines
4.2 KiB
Markdown
119 lines
4.2 KiB
Markdown
# Fahrzeug- und Objekt-Erkennungssystem
|
|
|
|
[](https://www.youtube.com/watch?v=j94-OHGflT8)
|
|
|
|
Eine webbasierte Anwendung zur Echtzeit-Objekterkennung und -Verfolgung mittels YOLOv11. Die Anwendung unterstützt sowohl Live-Webcam-Streams als auch die Verarbeitung hochgeladener Videodateien.
|
|
|
|
## Funktionen
|
|
|
|
- **Webcam-Erkennung**: Echtzeit-Objekterkennung über die Webcam
|
|
- **Video-Upload**: Hochladen und Verarbeiten von Videodateien mit Objekterkennung
|
|
- **Objekt-Tracking**: Persistente Verfolgung von Objekten mit eindeutigen IDs über Frames hinweg
|
|
- **Visuelle Markierungen**: Bounding Boxes und Labels für erkannte Objekte
|
|
- **Browser-basiert**: Einfacher Zugriff über den Webbrowser
|
|
|
|
## Voraussetzungen
|
|
|
|
- Python 3.12 oder höher
|
|
- Webcam (für Live-Erkennung)
|
|
- YOLO-Modell (`yolo11s.pt`) im Hauptverzeichnis
|
|
|
|
## Installation
|
|
|
|
1. Repository klonen oder herunterladen
|
|
|
|
2. Erforderliche Python-Pakete installieren:
|
|
```bash
|
|
pip3 install flask opencv-python numpy ultralytics
|
|
```
|
|
|
|
3. Sicherstellen, dass die Modelldatei `yolo11s.pt` im Hauptverzeichnis vorhanden ist
|
|
|
|
## Verwendung
|
|
|
|
### Anwendung starten
|
|
|
|
```bash
|
|
python3 app.py
|
|
```
|
|
|
|
Die Anwendung ist dann unter `http://localhost:8080` erreichbar.
|
|
|
|
### Webcam-Erkennung
|
|
|
|
1. Öffnen Sie `http://localhost:8080` im Browser
|
|
2. Klicken Sie auf "Start Webcam Detection"
|
|
3. Die Webcam wird aktiviert und Objekte werden in Echtzeit erkannt und markiert
|
|
4. Jedes Objekt erhält eine Track-ID und Klassenbeschriftung
|
|
|
|
### Video-Upload
|
|
|
|
1. Öffnen Sie `http://localhost:8080` im Browser
|
|
2. Wählen Sie eine Videodatei über das Upload-Formular aus
|
|
3. Klicken Sie auf "Upload Video"
|
|
4. Das Video wird verarbeitet und mit Objekterkennungen angezeigt
|
|
|
|
## Projektstruktur
|
|
|
|
```
|
|
.
|
|
├── app.py # Haupt-Flask-Anwendung
|
|
├── yolo11s.pt # YOLOv11-Modell (erforderlich)
|
|
├── templates/ # HTML-Templates
|
|
│ ├── index.html # Startseite
|
|
│ ├── webcam.html # Webcam-Anzeige
|
|
│ └── play_video.html # Video-Wiedergabe
|
|
├── uploads/ # Hochgeladene Videos (automatisch erstellt)
|
|
└── highway1.mp4 # Beispielvideo
|
|
```
|
|
|
|
## Technische Details
|
|
|
|
### Verwendete Technologien
|
|
|
|
- **Flask**: Web-Framework für Routing und Template-Rendering
|
|
- **OpenCV**: Videobearbeitung und Frame-Manipulation
|
|
- **Ultralytics YOLO**: YOLOv11-Modell für Objekterkennung und Tracking
|
|
- **NumPy**: Array-Operationen für Bilddaten
|
|
|
|
### Verarbeitungs-Pipeline
|
|
|
|
1. **Frame-Erfassung**: Webcam oder Videodatei als Quelle
|
|
2. **Frame-Skipping**: Verarbeitung jedes 2. Frames zur Leistungsoptimierung
|
|
3. **Größenanpassung**: Alle Frames werden auf 1020x600 Pixel skaliert
|
|
4. **YOLO-Tracking**: Objekterkennung mit persistenten Track-IDs
|
|
5. **Annotation**: Zeichnen von Bounding Boxes und Labels
|
|
6. **Streaming**: Übertragung als MJPEG-Stream an den Browser
|
|
|
|
### Objekterkennung
|
|
|
|
- Erkennt verschiedene Objektklassen (abhängig vom YOLO-Modell)
|
|
- Vergibt eindeutige Track-IDs für jedes Objekt
|
|
- Beschriftung im Format: `{Track-ID} - {Klassenname}`
|
|
- Grüne Bounding Boxes um erkannte Objekte
|
|
- Magenta-farbene Textbeschriftungen
|
|
|
|
## Leistungsoptimierung
|
|
|
|
- **Frame-Skipping**: Nur jeder 2. Frame wird verarbeitet, um CPU-Last zu reduzieren
|
|
- **Feste Auflösung**: Einheitliche Größe von 1020x600 Pixel für alle Frames
|
|
- **Effizientes Streaming**: JPEG-Kompression für Frame-Übertragung
|
|
|
|
## Einschränkungen
|
|
|
|
- Keine Validierung der Upload-Dateigröße
|
|
- Keine automatische Bereinigung hochgeladener Dateien
|
|
- Feste Frame-Dimensionen (1020x600)
|
|
- Keine Fehlerbehandlung bei Webcam-Zugriffsproblemen
|
|
|
|
## Hinweise
|
|
|
|
- Bei der ersten Verwendung kann das Laden des YOLO-Modells einige Sekunden dauern
|
|
- Die Erkennungsgenauigkeit hängt vom verwendeten YOLO-Modell ab
|
|
- Frame-Skipping kann bei sehr schnell bewegten Objekten zu Erkennungslücken führen
|
|
- Hochgeladene Videos werden im Ordner `uploads/` gespeichert und müssen manuell gelöscht werden
|
|
|
|
## Lizenz
|
|
|
|
Projekt basiert auf Ressourcen von [Pyresearch](https://pyresearch.org/)
|