Spaces:
Sleeping
Sleeping
Sync from GitHub via hub-sync
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- README.md +0 -17
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/.gitattributes +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/.gitignore +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/Dockerfile +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/README.md +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/configs/asl_citizen_qwen25vl_3b_qlora.yaml +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/configs/how2sign_qwen25vl_3b_qlora.yaml +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/README.md +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_train.jsonl +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_train.missing_videos.txt +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_val.jsonl +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_val.missing_videos.txt +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/requirements.txt +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/archive_how2sign_experiment.sh +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/compare_results.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/evaluate_asl_citizen.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/evaluate_how2sign.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/make_video_audit.sh +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/prepare_asl_citizen.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/prepare_how2sign.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/run_baseline.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/test_single_video_inference.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/train_qlora.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/__init__.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/datasets.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/io_utils.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/label_utils.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/metrics.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/qwen_video_utils.py +0 -0
- {vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/train_utils.py +0 -0
- presentation/visuals/README.md +3 -10
- presentation/visuals/how2sign_dataset_constraint.png +2 -2
- presentation/visuals/how2sign_dataset_constraint.svg +342 -451
- presentation/visuals/how2sign_plot_metrics.json +0 -24
- presentation/visuals/how2sign_subset_benchmark.png +2 -2
- presentation/visuals/how2sign_subset_benchmark.svg +463 -646
- presentation/visuals/how2sign_top25_class_distribution.png +2 -2
- presentation/visuals/how2sign_top25_class_distribution.svg +0 -0
- presentation/visuals/how2sign_top25_experiment_comparison.png +2 -2
- presentation/visuals/how2sign_top25_experiment_comparison.svg +794 -941
- report/BridgeLink_ASL_Final_Report.pdf +0 -3
- report/figures/how2sign_dataset_constraint.png +0 -3
- report/figures/how2sign_subset_benchmark.png +0 -3
- report/figures/how2sign_top25_class_distribution.png +0 -3
- report/figures/how2sign_top25_experiment_comparison.png +0 -3
- report/figures/vlm_how2sign_metrics.png +0 -0
- report/main.tex +241 -299
- report/references.bib +0 -43
- results/how2sign_top25_dataset_summary.json +9 -5
- results/vlm_how2sign_metrics_summary.json +0 -22
README.md
CHANGED
|
@@ -120,22 +120,6 @@ Report the three comparison numbers: CNN top-1 accuracy, CNN top-5 coverage,
|
|
| 120 |
and VLM-reranked top-5 accuracy. The Transformer result is kept as an optional
|
| 121 |
attention/extra-credit experiment.
|
| 122 |
|
| 123 |
-
## Imported How2Sign VLM Workspace
|
| 124 |
-
|
| 125 |
-
The teammate Qwen2.5-VL fine-tuning workspace is now included directly in this
|
| 126 |
-
repo under `vlm_hf_space/`.
|
| 127 |
-
|
| 128 |
-
That folder preserves:
|
| 129 |
-
|
| 130 |
-
- QLoRA training scripts
|
| 131 |
-
- How2Sign/ASL Citizen prep scripts
|
| 132 |
-
- experiment configs
|
| 133 |
-
- archived baseline vs fine-tuned metrics
|
| 134 |
-
- sample prediction outputs from the Hugging Face Space repo
|
| 135 |
-
|
| 136 |
-
The original source repo was:
|
| 137 |
-
`https://huggingface.co/spaces/ofraij123/ASL-Video-To-Sentence-Translation`
|
| 138 |
-
|
| 139 |
## Wrapper Scaffold
|
| 140 |
|
| 141 |
The repo also includes a sentence-wrapper CLI for phase-3 style comparisons
|
|
@@ -182,7 +166,6 @@ notebooks/
|
|
| 182 |
report/
|
| 183 |
main.tex CVPR-style project report
|
| 184 |
references.bib Bibliography
|
| 185 |
-
vlm_hf_space/ Imported Qwen2.5-VL workspace from Hugging Face Space
|
| 186 |
docs/ Architecture notes, phase plans, literature review
|
| 187 |
tests/ Unit tests
|
| 188 |
```
|
|
|
|
| 120 |
and VLM-reranked top-5 accuracy. The Transformer result is kept as an optional
|
| 121 |
attention/extra-credit experiment.
|
| 122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
## Wrapper Scaffold
|
| 124 |
|
| 125 |
The repo also includes a sentence-wrapper CLI for phase-3 style comparisons
|
|
|
|
| 166 |
report/
|
| 167 |
main.tex CVPR-style project report
|
| 168 |
references.bib Bibliography
|
|
|
|
| 169 |
docs/ Architecture notes, phase plans, literature review
|
| 170 |
tests/ Unit tests
|
| 171 |
```
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/.gitattributes
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/.gitignore
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/Dockerfile
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/README.md
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/configs/asl_citizen_qwen25vl_3b_qlora.yaml
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/configs/how2sign_qwen25vl_3b_qlora.yaml
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/README.md
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_train.jsonl
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_train.missing_videos.txt
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_val.jsonl
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/data/how2sign_val.missing_videos.txt
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/requirements.txt
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/archive_how2sign_experiment.sh
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/compare_results.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/evaluate_asl_citizen.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/evaluate_how2sign.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/make_video_audit.sh
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/prepare_asl_citizen.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/prepare_how2sign.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/run_baseline.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/test_single_video_inference.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/scripts/train_qlora.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/__init__.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/datasets.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/io_utils.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/label_utils.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/metrics.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/qwen_video_utils.py
RENAMED
|
File without changes
|
{vlm_hf_space → VLM/ASL-Video-To-Sentence-Translation}/src/train_utils.py
RENAMED
|
File without changes
|
presentation/visuals/README.md
CHANGED
|
@@ -9,9 +9,9 @@ Generated slide-ready visuals for BridgeLink ASL.
|
|
| 9 |
- `cnn_vs_vlm_comparison.svg`: final comparison numbers for the presentation
|
| 10 |
- `metrics-summary.json`: source values used to render the comparison slide
|
| 11 |
- `how2sign_dataset_constraint.(png|svg)`: explains why the full 31k How2Sign clips cannot be used as sentence classes
|
| 12 |
-
- `how2sign_subset_benchmark.(png|svg)`: Top-12
|
| 13 |
-
- `how2sign_top25_class_distribution.(png|svg)`: class imbalance view for the
|
| 14 |
-
- `how2sign_top25_experiment_comparison.(png|svg)`: comparison of the Top-25 baseline,
|
| 15 |
- `how2sign_plot_metrics.json`: source values used by the matplotlib How2Sign plots
|
| 16 |
|
| 17 |
## Current values
|
|
@@ -29,10 +29,3 @@ Generated slide-ready visuals for BridgeLink ASL.
|
|
| 29 |
python scripts\generate_presentation_visuals.py
|
| 30 |
python scripts\generate_how2sign_presentation_plots.py
|
| 31 |
```
|
| 32 |
-
|
| 33 |
-
## Current How2Sign 3D CNN values
|
| 34 |
-
|
| 35 |
-
- Top-12 test accuracy: 14.7%
|
| 36 |
-
- Top-25 test accuracy: 20.8%
|
| 37 |
-
- Top-25 normalized test accuracy: 27.8%
|
| 38 |
-
- Top-25 normalized classes: 21
|
|
|
|
| 9 |
- `cnn_vs_vlm_comparison.svg`: final comparison numbers for the presentation
|
| 10 |
- `metrics-summary.json`: source values used to render the comparison slide
|
| 11 |
- `how2sign_dataset_constraint.(png|svg)`: explains why the full 31k How2Sign clips cannot be used as sentence classes
|
| 12 |
+
- `how2sign_subset_benchmark.(png|svg)`: Top-12 versus Top-25 benchmark growth and accuracy
|
| 13 |
+
- `how2sign_top25_class_distribution.(png|svg)`: class imbalance view for the current Top-25 subset
|
| 14 |
+
- `how2sign_top25_experiment_comparison.(png|svg)`: comparison of the Top-25 baseline, continued training, and balanced-weight experiments
|
| 15 |
- `how2sign_plot_metrics.json`: source values used by the matplotlib How2Sign plots
|
| 16 |
|
| 17 |
## Current values
|
|
|
|
| 29 |
python scripts\generate_presentation_visuals.py
|
| 30 |
python scripts\generate_how2sign_presentation_plots.py
|
| 31 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
presentation/visuals/how2sign_dataset_constraint.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation/visuals/how2sign_dataset_constraint.svg
CHANGED
|
|
|
|
presentation/visuals/how2sign_plot_metrics.json
CHANGED
|
@@ -34,11 +34,6 @@
|
|
| 34 |
"label": "Top-25 subset",
|
| 35 |
"clip_count": 479,
|
| 36 |
"class_count": 25
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"label": "Top-25 normalized",
|
| 40 |
-
"clip_count": 479,
|
| 41 |
-
"class_count": 21
|
| 42 |
}
|
| 43 |
],
|
| 44 |
"benchmark_stats": [
|
|
@@ -65,18 +60,6 @@
|
|
| 65 |
"test_accuracy": 0.2083333283662796,
|
| 66 |
"val_loss": 2.953240394592285,
|
| 67 |
"test_loss": 2.8787331581115723
|
| 68 |
-
},
|
| 69 |
-
{
|
| 70 |
-
"name": "Top-25 normalized",
|
| 71 |
-
"total_clips": 479,
|
| 72 |
-
"num_classes": 21,
|
| 73 |
-
"train_clips": 335,
|
| 74 |
-
"val_clips": 72,
|
| 75 |
-
"test_clips": 72,
|
| 76 |
-
"val_accuracy": 0.1944444477558136,
|
| 77 |
-
"test_accuracy": 0.2777777910232544,
|
| 78 |
-
"val_loss": 2.7069199085235596,
|
| 79 |
-
"test_loss": 2.5848894119262695
|
| 80 |
}
|
| 81 |
],
|
| 82 |
"experiment_stats": [
|
|
@@ -87,13 +70,6 @@
|
|
| 87 |
"test_accuracy": 0.2083333283662796,
|
| 88 |
"test_loss": 2.8787331581115723
|
| 89 |
},
|
| 90 |
-
{
|
| 91 |
-
"name": "Top-25 normalized",
|
| 92 |
-
"training_change": "merged duplicate labels",
|
| 93 |
-
"val_accuracy": 0.1944444477558136,
|
| 94 |
-
"test_accuracy": 0.2777777910232544,
|
| 95 |
-
"test_loss": 2.5848894119262695
|
| 96 |
-
},
|
| 97 |
{
|
| 98 |
"name": "Top-25 continued",
|
| 99 |
"training_change": "18 more epochs",
|
|
|
|
| 34 |
"label": "Top-25 subset",
|
| 35 |
"clip_count": 479,
|
| 36 |
"class_count": 25
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
}
|
| 38 |
],
|
| 39 |
"benchmark_stats": [
|
|
|
|
| 60 |
"test_accuracy": 0.2083333283662796,
|
| 61 |
"val_loss": 2.953240394592285,
|
| 62 |
"test_loss": 2.8787331581115723
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
}
|
| 64 |
],
|
| 65 |
"experiment_stats": [
|
|
|
|
| 70 |
"test_accuracy": 0.2083333283662796,
|
| 71 |
"test_loss": 2.8787331581115723
|
| 72 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
{
|
| 74 |
"name": "Top-25 continued",
|
| 75 |
"training_change": "18 more epochs",
|
presentation/visuals/how2sign_subset_benchmark.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation/visuals/how2sign_subset_benchmark.svg
CHANGED
|
|
|
|
presentation/visuals/how2sign_top25_class_distribution.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation/visuals/how2sign_top25_class_distribution.svg
CHANGED
|
|
|
|
presentation/visuals/how2sign_top25_experiment_comparison.png
CHANGED
|
Git LFS Details
|
|
Git LFS Details
|
presentation/visuals/how2sign_top25_experiment_comparison.svg
CHANGED
|
|
|
|
report/BridgeLink_ASL_Final_Report.pdf
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:ed317f29207a8db5859dcaeb49d11df80fec0eda95e7aa40d6cb75511547e691
|
| 3 |
-
size 923924
|
|
|
|
|
|
|
|
|
|
|
|
report/figures/how2sign_dataset_constraint.png
DELETED
Git LFS Details
|
report/figures/how2sign_subset_benchmark.png
DELETED
Git LFS Details
|
report/figures/how2sign_top25_class_distribution.png
DELETED
Git LFS Details
|
report/figures/how2sign_top25_experiment_comparison.png
DELETED
Git LFS Details
|
report/figures/vlm_how2sign_metrics.png
DELETED
|
Binary file (48.5 kB)
|
|
|
report/main.tex
CHANGED
|
@@ -1,361 +1,303 @@
|
|
| 1 |
-
% BridgeLink ASL
|
| 2 |
-
% ITCS 4152/5010
|
| 3 |
-
%
|
| 4 |
-
% pdflatex main.tex ; bibtex main ; pdflatex main.tex ; pdflatex main.tex
|
| 5 |
|
| 6 |
\documentclass[10pt,twocolumn,letterpaper]{article}
|
| 7 |
|
| 8 |
-
\usepackage[
|
| 9 |
\usepackage{graphicx}
|
| 10 |
\usepackage{amsmath}
|
| 11 |
\usepackage{amssymb}
|
| 12 |
\usepackage{booktabs}
|
| 13 |
\usepackage{url}
|
| 14 |
\usepackage{hyperref}
|
|
|
|
| 15 |
|
| 16 |
-
\
|
| 17 |
-
|
| 18 |
-
}
|
| 19 |
-
|
| 20 |
-
\setlength{\parskip}{0.35em}
|
| 21 |
-
\setlength{\parindent}{0pt}
|
| 22 |
|
| 23 |
-
\title{
|
| 24 |
|
| 25 |
-
\author{
|
| 26 |
-
Dalen Gordon \quad Ervin Gordon III \quad Frank Garcia \quad Omar Fraij\\
|
| 27 |
-
University of North Carolina at Charlotte\\
|
| 28 |
-
ITCS 4152/5010 -- Introduction to Computer Vision, Spring 2026
|
|
|
|
| 29 |
}
|
| 30 |
|
| 31 |
-
\date{}
|
| 32 |
-
|
| 33 |
\begin{document}
|
| 34 |
\maketitle
|
| 35 |
|
|
|
|
| 36 |
\begin{abstract}
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
\end{abstract}
|
| 39 |
|
|
|
|
| 40 |
\section{Introduction}
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
\begin{itemize}
|
| 48 |
-
\item A
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
\item A
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
| 54 |
\end{itemize}
|
| 55 |
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
\
|
| 59 |
-
|
| 60 |
-
\
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
\
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
\
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
\
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
Repeated at least 8 times & 531 & 26 \\
|
| 100 |
-
Top-12 repeated subset & 218 & 12 \\
|
| 101 |
-
Top-25 repeated subset & 479 & 25 \\
|
| 102 |
-
Top-25 normalized subset & 479 & 21 \\
|
| 103 |
-
\bottomrule
|
| 104 |
-
\end{tabular}
|
| 105 |
-
\caption{How2Sign sentence-label sparsity. Most full sentence labels occur once, so the supervised CNN was trained on repeated sentence subsets.}
|
| 106 |
-
\label{tab:how2sign-subsets}
|
| 107 |
-
\end{table}
|
| 108 |
|
| 109 |
\begin{figure}[t]
|
| 110 |
\centering
|
| 111 |
-
\includegraphics[width=\linewidth]{figures/
|
| 112 |
-
\caption{
|
| 113 |
-
\label{fig:
|
| 114 |
\end{figure}
|
| 115 |
|
| 116 |
\begin{figure}[t]
|
| 117 |
\centering
|
| 118 |
-
\includegraphics[width=\linewidth]{figures/
|
| 119 |
-
\caption{
|
| 120 |
-
|
|
|
|
| 121 |
\end{figure}
|
| 122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
\section{Method}
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
\
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
\
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
\
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
\
|
| 188 |
-
|
| 189 |
-
The
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
\
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
\subsection{Splits}
|
| 202 |
-
|
| 203 |
-
The final How2Sign normalized sentence dataset contains 479 clips across 21 normalized sentence labels. The split used for the final 3D CNN is:
|
| 204 |
-
\begin{itemize}
|
| 205 |
-
\item Training: 335 clips.
|
| 206 |
-
\item Validation: 72 clips.
|
| 207 |
-
\item Test: 72 clips.
|
| 208 |
-
\end{itemize}
|
| 209 |
-
|
| 210 |
-
The WLASL hybrid evaluation subset contains 36 test clips across 22 true labels. It is used to evaluate the landmark CNN and VLM reranking workflow.
|
| 211 |
-
|
| 212 |
-
The imported How2Sign VLM experiment uses prepared JSONL manifests with:
|
| 213 |
-
\begin{itemize}
|
| 214 |
-
\item Training: 500 sampled sentence-video pairs.
|
| 215 |
-
\item Validation / evaluation: 100 sampled sentence-video pairs.
|
| 216 |
-
\end{itemize}
|
| 217 |
-
These clips come from the broader How2Sign sentence corpus and are evaluated with translation metrics rather than classification accuracy.
|
| 218 |
-
|
| 219 |
-
\subsection{Model Variants}
|
| 220 |
-
|
| 221 |
-
We ran several CNN and VLM experiments:
|
| 222 |
-
\begin{itemize}
|
| 223 |
-
\item \textbf{Top-12 repeated subset:} early feasibility test with 218 clips and 12 classes.
|
| 224 |
-
\item \textbf{Top-25 raw subset:} larger closed vocabulary with 479 clips and 25 sentence labels.
|
| 225 |
-
\item \textbf{Top-25 normalized subset:} duplicate-label merge that reduces the label space to 21 classes.
|
| 226 |
-
\item \textbf{Continued training:} additional epochs from the top-25 checkpoint.
|
| 227 |
-
\item \textbf{Class weighting:} balanced class weights to compensate for label imbalance.
|
| 228 |
-
\item \textbf{How2Sign VLM baseline:} zero-shot Qwen2.5-VL-3B evaluation on 100 validation clips.
|
| 229 |
-
\item \textbf{How2Sign VLM QLoRA fine-tune:} 1 epoch of adapter training on 500 training clips, evaluated on the same 100 validation clips.
|
| 230 |
-
\end{itemize}
|
| 231 |
-
|
| 232 |
-
\section{Results}
|
| 233 |
-
|
| 234 |
-
\subsection{Working Model Output}
|
| 235 |
-
|
| 236 |
-
The final application produces sensible output in three ways. The live webcam tab displays stabilized word predictions from the landmark CNN. The upload tab returns word-level predictions with confidence values. The How2Sign sentence tab returns a sentence-level best match from the 3D CNN sentence model or withholds the caption if the result is not confident enough. This satisfies the modeling requirement that the system accepts input and produces interpretable output.
|
| 237 |
-
|
| 238 |
-
\subsection{Quantitative Results}
|
| 239 |
-
|
| 240 |
-
Table~\ref{tab:overall-results} gives the classification-side evaluation results. The best 3D CNN is the normalized How2Sign top-25 model. Its accuracy is not high in an absolute sense, but it is better than the raw top-25 and top-12 sentence baselines and is trained on full sentence video clips. The VLM results are reported separately because they are translation metrics rather than class-accuracy metrics.
|
| 241 |
-
|
| 242 |
-
\begin{table}[t]
|
| 243 |
-
\centering
|
| 244 |
-
\small
|
| 245 |
-
\resizebox{\linewidth}{!}{%
|
| 246 |
-
\begin{tabular}{lrrrr}
|
| 247 |
-
\toprule
|
| 248 |
-
Model / Track & Eval clips & Classes & Accuracy & Macro F1 \\
|
| 249 |
-
\midrule
|
| 250 |
-
WLASL landmark CNN top-1 & 36 & 22 true & 25.0\% & 15.1\% \\
|
| 251 |
-
WLASL VLM rerank & 36 & 22 true & 25.0\% & -- \\
|
| 252 |
-
How2Sign 3D CNN normalized & 72 & 21 & 27.8\% & 6.0\% \\
|
| 253 |
-
\bottomrule
|
| 254 |
-
\end{tabular}
|
| 255 |
-
}
|
| 256 |
-
\caption{Primary classification results. The WLASL branch is word-level; the How2Sign branch is sentence-level RGB video classification.}
|
| 257 |
-
\label{tab:overall-results}
|
| 258 |
-
\end{table}
|
| 259 |
-
|
| 260 |
-
\begin{table}[t]
|
| 261 |
-
\centering
|
| 262 |
-
\small
|
| 263 |
-
\resizebox{\linewidth}{!}{%
|
| 264 |
-
\begin{tabular}{lrrrrr}
|
| 265 |
-
\toprule
|
| 266 |
-
How2Sign experiment & Classes & Train & Val & Test & Test acc. \\
|
| 267 |
-
\midrule
|
| 268 |
-
Top-12 repeated & 12 & 150 & 34 & 34 & 14.7\% \\
|
| 269 |
-
Top-25 raw & 25 & 335 & 72 & 72 & 20.8\% \\
|
| 270 |
-
Top-25 normalized & 21 & 335 & 72 & 72 & \textbf{27.8\%} \\
|
| 271 |
-
Top-25 continued & 25 & 335 & 72 & 72 & 18.1\% \\
|
| 272 |
-
Top-25 weighted & 25 & 335 & 72 & 72 & 13.9\% \\
|
| 273 |
-
\bottomrule
|
| 274 |
-
\end{tabular}
|
| 275 |
-
}
|
| 276 |
-
\caption{Sentence-level 3D CNN ablation results. Label normalization gave the strongest held-out test accuracy.}
|
| 277 |
-
\label{tab:how2sign-results}
|
| 278 |
-
\end{table}
|
| 279 |
|
| 280 |
\begin{table}[t]
|
| 281 |
\centering
|
| 282 |
\small
|
| 283 |
-
\
|
| 284 |
-
\begin{tabular}{lrrrr}
|
| 285 |
\toprule
|
| 286 |
-
|
| 287 |
\midrule
|
| 288 |
-
|
| 289 |
-
|
|
|
|
| 290 |
\bottomrule
|
| 291 |
\end{tabular}
|
| 292 |
-
|
| 293 |
-
|
| 294 |
-
|
|
|
|
| 295 |
\end{table}
|
| 296 |
|
| 297 |
\begin{figure}[t]
|
| 298 |
\centering
|
| 299 |
-
\includegraphics[width=\linewidth]{figures/
|
| 300 |
-
\caption{
|
| 301 |
-
\label{fig:
|
| 302 |
-
\end{figure}
|
| 303 |
-
|
| 304 |
-
\begin{figure}[t]
|
| 305 |
-
\centering
|
| 306 |
-
\includegraphics[width=\linewidth]{figures/how2sign_top25_experiment_comparison.png}
|
| 307 |
-
\caption{3D CNN experiment comparison. The normalized sentence labels produced the best test accuracy.}
|
| 308 |
-
\label{fig:experiment-comparison}
|
| 309 |
\end{figure}
|
| 310 |
|
| 311 |
\begin{figure}[t]
|
| 312 |
\centering
|
| 313 |
-
\includegraphics[width=\linewidth]{figures/
|
| 314 |
-
\caption{
|
| 315 |
-
\label{fig:
|
| 316 |
\end{figure}
|
| 317 |
|
| 318 |
-
\
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
The imported VLM experiment shows the opposite tradeoff. Because the VLM predicts open-ended text, it can be trained on sentence-video pairs without repeated class labels. This makes it the more principled approach for full paragraph-level or free-form sentence translation. However, the archived fine-tuning run is still compute-limited and data-limited: it uses only 500 training clips and 100 evaluation clips, and the resulting BLEU / chrF / ROUGE-L scores remain low even though they improve over the base model. Qualitative predictions reveal another challenge: the model often produces generic instructional language or safety-style refusal text instead of grounded translations.
|
| 325 |
-
|
| 326 |
-
Class weighting and continued training did not improve the final 3D CNN result. This suggests the bottleneck is not simply undertraining. The harder problem is limited repeated sentence data, visual similarity between short phrases, and the fact that English sentence labels do not always align perfectly with ASL timing. In short, the CNN is the stronger short-phrase closed-vocabulary baseline, while the VLM is the architecture that scales more naturally to unrestricted sentence translation.
|
| 327 |
-
|
| 328 |
-
\subsection{Qualitative Results and Demo}
|
| 329 |
|
| 330 |
-
|
| 331 |
-
|
| 332 |
-
|
| 333 |
-
|
| 334 |
-
|
| 335 |
-
|
| 336 |
-
The current 3D CNN satisfies the requirement of using video clips of full ASL sentences, but it is a closed-vocabulary sentence classifier. It cannot read arbitrary paragraphs of sign language. To use all 31,047 clips effectively, the training objective would need to change from sentence-class classification to a video-to-text or contrastive video-text objective. The VLM branch already moves in that direction, but the current QLoRA run is too small to be competitive yet.
|
| 337 |
-
|
| 338 |
-
Accuracy could be improved by:
|
| 339 |
-
\begin{itemize}
|
| 340 |
-
\item Expanding the repeated-label subset with more clips per sentence class for the CNN branch.
|
| 341 |
-
\item Using signer-aware or source-aware train/test splits when signer metadata is available.
|
| 342 |
-
\item Fine-tuning a pretrained video backbone instead of training a small 3D CNN from scratch.
|
| 343 |
-
\item Combining RGB frames with landmark or pose streams to reduce background and clothing sensitivity.
|
| 344 |
-
\item Training the VLM on a much larger portion of How2Sign instead of the current 500/100 sample budget.
|
| 345 |
-
\item Evaluating with additional translation metrics and human judgment to better judge semantic correctness.
|
| 346 |
-
\item Training a retrieval model that uses sentence text embeddings instead of requiring every sentence to be a separate class.
|
| 347 |
-
\end{itemize}
|
| 348 |
|
|
|
|
| 349 |
\section{Conclusion}
|
|
|
|
| 350 |
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
|
|
|
|
|
|
|
|
|
| 354 |
|
| 355 |
-
We thank the creators of WLASL
|
|
|
|
|
|
|
| 356 |
|
|
|
|
| 357 |
{\small
|
| 358 |
-
\bibliographystyle{
|
| 359 |
\bibliography{references}
|
| 360 |
}
|
| 361 |
|
|
|
|
| 1 |
+
% BridgeLink ASL — CVPR 2024 camera-ready style
|
| 2 |
+
% ITCS 4152/5010 Final Project Report, Spring 2026
|
| 3 |
+
% This file drops into the cvpr2024-author_kit (camera-ready version).
|
| 4 |
+
% Compile with: pdflatex main.tex ; bibtex main ; pdflatex main.tex ; pdflatex main.tex
|
| 5 |
|
| 6 |
\documentclass[10pt,twocolumn,letterpaper]{article}
|
| 7 |
|
| 8 |
+
\usepackage[review]{cvpr} % change to \usepackage{cvpr} for camera-ready
|
| 9 |
\usepackage{graphicx}
|
| 10 |
\usepackage{amsmath}
|
| 11 |
\usepackage{amssymb}
|
| 12 |
\usepackage{booktabs}
|
| 13 |
\usepackage{url}
|
| 14 |
\usepackage{hyperref}
|
| 15 |
+
\usepackage[capitalize]{cleveref}
|
| 16 |
|
| 17 |
+
\def\cvprPaperID{****}
|
| 18 |
+
\def\confName{CVPR}
|
| 19 |
+
\def\confYear{2024}
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
+
\title{BridgeLink ASL: CNN and Vision-Language Model Comparison\\ for Word-Level American Sign Language Recognition}
|
| 22 |
|
| 23 |
+
\author{%
|
| 24 |
+
Dalen Gordon \quad Ervin Gordon III \quad Frank Garcia \quad Omar Fraij \\
|
| 25 |
+
University of North Carolina at Charlotte \\
|
| 26 |
+
ITCS 4152/5010 --- Introduction to Computer Vision, Spring 2026 \\
|
| 27 |
+
{\tt\small \{dgordo34, egordo17, fgarci11, ofraij\}@charlotte.edu}
|
| 28 |
}
|
| 29 |
|
|
|
|
|
|
|
| 30 |
\begin{document}
|
| 31 |
\maketitle
|
| 32 |
|
| 33 |
+
% -----------------------------------------------------------------------------
|
| 34 |
\begin{abstract}
|
| 35 |
+
Communication barriers between Deaf and hearing communities remain a significant
|
| 36 |
+
accessibility challenge despite the availability of human interpreters and
|
| 37 |
+
captioning services. We present \textbf{BridgeLink ASL}, a real-time system for
|
| 38 |
+
word-level American Sign Language (ASL) recognition that runs on a standard
|
| 39 |
+
consumer laptop and a free Hugging Face Space. Our approach decomposes the
|
| 40 |
+
problem into (i) pose and hand landmark extraction using MediaPipe Holistic and
|
| 41 |
+
(ii) temporal classification with a lightweight temporal convolutional neural
|
| 42 |
+
network (CNN). We compare this trained CNN against a zero-shot vision-language
|
| 43 |
+
model (VLM) reranking workflow in which the VLM chooses from the CNN's top-5
|
| 44 |
+
candidate labels. Training on the WLASL-100 subset, our CNN reaches TODO\% top-1
|
| 45 |
+
and TODO\% top-5 accuracy on the held-out test set, and the VLM reranker reaches
|
| 46 |
+
TODO\% accuracy on a WLASL-25 held-out evaluation set. We keep a Transformer
|
| 47 |
+
encoder as an additional attention-based experiment, but the primary comparison
|
| 48 |
+
is CNN versus VLM-assisted reranking.
|
| 49 |
\end{abstract}
|
| 50 |
|
| 51 |
+
% -----------------------------------------------------------------------------
|
| 52 |
\section{Introduction}
|
| 53 |
+
\label{sec:intro}
|
| 54 |
+
|
| 55 |
+
American Sign Language is the primary language of an estimated half-million
|
| 56 |
+
Deaf individuals in the United States and an even larger community of signers
|
| 57 |
+
worldwide. In everyday settings --- classrooms, clinics, retail, transit ---
|
| 58 |
+
real-time ASL-to-English translation is rarely available, and the burden of
|
| 59 |
+
communication typically falls on the Deaf individual. Computer vision offers a
|
| 60 |
+
path to ambient, always-available translation tools that do not require human
|
| 61 |
+
interpreters or specialized hardware.
|
| 62 |
+
|
| 63 |
+
In this work we focus on \emph{word-level} recognition (also called isolated
|
| 64 |
+
sign recognition): given a short video of a signer producing one sign, predict
|
| 65 |
+
the corresponding English gloss. Word-level recognition is a necessary
|
| 66 |
+
building block for more ambitious continuous-translation systems and is
|
| 67 |
+
well-suited to a course-length project because of the availability of clean
|
| 68 |
+
benchmarks, mature feature extractors, and the ability to run and demo the
|
| 69 |
+
final system live in a classroom.
|
| 70 |
+
|
| 71 |
+
Our contributions are:
|
| 72 |
\begin{itemize}
|
| 73 |
+
\item A complete, reproducible pipeline for WLASL-100 word-level ASL
|
| 74 |
+
recognition using MediaPipe Holistic landmarks and a lightweight temporal
|
| 75 |
+
CNN, trainable end-to-end on a single free-tier GPU.
|
| 76 |
+
\item A Gradio-based Hugging Face Space that serves the model with both
|
| 77 |
+
live webcam streaming and uploaded-clip inference, including sliding-window
|
| 78 |
+
temporal smoothing and text-to-speech output.
|
| 79 |
+
\item A CNN versus VLM comparison: the CNN provides top-5 sign candidates,
|
| 80 |
+
and a pretrained VLM reranks those candidates from the original video clip
|
| 81 |
+
without task-specific VLM fine-tuning.
|
| 82 |
\end{itemize}
|
| 83 |
|
| 84 |
+
% -----------------------------------------------------------------------------
|
| 85 |
+
\section{Related Work}
|
| 86 |
+
\label{sec:related}
|
| 87 |
+
|
| 88 |
+
\paragraph{Isolated sign recognition.} WLASL~\cite{li2020wlasl} established a
|
| 89 |
+
large-scale word-level ASL benchmark with 2,000 glosses and standardized
|
| 90 |
+
WLASL-100/300/1000/2000 subsets; they also introduced I3D and Pose-TGCN
|
| 91 |
+
baselines. Follow-up work such as Sign Pose-based
|
| 92 |
+
Transformer~\cite{boha2021signpose} and SL-GCN~\cite{jiang2021slgcn} demonstrated
|
| 93 |
+
that skeleton-only models can match or exceed pixel-based methods while being
|
| 94 |
+
substantially more efficient.
|
| 95 |
+
|
| 96 |
+
\paragraph{Landmark-based recognition.} MediaPipe
|
| 97 |
+
Holistic~\cite{grishchenko2020mediapipe} provides a reliable, freely available
|
| 98 |
+
pose and hand estimator that runs in real time on CPU, which has made
|
| 99 |
+
landmark-based sign classification practical outside research labs.
|
| 100 |
+
|
| 101 |
+
\paragraph{Sign language transformers.} Camgoz et
|
| 102 |
+
al.~\cite{camgoz2020signtransformer} introduced the Sign Language Transformer
|
| 103 |
+
for joint recognition and translation on continuous sign. Although our task
|
| 104 |
+
scope is word-level, we borrow the basic idea of treating per-frame features
|
| 105 |
+
as a sequence and applying a Transformer encoder with a classification token.
|
| 106 |
+
|
| 107 |
+
% Replace the citation keys in references.bib. Five papers = 1 per team member.
|
| 108 |
+
|
| 109 |
+
% -----------------------------------------------------------------------------
|
| 110 |
+
\section{Dataset}
|
| 111 |
+
\label{sec:dataset}
|
| 112 |
+
|
| 113 |
+
\paragraph{WLASL-100.} We use the WLASL-100 subset of the Word-Level ASL
|
| 114 |
+
dataset~\cite{li2020wlasl}, which consists of the 100 most frequent glosses
|
| 115 |
+
from WLASL-2000. Each class contains approximately 15--20 short clips taken
|
| 116 |
+
from public ASL instructional videos and compiled into a single benchmark with
|
| 117 |
+
author-provided train/validation/test splits that avoid signer overlap across
|
| 118 |
+
splits. We obtain the pre-processed video mirror from a public Kaggle dataset
|
| 119 |
+
to avoid the YouTube link-rot that affects the official download script.
|
| 120 |
+
|
| 121 |
+
\paragraph{Dataset properties.} After removing clips whose videos are no longer
|
| 122 |
+
available, our working set contains TODO\_TRAIN training clips, TODO\_VAL
|
| 123 |
+
validation clips, and TODO\_TEST test clips across TODO\_CLASSES classes. We
|
| 124 |
+
retain the official WLASL split assignment so that our reported numbers are
|
| 125 |
+
directly comparable to prior work. \Cref{fig:classdist} and
|
| 126 |
+
\cref{fig:splitdist} summarize class and split distributions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
\begin{figure}[t]
|
| 129 |
\centering
|
| 130 |
+
\includegraphics[width=\linewidth]{figures/class_distribution.png}
|
| 131 |
+
\caption{Top-30 class distribution in our working WLASL-100 split.}
|
| 132 |
+
\label{fig:classdist}
|
| 133 |
\end{figure}
|
| 134 |
|
| 135 |
\begin{figure}[t]
|
| 136 |
\centering
|
| 137 |
+
\includegraphics[width=0.8\linewidth]{figures/split_distribution.png}
|
| 138 |
+
\caption{Official train/validation/test split sizes retained in our
|
| 139 |
+
subset after accounting for unavailable videos.}
|
| 140 |
+
\label{fig:splitdist}
|
| 141 |
\end{figure}
|
| 142 |
|
| 143 |
+
\paragraph{Annotation and licensing.} WLASL provides per-clip gloss labels,
|
| 144 |
+
temporal bounds (\texttt{frame\_start}, \texttt{frame\_end}), signer bounding
|
| 145 |
+
boxes, and subset membership tags. The dataset is distributed under the
|
| 146 |
+
Computational Use of Data Agreement (C-UDA), permitting academic and
|
| 147 |
+
computational use.
|
| 148 |
+
|
| 149 |
+
\paragraph{Preprocessing.} For each clip we trim to the labeled
|
| 150 |
+
\texttt{[frame\_start, frame\_end]} range, optionally crop to the provided
|
| 151 |
+
signer bounding box, and uniformly sample $T = 32$ frames. Each frame is
|
| 152 |
+
passed through MediaPipe Holistic, yielding 21 left-hand landmarks, 21
|
| 153 |
+
right-hand landmarks, and 33 pose landmarks, each with $(x, y, z)$ coordinates,
|
| 154 |
+
for a total feature vector of dimension $225$. A clip is therefore represented
|
| 155 |
+
as a $(32, 225)$ tensor of floats. Missing hands (which occur for non-dominant
|
| 156 |
+
signs or occlusion) are represented as zero vectors.
|
| 157 |
+
|
| 158 |
+
% -----------------------------------------------------------------------------
|
| 159 |
\section{Method}
|
| 160 |
+
\label{sec:method}
|
| 161 |
+
|
| 162 |
+
\paragraph{Overview.} Our pipeline has three stages: (i) per-frame landmark
|
| 163 |
+
extraction, (ii) sequence-level classification with a temporal CNN, and
|
| 164 |
+
(iii) temporal smoothing at inference time for the live demo. A Transformer
|
| 165 |
+
encoder is retained as an optional attention-based extension.
|
| 166 |
+
|
| 167 |
+
\paragraph{Landmark extraction.} We use MediaPipe Holistic as a frozen
|
| 168 |
+
self-supervised feature extractor. MediaPipe Holistic is trained on large
|
| 169 |
+
amounts of web-scale data with self-supervised signals and provides stable
|
| 170 |
+
hand and pose landmarks at interactive rates on CPU, which makes it practical
|
| 171 |
+
for a free-tier demo. Using landmarks rather than raw pixels has three
|
| 172 |
+
benefits: the input representation is compact, invariant to background and
|
| 173 |
+
lighting, and the downstream model is small enough to train quickly and run
|
| 174 |
+
live on CPU.
|
| 175 |
+
|
| 176 |
+
\paragraph{Landmark CNN.} The landmark sequence $\mathbf{X} \in
|
| 177 |
+
\mathbb{R}^{T \times 225}$ is transposed into a channel-first representation
|
| 178 |
+
and passed through a temporal 1D CNN. The CNN uses batch normalization,
|
| 179 |
+
three convolutional blocks, ReLU activations, dropout, max pooling, and global
|
| 180 |
+
average pooling before a linear classification head. This model is the primary
|
| 181 |
+
trained classifier for the CNN-versus-VLM comparison.
|
| 182 |
+
|
| 183 |
+
\paragraph{Optional Transformer.} To address the attention/modern-methods
|
| 184 |
+
portion of the rubric, we also train an optional Transformer encoder on the
|
| 185 |
+
same MediaPipe landmark tensors. This model is reported as an extension rather
|
| 186 |
+
than the primary professor-facing comparison.
|
| 187 |
+
|
| 188 |
+
\paragraph{Loss and optimization.} We train the CNN with cross-entropy loss
|
| 189 |
+
with label smoothing of 0.1, using the AdamW optimizer with learning rate
|
| 190 |
+
$10^{-3}$, weight decay $10^{-2}$, and a cosine annealing schedule over 50
|
| 191 |
+
epochs. We clip gradients at a max norm of 1.0 and use a batch size of 64.
|
| 192 |
+
|
| 193 |
+
\paragraph{Augmentation.} To combat the relatively small dataset size we apply
|
| 194 |
+
three augmentations at training time: (i) Gaussian jitter on landmark
|
| 195 |
+
coordinates ($\sigma = 0.01$); (ii) horizontal flip, which we implement by
|
| 196 |
+
mirroring the $x$-coordinates of all landmarks and \emph{swapping} the
|
| 197 |
+
left-hand and right-hand blocks, so that a left-handed sign is transformed
|
| 198 |
+
into its right-handed counterpart rather than a physically impossible layout;
|
| 199 |
+
and (iii) random temporal dropout that zeros out a short contiguous window of
|
| 200 |
+
frames, encouraging the model to not rely on any single frame.
|
| 201 |
+
|
| 202 |
+
\paragraph{Inference-time smoothing.} In the live demo we maintain a rolling
|
| 203 |
+
buffer of the most recent $32$ frames and run the model every $4$ frames
|
| 204 |
+
(stride 4). A predicted sign is only emitted when its confidence exceeds
|
| 205 |
+
$\tau = 0.35$ and the same top-1 prediction has been produced on at least
|
| 206 |
+
$K = 2$ consecutive runs. This prevents spurious single-frame predictions
|
| 207 |
+
from appearing in the output caption.
|
| 208 |
+
|
| 209 |
+
% -----------------------------------------------------------------------------
|
| 210 |
+
\section{Experiments}
|
| 211 |
+
\label{sec:experiments}
|
| 212 |
+
|
| 213 |
+
\paragraph{Implementation.} Training is implemented in PyTorch 2.2 on a
|
| 214 |
+
Kaggle notebook with one NVIDIA T4 GPU. Landmark extraction uses the
|
| 215 |
+
MediaPipe Python package. End-to-end training (60 epochs including
|
| 216 |
+
evaluation on every epoch) takes approximately TODO minutes. The live demo is
|
| 217 |
+
deployed as a Hugging Face Space using Gradio.
|
| 218 |
+
|
| 219 |
+
\paragraph{Splits.} We use the official WLASL-100 train / validation / test
|
| 220 |
+
split, which assigns each clip to exactly one split by video ID and is
|
| 221 |
+
signer-disjoint across splits.
|
| 222 |
+
|
| 223 |
+
\paragraph{Baseline and comparison.} The primary trained model is a temporal
|
| 224 |
+
landmark CNN. We compare it against a pretrained VLM used in zero-shot reranking
|
| 225 |
+
mode. The VLM is not fine-tuned; instead, it receives the original clip and the
|
| 226 |
+
CNN's top-5 candidate labels and selects the best label from that constrained
|
| 227 |
+
set. The optional Transformer result is reported separately as an attention
|
| 228 |
+
extension.
|
| 229 |
+
|
| 230 |
+
\paragraph{Results.} \Cref{tab:main} reports top-1 and top-5 accuracy on the
|
| 231 |
+
WLASL-100 test split for the CNN and optional Transformer.
|
| 232 |
+
\Cref{fig:trainingcurves} shows training loss and validation accuracy over
|
| 233 |
+
epochs. \Cref{fig:confmat} shows the confusion matrix on the test split. We
|
| 234 |
+
observe that TODO (qualitative observations once you have real numbers ---
|
| 235 |
+
confusions between visually similar signs, classes with few training samples,
|
| 236 |
+
which augmentations helped most, etc.).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
|
| 238 |
\begin{table}[t]
|
| 239 |
\centering
|
| 240 |
\small
|
| 241 |
+
\begin{tabular}{lcc}
|
|
|
|
| 242 |
\toprule
|
| 243 |
+
Model & Top-1 Acc. & Top-5 Acc. \\
|
| 244 |
\midrule
|
| 245 |
+
Landmark CNN (ours) & \textbf{TODO} & \textbf{TODO} \\
|
| 246 |
+
VLM reranker on CNN top-5 & TODO & -- \\
|
| 247 |
+
Optional Transformer & TODO & TODO \\
|
| 248 |
\bottomrule
|
| 249 |
\end{tabular}
|
| 250 |
+
\caption{Primary CNN versus VLM comparison. The VLM is evaluated as a
|
| 251 |
+
zero-shot reranker over the CNN's top-5 candidates rather than as a fine-tuned
|
| 252 |
+
classifier.}
|
| 253 |
+
\label{tab:main}
|
| 254 |
\end{table}
|
| 255 |
|
| 256 |
\begin{figure}[t]
|
| 257 |
\centering
|
| 258 |
+
\includegraphics[width=\linewidth]{figures/training_curves.png}
|
| 259 |
+
\caption{Training loss and validation top-1 / top-5 accuracy over 60 epochs.}
|
| 260 |
+
\label{fig:trainingcurves}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
\end{figure}
|
| 262 |
|
| 263 |
\begin{figure}[t]
|
| 264 |
\centering
|
| 265 |
+
\includegraphics[width=\linewidth]{figures/confusion_matrix.png}
|
| 266 |
+
\caption{Confusion matrix on the WLASL-100 test split.}
|
| 267 |
+
\label{fig:confmat}
|
| 268 |
\end{figure}
|
| 269 |
|
| 270 |
+
\paragraph{Qualitative results.} We record live webcam demonstrations of
|
| 271 |
+
common signs including \texttt{HELLO}, \texttt{THANK\_YOU}, \texttt{HELP},
|
| 272 |
+
\texttt{DRINK}, and \texttt{MORE}. The model tracks the signer at
|
| 273 |
+
interactive rates and emits a caption once the prediction stabilizes. A video
|
| 274 |
+
of the demo is linked in our GitLab repository.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
|
| 276 |
+
\paragraph{Limitations.} Our system is limited to 100 glosses and does not
|
| 277 |
+
model co-articulation or sentence structure. Recognition accuracy degrades
|
| 278 |
+
under poor lighting, partial occlusion, or unusual camera angles because
|
| 279 |
+
MediaPipe Holistic becomes unreliable in those conditions. The model is
|
| 280 |
+
signer-independent but was not stress-tested on signers outside the WLASL
|
| 281 |
+
training distribution.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 282 |
|
| 283 |
+
% -----------------------------------------------------------------------------
|
| 284 |
\section{Conclusion}
|
| 285 |
+
\label{sec:conclusion}
|
| 286 |
|
| 287 |
+
We presented BridgeLink ASL, a practical real-time word-level ASL recognition
|
| 288 |
+
system built from MediaPipe Holistic landmarks and a lightweight CNN, with an
|
| 289 |
+
additional zero-shot VLM reranking comparison. The full pipeline trains in under an hour on a free GPU and runs
|
| 290 |
+
live on CPU in a hosted Hugging Face Space. We hope the system and its
|
| 291 |
+
accompanying code serve as a useful starting point for students building
|
| 292 |
+
accessibility tools in computer vision courses.
|
| 293 |
|
| 294 |
+
\paragraph{Acknowledgments.} We thank the creators of WLASL and MediaPipe for
|
| 295 |
+
releasing their data and tools to the research community, and our instructors
|
| 296 |
+
for their guidance throughout the project.
|
| 297 |
|
| 298 |
+
% -----------------------------------------------------------------------------
|
| 299 |
{\small
|
| 300 |
+
\bibliographystyle{ieeenat_fullname}
|
| 301 |
\bibliography{references}
|
| 302 |
}
|
| 303 |
|
report/references.bib
CHANGED
|
@@ -6,13 +6,6 @@
|
|
| 6 |
year={2020}
|
| 7 |
}
|
| 8 |
|
| 9 |
-
@inproceedings{duarte2021how2sign,
|
| 10 |
-
title={{How2Sign}: A Large-scale Multimodal Dataset for Continuous American Sign Language},
|
| 11 |
-
author={Duarte, Amanda and Palaskar, Shruti and Ventura, Lucas and Ghadiyaram, Deepti and DeHaan, Kenneth and Metze, Florian and Torres, Jordi and Giro-i-Nieto, Xavier},
|
| 12 |
-
booktitle={IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
|
| 13 |
-
year={2021}
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
@article{grishchenko2020mediapipe,
|
| 17 |
title={MediaPipe Holistic: Simultaneous Face, Hand and Pose Prediction, on Device},
|
| 18 |
author={Grishchenko, Ivan and Bazarevsky, Valentin},
|
|
@@ -29,42 +22,6 @@
|
|
| 29 |
year={2020}
|
| 30 |
}
|
| 31 |
|
| 32 |
-
@inproceedings{tran2015c3d,
|
| 33 |
-
title={Learning Spatiotemporal Features with 3D Convolutional Networks},
|
| 34 |
-
author={Tran, Du and Bourdev, Lubomir and Fergus, Rob and Torresani, Lorenzo and Paluri, Manohar},
|
| 35 |
-
booktitle={IEEE International Conference on Computer Vision (ICCV)},
|
| 36 |
-
pages={4489--4497},
|
| 37 |
-
year={2015}
|
| 38 |
-
}
|
| 39 |
-
|
| 40 |
-
@article{kingma2015adam,
|
| 41 |
-
title={Adam: A Method for Stochastic Optimization},
|
| 42 |
-
author={Kingma, Diederik P. and Ba, Jimmy},
|
| 43 |
-
journal={International Conference on Learning Representations (ICLR)},
|
| 44 |
-
year={2015}
|
| 45 |
-
}
|
| 46 |
-
|
| 47 |
-
@inproceedings{hu2022lora,
|
| 48 |
-
title={LoRA: Low-Rank Adaptation of Large Language Models},
|
| 49 |
-
author={Hu, Edward J. and Shen, Yelong and Wallis, Phillip and Allen-Zhu, Zeyuan and Li, Yuanzhi and Wang, Lu and Wang, Weizhu and Chen, Weizhu},
|
| 50 |
-
booktitle={International Conference on Learning Representations (ICLR)},
|
| 51 |
-
year={2022}
|
| 52 |
-
}
|
| 53 |
-
|
| 54 |
-
@article{dettmers2023qlora,
|
| 55 |
-
title={QLoRA: Efficient Finetuning of Quantized LLMs},
|
| 56 |
-
author={Dettmers, Tim and Pagnoni, Artidoro and Holtzman, Ari and Zettlemoyer, Luke},
|
| 57 |
-
journal={Advances in Neural Information Processing Systems (NeurIPS)},
|
| 58 |
-
year={2023}
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
@article{dai2020toyota,
|
| 62 |
-
title={Toyota Smarthome Untrimmed: Real-World Untrimmed Videos for Activity Detection},
|
| 63 |
-
author={Dai, Rui and Das, Srijan and Sharma, Saurav and Minciullo, Luca and Garattoni, Lorenzo and Bremond, Francois and Francesca, Gianpiero},
|
| 64 |
-
journal={arXiv preprint arXiv:2010.14982},
|
| 65 |
-
year={2020}
|
| 66 |
-
}
|
| 67 |
-
|
| 68 |
@inproceedings{boha2021signpose,
|
| 69 |
title={Sign Pose-Based Transformer for Word-Level Sign Language Recognition},
|
| 70 |
author={Bohacek, Matyas and Hruz, Marek},
|
|
|
|
| 6 |
year={2020}
|
| 7 |
}
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
@article{grishchenko2020mediapipe,
|
| 10 |
title={MediaPipe Holistic: Simultaneous Face, Hand and Pose Prediction, on Device},
|
| 11 |
author={Grishchenko, Ivan and Bazarevsky, Valentin},
|
|
|
|
| 22 |
year={2020}
|
| 23 |
}
|
| 24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
@inproceedings{boha2021signpose,
|
| 26 |
title={Sign Pose-Based Transformer for Word-Level Sign Language Recognition},
|
| 27 |
author={Bohacek, Matyas and Hruz, Marek},
|
results/how2sign_top25_dataset_summary.json
CHANGED
|
@@ -1,25 +1,29 @@
|
|
| 1 |
{
|
| 2 |
-
"dataset": "
|
| 3 |
"total_clips": 479,
|
| 4 |
-
"num_classes":
|
| 5 |
"split_counts": {
|
| 6 |
"test": 72,
|
| 7 |
"train": 335,
|
| 8 |
"val": 72
|
| 9 |
},
|
| 10 |
"class_counts": {
|
| 11 |
-
"all right.":
|
|
|
|
| 12 |
"and one, two and three, four.": 9,
|
| 13 |
"drop.": 8,
|
| 14 |
"exhale.": 11,
|
| 15 |
"good.": 60,
|
| 16 |
"hello!": 14,
|
| 17 |
"here we go.": 8,
|
| 18 |
-
"hi
|
|
|
|
| 19 |
"inhale.": 9,
|
| 20 |
"just like that.": 12,
|
| 21 |
"lift.": 17,
|
| 22 |
-
"
|
|
|
|
|
|
|
| 23 |
"one, two, three, four.": 19,
|
| 24 |
"one, two, three.": 14,
|
| 25 |
"squeeze.": 8,
|
|
|
|
| 1 |
{
|
| 2 |
+
"dataset": "How2Sign repeated-sentence subset",
|
| 3 |
"total_clips": 479,
|
| 4 |
+
"num_classes": 25,
|
| 5 |
"split_counts": {
|
| 6 |
"test": 72,
|
| 7 |
"train": 335,
|
| 8 |
"val": 72
|
| 9 |
},
|
| 10 |
"class_counts": {
|
| 11 |
+
"all right.": 9,
|
| 12 |
+
"alright.": 12,
|
| 13 |
"and one, two and three, four.": 9,
|
| 14 |
"drop.": 8,
|
| 15 |
"exhale.": 11,
|
| 16 |
"good.": 60,
|
| 17 |
"hello!": 14,
|
| 18 |
"here we go.": 8,
|
| 19 |
+
"hi!": 60,
|
| 20 |
+
"hi.": 27,
|
| 21 |
"inhale.": 9,
|
| 22 |
"just like that.": 12,
|
| 23 |
"lift.": 17,
|
| 24 |
+
"o.k.": 17,
|
| 25 |
+
"okay.": 43,
|
| 26 |
+
"okay?": 32,
|
| 27 |
"one, two, three, four.": 19,
|
| 28 |
"one, two, three.": 14,
|
| 29 |
"squeeze.": 8,
|
results/vlm_how2sign_metrics_summary.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"source_dir": "C:\\Users\\ofrai\\OneDrive\\Documents\\BridgeLink-ASL\\vlm_hf_space\\outputs\\how2sign_qwen25vl_3b_qlora\\archive_500train_eval100",
|
| 3 |
-
"num_samples": 100,
|
| 4 |
-
"baseline": {
|
| 5 |
-
"num_samples": 100,
|
| 6 |
-
"bleu": 0.13190291190140932,
|
| 7 |
-
"chrf": 11.964036429797746,
|
| 8 |
-
"rouge_l": 0.0668393398798282
|
| 9 |
-
},
|
| 10 |
-
"finetuned": {
|
| 11 |
-
"num_samples": 100,
|
| 12 |
-
"bleu": 1.2645024575524115,
|
| 13 |
-
"chrf": 14.076603963296414,
|
| 14 |
-
"rouge_l": 0.10735543170596028
|
| 15 |
-
},
|
| 16 |
-
"delta": {
|
| 17 |
-
"bleu": 1.1326,
|
| 18 |
-
"chrf": 2.112568,
|
| 19 |
-
"rouge_l": 0.040516
|
| 20 |
-
},
|
| 21 |
-
"figure_path": "C:\\Users\\ofrai\\OneDrive\\Documents\\BridgeLink-ASL\\report\\figures\\vlm_how2sign_metrics.png"
|
| 22 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|