Skip to content
Back to skills

Data Preparation

ASecurity

"Prepare, validate, and troubleshoot rPPG-Toolbox raw datasets,

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 9, 2026
businesspythongobackend

Works with

  • cli

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 9, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill data-preparation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Data Preparation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Data Preparation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-data-preparation-4b7cc745/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-data-preparation-4b7cc745)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: data-preparation
description: "Prepare, validate, and troubleshoot rPPG-Toolbox raw datasets,
  face-cropped NPY caches, labels, file lists, splits, and dataset-loader
  integrations."
disable-model-invocation: true
metadata: { disco-role: operating }
license: NOASSERTION
---

# Data preparation

Use this skill when a Researcher must turn a supported raw dataset into aligned,
face-cropped, resized, normalized, chunked cache clips, or must audit an existing
cache without access to the original checkout. This skill covers dataset discovery,
preprocessing configuration, cache/file-list contracts, and loader extension points.
It does not cover trainer/model internals or metric interpretation. Use the
`evaluation-and-visualization` sub-skill for metrics and the `supervised-models`
sub-skill for trainer configuration.

## Operating contract

- Keep raw data immutable. Treat preprocessing as an explicit, potentially expensive
  build step; use a separate `CACHED_PATH` and `FILE_LIST_PATH`.
- First validate the raw layout and a small representative video/label pair. Then
  choose subject-safe splits, face settings, transforms, chunk length, and output
  locations. Record the effective configuration alongside the run externally.
- For an existing cache, run `scripts/validate_preprocessed_data.py` in read-only
  mode before loading it. A normal NPY cache contains paired `*_input*.npy` and
  `*_label*.npy` files and a CSV whose required column is `input_files`.
- Do not assume a CSV path is portable: generated file lists contain the paths used
  at preprocessing time. Relocate/rewrite them deliberately, then revalidate.
- `DO_PREPROCESS: true` reads raw data and writes cache files; after a successful
  build, set it to false for training/evaluation. With preprocessing disabled,
  missing `CACHED_PATH` is an error; a missing file list may trigger retroactive
  reconstruction from raw identifiers and cached input names.

## Standard preprocessing plan

1. **Select the source and loader.** Match the layout in
   [references/data-formats.md](references/data-formats.md), verify frame and label
   sampling, and identify whether the split is by subjects or by files.
2. **Set paths and split.** Configure `DATA_PATH`, `CACHED_PATH`, `FILE_LIST_PATH`,
   `BEGIN`, `END`, and `DATA_FORMAT`. Use `BEGIN=0, END=1` for all data. For
   subject-aware loaders, fractional boundaries select whole sorted subjects, not
   arbitrary clips. Avoid leakage by keeping a subject in one split.
3. **Choose preprocessing.** Use `DATA_TYPE` values `Raw`, `DiffNormalized`, and/or
   `Standardized`; choose one `LABEL_TYPE` from `Raw`, `DiffNormalized`, or
   `Standardized`. `DO_CHUNK` with `CHUNK_LENGTH` keeps only complete chunks; the
   remainder is discarded. `DO_CHUNK: false` emits one variable-length clip.
4. **Crop and resize.** Configure `CROP_FACE.DO_CROP_FACE`, `BACKEND` (`HC` or
   `Y5F`), `USE_LARGE_FACE_BOX`, `LARGE_BOX_COEF`, and detection settings. Set
   `RESIZE.W/H`. Confirm the detector on representative frames before a full build.
5. **Align labels and build.** Dataset loaders resample BVP to frame length where
   needed, then `BaseLoader.preprocess` crops/resizes, transforms, normalizes labels,
   chunks, and saves. Check paired names, finite values, frame/label lengths, and
   file-list coverage before using the cache.

## Cache and loader contract

Standard `BaseLoader.save`/`save_multi_process` names outputs
`<source-id>_input<k>.npy` and `<source-id>_label<k>.npy`. An input NPY is normally
rank 4 `(D,H,W,C)` on disk: temporal depth, height, width, channels (NDHWC).
The matching label is normally rank 1 `(D,)`; `D` must equal the input temporal
length. `BaseLoader.__getitem__` casts both to float32. For `DATA_FORMAT=NDCHW`
it returns `(D,C,H,W)`; for `NCDHW`, `(C,D,H,W)`; for `NDHWC`, it leaves the
stored array unchanged. Do not confuse the on-disk NDHWC contract with the
post-loader tensor layout.

The loader returns `(data, label, filename, chunk_id)`. `filename` is derived from
the cache filename before the final `_inputN` suffix and `chunk_id` is the numeric
chunk suffix. `load_preprocessed_data` reads `input_files`, sorts paths, and derives
labels by replacing `input` with `label`; therefore use unambiguous cache names and
never mix unrelated input/label roots.

`BP4DPlusBigSmallLoader` is a deliberate exception: it writes a pickle input
containing two arrays (big and small streams), with a paired NPY label of shape
`(D,49)`, and supports `NDCHW`, `NCDHW`, and `NDHWC` for each stream. The supplied
validator audits the standard NPY contract, not pickle contents; audit BigSmall
streams with a loader-aware check and confirm fold membership separately.

## Face crop safety

`HC` uses OpenCV Haar Cascade on the first frame by default; `Y5F` uses the bundled
YOLO5Face implementation and checkpoint and can use CPU or one CUDA device. A
missed detection falls back to a full-frame box; multiple HC detections choose the
largest. Dynamic detection samples every `DYNAMIC_DETECTION_FREQUENCY` frames;
`USE_MEDIAN_FACE_BOX` can replace all sampled boxes with their median. Large-box
expansion can help motion videos but may include background and is clipped during
cropping. Resize uses OpenCV area interpolation.

The source implementation currently addresses the HC XML through a relative
repository dataset path, which is unsafe when the process runs outside the
repository root. A portable runtime must resolve the cascade from an
installed/package resource or an explicit user-supplied resource path, verify that
OpenCV loaded it, and pass an absolute resolved path; never ask a downstream agent
to depend on a source checkout or current working directory. Y5F likewise requires
its model YAML/checkpoint resources to be packaged or explicitly staged; no download
or credential step is part of this skill.

## Boundaries and safe operations

Safe operations are read-only layout/cache validation, deterministic CSV inspection,
small dry-run probes, and writes into an explicitly chosen cache directory. Treat
full video decoding, face detection, pseudo-label generation, and multiprocessing
as costly. `BaseLoader.multi_process_manager` can spawn up to eight workers by
default, each decoding and holding arrays; reduce concurrency for memory-limited
systems. Do not overwrite a known-good cache, mutate raw files, run training, fetch
datasets/checkpoints, or infer metrics here. Motion-augmented data must already be
prepared by the external MA-rPPG Video Toolbox; this repository only reads its NPY
frames when `DATA_AUG` contains `Motion`.

For detailed layouts, loader tails, formats, and caveats, read
[references/data-formats.md](references/data-formats.md). For an actionable build
sequence and custom split/fold guidance, read [references/workflows.md](references/workflows.md).
For failures, read [references/troubleshooting.md](references/troubleshooting.md).
Use `python scripts/validate_preprocessed_data.py --help` before auditing a cache.

Files in this skill

  • SKILL.md6.9 KB
  • references/data-formats.md6.8 KB
  • references/troubleshooting.md5.1 KB
  • references/workflows.md5.7 KB
  • scripts/validate_preprocessed_data.py7.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.