Skip to content
Case study · Wall plug inspection

Your detector learned one lighting setup. Synthetic data teaches it the rest.

We trained the same detection models twice: once on real images alone, and once with rendered synthetic images added.

59%
fewer detection errors on average (missed parts plus false detections), across four model sizes
+7%
more of the parts found than with real data only
+22%
higher detection score under the hardest lighting, averaged across four model sizes
The problem

Real data only covers the day you collected it.

Inspection datasets are usually captured in one session, under one lighting setup. A detector trained on them works well until the lighting changes or a camera setting is modified.

A detector trained on 293 real photos of wall plugs was nearly perfect under the lighting it was trained on. Under shifted lighting, it missed plugs in dense piles and reported detections that were wrong. The same model trained with additional imaged rendered from synthetic scenes found more parts and made fewer false detections, even under lighting it had never seen.

Collecting real images for every lighting condition is slow, if not impossible. You only learn which conditions you needed once the change is live, which can cost production time and a retrain and re-validation cycle.

Real photos of piles of wall plugs, each pile shown under six different lighting setups in turnTest scenes · lighting keeps changing
The results

Every model size improved, by a similar margin.

Each row compares the same model trained on the 293 real photos alone, and with 200 synthetic scenes added.

ModelDetection scoreParts missedFalse detectionsScore, hardest lighting
Real only+ syntheticReal only+ syntheticReal only+ syntheticReal only+ synthetic
Nano0.8810.951+8%14482−43%498−84%0.7860.938+19%
Small0.8870.958+8%17579−55%5910−83%0.7670.943+23%
Medium0.8980.949+6%19187−54%368−78%0.7380.922+25%
Large0.8900.946+6%17263−63%4214−67%0.7490.909+21%
How we measured these numbers

Detection score is mAP50-95 on 60 real test images containing 1,566 parts, across six lighting conditions. Missed parts and false detections are counted over the same images at a confidence threshold of 0.8. Hardest lighting is the darkest of the six conditions (10 images). Reference boxes for the real photos were generated automatically rather than drawn by hand, so the scores measure agreement with those references. Each configuration was trained once.

Simply buying a bigger model did not solve the problem.

On real data alone, the nano, small, medium and large models all scored between 0.88 and 0.90.

More varied data moved the result. More model did not.

Detection scoreReal only+ synthetic
0.860.900.94NanoSmallMediumLarge0.8900.946
See the difference

The same real test image, two detectors.

Real only modelTrained on real only
Real plus synthetic modelTrained on real + synthetic
correct detectionfalse detectionmissed part
One real test image, 27 wall plugs, under lighting neither model saw in training. Left, trained on real photos only: 8 false detections and 10 parts missed. Right, the same model trained with synthetic data added: 1 false detection and 5 missed. This is one of the hardest images in the test set. The table below gives the averages over all 60.
How it works

Real images keep the model grounded. Synthetic scenes widen what it has seen.

  1. We model the part and the scene. A 3D model of the wall plug is dropped into a simulated scene with its own camera and light, in random piles of 20 to 40 parts.
  2. We render what the camera would see, including scenes where the camera and the light are moved, so the training set covers conditions the real photos do not.
  3. We train on real and synthetic together. The real images keep the model grounded in the actual part. The synthetic scenes widen what it has seen.
Synthetic scene · interactive 3D
What this means for you

Fewer misses, fewer false alarms, and a detector that survives change.

Fewer misses, fewer false alarms

Missed parts fell by 43 to 63%, and false detections by three to six times. Fewer parts slip through uncounted, and fewer stops are needed to check what the system thought it saw.

A detector that survives change

Under the hardest lighting in the test, real-only models dropped to a score of 0.74 to 0.79. With synthetic data they held at 0.91 to 0.94.

Smaller, cheaper hardware

The smallest model trained with synthetic data (0.951) outscored the large model trained on real data alone (0.890). It has a tenth of the parameters and ran about four times faster in our test.

No labelling bill

Every synthetic scene is rendered with exact outlines and boxes for each part. The 200 scenes added more than 5,700 labelled parts without anyone drawing a box.

Want to see what synthetic data does for your part?

Tell us the inspection task and the conditions. We will come back with what is feasible, the timeline, and the cost.