A large-scale, open-domain ASL-English parallel corpus with 11,000+ YouTube videos and 73,000+ segments (Uthus et al., 2023).
Default pose job: dataset.download → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/youtube_asl/mediapipe.yamlDefault video job: dataset.download → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/youtube_asl/video.yamlRequires dataset.source.video_ids_file pointing to the video ID list
(included at assets/youtube-asl_youtube_asl_video_ids.txt). The dataset
download stage fetches videos via yt-dlp and transcripts via
youtube-transcript-api. If transcript requests start failing with
RequestBlocked or IpBlocked, configure
dataset.source.transcript_proxy_http / dataset.source.transcript_proxy_https
or retry from a non-blocked residential IP.
Open-domain ASL-English translation data from online video with an official TSV manifest and optional bounding boxes (OpenASL GitHub).
First-stage config:
python -m signdata run configs/base/datasets/openasl.yaml \
--override output.enabled=falseSetup:
- Download
data/openasl-v1.0.tsvanddata/bbox-v1.0.jsonfrom the official OpenASL repository. - Place them under
dataset/openasl/data/, or overridedataset.source.manifest_tsvanddataset.source.bbox_json. - Keep
paths.videospointed at the raw-video directory.dataset.downloadfetches raw YouTube videos byyid;dataset.manifestmapsvid,yid,start,end, and the configured text column into the canonical manifest.
OpenASL's official preprocessing also trims and spatially crops clips with the provided bbox file. In this repo that happens after the first stage through the normal video processing stages; the manifest stores timing and bbox metadata.
80+ hours of instructional "how-to" videos with continuous ASL, recorded in a controlled environment with professional signers (Duarte et al., CVPR 2021).
Default pose job: dataset.download (validation only) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/how2sign/mediapipe.yamlDefault video job: dataset.download (validation only) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/how2sign/video.yamlSetup:
- Download the dataset from how2sign.github.io
- Place videos in the
videospath (default:dataset/how2sign/videos/) - Place the alignment CSV (e.g.
how2sign_realigned_val.csv) atpaths.manifestordataset.source.manifest_csv
The How2Sign dataset adapter uses dataset.download as a validation step for
local files; it does not fetch remote data.
Broadcast BSL corpus released with subtitle-aligned interpreter videos and manual isolated-sign annotations (Albanie et al., ICCV 2021).
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/bobsl/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/bobsl/video.yamlSetup:
- Download and unpack the public BOBSL release under
dataset/bobsl/, or overridedataset.source.release_dir. - Place interpreter-cropped MP4s under
paths.videos(the shipped jobs usedataset/bobsl/videos/). - Keep the release metadata JSON (for example
metadata/subset2episode.json) under the release root, or overridedataset.source.metadata_file. - Keep subtitle files under the release root. The adapter auto-discovers the common
subtitles/manually-aligned/andsubtitles/audio-aligned-heuristic-correction/layouts, or you can overridedataset.source.subtitles_root. - Keep manual isolated-sign annotations under the release root. The adapter auto-discovers common
annotations/layouts, or you can overridedataset.source.annotation_root.
The BOBSL adapter exposes two manifest views:
dataset.source.view=subtitle_sltbuilds one row per subtitle segment withTEXT,START, andEND.dataset.source.view=isolated_signsbuilds one row per manual isolated-sign annotation withGLOSS,TEXT,CLASS_ID,START, andEND.
Available BOBSL-specific overrides:
dataset.source.subtitle_alignment=manual|originalchooses between manually aligned subtitles and the original/audio-aligned subtitle release.dataset.source.split=train|val|test|allfilters the selected release partition.dataset.source.metadata_file,subtitles_root, andannotation_rootlet you point at repackaged local layouts when auto-discovery is not enough.
Compatibility lexical view built from the public BOBSL release rather than a separate downloader (BSL-1K project page).
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/bsl1k/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/bsl1k/video.yamlThe shipped BSL-1K configs reuse dataset.source.release_dir: dataset/bobsl and force dataset.source.view: isolated_signs, so outputs are organized under dataset/bsl1k/ while the raw release and default video root stay under dataset/bobsl/.
Word-level ASL dataset with 2,000 glosses and 12,000+ isolated sign videos (Li et al., WACV 2020).
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/wlasl/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/wlasl/video.yamlSetup:
- Download and preprocess WLASL clips with the official start-kit repository
- Place
WLASL_v0.3.jsonatdataset/wlasl/WLASL_v0.3.jsonor overridedataset.source.metadata_json - Place one preprocessed clip per
video_idunderpaths.videos(default:dataset/wlasl/videos/) - The provided base config keeps
dataset.source.download_mode: validatefor local preprocessed clips; optionally tunedataset.source.split,dataset.source.subset, anddataset.source.availability_policy
The WLASL dataset adapter supports two acquisition modes:
download_mode: validatetreats files underpaths.videosas preprocessed clips. Manifest rows keep the originalFRAME_START/FRAME_ENDmetadata, butSTART=0.0andENDis taken from the isolated clip duration when available.download_mode: download_missingfetches missing raw source videos from each instanceurlinWLASL_v0.3.jsonand keeps source-alignedSTART/ENDtiming in the manifest.
Large-scale isolated ASL dataset with signer-diverse lexical clips (Joze and Koller, CVPR 2019).
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/msasl/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/msasl/video.yamlSetup:
- Download the official MS-ASL annotation release from the Microsoft Download Center
- Place
MSASL_train.json,MSASL_val.json,MSASL_test.json, andMSASL_classes.jsonunderdataset/msasl/annotations/or overridedataset.source.annotations_dir - Place local clips under
paths.videos(default:dataset/msasl/videos/); both flat layouts and nested-by-class layouts are supported - The provided base config keeps
dataset.source.download_mode: validate; optionally tunedataset.source.split,dataset.source.subset, anddataset.source.availability_policy
The MS-ASL dataset adapter supports two acquisition modes:
download_mode: validatetreats files underpaths.videosas the local clip corpus and writes per-sampleREL_PATHvalues into the manifest.download_mode: download_missingextracts YouTube IDs from the selected split JSON files and downloads any missing videos intopaths.videos.
Automatic Turkish Sign Language dataset used in the CVPR/ICCV 2021 isolated sign challenge. The release contains signer-independent train, val/validation, and test splits with paired RGB/depth clips and class-ID correspondence files.
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/autsl/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/autsl/video.yamlSetup:
- Download and extract the official AUTSL challenge release under
dataset/autsl/, or overridedataset.source.release_dir. - Keep the split directories under the release root, for example
dataset/autsl/train/,dataset/autsl/validation/, anddataset/autsl/test/. - Ensure the release contains the class-ID correspondence CSV (for example
SignList*.csv) plustrain_labels.csvandval_labels.csv. The shipped configs assume the common challenge layout and auto-discover these files. - The shipped AUTSL jobs intentionally set
paths.videos: dataset/autslinstead ofdataset/autsl/videosbecause manifest rows use split-relative paths such astrain/signer0_sample1_color.mp4.
The shipped AUTSL configs default to RGB clips via dataset.source.modality: rgb and keep allow_unlabeled: false, so unlabeled public test rows are skipped by default even when dataset.source.split: all.
Available AUTSL-specific overrides:
dataset.source.modality=rgb|depthchooses the_color.mp4or_depth.mp4files.dataset.source.split=train|val|test|allfilters which challenge split(s) feed the manifest.dataset.source.allow_unlabeled=trueincludes unlabeled split rows such as the public challengetestset.dataset.source.class_id_file,train_labels_file,val_labels_file, andtest_labels_filelet you override auto-discovered metadata files when the release uses custom filenames.
Continuous Chinese Sign Language dataset released by USTC with 100 sentence prompts and 50 signers. The release page describes RGB/depth/skeleton modalities, while the benchmark papers commonly use one RGB clip per signer-sentence pair for Split I / Split II evaluation (USTC CSL release).
Default pose job: dataset.download (validate/materialize local release) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/csl/mediapipe.yamlDefault video job: dataset.download (validate/materialize local release) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/csl/video.yamlSetup:
- Request access from the official USTC page: download the release agreement, sign it, and email it as instructed at ustc-slr.github.io/datasets/2015_csl.
- Unpack the release under
dataset/csl/so the corpus file lives atdataset/csl/corpus.txtand RGB data lives underdataset/csl/color/, or overridedataset.source.release_dir. - Run the normal CSL job.
dataset.downloadis intentionally simple: it only validates a local release and, when needed, materializes frame folders intopaths.videos. dataset.manifestfollows the paper-aligned split logic:split_iuses signers 1-40 for train and 41-50 for test;split_iiuses sentences 1-94 for train and 95-100 for test.
The shipped CSL configs default to dataset.source.prepare_mode: materialize_missing, so both common local layouts are supported:
- RGB video clips already present under
dataset.source.rgb_subdirsuch asdataset/csl/color/000000/*.mp4 - per-sample frame folders such as
dataset/csl/color/000000/<sample>/000001.jpg, which are converted to.mp4clips before preprocessing
The adapter targets the continuous 2015 CSL release and currently uses only the RGB modality in this preprocessing pipeline. The native depth and Kinect skeleton files from the release are not ingested directly by SignDATA.
Argentinian Sign Language isolated-sign dataset with 64 glosses, 10 signers, and 3,200 RGB clips (Ronchetti et al., CACIC 2016).
Default pose job: dataset.download (local validation) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/lsa64/mediapipe.yamlDefault video job: dataset.download (local validation) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/lsa64/video.yamlSetup:
- Download the official dataset from facundoq.github.io/datasets/lsa64
- Extract either the cut or raw RGB release under
dataset/lsa64/ - The shipped configs default to
dataset.source.variant: cut; override withdataset.source.variant=rawto target the raw release - Keep
dataset.source.release_dirpointed at the release root (dataset/lsa64/) unless you want to bypass variant resolution and point directly at a flat clip directory
The LSA64 adapter supports both official RGB layouts:
- release root with variant subdirectories such as
dataset/lsa64/cut/*.mp4anddataset/lsa64/raw/*.mp4 - flat clip directories containing
*.mp4files directly
The canonical file naming convention is {CLASS_ID}_{SIGNER_ID}_{REPETITION_ID}.mp4, for example 01_09_05.mp4.
The shipped configs use split_strategy: none and emit SPLIT=all by default. For signer-independent evaluation, enable:
python -m signdata run configs/jobs/lsa64/mediapipe.yaml \
--override dataset.source.split_strategy=community_signer_8_1_1 dataset.source.split=trainBy default, the adapter loads the bundled assets/lsa64_class_map.tsv gloss map derived from the official dataset website. You can override it with dataset.source.class_map_file.
LSA64 is licensed under CC BY-NC-SA 4.0. If you use or redistribute derivatives of the dataset, the dataset authors request that you cite the official website or paper.
Russian Sign Language isolated-sign dataset with trimmed RGB videos and an
annotations.csv file (SLoVo GitHub).
First-stage config:
python -m signdata run configs/base/datasets/slovo.yaml \
--override output.enabled=falseSetup:
- Download and extract the official trimmed SLoVo release under
dataset/slovo/, or overridedataset.source.release_dir. - Keep the official
annotations.csvin the release root, or overridedataset.source.annotations_csv. - Keep videos named by
attachment_id, for exampledataset/slovo/<attachment_id>.mp4.
The SLoVo adapter validates the local release and builds one row per annotation.
It maps the official train boolean to SPLIT=train|test, uses text as both
GLOSS and TEXT, and derives CLASS_ID values from the annotation labels by
default.
Continuous German Sign Language (DGS) weather-report dataset with ~8,000 sentence-level clips across train / dev / test splits (Camgoz et al., CVPR 2018).
Default pose job: dataset.download (materialize missing videos) → dataset.manifest → processing.video2pose → post_processing.normalize → output.webdataset
python -m signdata run configs/jobs/rwth_phoenix_weather/mediapipe.yaml \
--override dataset.source.release_dir=/path/to/PHOENIX-2014-T-release3Default video job: dataset.download (materialize missing videos) → dataset.manifest → processing.video2crop → output.webdataset
python -m signdata run configs/jobs/rwth_phoenix_weather/video.yaml \
--override dataset.source.release_dir=/path/to/PHOENIX-2014-T-release3Setup:
- Request and download the dataset from RWTH-PHOENIX-Weather
- Unpack the archive. The official release usually stores annotations under
annotations/manual/PHOENIX-2014-T.{train,dev,test}.corpus.csvand frames underfeatures/fullFrame-210x260px/<split>/<clip>/. - Set
dataset.source.release_dirto the unpacked release root, either via CLI override or in YAML. - Set
paths.videosto the directory where materialized.mp4files should be written.
Repackaged layouts with top-level corpus CSVs and simpler relative frame paths are also accepted for compatibility, but the official release layout is the primary target.
The shipped RWTH-PHOENIX-Weather configs default to dataset.source.prepare_mode: materialize_missing so a fresh unpacked release produces .mp4 clips before manifest filtering.
The adapter supports three prepare modes via dataset.source.prepare_mode:
validatechecks thatrelease_direxists and skips frame materialization.materialize_missing(default) encodes frame directories into.mp4files for clips that do not yet have a video file.rematerialize_allforce re-encodes all clips regardless of existing files.
Frame directories are read in lexicographic order of their .png filenames. The default frame rate is 25 fps via dataset.source.video_fps.
All datasets must use the package layout
src/signdata/datasets/<dataset_name>/ with adapter.py, source.py, and
manifest.py as the default entry files.
See CONTRIBUTING.md for the required structure, responsibilities, and code template.
- Pipeline Stages -- what each stage does and its I/O
- Configuration Reference -- full config schema and CLI overrides
- Research-Aligned Preprocessing -- paper-aligned methodology notes