Spaces:
Running on Zero
Running on Zero
chore(dependencies): update requirements for CUDA and related libraries on Linux
Browse files- demo/README.md +4 -4
- docs/custom-data-collection-guide.md +16 -16
- docs/exercise-router-training-report.md +70 -70
- docs/huggingface-router-model-card.md +4 -4
- docs/implementation-plan.md +0 -1
- docs/pozify-project-documentation.md +2 -2
- requirements.txt +67 -2
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
|
| 7 |
-
| --- | --- | --- | ---: | ---: | --- | --- |
|
| 8 |
-
| `videos/router_demo_push_up_1.mp4`
|
| 9 |
-
| `videos/router_demo_unknown_barbell_biceps_curl_1.mp4` | `barbell biceps curl` | `unknown`
|
| 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
|
| 12 |
-
| --- | --- | --- |
|
| 13 |
-
| `squat`
|
| 14 |
-
| `push_up`
|
| 15 |
-
| `shoulder_press` | `shoulder press`, `shoulder_press`, `overhead press`
|
| 16 |
-
| `unknown`
|
| 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
|
| 60 |
-
| --- | --- |
|
| 61 |
-
| Clip length | 5-15 seconds for router clips; 10-30 seconds if also used for rep-count evaluation
|
| 62 |
-
| Frame rate
|
| 63 |
-
| Resolution
|
| 64 |
-
| Camera
|
| 65 |
-
| Framing
|
| 66 |
-
| View angle
|
| 67 |
-
| Lighting
|
| 68 |
-
| Reps
|
| 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
|
| 12 |
-
| --- | --- |
|
| 13 |
-
| Selected model
|
| 14 |
-
| Selected artifact
|
| 15 |
-
| Selection rule
|
| 16 |
-
| Local active path
|
| 17 |
-
| Baseline artifact path | `models/exercise_router/active/router.joblib`
|
| 18 |
|
| 19 |
## Data
|
| 20 |
|
| 21 |
-
| Metric
|
| 22 |
-
| --- | ---: |
|
| 23 |
-
| Feature examples
|
| 24 |
-
| Window count
|
| 25 |
-
| Failed feature extractions |
|
| 26 |
-
| Push-up windows
|
| 27 |
-
| Shoulder press windows
|
| 28 |
-
| Squat windows
|
| 29 |
-
| Unknown windows
|
| 30 |
|
| 31 |
Unsupported Riccio dataset classes such as bicep curl are mapped to `unknown`.
|
| 32 |
|
| 33 |
## Training Setup
|
| 34 |
|
| 35 |
-
| Model
|
| 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
|
| 43 |
-
| --- | ---: |
|
| 44 |
-
| Epochs
|
| 45 |
-
| Hidden units
|
| 46 |
-
| Dropout
|
| 47 |
-
| Learning rate
|
| 48 |
-
| Batch size
|
| 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
|
| 56 |
-
| --- | --- | ---: |
|
| 57 |
-
| Baseline
|
| 58 |
-
| Baseline
|
| 59 |
-
| Baseline
|
| 60 |
-
| Baseline
|
| 61 |
-
| Baseline
|
| 62 |
-
| Baseline
|
| 63 |
-
| Baseline
|
| 64 |
-
| BiLSTM temporal | Trainable parameters
|
| 65 |
-
| BiLSTM temporal | Input features per frame
|
| 66 |
-
| BiLSTM temporal | Hidden units
|
| 67 |
-
| BiLSTM temporal | Layers
|
| 68 |
-
| BiLSTM temporal | Output classes
|
| 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
|
| 77 |
-
| --- | ---: | ---: |
|
| 78 |
-
| Baseline
|
| 79 |
-
| BiLSTM temporal |
|
| 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
|
| 88 |
-
| --- | --- | ---: | ---: |
|
| 89 |
-
| Baseline
|
| 90 |
-
| BiLSTM temporal | `temporal.pt`
|
| 91 |
|
| 92 |
### Baseline Precision/Recall
|
| 93 |
|
| 94 |
-
| Label
|
| 95 |
-
| --- | ---: | ---: |
|
| 96 |
-
| `squat`
|
| 97 |
-
| `push_up`
|
| 98 |
-
| `shoulder_press` |
|
| 99 |
-
| `unknown`
|
| 100 |
|
| 101 |
### BiLSTM Precision/Recall
|
| 102 |
|
| 103 |
-
| Label
|
| 104 |
-
| --- | ---: | ---: |
|
| 105 |
-
| `squat`
|
| 106 |
-
| `push_up`
|
| 107 |
-
| `shoulder_press` |
|
| 108 |
-
| `unknown`
|
| 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`
|
| 119 |
-
| `push_up`
|
| 120 |
-
| `shoulder_press`
|
| 121 |
-
| `unknown`
|
| 122 |
|
| 123 |
### BiLSTM Temporal
|
| 124 |
|
| 125 |
| True \\ Predicted | `squat` | `push_up` | `shoulder_press` | `unknown` |
|
| 126 |
-
| --- | ---: | ---: | ---: | ---: |
|
| 127 |
-
| `squat`
|
| 128 |
-
| `push_up`
|
| 129 |
-
| `shoulder_press`
|
| 130 |
-
| `unknown`
|
| 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
|
| 78 |
-
| --- | --- | ---: | ---: |
|
| 79 |
-
| Baseline
|
| 80 |
-
| BiLSTM temporal | `temporal.pt`
|
| 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
|
|
|
|
|
|
|
| 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
|
|
|
|
|
|
|
| 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
|