BlendGen
Blender add-on generating annotated RGB-D datasets for vision training.
- Supervised computer vision needs annotated depth data, which is expensive to capture physically and often impossible to label accurately by hand.
- Built a Blender-based generator producing RGB-D pairs with exact ground truth derived from the scene graph, driven by declarative configuration and domain randomisation.
- Completed as part of the doctoral work, published as a journal paper, and available as a Blender add-on from the laboratory GitLab.
Introduction
BlendGen is a synthetic data generation tool built on Blender, developed during my CIFRE PhD at SEGULA Technologies and the CNRS Hubert Curien Laboratory. It produces controlled RGB-D datasets with automatically generated annotations.
It is released as a Blender add-on through the Hubert Curien Laboratory GitLab, and described in a journal paper published in 2023.
Context and problem
Supervised computer vision needs annotated data, and depth-annotated data is particularly expensive to collect. In industrial settings the constraint is sharper still: the objects and scenes of interest may be rare, may not yet exist physically, or may be impractical to photograph exhaustively.
Manual annotation of depth is not merely tedious; for many scenes it is not accurate enough to be useful as ground truth.
- RGB-D ground truth is difficult and costly to obtain physically
- Rare configurations are underrepresented in collected datasets
- Annotation quality limits the ceiling of supervised performance
- Experiments are hard to reproduce when the dataset is fixed and opaque
Objectives
- Generate RGB-D image pairs with exact, automatically derived ground truth
- Make scene composition parameterisable so datasets are configuration, not manual work
- Support domain randomisation over lighting, materials, pose and background
- Guarantee reproducibility: the same configuration must produce the same dataset
- Produce annotations in formats consumable directly by training pipelines
Constraints
- Rendering time bounds how large a dataset can practically be
- Synthetic-to-real domain gap must be actively managed, not ignored
- Scene configuration must stay usable by researchers who are not Blender specialists
- Output must integrate with existing training code without conversion scripts
Architecture
Scene Configuration
Declarative description of objects, materials, ranges
Randomisation Engine
Samples pose, lighting, materials and background
Blender Rendering
Automated headless rendering
RGB + Depth + Annotation Export
Paired outputs with exact ground truth
Dataset Assembly
Splits, manifests and reproducibility metadata
Data and model pipeline
- Configuration declares the object set, the sampling ranges and the output specification
- A seeded random generator samples a concrete scene from those ranges
- Blender renders the scene headlessly, producing colour and depth passes
- Annotations are derived from the scene graph rather than inferred from the image
- Dataset manifests record the seed and configuration used, so any sample can be regenerated
Optimization
- Headless batch rendering to remove interactive overhead
- Reuse of loaded assets across samples to avoid repeated scene setup
- Render settings tuned to the quality actually needed for training rather than for visual fidelity
- Parallel rendering across processes
Deployment
- Distributed as a Blender add-on, driven by configuration files
- Used to generate training data for the model-optimization work carried out during the PhD
- Datasets produced offline and consumed by standard training pipelines
Reliability
- Seeded generation, so a dataset is reproducible from its configuration
- Configuration validation before rendering begins, rather than failing mid-batch
- Per-sample failures isolated so one bad scene does not invalidate a run
- Manifest files recording exactly what was generated and how
Benchmark methodology
The relevant question for a synthetic data tool is not rendering speed but whether models trained on its output transfer to real data. Evaluation therefore compares models trained on synthetic data, real data, and mixtures, on a held-out real evaluation set.
Results
Quantitative results from this work are tied to the associated doctoral research and industrial context. No figures are published here.
Benchmarking in progress. Results will be published with the hardware, model, runtime and measurement conditions that produced them.
Trade-offs
Synthetic data
- Gains: exact ground truth, full control over scene distribution, unlimited rare cases
- Costs: a domain gap that must be measured and managed
Photorealism
- Gains: narrows the domain gap
- Costs: render time grows quickly, reducing achievable dataset size
Declarative configuration
- Gains: reproducibility and accessibility to non-specialists
- Costs: less expressive than scripting the scene directly
Lessons learned
- Reproducibility must be built in from the start; a dataset you cannot regenerate is a dataset you cannot debug.
- Domain randomisation is more effective than pursuing photorealism when render budget is the binding constraint.
- Deriving annotations from the scene graph rather than from the rendered image removes an entire class of label noise.
- The tool became genuinely useful only once generating a dataset stopped requiring Blender knowledge.
Future improvements
- Broader sensor models beyond the RGB-D configuration used
- Systematic study of which randomisation axes matter most per task
- Tighter coupling between generation configuration and training experiment tracking
Technology stack
Generation
- Python
- Blender
- Headless rendering
Consumption
- PyTorch training pipelines
- Standard annotation formats
Python · Blender · Computer Vision · RGB-D · Synthetic Data · Deep Learning