.claude/skills/capture-training-data/SKILL.md
--- name: capture-training-data description: Systematically capture dart hit videos and annotate with ground truth data. Trigger when user says: "capture training data", "record new video", "annotate ground truth", "run batch validation", "test hit rate", "improve detection", "new test video", "Trainingsdaten aufnehmen", "neues Video aufnehmen", "Ground Truth annotieren", "Batch-Validierung laufen". --- # Skill: capture-training-data Systematisch Dart-Treffer-Videos und Ground-Truth-Daten aufn
npx skillsauth add willneverusegit/dart-vision-claude .claude/skills/capture-training-dataInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Systematisch Dart-Treffer-Videos und Ground-Truth-Daten aufnehmen, um die Single-Cam Dart-Erkennung zu verbessern.
# Einzelwurf-Clip (empfohlen: 5-10 Sekunden, zeigt Vorbereitungs- + Einschlagsmoment)
python scripts/record_camera.py --duration 10 --show
# Mit expliziter Auflösung (Standardempfehlung für CPU-Budget: 640x480)
python scripts/record_camera.py --duration 10 --resolution 640x480 --show
# Längere Session (mehrere Würfe in einem Clip)
python scripts/record_camera.py --duration 60 --show
Namenskonvention: Das Script erzeugt automatisch testvids/rec_YYYYMMDD_HHMMSS.mp4.
Aufnahme-Checkliste:
# Interaktiv — öffnet Video, zeigt Frames, fragt nach Treffer-Info
python scripts/add_ground_truth.py testvids/rec_YYYYMMDD_HHMMSS.mp4
# Einzelwurf direkt angeben (Segment Ring Timestamp)
python scripts/add_ground_truth.py testvids/rec_YYYYMMDD_HHMMSS.mp4 --throw "20 triple 3.2"
# Zusammenfassung aller annotierten Videos anzeigen
python scripts/add_ground_truth.py --summary
# Bestehende Einträge validieren
python scripts/add_ground_truth.py --validate
Annotationsformat (gespeichert in testvids/ground_truth.yaml):
rec_YYYYMMDD_HHMMSS.mp4:
throws:
- sector: 20
ring: triple
timestamp: 3.2 # Sekunden im Video
- sector: 5
ring: single
timestamp: 7.8
Gültige ring-Werte: single, double, triple, bull_inner, bull_outer, miss
Gültige sector-Werte: 1-20, 25 (Bull), 0 (Miss)
Vor der Batch-Validierung: kurze manuelle Prüfung des Videos.
# Frame-Diff-Diagnose: zeigt wo Pipeline Motion detektiert
python -m src.diagnose
Qualitätskriterien (manuell prüfen): | Kriterium | Gut | Problematisch | |-----------|-----|---------------| | Schärfe | Dart-Spitze erkennbar | Verwackelt/unscharf | | Belichtung | Gleichmäßig, keine Überbelichtung | Harte Schatten, Glare | | ArUco-Marker | Alle 4 im Frame | Marker teilweise abgeschnitten | | Kamerawinkel | Frontal oder leicht seitlich | Sehr schräg (>45°) | | Bewegungsartefakte | Nur Dart bewegt sich | Hintergrund-Bewegung (Personen etc.) |
# Alle Videos in testvids/ gegen aktuelle Detection testen
python scripts/test_all_videos.py --marker-size 100 --marker-spacing 365
# Nur ein bestimmtes Video
python scripts/test_all_videos.py --source-dir testvids --marker-size 100 \
--max-frames 5000
# Schnell-Test mit weniger Frames (für iteratives Debugging)
python scripts/test_all_videos.py --marker-size 100 --marker-spacing 365 --max-frames 1000
Ausgabe interpretieren:
Hit Rate: Wie viele annotierte Würfe wurden überhaupt detektiert? Ziel: >80%Score Accuracy: Wie viele detektierte Treffer haben den richtigen Sektor? Ziel: >70%Nach der Batch-Validierung systematisch schauen:
# Validierungs-Script für detailliertere Fehleranalyse
python scripts/validate_ground_truth.py
# Tip-Detection gegen Diagnostik-Captures prüfen
python scripts/validate_tip_detection.py
Typische Schwachstellen:
# 1. Aufnahme: 3 Würfe in 30 Sekunden
python scripts/record_camera.py --duration 30 --show
# → erzeugt testvids/rec_20260324_140000.mp4
# 2. Annotieren
python scripts/add_ground_truth.py testvids/rec_20260324_140000.mp4
# → interaktiv Sektor/Ring/Timestamp eingeben
# 3. Annotierungen validieren
python scripts/add_ground_truth.py --validate
# 4. Batch-Test laufen lassen
python scripts/test_all_videos.py --marker-size 100 --marker-spacing 365
# 5. Ergebnisse analysieren und ggf. Kalibrierung verfeinern
ArUco nicht erkannt:
100mm, Abstand 365mm--resolution 1280x720Dart wird nicht detektiert (Hit Rate = 0%):
test_all_videos.py ist standaloneconfig/calibration_config.yaml prüfenconfig/app_config.yaml anpassenHohe Hit Rate, falscher Sektor:
Video zu groß / Storage-Problem:
testvids/ werden nicht committed (.gitignore)ground_truth.yaml landet im Reposcripts/record_camera.py — Kamera-Aufnahmescripts/add_ground_truth.py — Ground-Truth-Annotationscripts/test_all_videos.py — Batch-Validierungscripts/validate_ground_truth.py — Annotations-Validierungscripts/validate_tip_detection.py — Tip-Detection-Checksrc/cv/frame_diff_pipeline.py — Detection-Pipelinesrc/cv/tip_detection.py — Dart-Spitzen-Erkennungtestvids/ground_truth.yaml — Ground-Truth-Datenagent_docs/current_state.md → Abschnitt "Verifizierte Kennzahlen" für aktuelle Hit Rate Baselinedevelopment
FastAPI-Endpoints, WebSocket, Frontend-JS/CSS, MJPEG-Stream — aktivieren wenn an src/web/ oder static/ gearbeitet wird
devops
Dart-Erkennung, Frame-Diff-Pipeline, Tip-Detection, Kalibrierung, Geometrie — aktivieren wenn an src/cv/ gearbeitet wird
tools
Aktualisiert Fortschrittsdokumentation nach Abschluss einer Aufgabe. Markiert erledigte Prioritaeten und sucht nach neuen Schwachstellen.
data-ai
Zerlegt groessere Aufgaben in unabhaengige Teilaufgaben und dispatcht parallele Agenten