|
Download docs/evaluation_artifact_map.md from NAAZ1605/Real-time-isl-command-recognition: direct link, hf CLI and curl.
- Browser
- Download file 3.7 kB
-
https://huggingface.co/spaces/NAAZ1605/Real-time-isl-command-recognition/resolve/main/docs/evaluation_artifact_map.md
- Command line
-
hf download hf://spaces/NAAZ1605/Real-time-isl-command-recognition/docs/evaluation_artifact_map.md
-
curl -L -o evaluation_artifact_map.md https://huggingface.co/spaces/NAAZ1605/Real-time-isl-command-recognition/resolve/main/docs/evaluation_artifact_map.md
3.7 kB
Evaluation artefacts
This folder documents how the project is evaluated; the measured outputs live in
results/ (so that they stay next to the plots and CSVs the app serves).
Protocol in one page
- Split first, everything else second. The split is fixed and cached before any
model sees data (
datasets/metadata/index_<protocol>.csv).session_disjoint(primary): pools the full INCLUDE-50 pool, allocates whole recording clusters to one split → 652 train / 152 val / 154 test, 0 of 299 clusters spanning a split, all 50 classes in every split.official: AI4Bharat's own train/test files + a seeded, class-stratified, session-aware validation carve-out → 686 / 80 / 192; 199 of 299 clusters span the split, so it is reported as leaking.
- One preprocessing for everyone.
training/preprocess.pywritessequences_<protocol>.npz; the three training scripts read the same file. - Identical training conditions. Same seed, augmentation, callbacks, epochs,
batch size, loss, label smoothing. Each run writes
class_mapping.json,preprocessing_config.json,training_history.json. - Frozen evaluation.
training/evaluate_models.pyscoresX_testwith no test-time augmentation and computes accuracy, macro/weighted P/R/F1, per-class metrics, confusion matrices, parameter counts and single-clip latency. - Perturbation study.
training/robustness.pyapplies 14 conditions to the same frozen tensors and pushes them through the real models. - Gate study.
training/tune_threshold.pysweeps the confidence threshold and reports coverage vs selective accuracy (the shipped 0.70 is a starting point, not a proven optimum).
Where each number comes from
| question | artefact | command |
|---|---|---|
| how good is each model on the leak-free split? | results/summary_metrics.csv, results/per_class_comparison.csv, results/confusion_*.png, results/model_comparison.png |
python training/evaluate_models.py |
| how much does the official split inflate? | results/summary_metrics_official.csv, results/evaluation_summary_official.json |
python training/evaluate_models.py --protocol official |
| which classes fail, and how? | results/per_class_comparison.csv, evaluation_summary_<protocol>.json (top confusions, weakest/strongest classes) |
same as above |
| how fast is inference? | results/latency_comparison.png, latency_ms_*, throughput_fps in summary_metrics.csv |
same as above |
| what breaks the models? | results/robustness_results.csv, results/robustness_degradation.png |
python training/robustness.py (both protocols) |
| what does the confidence gate cost? | results/threshold_sweep.csv, results/threshold_sweep.png |
python training/tune_threshold.py |
| how live behaviour is verified | tests/test_inference.py (gate, smoothing, stability, duplicate suppression, TTS-failure safety) |
python -m pytest tests/test_inference.py -v |
Reporting rules used in this project
- Every number is produced by a run in this repository; nothing is copied from the literature or estimated. Where the original paper reports ≈94.5% for INCLUDE-50, this README states only the difference between the two protocols measured here.
- Baseline and proposed model are named explicitly; the comparison table is the headline result.
- Failures are reported as prominently as successes (13 of 50 classes have zero recall
on the leak-free split; that list is in
docs/evaluation.md§4). - No claim is made about live-camera accuracy, unseen signers or continuous signing —
those were not measured (
docs/evaluation.md§8).