tiena2cva commited on
Commit
43c7537
·
1 Parent(s): b69e2d9

chore(dependencies): update requirements for CUDA and related libraries on Linux

Browse files
demo/README.md CHANGED
@@ -3,10 +3,10 @@
3
  These clips are small examples pulled from the Riccio exercise-recognition dataset cache used by the
4
  Modal training pipeline.
5
 
6
- | File | Source label | Router label | Duration | FPS | Resolution | Source path |
7
- | --- | --- | --- | ---: | ---: | --- | --- |
8
- | `videos/router_demo_push_up_1.mp4` | `push-up` | `push_up` | 5.005s | 29.970 | 1920x1080 | `/data/raw/riccio/Real-Time Exercise Recognition Dataset/final_kaggle_with_additional_video/push-up/push-up_1.mp4` |
9
- | `videos/router_demo_unknown_barbell_biceps_curl_1.mp4` | `barbell biceps curl` | `unknown` | 3.804s | 29.970 | 1920x1080 | `/data/raw/riccio/Real-Time Exercise Recognition Dataset/final_kaggle_with_additional_video/barbell biceps curl/barbell biceps curl_1.mp4` |
10
 
11
  The second clip is an unsupported exercise class in the current router contract. It is intentionally
12
  mapped to `unknown` so the demo includes both a supported exercise and a rejection-class example.
 
3
  These clips are small examples pulled from the Riccio exercise-recognition dataset cache used by the
4
  Modal training pipeline.
5
 
6
+ | File | Source label | Router label | Duration | FPS | Resolution | Source path |
7
+ | ------------------------------------------------------ | --------------------- | ------------ | -------: | -----: | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
8
+ | `videos/router_demo_push_up_1.mp4` | `push-up` | `push_up` | 5.005s | 29.970 | 1920x1080 | `/data/raw/riccio/Real-Time Exercise Recognition Dataset/final_kaggle_with_additional_video/push-up/push-up_1.mp4` |
9
+ | `videos/router_demo_unknown_barbell_biceps_curl_1.mp4` | `barbell biceps curl` | `unknown` | 3.804s | 29.970 | 1920x1080 | `/data/raw/riccio/Real-Time Exercise Recognition Dataset/final_kaggle_with_additional_video/barbell biceps curl/barbell biceps curl_1.mp4` |
10
 
11
  The second clip is an unsupported exercise class in the current router contract. It is intentionally
12
  mapped to `unknown` so the demo includes both a supported exercise and a rejection-class example.
docs/custom-data-collection-guide.md CHANGED
@@ -8,12 +8,12 @@ each video into the same 30-frame pose-window features used at inference time.
8
 
9
  Use these router labels:
10
 
11
- | Router label | Folder names accepted by the normalizer | Notes |
12
- | --- | --- | --- |
13
- | `squat` | `squat` | Supported exercise class |
14
- | `push_up` | `push-up`, `push_up`, `pushup` | Supported exercise class |
15
- | `shoulder_press` | `shoulder press`, `shoulder_press`, `overhead press` | Supported exercise class |
16
- | `unknown` | `unknown`, unsupported exercise folders, setup/idle/stretching clips | Rejection class |
17
 
18
  Unsupported exercises from the Riccio dataset, such as `barbell biceps curl` and `hammer curl`, are
19
  mapped to `unknown`. Use the same convention for custom negative examples.
@@ -56,16 +56,16 @@ Useful `unknown` clips include:
56
 
57
  ## Capture Protocol
58
 
59
- | Setting | Recommendation |
60
- | --- | --- |
61
- | Clip length | 5-15 seconds for router clips; 10-30 seconds if also used for rep-count evaluation |
62
- | Frame rate | 24-30 FPS preferred; minimum 15 FPS |
63
- | Resolution | 720p or better preferred; minimum 480x360 |
64
- | Camera | Static phone or webcam, no panning |
65
- | Framing | Full body visible for squats/presses; upper body and hips visible for push-ups |
66
- | View angle | Side or 30-45 degree angle for squats/push-ups; front or slight-front angle for presses |
67
- | Lighting | Even lighting; avoid strong backlight and heavy shadows |
68
- | Reps | 3-8 clean reps per supported clip when possible |
69
 
