A small Python workbench for checking image datasets and YOLO-style annotations before they are used as training or test data. It generates synthetic sample images, validates labels, creates train/validation/test split manifests, renders annotation overlays, and writes human-readable QA reports.
AI/Vision teams depend on careful data preparation and annotation quality. This project demonstrates the support workflow around training data rather than claiming a production computer-vision system.
flowchart LR
A["Images + YOLO labels"] --> B["Parser"]
B --> C["Validation rules"]
C --> D["QA report"]
B --> E["Split manifests"]
B --> F["Overlay previews"]
vision-dataset-qa-workbench/
├── src/
│ ├── generate_sample_data.py
│ ├── render_overlays.py
│ ├── split_dataset.py
│ ├── validate_dataset.py
│ └── yolo.py
├── docs/
├── tests/
├── requirements.txt
└── README.md
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m src.generate_sample_data --out data/sample
python -m src.validate_dataset --images data/sample/images --labels data/sample/labels --out reports
python -m src.split_dataset --labels data/sample/labels --out reports/splits
python -m src.render_overlays --images data/sample/images --labels data/sample/labels --out reports/overlaysreports/qa_report.jsonreports/qa_report.mdreports/splits/train.txtreports/splits/val.txtreports/splits/test.txtreports/overlays/*_overlay.jpg
The generated sample data intentionally includes a missing label file, an empty annotation file, and an out-of-range box so the QA report has realistic findings to discuss.
Tracked examples are included under docs/sample-output/:
python -m pytestRunnable MVP. It is designed for portfolio evidence around data quality, annotation QA, and careful AI/Vision support work. It is not a production annotation platform.
- Built a Python QA workbench for image datasets that validates YOLO-style annotations, creates train/validation/test splits, renders overlay previews, and writes documented QA reports from synthetic sample data.
- Implemented tests and GitHub Actions so the annotation parsing, split generation, and overlay workflow can be verified reproducibly.
- Why annotation quality matters before model training.
- How the validator catches missing labels, malformed boxes, out-of-bounds boxes, and class imbalance.
- Why the project uses synthetic data and documents limitations instead of pretending to use real airport imagery.