Skip to main content
All projects

Research Engineer · 2022 – 2025

BlendGen

Blender add-on generating annotated RGB-D datasets for vision training.

Problem
Supervised computer vision needs annotated depth data, which is expensive to capture physically and often impossible to label accurately by hand.
What I did
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.
Status
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

  1. 01

    Scene Configuration

    Declarative description of objects, materials, ranges

  2. 02

    Randomisation Engine

    Samples pose, lighting, materials and background

  3. 03

    Blender Rendering

    Automated headless rendering

  4. 04

    RGB + Depth + Annotation Export

    Paired outputs with exact ground truth

  5. 05

    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