minhy112 commited on
Commit
9313a90
·
verified ·
1 Parent(s): c2e443b

Upload fall detection code, trained models, and repeated experiments

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +11 -0
  2. README.md +136 -0
  3. artifacts/experiments/.gitkeep +1 -0
  4. artifacts/experiments/urfd/logistic_regression/confusion_matrix.png +0 -0
  5. artifacts/experiments/urfd/logistic_regression/metrics.json +39 -0
  6. artifacts/experiments/urfd/logistic_regression/model.joblib +3 -0
  7. artifacts/experiments/urfd/logistic_regression/predictions.csv +42 -0
  8. artifacts/experiments/urfd/logistic_regression/roc_curve.png +0 -0
  9. artifacts/experiments/urfd/model_comparison.png +0 -0
  10. artifacts/experiments/urfd/pose_gru/confusion_matrix.png +0 -0
  11. artifacts/experiments/urfd/pose_gru/metrics.json +47 -0
  12. artifacts/experiments/urfd/pose_gru/model.pt +3 -0
  13. artifacts/experiments/urfd/pose_gru/predictions.csv +42 -0
  14. artifacts/experiments/urfd/pose_gru/roc_curve.png +0 -0
  15. artifacts/experiments/urfd/pose_gru/training_curve.png +0 -0
  16. artifacts/experiments/urfd/pose_tcn/confusion_matrix.png +0 -0
  17. artifacts/experiments/urfd/pose_tcn/metrics.json +47 -0
  18. artifacts/experiments/urfd/pose_tcn/model.pt +3 -0
  19. artifacts/experiments/urfd/pose_tcn/predictions.csv +42 -0
  20. artifacts/experiments/urfd/pose_tcn/roc_curve.png +0 -0
  21. artifacts/experiments/urfd/pose_tcn/training_curve.png +0 -0
  22. artifacts/experiments/urfd/random_forest/confusion_matrix.png +0 -0
  23. artifacts/experiments/urfd/random_forest/metrics.json +39 -0
  24. artifacts/experiments/urfd/random_forest/model.joblib +3 -0
  25. artifacts/experiments/urfd/random_forest/predictions.csv +42 -0
  26. artifacts/experiments/urfd/random_forest/roc_curve.png +0 -0
  27. artifacts/experiments/urfd/results.csv +5 -0
  28. artifacts/experiments/urfd/splits.npz +3 -0
  29. artifacts/experiments/urfd_repeated/aggregate_f1.png +0 -0
  30. artifacts/experiments/urfd_repeated/aggregate_results.csv +5 -0
  31. artifacts/experiments/urfd_repeated/per_run_results.csv +21 -0
  32. artifacts/experiments/urfd_repeated/seed_123/logistic_regression/confusion_matrix.png +0 -0
  33. artifacts/experiments/urfd_repeated/seed_123/logistic_regression/metrics.json +39 -0
  34. artifacts/experiments/urfd_repeated/seed_123/logistic_regression/model.joblib +3 -0
  35. artifacts/experiments/urfd_repeated/seed_123/logistic_regression/predictions.csv +30 -0
  36. artifacts/experiments/urfd_repeated/seed_123/logistic_regression/roc_curve.png +0 -0
  37. artifacts/experiments/urfd_repeated/seed_123/model_comparison.png +0 -0
  38. artifacts/experiments/urfd_repeated/seed_123/pose_gru/confusion_matrix.png +0 -0
  39. artifacts/experiments/urfd_repeated/seed_123/pose_gru/metrics.json +47 -0
  40. artifacts/experiments/urfd_repeated/seed_123/pose_gru/model.pt +3 -0
  41. artifacts/experiments/urfd_repeated/seed_123/pose_gru/predictions.csv +30 -0
  42. artifacts/experiments/urfd_repeated/seed_123/pose_gru/roc_curve.png +0 -0
  43. artifacts/experiments/urfd_repeated/seed_123/pose_gru/training_curve.png +0 -0
  44. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/confusion_matrix.png +0 -0
  45. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/metrics.json +47 -0
  46. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/model.pt +3 -0
  47. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/predictions.csv +30 -0
  48. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/roc_curve.png +0 -0
  49. artifacts/experiments/urfd_repeated/seed_123/pose_tcn/training_curve.png +0 -0
  50. artifacts/experiments/urfd_repeated/seed_123/random_forest/confusion_matrix.png +0 -0