70
  Keep one athlete and one exercise per clip. Avoid transitions between exercises inside a single clip.
71
 
 
8
 
9
  Use these router labels:
10
 
11
+ | Router label | Folder names accepted by the normalizer | Notes |
12
+ | ---------------- | -------------------------------------------------------------------- | ------------------------ |
13
+ | `squat` | `squat` | Supported exercise class |
14
+ | `push_up` | `push-up`, `push_up`, `pushup` | Supported exercise class |
15
+ | `shoulder_press` | `shoulder press`, `shoulder_press`, `overhead press` | Supported exercise class |
16
+ | `unknown` | `unknown`, unsupported exercise folders, setup/idle/stretching clips | Rejection class |
17
 
18
  Unsupported exercises from the Riccio dataset, such as `barbell biceps curl` and `hammer curl`, are
19
  mapped to `unknown`. Use the same convention for custom negative examples.
 
56
 
57
  ## Capture Protocol
58
 
59
+ | Setting | Recommendation |
60
+ | ----------- | --------------------------------------------------------------------------------------- |
61
+ | Clip length | 5-15 seconds for router clips; 10-30 seconds if also used for rep-count evaluation |
62
+ | Frame rate | 24-30 FPS preferred; minimum 15 FPS |
63
+ | Resolution | 720p or better preferred; minimum 480x360 |
64
+ | Camera | Static phone or webcam, no panning |
65
+ | Framing | Full body visible for squats/presses; upper body and hips visible for push-ups |
66
+ | View angle | Side or 30-45 degree angle for squats/push-ups; front or slight-front angle for presses |
67
+ | Lighting | Even lighting; avoid strong backlight and heavy shadows |
68
+ | Reps | 3-8 clean reps per supported clip when possible |
69
 
70
  Keep one athlete and one exercise per clip. Avoid transitions between exercises inside a single clip.
71
 
