Dart Detection Training Data Capture is a data claude skill built by willneverusegit. Best for: Computer vision engineers building dart detection models capture labeled training/test videos with frame-level annotations and batch validation reporting..

What it does
Systematically record dart hit videos, annotate ground truth data, and validate detection pipeline performance with quality metrics.
Category
data
Created by
willneverusegit
Last updated
Claude Skilldata GitHub-backed CuratedintermediateClaude Code

Dart Detection Training Data Capture

Systematically record dart hit videos, annotate ground truth data, and validate detection pipeline performance with quality metrics.

Skill instructions


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 aufnehmen, um die Single-Cam Dart-Erkennung zu verbessern.

Wann verwenden

  • User will neue Trainings-/Testvideos für die Detection aufnehmen
  • Ground-Truth-Annotation eines neuen Videos ist nötig
  • Batch-Validierung: wie gut erkennt die aktuelle Pipeline die neuen Videos?
  • Schwachstellen der Detection identifizieren (Sektor X funktioniert schlecht)

Workflow

Schritt 1: Video aufnehmen

# 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:

  • [ ] Kamera fest montiert, kein Wackeln
  • [ ] Beleuchtung gleichmäßig, keine harten Schatten auf Dartboard
  • [ ] ArUco-Marker sichtbar (alle 4 Ecken im Frame)
  • [ ] Dart startet außerhalb des Boards, landet dann
  • [ ] Nach dem Einschlag kurz (2-3s) stillhalten

Schritt 2: Ground Truth annotieren

# 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)

Schritt 3: Qualitätskontrolle

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.) |

Schritt 4: Batch-Validierung

# 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%
  • Videos mit <50% Hit Rate → Aufnahmeproblem (Belichtung, Winkel, ArUco)
  • Videos mit >80% Hit Rate aber <60% Score Accuracy → Kalibrierproblem

Schritt 5: Schwachstellen identifizieren

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:

  • Bestimmte Sektoren (z.B. 1, 5, 20 oben) → Kalibrierung verfeinern
  • Nur Triple-Ring schlägt fehl → Tip-Detection-Threshold anpassen
  • Alle Würfe auf einer Seite falsch → Board-Geometrie-Kalibrierung wiederholen

Vollständiger Beispiel-Workflow

# 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

Häufige Probleme

ArUco nicht erkannt:

  • Marker-Größe prüfen: Standard 100mm, Abstand 365mm
  • Beleuchtung verbessern
  • Auflösung erhöhen: --resolution 1280x720

Dart wird nicht detektiert (Hit Rate = 0%):

  • Pipeline läuft? App muss nicht laufen — test_all_videos.py ist standalone
  • Kalibrierung fehlt? config/calibration_config.yaml prüfen
  • Frame-Diff-Threshold zu hoch? Adaptive Thresholds in config/app_config.yaml anpassen

Hohe Hit Rate, falscher Sektor:

  • Board-Geometrie-Kalibrierung wiederholen (Web-UI → Kalibrierung)
  • Kalibrierungs-Kette beachten: Lens → Board Pose → Stereo (Reihenfolge!)

Video zu groß / Storage-Problem:

  • Kurze Clips bevorzugen (5-15s pro Wurf)
  • Videos in testvids/ werden nicht committed (.gitignore)
  • Nur ground_truth.yaml landet im Repo

Referenzen

  • scripts/record_camera.py — Kamera-Aufnahme
  • scripts/add_ground_truth.py — Ground-Truth-Annotation
  • scripts/test_all_videos.py — Batch-Validierung
  • scripts/validate_ground_truth.py — Annotations-Validierung
  • scripts/validate_tip_detection.py — Tip-Detection-Check
  • src/cv/frame_diff_pipeline.py — Detection-Pipeline
  • src/cv/tip_detection.py — Dart-Spitzen-Erkennung
  • testvids/ground_truth.yaml — Ground-Truth-Daten
  • agent_docs/current_state.md → Abschnitt "Verifizierte Kennzahlen" für aktuelle Hit Rate Baseline

Use this skill

Most skills are portable instruction packages. Claude Code supports SKILL.md directly. Other agents can use adapted files like AGENTS.md, .cursorrules, and GEMINI.md.

Claude Code

Save SKILL.md into your Claude Skills folder, then restart Claude Code.

mkdir -p ~/.claude/skills/dart-detection-training-data-capture && curl -L "https://raw.githubusercontent.com/willneverusegit/dart-vision-claude/2fabc25b67ad61d93b33f0126c8ad8725491407d/.claude/skills/capture-training-data/SKILL.md" -o ~/.claude/skills/dart-detection-training-data-capture/SKILL.md

Installs to ~/.claude/skills/dart-detection-training-data-capture/SKILL.md.

Use cases

Computer vision engineers building dart detection models capture labeled training/test videos with frame-level annotations and batch validation reporting.

Reviews

No reviews yet. Be the first to review this skill.

No signup required

Stats

Installs0
GitHub Stars0
Forks0
UpdatedMar 25, 2026