Contact Now
VisionFeb 25, 2026

Training Vision Models on Unreal Engine Data

Closing the reality gap with domain randomization.

The Cold Start Problem

We needed to train an object detection model to identify highly specific, proprietary industrial equipment from drone footage. The problem? We only had 50 real photos of the equipment.

Synthetic Generation with Unreal Engine

We hired a 3D artist to accurately model the equipment in Unreal Engine 5. We then wrote a script to generate 50,000 synthetic images.

To prevent the neural network from overfitting to the "video game" look, we applied aggressive Domain Randomization. The script randomized the camera angle, the time-of-day lighting, weather conditions (rain, fog), and even placed the object against random backgrounds scraped from the internet.

# We then use a standard YOLOv11 architecture for detection from ultralytics import YOLO # Pre-train heavily on the 50,000 synthetic Unreal Engine images model = YOLO('yolov11n.yaml') model.train(data='synthetic_dataset.yaml', epochs=100) # Fine-tune gently on the 50 real-world photos model.train(data='real_dataset.yaml', epochs=20, lr0=1e-5)

We pre-trained our YOLO object detector on the massive synthetic dataset, and then fine-tuned it on the 50 real photos. The model generalized perfectly to real-world deployment.