.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .venv/
5
+ data/videos/
6
+ data/processed/
7
+ artifacts/models/
8
+ artifacts/experiments/*/
9
+ !artifacts/experiments/.gitkeep
10
+ *.mp4
11
+
README.md ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: cc-by-nc-sa-4.0
3
+ language:
4
+ - vi
5
+ library_name: pytorch
6
+ pipeline_tag: video-classification
7
+ tags:
8
+ - computer-vision
9
+ - fall-detection
10
+ - pose-estimation
11
+ - mediapipe
12
+ - temporal-convolution
13
+ ---
14
+
15
+ # Phát hiện té ngã từ video dựa trên tư thế cơ thể
16
+
17
+ Project code hoàn chỉnh theo pipeline:
18
+
19
+ `Video RGB → MediaPipe (33 điểm khớp) → chuẩn hóa tư thế → cửa sổ 4 giây → Pose-TCN/Pose-GRU → làm trơn → cảnh báo`
20
+
21
+ Project đã chạy trên bộ UR Fall Detection (URFD). Kết quả cố định với seed 42 trên tập test gồm 41 cửa sổ thuộc 13 video:
22
+
23
+ | Mô hình | Accuracy | Precision | Recall | Specificity | F1 | ROC-AUC |
24
+ |---|---:|---:|---:|---:|---:|---:|
25
+ | Random Forest | 97,56% | 100,00% | 87,50% | 100,00% | 93,33% | 1,000 |
26
+ | Logistic Regression | 95,12% | 80,00% | 100,00% | 93,94% | 88,89% | 1,000 |
27
+ | Pose-TCN (CUDA) | 95,12% | 80,00% | 100,00% | 93,94% | 88,89% | 1,000 |
28
+ | Pose-GRU (CUDA) | 90,24% | 70,00% | 87,50% | 90,91% | 77,78% | 0,989 |
29
+
30
+ Đây là kết quả theo **cửa sổ video**, không phải theo người. URFD không cung cấp ánh xạ danh tính đủ rõ để chia subject-independent, vì vậy không dùng bảng trên để tuyên bố khả năng tổng quát hóa lâm sàng.
31
+
32
+ ## Chạy nhanh
33
+
34
+ Project dùng Python 3.10–3.12. Tạo môi trường và cài thư viện:
35
+
36
+ ```bash
37
+ python -m venv .venv
38
+ source .venv/bin/activate
39
+ pip install -e '.[dev]'
40
+ ```
41
+
42
+ Để chạy Pose-GRU trên GPU NVIDIA, cài wheel PyTorch phù hợp trước. Máy đã dùng cho kết quả trong project chạy CUDA 12.8:
43
+
44
+ ```bash
45
+ pip install torch --index-url https://download.pytorch.org/whl/cu128
46
+ python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
47
+ ```
48
+
49
+ Chạy lại toàn bộ thí nghiệm URFD. Lệnh sẽ tự tải khoảng 70 video từ nguồn chính thức nếu chưa có dữ liệu:
50
+
51
+ ```bash
52
+ python scripts/run_all.py
53
+ ```
54
+
55
+ Chạy demo trên video:
56
+
57
+ ```bash
58
+ python scripts/demo_video.py \
59
+ --input data/videos/fall/fall-01/fall-01-cam0.mp4 \
60
+ --model artifacts/experiments/urfd/pose_tcn/model.pt \
61
+ --output artifacts/demo_fall01.mp4
62
+ ```
63
+
64
+ ## Chạy từng bước
65
+
66
+ ```bash
67
+ # 1. Tải 30 video té và 40 video sinh hoạt thường ngày
68
+ python scripts/download_urfd.py
69
+
70
+ # 2. Trích keypoint và tạo dataset .npz
71
+ python scripts/prepare_dataset.py
72
+
73
+ # 3. Huấn luyện hai baseline
74
+ python scripts/train_baselines.py
75
+
76
+ # 4. Huấn luyện hai mô hình sâu
77
+ python scripts/train_gru.py
78
+ python scripts/train_tcn.py
79
+
80
+ # 5. Tổng hợp bảng và biểu đồ
81
+ python scripts/compare_models.py
82
+
83
+ # 6. Kiểm thử mã
84
+ pytest -q
85
+ ```
86
+
87
+ Kết quả nằm tại `artifacts/experiments/urfd/`. Mỗi mô hình có trọng số, `metrics.json`, dự đoán từng mẫu, confusion matrix và ROC. File `results.csv` và `model_comparison.png` tổng hợp một lần chạy.
88
+
89
+ ## Dữ liệu riêng
90
+
91
+ Sắp xếp mỗi video trong một thư mục nhóm riêng. Nhóm có thể là mã người hoặc mã video; nếu có mã người, nên dùng mã người để phép chia không rò rỉ danh tính.
92
+
93
+ ```text
94
+ data/videos/
95
+ ├── fall/
96
+ │ ├── person01/video01.mp4
97
+ │ └── person02/video02.mp4
98
+ └── normal/
99
+ ├── person01/video03.mp4
100
+ └── person02/video04.mp4
101
+ ```
102
+
103
+ Với dữ liệu không phải URFD và không có annotation frame, mọi cửa sổ trong `fall/` được gán nhãn té. Nên cắt video để mỗi clip té thực sự chứa sự kiện té. Sửa tham số trong [configs/default.yaml](configs/default.yaml).
104
+
105
+ ## Thiết kế thí nghiệm
106
+
107
+ - Mỗi cửa sổ dài 40 frame ở 10 FPS, tương đương 4 giây; stride 10 frame.
108
+ - Pose được tịnh tiến về tâm hông và chia theo chiều dài thân/độ rộng vai.
109
+ - Pose-GRU dùng 140 chiều/frame: 33 × `(x, y, z, visibility)` và 8 đặc trưng hình học/chuyển động.
110
+ - Pose-TCN dùng 60 chiều/frame: 13 khớp cốt lõi × 4 kênh và 8 đặc trưng bổ sung, giúp giảm overfit trên URFD nhỏ.
111
+ - Chia train/validation/test theo group với tỷ lệ 60/20/20; các cửa sổ cùng video luôn ở cùng tập.
112
+ - Ngưỡng xác suất tối ưu F1 chỉ được chọn trên validation. Test không tham gia chọn mô hình/ngưỡng.
113
+ - GRU và TCN dùng BCE có trọng số lớp, AdamW, early stopping; hai baseline dùng cùng dữ liệu và phép chia.
114
+
115
+ ## Chạy lặp nhiều seed
116
+
117
+ Lệnh sau chạy cả bốn mô hình với 5 seed, mỗi seed có phép chia theo video riêng. Pose-GRU và Pose-TCN tự dùng CUDA nếu có; hai mô hình scikit-learn chạy CPU.
118
+
119
+ ```bash
120
+ python scripts/run_repeated_experiments.py --seeds 13 21 42 84 123 --device cuda
121
+ ```
122
+
123
+ Kết quả từng lần nằm trong `artifacts/experiments/urfd_repeated/seed_*/`. Bảng tổng hợp mean, standard deviation, min và max nằm tại `aggregate_results.csv`.
124
+
125
+ Kết quả trên 5 seed đã chạy:
126
+
127
+ | Mô hình | Accuracy mean ± std | Recall mean ± std | F1 mean ± std | ROC-AUC mean ± std |
128
+ |---|---:|---:|---:|---:|
129
+ | Random Forest | 0,968 ± 0,026 | 0,885 ± 0,114 | **0,907 ± 0,061** | 0,997 ± 0,007 |
130
+ | Logistic Regression | **0,969 ± 0,021** | **0,955 ± 0,062** | 0,904 ± 0,095 | 0,991 ± 0,015 |
131
+ | Pose-TCN (CUDA) | 0,961 ± 0,040 | 0,915 ± 0,132 | 0,901 ± 0,069 | 0,983 ± 0,035 |
132
+ | Pose-GRU (CUDA) | 0,942 ± 0,043 | 0,865 ± 0,139 | 0,842 ± 0,098 | 0,996 ± 0,006 |
133
+
134
+ URFD có 70 chuỗi (30 fall, 40 ADL), phát hành theo CC BY-NC-SA 4.0 cho nghiên cứu phi thương mại tại [trang dữ liệu chính thức](https://fenix.ur.edu.pl/~mkepski/ds/uf.html). Khi sử dụng, trích dẫn bài của Kwolek và Kępski, DOI `10.1016/j.cmpb.2014.09.005`.
135
+
136
+ Repository công khai chứa code, checkpoint và kết quả thí nghiệm. Video URFD gốc, pose dataset đã trích và video demo không được đóng gói cùng repository; dùng `scripts/download_urfd.py` để tải dữ liệu từ nguồn chính thức.
artifacts/experiments/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+
artifacts/experiments/urfd/logistic_regression/confusion_matrix.png ADDED
artifacts/experiments/urfd/logistic_regression/metrics.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.9512195121951219,
3
+ "precision": 0.8,
4
+ "recall": 1.0,
5
+ "specificity": 0.9393939393939394,
6
+ "f1": 0.8888888888888888,
7
+ "roc_auc": 1.0,
8
+ "threshold": 0.5,
9
+ "tn": 31,
10
+ "fp": 2,
11
+ "fn": 0,
12
+ "tp": 8,
13
+ "n_samples": 41,
14
+ "model": "logistic_regression",
15
+ "seed": 42,
16
+ "training_seconds": 0.01953271900129039,
17
+ "dataset": "data/processed/urfd_pose.npz",
18
+ "split": {
19
+ "train": {
20
+ "samples": 132,
21
+ "groups": 38,
22
+ "normal": 111,
23
+ "fall": 21
24
+ },
25
+ "validation": {
26
+ "samples": 27,
27
+ "groups": 13,
28
+ "normal": 20,
29
+ "fall": 7
30
+ },
31
+ "test": {
32
+ "samples": 41,
33
+ "groups": 13,
34
+ "normal": 33,
35
+ "fall": 8
36
+ }
37
+ },
38
+ "result_scope": "test set only"
39
+ }
artifacts/experiments/urfd/logistic_regression/model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bdf1c4ffd6d38bb695db15df2e5829ae12f7b3121c8a288f0e56720ec2526806
3
+ size 21047
artifacts/experiments/urfd/logistic_regression/predictions.csv ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.98377717,1
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9993255,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.999498,1
5
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.97410244,1
6
+ data/videos/fall/fall-14/fall-14-cam0.mp4#sample=0:40,1,0.99896145,1
7
+ data/videos/fall/fall-19/fall-19-cam0.mp4#sample=0:40,1,0.997311,1
8
+ data/videos/fall/fall-23/fall-23-cam0.mp4#sample=0:40,1,0.9457497,1
9
+ data/videos/fall/fall-27/fall-27-cam0.mp4#sample=0:40,1,0.99611413,1
10
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=0:40,0,0.0006896582,0
11
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=10:50,0,0.0023842053,0
12
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=0:40,0,2.3963743e-05,0
13
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=10:50,0,8.265512e-05,0
14
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=20:60,0,0.018153476,0
15
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=30:70,0,0.02516493,0
16
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=37:77,0,0.00035743922,0
17
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=0:40,0,6.653513e-07,0
18
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=10:50,0,0.00603225,0
19
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=20:60,0,0.0031787464,0
20
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=30:70,0,0.03760421,0
21
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=40:80,0,0.012593662,0
22
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=50:90,0,0.000474621,0
23
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=60:100,0,0.0028994733,0
24
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=10:50,0,2.2414151e-06,0
25
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=20:60,0,0.00026380236,0
26
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=30:70,0,0.51179487,1
27
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=40:80,0,0.7919934,1
28
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=49:89,0,0.0336354,0
29
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=10:50,0,1.8855539e-05,0
30
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=20:60,0,0.0051527205,0
31
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=30:70,0,0.042879105,0
32
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=37:77,0,0.009401498,0
33
+ data/videos/normal/adl-26/adl-26-cam0.mp4#sample=0:40,0,0.00028797347,0
34
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=0:40,0,5.9999e-06,0
35
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=10:50,0,2.6717935e-06,0
36
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=20:60,0,4.8368015e-06,0
37
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=30:70,0,0.0002776527,0
38
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=40:80,0,0.0004259999,0
39
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=50:90,0,0.0019540016,0
40
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=60:100,0,0.0005490907,0
41
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=70:110,0,0.00027555088,0
42
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=77:117,0,0.017206663,0
artifacts/experiments/urfd/logistic_regression/roc_curve.png ADDED
artifacts/experiments/urfd/model_comparison.png ADDED
artifacts/experiments/urfd/pose_gru/confusion_matrix.png ADDED
artifacts/experiments/urfd/pose_gru/metrics.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.9024390243902439,
3
+ "precision": 0.7,
4
+ "recall": 0.875,
5
+ "specificity": 0.9090909090909091,
6
+ "f1": 0.7777777777777778,
7
+ "roc_auc": 0.9886363636363636,
8
+ "threshold": 0.5,
9
+ "tn": 30,
10
+ "fp": 3,
11
+ "fn": 1,
12
+ "tp": 7,
13
+ "n_samples": 41,
14
+ "model": "pose_gru",
15
+ "architecture": "gru",
16
+ "seed": 42,
17
+ "device": "cuda",
18
+ "device_name": "NVIDIA GeForce RTX 4090",
19
+ "torch_version": "2.11.0+cu128",
20
+ "torch_cuda_version": "12.8",
21
+ "epochs_completed": 30,
22
+ "best_val_loss": 0.14927974343299866,
23
+ "training_seconds": 1.3942278900067322,
24
+ "parameters": 79489,
25
+ "dataset": "data/processed/urfd_pose.npz",
26
+ "split": {
27
+ "train": {
28
+ "samples": 132,
29
+ "groups": 38,
30
+ "normal": 111,
31
+ "fall": 21
32
+ },
33
+ "validation": {
34
+ "samples": 27,
35
+ "groups": 13,
36
+ "normal": 20,
37
+ "fall": 7
38
+ },
39
+ "test": {
40
+ "samples": 41,
41
+ "groups": 13,
42
+ "normal": 33,
43
+ "fall": 8
44
+ }
45
+ },
46
+ "result_scope": "test set only"
47
+ }
artifacts/experiments/urfd/pose_gru/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:daf7d083966a9cf8ade21b4bec28123199336639c33ea561c140ae31cdc8d1bf
3
+ size 325083
artifacts/experiments/urfd/pose_gru/predictions.csv ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.36374763,0
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9875322,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.9928555,1
5
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.9939282,1
6
+ data/videos/fall/fall-14/fall-14-cam0.mp4#sample=0:40,1,0.9983101,1
7
+ data/videos/fall/fall-19/fall-19-cam0.mp4#sample=0:40,1,0.9972844,1
8
+ data/videos/fall/fall-23/fall-23-cam0.mp4#sample=0:40,1,0.99895227,1
9
+ data/videos/fall/fall-27/fall-27-cam0.mp4#sample=0:40,1,0.99400866,1
10
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=0:40,0,0.0007733168,0
11
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=10:50,0,0.0023768344,0
12
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=0:40,0,0.0008485273,0
13
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=10:50,0,0.0010037357,0
14
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=20:60,0,0.00556503,0
15
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=30:70,0,0.04351345,0
16
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=37:77,0,0.08348232,0
17
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=0:40,0,0.00067634834,0
18
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=10:50,0,0.0010444914,0
19
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=20:60,0,0.0011891089,0
20
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=30:70,0,0.0016517256,0
21
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=40:80,0,0.0052665947,0
22
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=50:90,0,0.013075952,0
23
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=60:100,0,0.032113984,0
24
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=10:50,0,0.002390514,0
25
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=20:60,0,0.0011807706,0
26
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=30:70,0,0.013312802,0
27
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=40:80,0,0.6862216,1
28
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=49:89,0,0.5090663,1
29
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=10:50,0,0.001116697,0
30
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=20:60,0,0.0019210341,0
31
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=30:70,0,0.015289847,0
32
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=37:77,0,0.058644745,0
33
+ data/videos/normal/adl-26/adl-26-cam0.mp4#sample=0:40,0,0.0013770493,0
34
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=0:40,0,0.00230475,0
35
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=10:50,0,0.0012230183,0
36
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=20:60,0,0.0026165335,0
37
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=30:70,0,0.0022358233,0
38
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=40:80,0,0.0015868503,0
39
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=50:90,0,0.0012599203,0
40
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=60:100,0,0.0034755394,0
41
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=70:110,0,0.010827422,0
42
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=77:117,0,0.9500953,1
artifacts/experiments/urfd/pose_gru/roc_curve.png ADDED
artifacts/experiments/urfd/pose_gru/training_curve.png ADDED
artifacts/experiments/urfd/pose_tcn/confusion_matrix.png ADDED
artifacts/experiments/urfd/pose_tcn/metrics.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.9512195121951219,
3
+ "precision": 0.8,
4
+ "recall": 1.0,
5
+ "specificity": 0.9393939393939394,
6
+ "f1": 0.8888888888888888,
7
+ "roc_auc": 1.0,
8
+ "threshold": 0.5,
9
+ "tn": 31,
10
+ "fp": 2,
11
+ "fn": 0,
12
+ "tp": 8,
13
+ "n_samples": 41,
14
+ "model": "pose_tcn",
15
+ "architecture": "tcn",
16
+ "seed": 42,
17
+ "device": "cuda",
18
+ "device_name": "NVIDIA GeForce RTX 4090",
19
+ "torch_version": "2.11.0+cu128",
20
+ "torch_cuda_version": "12.8",
21
+ "epochs_completed": 27,
22
+ "best_val_loss": 0.16090895235538483,
23
+ "training_seconds": 1.111777505997452,
24
+ "parameters": 12929,
25
+ "dataset": "data/processed/urfd_pose.npz",
26
+ "split": {
27
+ "train": {
28
+ "samples": 132,
29
+ "groups": 38,
30
+ "normal": 111,
31
+ "fall": 21
32
+ },
33
+ "validation": {
34
+ "samples": 27,
35
+ "groups": 13,
36
+ "normal": 20,
37
+ "fall": 7
38
+ },
39
+ "test": {
40
+ "samples": 41,
41
+ "groups": 13,
42
+ "normal": 33,
43
+ "fall": 8
44
+ }
45
+ },
46
+ "result_scope": "test set only"
47
+ }
artifacts/experiments/urfd/pose_tcn/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d9f02d417c3c785920bbb592f0af63fd9baa96c99bcedcc49b27c01106f98165
3
+ size 58759
artifacts/experiments/urfd/pose_tcn/predictions.csv ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.97618514,1
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9786139,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.9824744,1
5
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.9479548,1
6
+ data/videos/fall/fall-14/fall-14-cam0.mp4#sample=0:40,1,0.9917155,1
7
+ data/videos/fall/fall-19/fall-19-cam0.mp4#sample=0:40,1,0.91648644,1
8
+ data/videos/fall/fall-23/fall-23-cam0.mp4#sample=0:40,1,0.9619871,1
9
+ data/videos/fall/fall-27/fall-27-cam0.mp4#sample=0:40,1,0.9757481,1
10
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=0:40,0,0.036800418,0
11
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=10:50,0,0.12765183,0
12
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=0:40,0,0.053033993,0
13
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=10:50,0,0.1157073,0
14
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=20:60,0,0.25427914,0
15
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=30:70,0,0.30693465,0
16
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=37:77,0,0.25294647,0
17
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=0:40,0,0.041943014,0
18
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=10:50,0,0.35644826,0
19
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=20:60,0,0.2825069,0
20
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=30:70,0,0.20812033,0
21
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=40:80,0,0.22714849,0
22
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=50:90,0,0.111267,0
23
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=60:100,0,0.13848732,0
24
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=10:50,0,0.054857913,0
25
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=20:60,0,0.045970306,0
26
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=30:70,0,0.5363943,1
27
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=40:80,0,0.66083694,1
28
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=49:89,0,0.24986179,0
29
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=10:50,0,0.025344677,0
30
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=20:60,0,0.15354195,0
31
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=30:70,0,0.12768711,0
32
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=37:77,0,0.13882609,0
33
+ data/videos/normal/adl-26/adl-26-cam0.mp4#sample=0:40,0,0.05435837,0
34
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=0:40,0,0.021094386,0
35
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=10:50,0,0.023997432,0
36
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=20:60,0,0.20265935,0
37
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=30:70,0,0.22501923,0
38
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=40:80,0,0.111354865,0
39
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=50:90,0,0.06751009,0
40
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=60:100,0,0.08183312,0
41
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=70:110,0,0.100184046,0
42
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=77:117,0,0.4885858,0
artifacts/experiments/urfd/pose_tcn/roc_curve.png ADDED
artifacts/experiments/urfd/pose_tcn/training_curve.png ADDED
artifacts/experiments/urfd/random_forest/confusion_matrix.png ADDED
artifacts/experiments/urfd/random_forest/metrics.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.975609756097561,
3
+ "precision": 1.0,
4
+ "recall": 0.875,
5
+ "specificity": 1.0,
6
+ "f1": 0.9333333333333333,
7
+ "roc_auc": 1.0,
8
+ "threshold": 0.5,
9
+ "tn": 33,
10
+ "fp": 0,
11
+ "fn": 1,
12
+ "tp": 7,
13
+ "n_samples": 41,
14
+ "model": "random_forest",
15
+ "seed": 42,
16
+ "training_seconds": 1.2764060369954677,
17
+ "dataset": "data/processed/urfd_pose.npz",
18
+ "split": {
19
+ "train": {
20
+ "samples": 132,
21
+ "groups": 38,
22
+ "normal": 111,
23
+ "fall": 21
24
+ },
25
+ "validation": {
26
+ "samples": 27,
27
+ "groups": 13,
28
+ "normal": 20,
29
+ "fall": 7
30
+ },
31
+ "test": {
32
+ "samples": 41,
33
+ "groups": 13,
34
+ "normal": 33,
35
+ "fall": 8
36
+ }
37
+ },
38
+ "result_scope": "test set only"
39
+ }
artifacts/experiments/urfd/random_forest/model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:49aac9a9a79a45fc5d59d3dd929e6fa866f16a88777834af04d8f92dcb098b6a
3
+ size 357699
artifacts/experiments/urfd/random_forest/predictions.csv ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.454547619047619,0
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.5490158730158728,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.5656825396825395,1
5
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.7903333333333331,1
6
+ data/videos/fall/fall-14/fall-14-cam0.mp4#sample=0:40,1,0.7514682539682539,1
7
+ data/videos/fall/fall-19/fall-19-cam0.mp4#sample=0:40,1,0.5684722222222222,1
8
+ data/videos/fall/fall-23/fall-23-cam0.mp4#sample=0:40,1,0.7104444444444443,1
9
+ data/videos/fall/fall-27/fall-27-cam0.mp4#sample=0:40,1,0.5993571428571427,1
10
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=0:40,0,0.021190476190476194,0
11
+ data/videos/normal/adl-01/adl-01-cam0.mp4#sample=10:50,0,0.0775,0
12
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=0:40,0,0.022793650793650793,0
13
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=10:50,0,0.054722222222222214,0
14
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=20:60,0,0.12342857142857142,0
15
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=30:70,0,0.14366666666666664,0
16
+ data/videos/normal/adl-06/adl-06-cam0.mp4#sample=37:77,0,0.10826190476190475,0
17
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=0:40,0,0.005555555555555555,0
18
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=10:50,0,0.13499999999999998,0
19
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=20:60,0,0.2251984126984127,0
20
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=30:70,0,0.32544444444444454,0
21
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=40:80,0,0.42709523809523814,0
22
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=50:90,0,0.17731746031746032,0
23
+ data/videos/normal/adl-10/adl-10-cam0.mp4#sample=60:100,0,0.20001190476190472,0
24
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=10:50,0,0.05765873015873017,0
25
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=20:60,0,0.06333333333333334,0
26
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=30:70,0,0.13238888888888886,0
27
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=40:80,0,0.19470634920634922,0
28
+ data/videos/normal/adl-13/adl-13-cam0.mp4#sample=49:89,0,0.2077857142857143,0
29
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=10:50,0,0.047293650793650784,0
30
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=20:60,0,0.15166666666666664,0
31
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=30:70,0,0.2036111111111111,0
32
+ data/videos/normal/adl-17/adl-17-cam0.mp4#sample=37:77,0,0.2175,0
33
+ data/videos/normal/adl-26/adl-26-cam0.mp4#sample=0:40,0,0.1753174603174603,0
34
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=0:40,0,0.046,0
35
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=10:50,0,0.014166666666666666,0
36
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=20:60,0,0.025611111111111112,0
37
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=30:70,0,0.020277777777777777,0
38
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=40:80,0,0.05416666666666667,0
39
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=50:90,0,0.10492857142857144,0
40
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=60:100,0,0.12884126984126984,0
41
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=70:110,0,0.20839682539682539,0
42
+ data/videos/normal/adl-37/adl-37-cam0.mp4#sample=77:117,0,0.3192460317460318,0
artifacts/experiments/urfd/random_forest/roc_curve.png ADDED
artifacts/experiments/urfd/results.csv ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ model,accuracy,precision,recall,specificity,f1,roc_auc,training_seconds
2
+ random_forest,0.975609756097561,1.0,0.875,1.0,0.9333333333333333,1.0,1.2764060369954677
3
+ logistic_regression,0.9512195121951219,0.8,1.0,0.9393939393939394,0.8888888888888888,1.0,0.01953271900129039
4
+ pose_tcn,0.9512195121951219,0.8,1.0,0.9393939393939394,0.8888888888888888,1.0,1.111777505997452
5
+ pose_gru,0.9024390243902439,0.7,0.875,0.9090909090909091,0.7777777777777778,0.9886363636363636,1.3942278900067322
artifacts/experiments/urfd/splits.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:58ae99f939839832f37f7bf92b537a1212d6f4833e0cc71ca371877e340726c3
3
+ size 978
artifacts/experiments/urfd_repeated/aggregate_f1.png ADDED
artifacts/experiments/urfd_repeated/aggregate_results.csv ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ model,accuracy_mean,accuracy_std,accuracy_min,accuracy_max,precision_mean,precision_std,precision_min,precision_max,recall_mean,recall_std,recall_min,recall_max,specificity_mean,specificity_std,specificity_min,specificity_max,f1_mean,f1_std,f1_min,f1_max,roc_auc_mean,roc_auc_std,roc_auc_min,roc_auc_max,training_seconds_mean,training_seconds_std,training_seconds_min,training_seconds_max
2
+ random_forest,0.9681174656574152,0.02549334076868179,0.9310344827586207,1.0,0.95,0.1118033988749895,0.75,1.0,0.885,0.1140175425099138,0.75,1.0,0.9947368421052631,0.01176877882894621,0.9736842105263158,1.0,0.9073015873015873,0.06050097396607795,0.8571428571428571,1.0,0.996875,0.006987712429686846,0.984375,1.0,1.0664501365972683,0.12809362785822495,0.9882721559988568,1.2935919419978745
3
+ logistic_regression,0.9694245864872443,0.020663257508523332,0.9512195121951219,1.0,0.8800000000000001,0.17888543819998312,0.6,1.0,0.9550000000000001,0.06224949798994365,0.875,1.0,0.9773524720893143,0.031139304272703755,0.9393939393939394,1.0,0.9039181286549708,0.09473855676738674,0.75,1.0,0.9910197368421052,0.01490988193426192,0.965625,1.0,0.022850994201144205,0.002161931957423829,0.02111099699686747,0.025282849004724994
4
+ pose_tcn,0.9605095318194561,0.039725647128530425,0.896551724137931,1.0,0.9099999999999999,0.12449899597988734,0.75,1.0,0.915,0.1318142632646407,0.7,1.0,0.982615629984051,0.02671391843941856,0.9393939393939394,1.0,0.900578898225957,0.06877022946810625,0.8235294117647058,1.0,0.9829605263157895,0.03471322213305365,0.9210526315789473,1.0,1.3342455781967146,0.28321537202272556,0.9513108629907947,1.74490802299988
5
+ pose_gru,0.941708718811326,0.04285431579569855,0.896551724137931,1.0,0.86,0.19493588689617924,0.6,1.0,0.865,0.1387443692551161,0.7,1.0,0.971291866028708,0.04157451482531765,0.9090909090909091,1.0,0.8416900093370682,0.09762489706564578,0.75,1.0,0.9959728867623603,0.005589963754536537,0.9886363636363636,1.0,1.0812091261992465,0.4035546171412758,0.6123746740049683,1.667068080001627
artifacts/experiments/urfd_repeated/per_run_results.csv ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed,model,accuracy,precision,recall,specificity,f1,roc_auc,training_seconds,device
2
+ 13,logistic_regression,0.9512195121951219,0.6,1.0,0.9473684210526315,0.75,1.0,0.02111099699686747,cpu
3
+ 13,pose_gru,0.9512195121951219,0.6,1.0,0.9473684210526315,0.75,0.9912280701754386,0.6123746740049683,cuda
4
+ 13,pose_tcn,0.975609756097561,0.75,1.0,0.9736842105263158,0.8571428571428571,1.0,1.268194460993982,cuda
5
+ 13,random_forest,0.975609756097561,0.75,1.0,0.9736842105263158,0.8571428571428571,1.0,1.0231628899928182,cpu
6
+ 21,logistic_regression,1.0,1.0,1.0,1.0,1.0,1.0,0.02136966001125984,cpu
7
+ 21,pose_gru,1.0,1.0,1.0,1.0,1.0,1.0,1.667068080001627,cuda
8
+ 21,pose_tcn,1.0,1.0,1.0,1.0,1.0,1.0,1.368639754000469,cuda
9
+ 21,random_forest,1.0,1.0,1.0,1.0,1.0,1.0,1.0289278239943087,cpu
10
+ 42,logistic_regression,0.9512195121951219,0.8,1.0,0.9393939393939394,0.8888888888888888,1.0,0.025282849004724994,cpu
11
+ 42,pose_gru,0.9024390243902439,0.7,0.875,0.9090909090909091,0.7777777777777778,0.9886363636363636,1.2036171649961034,cuda
12
+ 42,pose_tcn,0.9512195121951219,0.8,1.0,0.9393939393939394,0.8888888888888888,1.0,0.9513108629907947,cuda
13
+ 42,random_forest,0.975609756097561,1.0,0.875,1.0,0.9333333333333333,1.0,0.9882721559988568,cpu
14
+ 84,logistic_regression,0.9791666666666666,1.0,0.875,1.0,0.9333333333333333,0.965625,0.021342011998058297,cpu
15
+ 84,pose_gru,0.9583333333333334,1.0,0.75,1.0,0.8571428571428571,1.0,1.1110608339949977,cuda
16
+ 84,pose_tcn,0.9791666666666666,1.0,0.875,1.0,0.9333333333333333,0.9937499999999999,1.3381747899984475,cuda
17
+ 84,random_forest,0.9583333333333334,1.0,0.75,1.0,0.8571428571428571,0.984375,0.9982958710024832,cpu
18
+ 123,logistic_regression,0.9655172413793104,1.0,0.9,1.0,0.9473684210526315,0.9894736842105263,0.025149452994810417,cpu
19
+ 123,pose_gru,0.896551724137931,1.0,0.7,1.0,0.8235294117647058,1.0,0.8119248779985355,cuda
20
+ 123,pose_tcn,0.896551724137931,1.0,0.7,1.0,0.8235294117647058,0.9210526315789473,1.74490802299988,cuda
21
+ 123,random_forest,0.9310344827586207,1.0,0.8,1.0,0.8888888888888888,1.0,1.2935919419978745,cpu
artifacts/experiments/urfd_repeated/seed_123/logistic_regression/confusion_matrix.png ADDED
artifacts/experiments/urfd_repeated/seed_123/logistic_regression/metrics.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.9655172413793104,
3
+ "precision": 1.0,
4
+ "recall": 0.9,
5
+ "specificity": 1.0,
6
+ "f1": 0.9473684210526315,
7
+ "roc_auc": 0.9894736842105263,
8
+ "threshold": 0.5,
9
+ "tn": 19,
10
+ "fp": 0,
11
+ "fn": 1,
12
+ "tp": 9,
13
+ "n_samples": 29,
14
+ "model": "logistic_regression",
15
+ "seed": 123,
16
+ "training_seconds": 0.025149452994810417,
17
+ "dataset": "data/processed/urfd_pose.npz",
18
+ "split": {
19
+ "train": {
20
+ "samples": 134,
21
+ "groups": 38,
22
+ "normal": 114,
23
+ "fall": 20
24
+ },
25
+ "validation": {
26
+ "samples": 37,
27
+ "groups": 13,
28
+ "normal": 31,
29
+ "fall": 6
30
+ },
31
+ "test": {
32
+ "samples": 29,
33
+ "groups": 13,
34
+ "normal": 19,
35
+ "fall": 10
36
+ }
37
+ },
38
+ "result_scope": "test set only"
39
+ }
artifacts/experiments/urfd_repeated/seed_123/logistic_regression/model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bd64e7183985dd7cabf9d5e76707786786a0f99e7a5953a995aa3462733387fd
3
+ size 21047
artifacts/experiments/urfd_repeated/seed_123/logistic_regression/predictions.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.8714424,1
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9968592,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.99814665,1
5
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=0:40,1,0.6150006,1
6
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=10:50,1,0.8142116,1
7
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=11:51,1,0.8370313,1
8
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.95890343,1
9
+ data/videos/fall/fall-13/fall-13-cam0.mp4#sample=0:40,1,0.035059758,0
10
+ data/videos/fall/fall-16/fall-16-cam0.mp4#sample=0:40,1,0.99813807,1
11
+ data/videos/fall/fall-29/fall-29-cam0.mp4#sample=0:40,1,0.9841054,1
12
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=20:60,0,0.0053262985,0
13
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=30:70,0,0.058787502,0
14
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=40:80,0,0.10868171,0
15
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=10:50,0,2.9298852e-05,0
16
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=20:60,0,4.0773317e-05,0
17
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=30:70,0,0.0011008652,0
18
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=40:80,0,0.0056155613,0
19
+ data/videos/normal/adl-24/adl-24-cam0.mp4#sample=0:40,0,6.5174994e-05,0
20
+ data/videos/normal/adl-25/adl-25-cam0.mp4#sample=0:40,0,1.8500707e-05,0
21
+ data/videos/normal/adl-28/adl-28-cam0.mp4#sample=0:40,0,0.00063501054,0
22
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=0:40,0,0.0037459473,0
23
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=10:50,0,0.002324134,0
24
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=20:60,0,0.0001870078,0
25
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=27:67,0,8.778199e-06,0
26
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=30:70,0,0.0023080045,0
27
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=40:80,0,0.0005286265,0
28
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=50:90,0,0.00027970385,0
29
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=60:100,0,3.850741e-05,0
30
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=70:110,0,5.7593948e-06,0
artifacts/experiments/urfd_repeated/seed_123/logistic_regression/roc_curve.png ADDED
artifacts/experiments/urfd_repeated/seed_123/model_comparison.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_gru/confusion_matrix.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_gru/metrics.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.896551724137931,
3
+ "precision": 1.0,
4
+ "recall": 0.7,
5
+ "specificity": 1.0,
6
+ "f1": 0.8235294117647058,
7
+ "roc_auc": 1.0,
8
+ "threshold": 0.5,
9
+ "tn": 19,
10
+ "fp": 0,
11
+ "fn": 3,
12
+ "tp": 7,
13
+ "n_samples": 29,
14
+ "model": "pose_gru",
15
+ "architecture": "gru",
16
+ "seed": 123,
17
+ "device": "cuda",
18
+ "device_name": "NVIDIA GeForce RTX 4090",
19
+ "torch_version": "2.11.0+cu128",
20
+ "torch_cuda_version": "12.8",
21
+ "epochs_completed": 17,
22
+ "best_val_loss": 0.23604731541126966,
23
+ "training_seconds": 0.8119248779985355,
24
+ "parameters": 79489,
25
+ "dataset": "data/processed/urfd_pose.npz",
26
+ "split": {
27
+ "train": {
28
+ "samples": 134,
29
+ "groups": 38,
30
+ "normal": 114,
31
+ "fall": 20
32
+ },
33
+ "validation": {
34
+ "samples": 37,
35
+ "groups": 13,
36
+ "normal": 31,
37
+ "fall": 6
38
+ },
39
+ "test": {
40
+ "samples": 29,
41
+ "groups": 13,
42
+ "normal": 19,
43
+ "fall": 10
44
+ }
45
+ },
46
+ "result_scope": "test set only"
47
+ }
artifacts/experiments/urfd_repeated/seed_123/pose_gru/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c91fe38a28796056c69422102d51630e1bd7676c105cdc5353d94bf597985504
3
+ size 325083
artifacts/experiments/urfd_repeated/seed_123/pose_gru/predictions.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.35767898,0
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9803091,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.99202967,1
5
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=0:40,1,0.55568933,1
6
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=10:50,1,0.35436755,0
7
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=11:51,1,0.32558507,0
8
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.988262,1
9
+ data/videos/fall/fall-13/fall-13-cam0.mp4#sample=0:40,1,0.8008202,1
10
+ data/videos/fall/fall-16/fall-16-cam0.mp4#sample=0:40,1,0.9947249,1
11
+ data/videos/fall/fall-29/fall-29-cam0.mp4#sample=0:40,1,0.9605884,1
12
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=20:60,0,0.0071825925,0
13
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=30:70,0,0.011605739,0
14
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=40:80,0,0.08605945,0
15
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=10:50,0,0.028078236,0
16
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=20:60,0,0.0039135297,0
17
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=30:70,0,0.008724526,0
18
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=40:80,0,0.222154,0
19
+ data/videos/normal/adl-24/adl-24-cam0.mp4#sample=0:40,0,0.022441126,0
20
+ data/videos/normal/adl-25/adl-25-cam0.mp4#sample=0:40,0,0.024359005,0
21
+ data/videos/normal/adl-28/adl-28-cam0.mp4#sample=0:40,0,0.032382514,0
22
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=0:40,0,0.04610334,0
23
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=10:50,0,0.015914852,0
24
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=20:60,0,0.008139296,0
25
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=27:67,0,0.005882212,0
26
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=30:70,0,0.0040533254,0
27
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=40:80,0,0.0072238776,0
28
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=50:90,0,0.013535955,0
29
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=60:100,0,0.012939351,0
30
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=70:110,0,0.010590921,0
artifacts/experiments/urfd_repeated/seed_123/pose_gru/roc_curve.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_gru/training_curve.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/confusion_matrix.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/metrics.json ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "accuracy": 0.896551724137931,
3
+ "precision": 1.0,
4
+ "recall": 0.7,
5
+ "specificity": 1.0,
6
+ "f1": 0.8235294117647058,
7
+ "roc_auc": 0.9210526315789473,
8
+ "threshold": 0.5,
9
+ "tn": 19,
10
+ "fp": 0,
11
+ "fn": 3,
12
+ "tp": 7,
13
+ "n_samples": 29,
14
+ "model": "pose_tcn",
15
+ "architecture": "tcn",
16
+ "seed": 123,
17
+ "device": "cuda",
18
+ "device_name": "NVIDIA GeForce RTX 4090",
19
+ "torch_version": "2.11.0+cu128",
20
+ "torch_cuda_version": "12.8",
21
+ "epochs_completed": 46,
22
+ "best_val_loss": 0.1802956284955144,
23
+ "training_seconds": 1.74490802299988,
24
+ "parameters": 12929,
25
+ "dataset": "data/processed/urfd_pose.npz",
26
+ "split": {
27
+ "train": {
28
+ "samples": 134,
29
+ "groups": 38,
30
+ "normal": 114,
31
+ "fall": 20
32
+ },
33
+ "validation": {
34
+ "samples": 37,
35
+ "groups": 13,
36
+ "normal": 31,
37
+ "fall": 6
38
+ },
39
+ "test": {
40
+ "samples": 29,
41
+ "groups": 13,
42
+ "normal": 19,
43
+ "fall": 10
44
+ }
45
+ },
46
+ "result_scope": "test set only"
47
+ }
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5f786e5f887d472b172da34dbcabe2ebd18bf26b9636ef0674d2468bb4ce0ec1
3
+ size 58759
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/predictions.csv ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ source,label,probability_fall,prediction
2
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=0:40,1,0.9182121,1
3
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=10:50,1,0.9761614,1
4
+ data/videos/fall/fall-01/fall-01-cam0.mp4#sample=14:54,1,0.97456235,1
5
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=0:40,1,0.5515729,1
6
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=10:50,1,0.019800719,0
7
+ data/videos/fall/fall-05/fall-05-cam0.mp4#sample=11:51,1,0.013609737,0
8
+ data/videos/fall/fall-06/fall-06-cam0.mp4#sample=0:40,1,0.90002793,1
9
+ data/videos/fall/fall-13/fall-13-cam0.mp4#sample=0:40,1,0.40597087,0
10
+ data/videos/fall/fall-16/fall-16-cam0.mp4#sample=0:40,1,0.9819664,1
11
+ data/videos/fall/fall-29/fall-29-cam0.mp4#sample=0:40,1,0.9849961,1
12
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=20:60,0,0.022150403,0
13
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=30:70,0,0.058020227,0
14
+ data/videos/normal/adl-16/adl-16-cam0.mp4#sample=40:80,0,0.17342727,0
15
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=10:50,0,0.008698789,0
16
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=20:60,0,0.010584317,0
17
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=30:70,0,0.0081666205,0
18
+ data/videos/normal/adl-19/adl-19-cam0.mp4#sample=40:80,0,0.017216044,0
19
+ data/videos/normal/adl-24/adl-24-cam0.mp4#sample=0:40,0,0.03573762,0
20
+ data/videos/normal/adl-25/adl-25-cam0.mp4#sample=0:40,0,0.03528052,0
21
+ data/videos/normal/adl-28/adl-28-cam0.mp4#sample=0:40,0,0.036040433,0
22
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=0:40,0,0.02276568,0
23
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=10:50,0,0.010692995,0
24
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=20:60,0,0.0033858838,0
25
+ data/videos/normal/adl-32/adl-32-cam0.mp4#sample=27:67,0,0.0005006488,0
26
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=30:70,0,0.005397269,0
27
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=40:80,0,0.0040390575,0
28
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=50:90,0,0.0026508006,0
29
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=60:100,0,0.00044848185,0
30
+ data/videos/normal/adl-40/adl-40-cam0.mp4#sample=70:110,0,0.0001873869,0
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/roc_curve.png ADDED
artifacts/experiments/urfd_repeated/seed_123/pose_tcn/training_curve.png ADDED
artifacts/experiments/urfd_repeated/seed_123/random_forest/confusion_matrix.png ADDED