accesswear
Science Score: 62.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
✓Institutional organization owner
Organization sbunetsys has institutional domain (netsys.cs.stonybrook.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.8%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: SBUNetSys
- Language: Jupyter Notebook
- Default Branch: main
- Size: 342 KB
Statistics
- Stars: 2
- Watchers: 5
- Forks: 1
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
AccessWear
This is the repository for the MobiCom' 23 paper AccessWear: Making Smartphone Applications Accessible to Blind Users. The repository contains the code and sample data for the blind user gesture recognition pipeline.
AccessWear is a system that improves the accessibility of smartphone touchscreen interactions for blind users using smartwatch gestures. We present the first gesture recognition system that works specifically for blind users which is lightweight and does not require per-person training. We focus on gesture recognition for forearm and wrist gestures. AccessWear’s gesture recognition uses Inertial Measurement Unit or IMU sensors of smartwatches. Since human arm and hand movements are primarily rotational we use the gyroscope sensor. Each blind user has a unique style in which they move their arm and hands. Upon observing the gyroscope data of different blind users at a more granular level, we found that despite the overall differences in gesture patterns, each gesture exhibits a distinct signature. This signature, ”nucleus” is the core of the gesture and is consistent across users for the same gesture. We extract this nucleus using a lightweight algorithm. Lastly, we compare the extracted nucleus to a pre-defined template using template-matching techniques. In contrast to existing approaches that require large amounts of data, we have a single template for each gesture to classify a gesture.
BibTeX Reference
@inproceedings{khanna2023accesswear,
title={AccessWear: Making Smartphone Applications Accessible to Blind Users},
author={Khanna, Prerna and Feiz, Shirin and Xu, Jian and Ramakrishnan, IV and Jain, Shubham and Bi, Xiaojun and Balasubramanian, Aruna},
booktitle={Proceedings of the 29th Annual International Conference on Mobile Computing and Networking},
pages={1--16},
year={2023}
}
This repository provides a tutorial notebook to understand each step of blind users’ lightweight and no per-person training gesture recognition algorithm.
1. Clone this repository
git clone https://github.com/SBUNetSys/AccessWear.git
2. Create a virtual environment
We recommend using conda. Tested on macOS 13.4.1, with Python 3.10.9.
conda create -n "accesswear" python=3.10.9
conda activate accesswear
python -m pip install -r requirements.txt
Run the jupyter notebook gesture_recognition.ipynb
Dataset
blind_user_sample_data directory contains a subset of blind users' gyroscope gesture data collected using Fossil Gen 5 smartwatch at a 100 Hz sampling rate. It includes 3 samples of 5 different gestures from a blind user.
Data format: gesture_sample.csv
Gestures are as follows:
1 --> move forearm upwards
2 --> move forearm horizontally towards right
3 --> flick wrist
4 --> move forearm horizontally towards left
5 --> move forearm downwards
Experimental Workflow
The gesture\_recognition.ipynb Jupyter notebook provides step by step description of the lightweight and no per-person training gesture recognition algorithm for blind users.
First, load the pre-defined nucleus templates obtained from a sighted user. AccessWear does not require training data from each blind participant for the gesture recognition system to work.
Next, load a blind user's gesture data from a CSV file from the dataset folder and pre-process the gyroscope data.
Change the file here for experimenting with different gestures:
```
TODO: change the file name to the file you want
to test
file = "blindusersample_data/file.csv" ```
We now implement the nucleus detection algorithm.
Each individual has a unique style in which they move their arm and hands, but the core of the gesture remains consistent across users. We call this core signature, "nucleus" of the gesture.
To extract the nucleus, we calculate the RMS energy of the gesture using a sliding window size of 20. To localize the nucleus in the energy signal, we implement a lightweight change point detection algorithm.
We examine the difference in RMSE using windows. When the difference in energy between the reference and the new window exceeds an empirically determined threshold (0.4), the change points are noted. We filter out the change points that are too close to each other.
The nucleus is determined by two change points. The output of this block gives the nucleus position in the signal, which is denoted by filtered change points: [x, y].
The nucleus of a forearm and a wrist gesture could look similar. We then implement an algorithm to distinguish wrist gestures from forearm gestures. We observe that due to the impulse-like nature of the wrist gesture, jitters are present in the nucleus. To identify these jitters, we implement a lightweight peak detection algorithm. The output of this function sets the boolean wrist_bool to True if jitters are detected.
Lastly, we match the detected nucleus against pre-defined gesture templates. We use DTW to match these two signals. The output of this cell prints the detected gesture.
Owner
- Name: SBUNetSys
- Login: SBUNetSys
- Kind: organization
- Website: https://netsys.cs.stonybrook.edu/
- Repositories: 3
- Profile: https://github.com/SBUNetSys
Stony Brook NetSys Lab
Citation (CITATION.cff)
cff-version: 1.1.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Khanna
given-names: Prerna
orcid: https://orcid.org/0000-0003-0162-0052
title: SBUNetSys/AccessWear: AccessWear_v1
version: v1
date-released: 2023-08-30
GitHub Events
Total
- Watch event: 1
- Push event: 1
- Pull request event: 1
Last Year
- Watch event: 1
- Push event: 1
- Pull request event: 1
Issues and Pull Requests
Last synced: 10 months ago
All Time
- Total issues: 0
- Total pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 1
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- prerna-khanna (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- dtaidistance ==2.3.10
- matplotlib ==3.7.0
- notebook *
- numpy ==1.23.5
- pandas ==1.5.3