docs/exercise-router-training-report.md CHANGED
@@ -8,64 +8,64 @@ The exercise router was trained and evaluated for `squat`, `push_up`, `shoulder_
8
  `unknown`. The final active artifact is the BiLSTM temporal model. The scikit-learn baseline is
9
  retained as a reference and fallback artifact.
10
 
11
- | Field | Value |
12
- | --- | --- |
13
- | Selected model | `temporal.pt` |
14
- | Selected artifact | `temporal.pt` |
15
- | Selection rule | Prefer BiLSTM temporal when available; baseline falls back when temporal is missing |
16
- | Local active path | `models/exercise_router/active/temporal.pt` |
17
- | Baseline artifact path | `models/exercise_router/active/router.joblib` |
18
 
19
  ## Data
20
 
21
- | Metric | Value |
22
- | --- | ---: |
23
- | Feature examples | 134 |
24
- | Window count | 2,224 |
25
- | Failed feature extractions | 0 |
26
- | Push-up windows | 287 |
27
- | Shoulder press windows | 646 |
28
- | Squat windows | 659 |
29
- | Unknown windows | 632 |
30
 
31
  Unsupported Riccio dataset classes such as bicep curl are mapped to `unknown`.
32
 
33
  ## Training Setup
34
 
35
- | Model | Setup |
36
- | --- | --- |
37
  | Baseline | scikit-learn `HistGradientBoostingClassifier` over engineered 30-frame window vectors |
38
- | Temporal | PyTorch BiLSTM over 30-frame feature tensors on Modal A10 |
39
 
40
  The BiLSTM hyperparameters follow the Riccio exercise-classification paper:
41
 
42
- | Hyperparameter | Value |
43
- | --- | ---: |
44
- | Epochs | 73 |
45
- | Hidden units | 73 |
46
- | Dropout | 0.2174 |
47
- | Learning rate | 0.0004 |
48
- | Batch size | 54 |
49
  | Final training loss | 0.0003 |
50
 
51
  ## Model Complexity
52
 
53
  Counts were checked from the local trained artifacts with `uv run --extra train`.
54
 
55
- | Model | Count type | Value |
56
- | --- | --- | ---: |
57
- | Baseline | Neural-network-style trainable parameters | 0 |
58
- | Baseline | Input features | 2,574 |
59
- | Baseline | Trees | 800 |
60
- | Baseline | Total tree nodes | 20,778 |
61
- | Baseline | Split nodes | 9,989 |
62
- | Baseline | Leaves | 10,789 |
63
- | Baseline | Approximate learned scalar state | 35,915 |
64
- | BiLSTM temporal | Trainable parameters | 294,924 |
65
- | BiLSTM temporal | Input features per frame | 429 |
66
- | BiLSTM temporal | Hidden units | 73 |
67
- | BiLSTM temporal | Layers | 1 |
68
- | BiLSTM temporal | Output classes | 4 |
69
 
70
  The baseline is a tree-based `HistGradientBoostingClassifier`, so it does not have trainable tensor
71
  parameters in the same sense as a neural network. The BiLSTM parameter count includes both LSTM
@@ -73,10 +73,10 @@ directions and the linear classification head.
73
 
74
  ## Training Metrics
75
 
76
- | Model | Validation accuracy | Unknown rejection rate |
77
- | --- | ---: | ---: |
78
- | Baseline | 0.9933 | Not reported in baseline training stage |
79
- | BiLSTM temporal | 0.9820 | 0.9921 |
80
 
81
  ## Selection Evaluation
82
 
@@ -84,28 +84,28 @@ The final evaluation scored every available trained artifact on the cached route
84
  The baseline scored slightly higher on this cache, but the active router is BiLSTM so routing uses
85
  the temporal pose-window sequence directly.
86
 
87
- | Model | Artifact | Accuracy | Unknown rejection rate |
88
- | --- | --- | ---: | ---: |
89
- | Baseline | `baseline.joblib` | 0.9987 | 0.9984 |
90
- | BiLSTM temporal | `temporal.pt` | 0.9964 | 0.9984 |
91
 
92
  ### Baseline Precision/Recall
93
 
94
- | Label | Precision | Recall |
95
- | --- | ---: | ---: |
96
- | `squat` | 0.9985 | 0.9985 |
97
- | `push_up` | 0.9965 | 1.0000 |
98
- | `shoulder_press` | 0.9985 | 0.9985 |
99
- | `unknown` | 1.0000 | 0.9984 |
100
 
101
  ### BiLSTM Precision/Recall
102
 
103
- | Label | Precision | Recall |
104
- | --- | ---: | ---: |
105
- | `squat` | 0.9954 | 0.9954 |
106
- | `push_up` | 0.9931 | 1.0000 |
107
- | `shoulder_press` | 0.9969 | 0.9938 |
108
- | `unknown` | 0.9984 | 0.9984 |
109
 
110
  ## Confusion Matrices
111
 
@@ -114,20 +114,20 @@ Rows are true labels. Columns are predicted labels.
114
  ### Baseline
115
 
116
  | True \\ Predicted | `squat` | `push_up` | `shoulder_press` | `unknown` |
117
- | --- | ---: | ---: | ---: | ---: |
118
- | `squat` | 658 | 0 | 1 | 0 |
119
- | `push_up` | 0 | 287 | 0 | 0 |
120
- | `shoulder_press` | 0 | 1 | 645 | 0 |
121
- | `unknown` | 1 | 0 | 0 | 631 |
122
 
123
  ### BiLSTM Temporal
124
 
125
  | True \\ Predicted | `squat` | `push_up` | `shoulder_press` | `unknown` |
126
- | --- | ---: | ---: | ---: | ---: |
127
- | `squat` | 656 | 0 | 2 | 1 |
128
- | `push_up` | 0 | 287 | 0 | 0 |
129
- | `shoulder_press` | 3 | 1 | 642 | 0 |
130
- | `unknown` | 0 | 1 | 0 | 631 |
131
 
132
  ## Reproduction Commands
133
 
 
8
  `unknown`. The final active artifact is the BiLSTM temporal model. The scikit-learn baseline is
9
  retained as a reference and fallback artifact.
10
 
11
+ | Field | Value |
12
+ | ---------------------- | ------------------------------------------------------------------------- |
13
+ | Selected model | `temporal.pt` |
14
+ | Selected artifact | `temporal.pt` |
15
+ | Selection rule | Prefer BiLSTM temporal when available; baseline falls back when missing |
16
+ | Local active path | `models/exercise_router/active/temporal.pt` |
17
+ | Baseline artifact path | `models/exercise_router/active/router.joblib` |
18
 
19
  ## Data
20
 
21
+ | Metric | Value |
22
+ | -------------------------- | ----: |
23
+ | Feature examples | 134 |
24
+ | Window count | 2,224 |
25
+ | Failed feature extractions | 0 |
26
+ | Push-up windows | 287 |
27
+ | Shoulder press windows | 646 |
28
+ | Squat windows | 659 |
29
+ | Unknown windows | 632 |
30
 
31
  Unsupported Riccio dataset classes such as bicep curl are mapped to `unknown`.
32
 
33
  ## Training Setup
34
 
35
+ | Model | Setup |
36
+ | -------- | ------------------------------------------------------------------------------------- |
37
  | Baseline | scikit-learn `HistGradientBoostingClassifier` over engineered 30-frame window vectors |
38
+ | Temporal | PyTorch BiLSTM over 30-frame feature tensors on Modal A10 |
39
 
40
  The BiLSTM hyperparameters follow the Riccio exercise-classification paper:
41
 
42
+ | Hyperparameter | Value |
43
+ | ------------------- | -----: |
44
+ | Epochs | 73 |
45
+ | Hidden units | 73 |
46
+ | Dropout | 0.2174 |
47
+ | Learning rate | 0.0004 |
48
+ | Batch size | 54 |
49
  | Final training loss | 0.0003 |
50
 
51
  ## Model Complexity
52
 
53
  Counts were checked from the local trained artifacts with `uv run --extra train`.
54
 
55
+ | Model | Count type | Value |
56
+ | --------------- | ----------------------------------------- | ------: |
57
+ | Baseline | Neural-network-style trainable parameters | 0 |
58
+ | Baseline | Input features | 2,574 |
59
+ | Baseline | Trees | 800 |
60
+ | Baseline | Total tree nodes | 20,778 |
61
+ | Baseline | Split nodes | 9,989 |
62
+ | Baseline | Leaves | 10,789 |
63
+ | Baseline | Approximate learned scalar state | 35,915 |
64
+ | BiLSTM temporal | Trainable parameters | 294,924 |
65
+ | BiLSTM temporal | Input features per frame | 429 |
66
+ | BiLSTM temporal | Hidden units | 73 |
67
+ | BiLSTM temporal | Layers | 1 |
68
+ | BiLSTM temporal | Output classes | 4 |
69
 
70
  The baseline is a tree-based `HistGradientBoostingClassifier`, so it does not have trainable tensor
71
  parameters in the same sense as a neural network. The BiLSTM parameter count includes both LSTM
 
73
 
74
  ## Training Metrics
75
 
76
+ | Model | Validation accuracy | Unknown rejection rate |
77
+ | --------------- | ------------------: | --------------------------------------: |
78
+ | Baseline | 0.9933 | Not reported in baseline training stage |
79
+ | BiLSTM temporal | 0.9820 | 0.9921 |
80
 
81
  ## Selection Evaluation
82
 
 
84
  The baseline scored slightly higher on this cache, but the active router is BiLSTM so routing uses
85
  the temporal pose-window sequence directly.
86
 
87
+ | Model | Artifact | Accuracy | Unknown rejection rate |
88
+ | --------------- | ----------------- | -------: | ---------------------: |
89
+ | Baseline | `baseline.joblib` | 0.9987 | 0.9984 |
90
+ | BiLSTM temporal | `temporal.pt` | 0.9964 | 0.9984 |
91
 
92
  ### Baseline Precision/Recall
93
 
94
+ | Label | Precision | Recall |
95
+ | ---------------- | --------: | -----: |
96
+ | `squat` | 0.9985 | 0.9985 |
97
+ | `push_up` | 0.9965 | 1.0000 |
98
+ | `shoulder_press` | 0.9985 | 0.9985 |
99
+ | `unknown` | 1.0000 | 0.9984 |
100
 
101
  ### BiLSTM Precision/Recall
102
 
103
+ | Label | Precision | Recall |
104
+ | ---------------- | --------: | -----: |
105
+ | `squat` | 0.9954 | 0.9954 |
106
+ | `push_up` | 0.9931 | 1.0000 |
107
+ | `shoulder_press` | 0.9969 | 0.9938 |
108
+ | `unknown` | 0.9984 | 0.9984 |
109
 
110
  ## Confusion Matrices
111
 
 
114
  ### Baseline
115
 
116
  | True \\ Predicted | `squat` | `push_up` | `shoulder_press` | `unknown` |
117
+ | ----------------- | ------: | --------: | ---------------: | --------: |
118
+ | `squat` | 658 | 0 | 1 | 0 |
119
+ | `push_up` | 0 | 287 | 0 | 0 |
120
+ | `shoulder_press` | 0 | 1 | 645 | 0 |
121
+ | `unknown` | 1 | 0 | 0 | 631 |
122
 
123
  ### BiLSTM Temporal
124
 
125
  | True \\ Predicted | `squat` | `push_up` | `shoulder_press` | `unknown` |
126
+ | ----------------- | ------: | --------: | ---------------: | --------: |
127
+ | `squat` | 656 | 0 | 2 | 1 |
128
+ | `push_up` | 0 | 287 | 0 | 0 |
129
+ | `shoulder_press` | 3 | 1 | 642 | 0 |
130
+ | `unknown` | 0 | 1 | 0 | 631 |
131
 
132
  ## Reproduction Commands
133
 
docs/huggingface-router-model-card.md CHANGED
@@ -74,10 +74,10 @@ The latest training report is included as `training_report.md`.
74
 
75
  Summary:
76
 
77
- | Model | Artifact | Accuracy | Unknown rejection rate |
78
- | --- | --- | ---: | ---: |
79
- | Baseline | `baseline.joblib` | 0.9987 | 0.9984 |
80
- | BiLSTM temporal | `temporal.pt` | 0.9964 | 0.9984 |
81
 
82
  ## Limitations
83
 
 
74
 
75
  Summary:
76
 
77
+ | Model | Artifact | Accuracy | Unknown rejection rate |
78
+ | --------------- | ----------------- | -------: | ---------------------: |
79
+ | Baseline | `baseline.joblib` | 0.9987 | 0.9984 |
80
+ | BiLSTM temporal | `temporal.pt` | 0.9964 | 0.9984 |
81
 
82
  ## Limitations
83
 
docs/implementation-plan.md CHANGED
@@ -121,4 +121,3 @@ Deliverables:
121
  - Evaluation metrics.
122
  - Demo videos.
123
  - README and deployment instructions.
124
-
 
121
  - Evaluation metrics.
122
  - Demo videos.
123
  - README and deployment instructions.
 
docs/pozify-project-documentation.md CHANGED
@@ -210,7 +210,7 @@ Example:
210
  "frame_index": 120,
211
  "timestamp_sec": 4.0,
212
  "landmarks": {
213
- "left_shoulder": {"x": 0.43, "y": 0.32, "z": -0.03, "visibility": 0.99}
214
  },
215
  "world_landmarks": {},
216
  "pose_quality": {
@@ -231,7 +231,7 @@ Example:
231
  "exercise": "push_up",
232
  "confidence": 0.92,
233
  "window_predictions": [
234
- {"start_sec": 0.0, "end_sec": 1.0, "label": "push_up", "confidence": 0.91}
235
  ],
236
  "fallback_required": false
237
  }
 
210
  "frame_index": 120,
211
  "timestamp_sec": 4.0,
212
  "landmarks": {
213
+ "left_shoulder": { "x": 0.43, "y": 0.32, "z": -0.03, "visibility": 0.99 }
214
  },
215
  "world_landmarks": {},
216
  "pose_quality": {
 
231
  "exercise": "push_up",
232
  "confidence": 0.92,
233
  "window_predictions": [
234
+ { "start_sec": 0.0, "end_sec": 1.0, "label": "push_up", "confidence": 0.91 }
235
  ],
236
  "fallback_required": false
237
  }
requirements.txt CHANGED
@@ -48,6 +48,12 @@ colorama==0.4.6 ; sys_platform == 'win32'
48
  # tqdm
49
  contourpy==1.3.3
50
  # via matplotlib
 
 
 
 
 
 
51
  cycler==0.12.1
52
  # via matplotlib
53
  fastapi==0.136.3
@@ -55,7 +61,9 @@ fastapi==0.136.3
55
  # gradio
56
  # pozify
57
  filelock==3.29.1
58
- # via huggingface-hub
 
 
59
  flatbuffers==25.12.19
60
  # via mediapipe
61
  fonttools==4.63.0
@@ -68,6 +76,7 @@ fsspec==2026.4.0
68
  # via
69
  # gradio-client
70
  # huggingface-hub
 
71
  gradio==6.17.3
72
  # via pozify
73
  gradio-client==2.5.0
@@ -111,7 +120,9 @@ idna==3.18
111
  # httpx
112
  # yarl
113
  jinja2==3.1.6
114
- # via gradio
 
 
115
  joblib==1.5.3
116
  # via
117
  # pozify
@@ -132,6 +143,8 @@ mediapipe==0.10.35
132
  # via pozify
133
  modal==1.5.0
134
  # via pozify
 
 
135
  multidict==6.7.1
136
  # via
137
  # aiohttp
@@ -139,6 +152,8 @@ multidict==6.7.1
139
  # yarl
140
  narwhals==2.22.1
141
  # via scikit-learn
 
 
142
  numpy==1.26.4
143
  # via
144
  # contourpy
@@ -151,6 +166,47 @@ numpy==1.26.4
151
  # pozify
152
  # scikit-learn
153
  # scipy
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  opencv-contrib-python==4.11.0.86
155
  # via mediapipe
156
  opencv-python-headless==4.11.0.86
@@ -218,6 +274,8 @@ scipy==1.17.1
218
  # via scikit-learn
219
  semantic-version==2.10.0
220
  # via gradio
 
 
221
  shellingham==1.5.4
222
  # via typer
223
  six==1.17.0
@@ -228,6 +286,8 @@ starlette==1.2.1
228
  # via
229
  # fastapi
230
  # gradio
 
 
231
  synchronicity==0.12.3
232
  # via modal
233
  threadpoolctl==3.6.0
@@ -236,8 +296,12 @@ toml==0.10.2
236
  # via modal
237
  tomlkit==0.14.0
238
  # via gradio
 
 
239
  tqdm==4.68.2
240
  # via huggingface-hub
 
 
241
  typer==0.25.1
242
  # via
243
  # gradio
@@ -261,6 +325,7 @@ typing-extensions==4.15.0
261
  # pydantic-core
262
  # starlette
263
  # synchronicity
 
264
  # typing-inspection
265
  typing-inspection==0.4.2
266
  # via
 
48
  # tqdm
49
  contourpy==1.3.3
50
  # via matplotlib
51
+ cuda-bindings==13.3.1 ; sys_platform == 'linux'
52
+ # via torch
53
+ cuda-pathfinder==1.5.5 ; sys_platform == 'linux'
54
+ # via cuda-bindings
55
+ cuda-toolkit==13.0.2 ; sys_platform == 'linux'
56
+ # via torch
57
  cycler==0.12.1
58
  # via matplotlib
59
  fastapi==0.136.3
 
61
  # gradio
62
  # pozify
63
  filelock==3.29.1
64
+ # via
65
+ # huggingface-hub
66
+ # torch
67
  flatbuffers==25.12.19
68
  # via mediapipe
69
  fonttools==4.63.0
 
76
  # via
77
  # gradio-client
78
  # huggingface-hub
79
+ # torch
80
  gradio==6.17.3
81
  # via pozify
82
  gradio-client==2.5.0
 
120
  # httpx
121
  # yarl
122
  jinja2==3.1.6
123
+ # via
124
+ # gradio
125
+ # torch
126
  joblib==1.5.3
127
  # via
128
  # pozify
 
143
  # via pozify
144
  modal==1.5.0
145
  # via pozify
146
+ mpmath==1.3.0
147
+ # via sympy
148
  multidict==6.7.1
149
  # via
150
  # aiohttp
 
152
  # yarl
153
  narwhals==2.22.1
154
  # via scikit-learn
155
+ networkx==3.6.1
156
+ # via torch
157
  numpy==1.26.4
158
  # via
159
  # contourpy
 
166
  # pozify
167
  # scikit-learn
168
  # scipy
169
+ nvidia-cublas==13.1.1.3 ; sys_platform == 'linux'
170
+ # via
171
+ # nvidia-cudnn-cu13
172
+ # nvidia-cusolver
173
+ # torch
174
+ nvidia-cuda-cupti==13.0.85 ; sys_platform == 'linux'
175
+ # via cuda-toolkit
176
+ nvidia-cuda-nvrtc==13.0.88 ; sys_platform == 'linux'
177
+ # via
178
+ # cuda-toolkit
179
+ # nvidia-cublas
180
+ nvidia-cuda-runtime==13.0.96 ; sys_platform == 'linux'
181
+ # via cuda-toolkit
182
+ nvidia-cudnn-cu13==9.20.0.48 ; sys_platform == 'linux'
183
+ # via torch
184
+ nvidia-cufft==12.0.0.61 ; sys_platform == 'linux'
185
+ # via cuda-toolkit
186
+ nvidia-cufile==1.15.1.6 ; sys_platform == 'linux'
187
+ # via cuda-toolkit
188
+ nvidia-curand==10.4.0.35 ; sys_platform == 'linux'
189
+ # via cuda-toolkit
190
+ nvidia-cusolver==12.0.4.66 ; sys_platform == 'linux'
191
+ # via cuda-toolkit
192
+ nvidia-cusparse==12.6.3.3 ; sys_platform == 'linux'
193
+ # via
194
+ # cuda-toolkit
195
+ # nvidia-cusolver
196
+ nvidia-cusparselt-cu13==0.8.1 ; sys_platform == 'linux'
197
+ # via torch
198
+ nvidia-nccl-cu13==2.29.7 ; sys_platform == 'linux'
199
+ # via torch
200
+ nvidia-nvjitlink==13.0.88 ; sys_platform == 'linux'
201
+ # via
202
+ # cuda-toolkit
203
+ # nvidia-cufft
204
+ # nvidia-cusolver
205
+ # nvidia-cusparse
206
+ nvidia-nvshmem-cu13==3.4.5 ; sys_platform == 'linux'
207
+ # via torch
208
+ nvidia-nvtx==13.0.85 ; sys_platform == 'linux'
209
+ # via cuda-toolkit
210
  opencv-contrib-python==4.11.0.86
211
  # via mediapipe
212
  opencv-python-headless==4.11.0.86
 
274
  # via scikit-learn
275
  semantic-version==2.10.0
276
  # via gradio
277
+ setuptools==81.0.0
278
+ # via torch
279
  shellingham==1.5.4
280
  # via typer
281
  six==1.17.0
 
286
  # via
287
  # fastapi
288
  # gradio
289
+ sympy==1.14.0
290
+ # via torch
291
  synchronicity==0.12.3
292
  # via modal
293
  threadpoolctl==3.6.0
 
296
  # via modal
297
  tomlkit==0.14.0
298
  # via gradio
299
+ torch==2.12.0
300
+ # via pozify
301
  tqdm==4.68.2
302
  # via huggingface-hub
303
+ triton==3.7.0 ; sys_platform == 'linux'
304
+ # via torch
305
  typer==0.25.1
306
  # via
307
  # gradio
 
325
  # pydantic-core
326
  # starlette
327
  # synchronicity
328
+ # torch
329
  # typing-inspection
330
  typing-inspection==0.4.2
331
  # via