feat: expanded and added more tasks

This commit is contained in:
2026-07-08 23:33:26 +02:00
parent 8fdf69e11f
commit d0b776485a
97 changed files with 3121 additions and 427 deletions
@@ -0,0 +1,39 @@
# Aufgabe 01: Face Detection testen
## Ziel
Du erkennst Gesichter im Kamerabild oder auf Testfotos.
## Warum ist das wichtig?
Face Recognition beginnt mit der Frage, wo überhaupt Gesichter sind.
## Voraussetzungen
- Kamera oder Testbilder
- Python
- Face-Detection-Bibliothek
## Theorie
Detection und Recognition sind verschiedene Schritte. Zuerst wird ein Gesicht lokalisiert, erst danach wird es verglichen.
## Aufgabe
Baue ein Skript, das Gesichter markiert und Debugbilder speichert.
## Akzeptanzkriterien
- Gesichter werden mit Box markiert.
- Mehrere Gesichter sind möglich.
- Keine-Gesicht-Fall wird sauber behandelt.
## Erweiterungen
- Vergleiche zwei Detector-Varianten.
## Reflexionsfragen
- Wann scheitert Face Detection?
- Wie beeinflussen Licht und Winkel das Ergebnis?
- Warum ist Detection nicht gleich Identität?
-48
View File
@@ -1,48 +0,0 @@
# Aufgabe 01: Bekannte Personen erkennen
## Ziel
Das System soll nicht nur Personen zählen, sondern bekannte Gesichter unterscheiden.
## Aufgabe
Baue einen kleinen `faces/`-Ordner:
```text
faces/
matthias/
01.jpg
02.jpg
lisa/
01.jpg
```
Dann soll dein Programm im Kamerabild sagen:
```text
Ich sehe Matthias.
```
## Lernpunkte
- Face Detection
- Face Embeddings
- Ähnlichkeitsvergleich
- False Positives
- Datenschutz und Consent
## Akzeptanzkriterien
- Mindestens eine bekannte Person kann erkannt werden.
- Unbekannte Personen werden als `unknown` markiert.
- Das System behauptet nicht mit 100 % Sicherheit, jemanden zu erkennen.
## Erweiterung
Baue einen Befehl:
```text
$ enroll-person "Matthias"
```
Der mehrere Bilder aufnimmt und als Referenz speichert.
@@ -0,0 +1,38 @@
# Aufgabe 02: Face Embeddings berechnen
## Ziel
Du wandelst erkannte Gesichter in numerische Embeddings um.
## Warum ist das wichtig?
Bekannte Personen werden über Ähnlichkeit in einem Vektorraum erkannt.
## Voraussetzungen
- Aufgabe 01
- Embedding-Modell
## Theorie
Ein Embedding beschreibt ein Gesicht als Vektor. Ähnliche Gesichter liegen näher beieinander, aber der Abstand ist nie eine absolute Identitätsgarantie.
## Aufgabe
Extrahiere Embeddings aus Testbildern und speichere sie mit Metadaten.
## Akzeptanzkriterien
- Embedding-Vektor wird erzeugt.
- Metadaten enthalten Person, Bild und Datum.
- Fehlerhafte Crops werden ausgeschlossen.
## Erweiterungen
- Visualisiere Distanzen zwischen Beispielbildern.
## Reflexionsfragen
- Warum speicherst du nicht nur Namen?
- Was bedeutet Nähe im Vektorraum?
- Welche Metadaten helfen später?
@@ -0,0 +1,38 @@
# Aufgabe 03: Bekannte Personen enrollen
## Ziel
Du baust einen Enrollment-Prozess für bekannte Personen mit Einwilligung.
## Warum ist das wichtig?
Der Roboter soll bekannte Menschen begrüßen, aber nur mit bewusst angelegten Daten.
## Voraussetzungen
- Aufgaben 01-02
- Consent-Regeln aus Modul 00
## Theorie
Enrollment ist ein kontrollierter Datenerfassungsprozess. Mehrere Bilder pro Person erhöhen Robustheit, müssen aber verantwortungsvoll gespeichert werden.
## Aufgabe
Implementiere `enroll-person NAME`, nimm mehrere Bilder auf, berechne Embeddings und speichere ein Profil.
## Akzeptanzkriterien
- Mehrere Samples pro Person werden gespeichert.
- Consent-Hinweis ist dokumentiert.
- Bestehende Profile werden nicht versehentlich überschrieben.
## Erweiterungen
- Füge `delete-person NAME` hinzu.
## Reflexionsfragen
- Wie viele Samples sind sinnvoll?
- Wie erklärst du die Speicherung?
- Was muss beim Löschen entfernt werden?
@@ -0,0 +1,37 @@
# Aufgabe 04: Unbekannte Personen erkennen
## Ziel
Du vergleichst neue Gesichter gegen bekannte Profile und gibst bekannt oder unbekannt zurück.
## Warum ist das wichtig?
Der Agent braucht eine ehrliche Antwort: erkannt, unbekannt oder unsicher.
## Voraussetzungen
- Aufgaben 02-03
## Theorie
Recognition ist ein Ähnlichkeitsvergleich mit Schwelle. Zu niedrige Schwellen erzeugen False Positives, zu hohe Schwellen übersehen bekannte Personen.
## Aufgabe
Baue `recognize-faces`, das Namen, Distanz und Status für jedes Gesicht ausgibt.
## Akzeptanzkriterien
- Bekannte Person wird mit Distanz ausgegeben.
- Unbekannte Person bleibt unbekannt.
- Unsichere Fälle werden nicht als sicher behauptet.
## Erweiterungen
- Gib Top-3 Kandidaten im Debugmodus aus.
## Reflexionsfragen
- Warum ist "unsicher" ein wichtiger Status?
- Welche Schwelle erzeugt False Positives?
- Wie sollte der Roboter höflich antworten?
@@ -0,0 +1,38 @@
# Aufgabe 05: Schwellenwerte und False Positives testen
## Ziel
Du misst, wie sich Ähnlichkeitsschwellen auf Treffer und Fehler auswirken.
## Warum ist das wichtig?
Falsche Identifikation ist sozial und datenschutzrechtlich heikler als keine Identifikation.
## Voraussetzungen
- Aufgaben 03-04
- Testbilder verschiedener Personen
## Theorie
Schwellenwerte sind Produktentscheidungen, nicht nur Technik. Du musst wählen, ob das System vorsichtig oder aggressiv erkennt.
## Aufgabe
Erstelle ein kleines Testset und vergleiche mehrere Schwellenwerte mit einer Ergebnis-Tabelle.
## Akzeptanzkriterien
- False Positives und False Negatives werden gezählt.
- Eine Default-Schwelle ist begründet.
- Unsicherheitsbereich ist definiert.
## Erweiterungen
- Füge ROC-ähnliche Visualisierung hinzu.
## Reflexionsfragen
- Welcher Fehler ist schlimmer?
- Wie wirkt schlechtes Licht auf Distanzen?
- Wann sollte der Roboter nachfragen?
@@ -0,0 +1,38 @@
# Aufgabe 06: Face Recognition Service bauen
## Ziel
Du stellst Enrollment und Recognition als HTTP-Service bereit.
## Warum ist das wichtig?
Der Agent soll Personenidentifikation als klar begrenztes Tool aufrufen.
## Voraussetzungen
- Aufgaben 03-05
- FastAPI oder Axum
## Theorie
Ein eigener Service kapselt Modellabhängigkeiten und Datenschutzregeln. Er kann später ersetzt werden, ohne den Agenten umzubauen.
## Aufgabe
Baue Endpoints für `/health`, `/faces/enroll`, `/faces/recognize` und `/faces/profiles`.
## Akzeptanzkriterien
- Healthcheck funktioniert.
- Recognition liefert strukturierte JSON-Ergebnisse.
- Enrollment validiert Name und Consent-Flag.
## Erweiterungen
- Füge Zugriffsschutz für Enrollment hinzu.
## Reflexionsfragen
- Welche Endpoints sind gefährlich?
- Welche Rohdaten sollten nie im Response landen?
- Wie testest du ohne echte Kamera?
@@ -0,0 +1,37 @@
# Aufgabe 07: Agent Tool identify_people integrieren
## Ziel
Du verbindest den Face-Service mit dem Agenten als Tool `identify_people`.
## Warum ist das wichtig?
Der finale Roboter soll auf Fragen nach bekannten Personen datenbasiert antworten.
## Voraussetzungen
- Aufgaben 06 und Modul 01 Aufgabe 08
## Theorie
Das Tool liefert strukturierte Beobachtungen. Das LLM formuliert daraus eine natürliche Antwort, darf aber keine Identität erfinden.
## Aufgabe
Ergänze das Tool Schema, den Dispatcher und einen Prompt-Test für "Erkennst du jemanden?".
## Akzeptanzkriterien
- Tool Call ruft den Service auf.
- Unbekannte und unsichere Personen werden korrekt formuliert.
- Fehler des Services werden freundlich erklärt.
## Erweiterungen
- Lass den Agenten bekannte Personen begrüßen.
## Reflexionsfragen
- Welche Formulierung passt bei Unsicherheit?
- Was darf das LLM nicht dazuerfinden?
- Wie begrenzt du Identifikationsanfragen?
+17
View File
@@ -0,0 +1,17 @@
# Face Recognition
Gesichter erkennen, Embeddings, Enrollment, Schwellenwerte, Datenschutz und Agent-Integration.
## Aufgaben
- [01: Face Detection testen](01-face-detection-testen.md)
- [02: Face Embeddings berechnen](02-face-embeddings-berechnen.md)
- [03: Bekannte Personen enrollen](03-bekannte-personen-enrollen.md)
- [04: Unbekannte Personen erkennen](04-unbekannte-personen-erkennen.md)
- [05: Schwellenwerte und False Positives testen](05-schwellenwerte-und-false-positives-testen.md)
- [06: Face Recognition Service bauen](06-face-recognition-service-bauen.md)
- [07: Agent Tool identify_people integrieren](07-agent-tool-identify-people-integrieren.md)
## Arbeitsweise
Bearbeite die Aufgaben nacheinander. Jede Aufgabe soll ein kleines, überprüfbares Ergebnis liefern und ist bewusst auf etwa 1 bis 4 Stunden ausgelegt.