Skip to content
Back to skills

Data Config

ASecurity

"Prepare, validate, and diagnose legacy SOLO/MMDetection datasets,

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

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-config --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Data Config?

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

Security grade badge for Data Config
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-data-config-arex-skill/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-data-config-arex-skill)

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-config
description: "Prepare, validate, and diagnose legacy SOLO/MMDetection datasets,
  data pipelines, and Python configuration wiring without silently changing
  annotation semantics."
metadata:
  disco-role: operating
disable-model-invocation: true
license: NOASSERTION
---

# Dataset and configuration operations

Use this sub-skill when a task needs to make SOLO's legacy MMDetection data
loader see the intended images and annotations, or when a config change causes
missing files, empty targets, malformed batches, or evaluation mismatches. It
covers detection and instance-segmentation data wiring; it is not a general
annotation-conversion service.

## Operating contract

Given a dataset root, annotation manifest, dataset type, class list, and the
intended train/validation/test use, produce:

1. a read-only path/schema diagnosis;
2. a config-ready mapping of `data_root`, `ann_file`, `img_prefix`, optional
   `seg_prefix`, and the correct dataset class;
3. a pipeline whose transforms preserve every target field the model consumes;
4. explicit blockers, assumptions, and a small native/runtime check to run
   before expensive training.

Never download data, rewrite annotations, create symlinks, or run a full
conversion as part of validation. From the generated skill root, use the bundled validator for local checks:

```bash
python sub-skills/data-config/scripts/validate_dataset_manifest.py \
  --format coco --ann datasets/example/instances.json --image-root datasets/example/images
```

Use `--format voc`, `--format wider`, or `--format custom` as appropriate; see
[the validator reference](references/data-formats.md#read-only-validator).

## Fast path

1. **Name the contract.** Decide whether the model needs boxes only, instance
   masks, or semantic maps. Record class order, split, image root, annotation
   root, and whether empty images are allowed.
2. **Choose the native reader.** Use `CocoDataset` for COCO JSON and converted
   Cityscapes JSON, `VOCDataset` for VOC XML/split lists,
   `WIDERFaceDataset` for WIDER's VOC-style face XML, or `CustomDataset` only
   for the documented internal list-of-records shape. Do not call a COCO file
   “VOC-compatible” merely because it contains boxes.
3. **Validate before building.** Check JSON/XML structure, IDs, class IDs,
   image dimensions, annotation geometry, and image existence. Broken symlinks
   count as missing paths. The validator is stdlib-only and does not prove that
   the installed native loader, pycocotools, or CUDA operators can run.
4. **Wire paths.** Relative `ann_file`, `img_prefix`, `seg_prefix`, and
   `proposal_file` values are joined to `data_root`; absolute values are not.
   `img_prefix` is then joined to each record's relative `filename`. Keep
   annotation and image roots consistent across every split.
5. **Wire the pipeline.** Training normally loads an image and annotations,
   applies geometry/color transforms, normalizes and pads, formats fields, then
   collects them. Test-time augmentation must end with image tensor conversion
   and collection, not training labels.
6. **Run a tiny native candidate.** Build one dataset/sample or run the
   repository's config parser help in the prepared legacy environment. Defer
   full COCO/Cityscapes conversion and full training until the tiny check is
   clean.

## Dataset-specific decisions

- **COCO:** validate `images`, `annotations`, and `categories`; use
  `segmentation` only when instance masks are required. `bbox` is `[x, y, w, h]`
  and is converted internally to inclusive corner coordinates. `iscrowd` boxes
  are ignored for training targets.
- **Cityscapes:** this release's reader is a COCO subclass with eight classes;
  it expects annotations already converted to COCO JSON and image paths that
  match that JSON. Raw polygon conversion and image flattening are a separate,
  deferred operation.
- **VOC:** split files contain image IDs; XML lives under `Annotations` and
  images under `JPEGImages`. `difficult` objects and configured `min_size`
  objects become ignored. Class names and the inferred year must match.
- **WIDER Face:** the reader expects a split list and VOC-style XML under the
  selected train/val root, with one `face` class. The XML `folder` participates
  in the image filename; check nested image paths rather than assuming a flat
  directory.
- **Custom:** either subclass a known reader with a fixed `CLASSES` tuple or
  provide the internal list of image records. The simple custom contract is
  box detection first; masks or semantic maps require corresponding fields and
  loader logic, not just a new class name.

## Pipeline and config guardrails

- Keep `LoadAnnotations(with_mask=True)` paired with annotations that actually
  carry COCO polygons/RLE or an equivalent custom `masks` field. `with_seg=True`
  instead loads a separate semantic map through `seg_prefix`.
- Geometry transforms must update all registered bbox/mask/seg fields. A crop
  that removes every ground-truth box returns `None`; repeated skips can look
  like a loader hang. `Normalize` belongs after image loading and geometry.
- `Pad(size_divisor=32)` is common for detector backbones. `DefaultFormatBundle`
  and `Collect` define the batch contract; list a mask in `Collect.keys` when
  the model consumes masks.
- The checked-in legacy config corpus is flat and uses `Config.fromfile`; it
  does not provide modern `_base_` or generic `--cfg-options` examples. If a
  local MMDetection/MMCV combination supports inheritance, verify it with that
  parser before using it; otherwise materialize a complete config copy. Do not
  assume a CLI override merged a nested `data.train` field.
- Preset filenames such as `solo_r50_fpn_8gpu_3x.py`,
  `faster_rcnn_r50_fpn_1x_voc0712.py`, `ssd300_wider_face.py`, and
  `faster_rcnn_r50_fpn_1x_cityscapes.py` are illustrative names only. Embed
  the relevant dataset block in the working config and verify its effective
  values rather than asking a future agent to locate a source config.

## Stop conditions and handoff

Stop and report the exact field/path when any of these occurs: an image ID is
unresolved; a category is absent or reordered; a bbox is non-finite, inverted,
or outside the image after the format's coordinate convention; a mask is
requested but unavailable; a split's image and annotation roots are mixed; a
symlink is broken; or an optional transform cannot import. Report whether the
failure is schema, path, config, dependency, or backend-related. Hand off the
validated manifest summary, effective dataset config, pipeline target fields,
validator output, and unresolved conversion boundary.

Read [data-formats.md](references/data-formats.md) for schemas and
[configuration.md](references/configuration.md) for effective config patterns.
For failures, use [troubleshooting.md](references/troubleshooting.md).

## Compatibility and safety note

The source-era installation targets PyTorch 1.1 or newer, CUDA 9 or newer, and
legacy `mmcv==0.2.16`, with pycocotools needed for COCO readers. Optional
Albumentations and imagecorruptions support is not part of the minimum install.
A CPU-only validator proves only local paths and structural checks; it does not
validate custom CUDA kernels or the complete GPU runtime. Keep conversion,
data acquisition, distributed jobs, and source mutation outside this
sub-skill.

Files in this skill

  • SKILL.md7.2 KB
  • references/configuration.md9.4 KB
  • references/data-formats.md8.8 KB
  • references/troubleshooting.md8.7 KB
  • scripts/validate_dataset_manifest.py14.7 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…