Local dance analysis: YOLO-Pose (CUDA when available) + a PySide6 desktop app for review.
UI language: English. Data stays on this machine; nothing is uploaded to the cloud.
cd C:\dev\Dance_reader\Dance_reader
.\backend\.venv\Scripts\python.exe -m desktopOpens the Qt window (no browser).
- Open video ??choose a local file (download YouTube clips first; no YouTube API yet).
- Set Max dancers and Model (S fast default, or M for occlusion / side views), then Analyze.
- After analysis: stacked metric charts, skeleton overlay, floor map, motif types.
- Current time / duration sits left of the frame slider (
0:08.42 / 0:16.20). Click a chart to seek; scroll to zoom; Find similar near the playhead. - Save project (
.dance.json) / Open project to reload without re-analyzing.
Status bar shows motif diagnostics after analyze, e.g.
`N phrases 繚 M clusters 繚 K passed similarity ?圳
Skeleton / Joints only / Off. Lines may cross when limbs overlap in the camera view.
| Curve | Unit |
|---|---|
| Energy | Relative to own peak |
| Speed / Travel | Torso-heights / s |
| Reach | ? torso (guides at closed 1.2 / open 2.5) |
| Level | Stance ratio (low / mid / high bands) |
| Directness | Colour ribbon 0?? (blank when still) |
| L? / F? | Screen coords 0?? |
Opt-in only (kept for now, not the product UI):
.\backend\.venv\Scripts\python.exe -m desktop --webServes http://127.0.0.1:8000/review. Prefer Qt for analysis and review.
cd backend
.\.venv\Scripts\activate
uvicorn app.main:app --port 8000Matching decides in raw mask-aware DTW distance (torso units, mean per visible dim).
Defaults: CLUSTER_MAX_DIST=0.24, INTRA_MAX_DIST=0.26, CLUSTER_LINKAGE=complete, MOTIF_MIN_OCCURRENCES=3.
Find Similar uses separate SUBSEQ_* gates. The UI shows a display-only 0-100% match score; that score is
not used as a gate. See docs/IMPLEMENTATION_NOTES_MOTIF_OVERMERGE.md.
.\backend\.venv\Scripts\python.exe backend\scripts\calibrate_motifs.py path\to\file.dance.json
.\backend\.venv\Scripts\python.exe backend\scripts\calibrate_motifs.py path\to\hi.dance.json --negative