feat: expanded and added more tasks
This commit is contained in:
@@ -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?
|
||||
@@ -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?
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user