DT-R2S2R
Digital Twin-Driven Real2Sim2Real:
Simulator-Conditioned Generation via Paired Driving-Scene Reconstruction
Abstract
Camera-based 3D perception for autonomous driving relies heavily on large annotated datasets, and deploying such a system to a new target region typically requires data collection and annotation. Generative augmentation has been proposed to reduce this cost, but existing approaches face a fundamental trade-off: label-conditioned methods consume the very annotations they aim to replace, while simulator-conditioned methods offer free annotations but lack visual grounding to specific real environments.
This work investigates the extent to which a digital-twin-driven Real2Sim2Real pipeline (DT-R2S2R) can substitute for target-region real data. By reconstructing recorded driving clips inside a georeferenced digital twin (DT-R2S), we condition a diffusion model on geometrically aligned simulator renderings, establishing a digital twin-grounded Sim2Real model (DT-S2R). As a result, DT-S2R synthesizes photorealistic driving images given low-cost yet georeferenced simulator data across both reconstructed and novel simulator scenes within digital-twin coverage.
The efficacy of generated data is verified on diverse 3D detectors. DETR3D, especially, reports 93.18% of mAP obtained by a target-region real-data oracle, without employing target images for detector training. Furthermore, simple co-training with existing out-of-target real data surpasses that oracle. Thus, DT-R2S2R can substantially alleviate the cost of manual on-site data collection and annotation for digital twin-available districts, offering a practical foundation for scaling 3D perception.
Key Contributions
Scene-level Real2Sim from a digital twin
Prior Real2Sim2Real pipelines reconstruct the dynamic agents and a coarse road layout. We reconstruct the entire scene inside a georeferenced twin — road network, buildings, terrain and dimension-matched vehicle assets — so that the generator receives the actual location as a condition rather than having to synthesize it.
The DT-rendered RGB can be a useful proxy for Sim2Real
Unlike depth and semantics, the twin's rendered RGB specifies what the location itself looks like — its road network, building facades and matched vehicle assets. Since that signal is already present in the condition, the generative backbone requires no architectural modification and remains frozen.
A labeled data engine, not an image translator
With zero target-region real images, DETR3D attains 93.18% of the real-data oracle. Co-training with out-of-target real data exceeds that oracle by +2.19 mAP.
Approach
(a) DT-R2S — Paired driving-scene reconstruction
(b) DT-S2R — Photorealism enhancement
Generation Beyond the Real Recordings
Dataset comparison (AI-Hub & ADC25)
One real and two synthetic datasets. The real set is an AI-Hub Korean urban driving dataset used to construct DT-R2S and train DT-S2R. See Appendix A for details. ADC25 is a simulation-only dataset that took no part in building the pipeline, meaning its frames do not correspond to any real recordings. Note that its scenarios originate from the Hyundai Motor Group Autonomous Driving Challenge 2025. ADC25 is used to evaluate whether DT-S2R generalizes to unseen routes and scenarios, and to generate additional training data for 3D detectors.
| Notation | Dataset | Domain | In twin | DT-S2R | District | Train clips, frames |
Val clips, frames |
|---|---|---|---|---|---|---|---|
| \(D^{\text{Real}}_{\text{OffTwin}}\)A | AI-Hub (Off-Twin) | Real | ✗ | N/A | Seoul, Seongnam, Sejong, Daegu | 262, 47K | 66, 11K |
| \(D^{\text{Real}}_{\text{InTwin}}\)A | AI-Hub (In-Twin) | Real | ✓ | N/A | Sangam, Pangyo | 134, 24K | 34, 6K |
| \(D^{\text{Real2Sim}}_{\text{InTwin}}\) | DT-R2S | Synthetic | ✓ | ✗ | Sangam, Pangyo | 134, 24K | 34, 6K |
| \(D^{\text{Sim2Real}}_{\text{InTwin}}\) | DT-S2R | Synthetic | ✓ | ✓ | Sangam, Pangyo | 134, 24K | 34, 6K |
| \(D^{\text{Sim}}_{\text{ADC25}}\) | ADC25 | Synthetic | ✓ | ✗ | Sangam, Pangyo | 241, 28K | — |
| \(D^{\text{Sim2Real}}_{\text{ADC25}}\) | ADC25 (DT-S2R) | Synthetic | ✓ | ✓ | Sangam, Pangyo | 241, 28K | — |
Route comparison of ADC25 against AI-Hub
The recordings visit only part of the twin. These interactive maps show which streets each source traverses and where they overlap — the disjoint part is what tests whether DT-S2R generalizes to streets it never saw.
DT-S2R results on ADC25
Quantitative Results
Deploying to a target region without target real images
| Training data | DETR3D | PETR | ||||
|---|---|---|---|---|---|---|
| mAP ↑ | NDS ↑ | 30–50m ↑ | mAP ↑ | NDS ↑ | 30–50m ↑ | |
| \(D^{\text{Real}}_{\text{InTwin}}\) Oracle | 48.83 | 54.39 | 29.86 | 55.23 | 58.10 | 37.94 |
| \(D^{\text{Real}}_{\text{OffTwin}}\) Practical baseline | 39.98 | 48.99 | 23.56 | 50.59 | 55.35 | 32.31 |
| \(D^{\text{Sim2Real}}_{\text{ADC25}}\)no real data | 29.39 | 39.86 | 15.25 | 34.41 | 41.29 | 17.96 |
| \(D^{\text{Sim2Real}}_{\text{InTwin}} + D^{\text{Sim2Real}}_{\text{ADC25}}\) no real data | 45.50 | 52.21 | 27.45 | 49.07 | 53.69 | 30.87 |
| \(D^{\text{Sim2Real}}_{\text{InTwin}} + D^{\text{Sim2Real}}_{\text{ADC25}} + D^{\text{Real}}_{\text{OffTwin}}\) Co-training | 51.02 | 55.77 | 33.55 | 55.79 | 57.95 | 37.57 |
| Co-training vs. Oracle | +2.19 | +1.38 | +3.69 | +0.56 | −0.15 | −0.37 |
| Co-training vs. Practical baseline | +11.04 | +6.78 | +9.99 | +5.20 | +2.60 | +5.26 |
Preliminary Attempt at Long-Tail Augmentation
Editing inside the twin rather than in image space lets a rare maneuver be composed onto a recorded scene and translated back — with the 3D annotation already attached, and without waiting for the event on the road.
Appendix
Appendix A: Customized Splits of AI-Hub
A.1 Why the official split cannot be used
The official AI-Hub split partitions each driving clip into training and validation frames (
A.2 Resulting splits
Every clip is labeled in-twin or off-twin by testing its GNSS trajectory against the digital-twin district hulls, yielding the following subsets.
| Subset | Notation | Districts | Train clips, frames |
Val clips, frames |
|---|---|---|---|---|
| In-twin | \(D^{\text{Real}}_{\text{InTwin}}\) | Sangam, Pangyo | 134, 24K | 34, 6K |
| Off-twin | \(D^{\text{Real}}_{\text{OffTwin}}\) | Seoul, Seongnam, Sejong, Daegu | 262, 47K | 66, 11K |
| Combined | \(D^{\text{Real}}_{\text{All}}\) | all of the above | 396, 71K | 100, 17K |
Each clip is recorded with five surround-view cameras and one 128-channel LiDAR. Only the in-twin subset has a digital-twin counterpart and therefore participates in building the DT-R2S2R pipeline. The off-twin subset serves as the out-of-target real data.
A.3 Clip-level mapping
All 168 (train: 134, val: 34) in-twin clips carry 180 frames each, giving 24,120 training and 6,120 validation frames. The list below records which side of our split each clip lies on.
Full clip list — 168 clips
| District | Clip | Frames | Split |
|---|---|---|---|
| Pangyo | Clip_000 | 180 | Val |
| Pangyo | Clip_001 | 180 | Train |
| Pangyo | Clip_002 | 180 | Val |
| Pangyo | Clip_003 | 180 | Train |
| Pangyo | Clip_004 | 180 | Train |
| Pangyo | Clip_005 | 180 | Train |
| Pangyo | Clip_006 | 180 | Train |
| Pangyo | Clip_007 | 180 | Train |
| Pangyo | Clip_008 | 180 | Train |
| Pangyo | Clip_009 | 180 | Val |
| Pangyo | Clip_010 | 180 | Train |
| Pangyo | Clip_011 | 180 | Val |
| Pangyo | Clip_012 | 180 | Train |
| Pangyo | Clip_013 | 180 | Train |
| Pangyo | Clip_014 | 180 | Train |
| Pangyo | Clip_015 | 180 | Train |
| Pangyo | Clip_016 | 180 | Train |
| Pangyo | Clip_017 | 180 | Train |
| Pangyo | Clip_023 | 180 | Train |
| Pangyo | Clip_024 | 180 | Train |
| Pangyo | Clip_025 | 180 | Train |
| Pangyo | Clip_026 | 180 | Train |
| Pangyo | Clip_027 | 180 | Train |
| Pangyo | Clip_028 | 180 | Train |
| Pangyo | Clip_029 | 180 | Train |
| Pangyo | Clip_030 | 180 | Val |
| Pangyo | Clip_031 | 180 | Train |
| Pangyo | Clip_032 | 180 | Train |
| Pangyo | Clip_033 | 180 | Val |
| Pangyo | Clip_034 | 180 | Train |
| Pangyo | Clip_036 | 180 | Train |
| Pangyo | Clip_037 | 180 | Train |
| Pangyo | Clip_038 | 180 | Train |
| Pangyo | Clip_039 | 180 | Val |
| Pangyo | Clip_040 | 180 | Train |
| Pangyo | Clip_041 | 180 | Train |
| Pangyo | Clip_042 | 180 | Train |
| Pangyo | Clip_043 | 180 | Train |
| Pangyo | Clip_044 | 180 | Train |
| Pangyo | Clip_045 | 180 | Train |
| Pangyo | Clip_046 | 180 | Val |
| Pangyo | Clip_047 | 180 | Train |
| Pangyo | Clip_048 | 180 | Train |
| Pangyo | Clip_049 | 180 | Train |
| Pangyo | Clip_050 | 180 | Train |
| Pangyo | Clip_051 | 180 | Train |
| Pangyo | Clip_052 | 180 | Train |
| Pangyo | Clip_056 | 180 | Train |
| Pangyo | Clip_058 | 180 | Train |
| Pangyo | Clip_059 | 180 | Train |
| Pangyo | Clip_060 | 180 | Train |
| Pangyo | Clip_147 | 180 | Train |
| Pangyo | Clip_148 | 180 | Val |
| Pangyo | Clip_149 | 180 | Train |
| Pangyo | Clip_150 | 180 | Train |
| Pangyo | Clip_151 | 180 | Train |
| Pangyo | Clip_152 | 180 | Train |
| Pangyo | Clip_153 | 180 | Train |
| Pangyo | Clip_154 | 180 | Val |
| Pangyo | Clip_155 | 180 | Val |
| Pangyo | Clip_156 | 180 | Train |
| Pangyo | Clip_157 | 180 | Train |
| Pangyo | Clip_158 | 180 | Train |
| Pangyo | Clip_159 | 180 | Val |
| Pangyo | Clip_160 | 180 | Train |
| Pangyo | Clip_161 | 180 | Train |
| Pangyo | Clip_162 | 180 | Train |
| Pangyo | Clip_163 | 180 | Train |
| Pangyo | Clip_164 | 180 | Train |
| Pangyo | Clip_165 | 180 | Train |
| Pangyo | Clip_169 | 180 | Train |
| Pangyo | Clip_170 | 180 | Train |
| Pangyo | Clip_171 | 180 | Train |
| Pangyo | Clip_172 | 180 | Val |
| Pangyo | Clip_238 | 180 | Val |
| Pangyo | Clip_239 | 180 | Train |
| Pangyo | Clip_240 | 180 | Train |
| Sangam | Clip_061 | 180 | Train |
| Sangam | Clip_062 | 180 | Train |
| Sangam | Clip_063 | 180 | Val |
| Sangam | Clip_064 | 180 | Train |
| Sangam | Clip_065 | 180 | Train |
| Sangam | Clip_066 | 180 | Train |
| Sangam | Clip_067 | 180 | Train |
| Sangam | Clip_068 | 180 | Val |
| Sangam | Clip_069 | 180 | Val |
| Sangam | Clip_070 | 180 | Val |
| Sangam | Clip_071 | 180 | Train |
| Sangam | Clip_072 | 180 | Val |
| Sangam | Clip_073 | 180 | Val |
| Sangam | Clip_074 | 180 | Train |
| Sangam | Clip_075 | 180 | Val |
| Sangam | Clip_076 | 180 | Val |
| Sangam | Clip_077 | 180 | Val |
| Sangam | Clip_078 | 180 | Val |
| Sangam | Clip_079 | 180 | Val |
| Sangam | Clip_080 | 180 | Train |
| Sangam | Clip_081 | 180 | Train |
| Sangam | Clip_082 | 180 | Val |
| Sangam | Clip_083 | 180 | Train |
| Sangam | Clip_084 | 180 | Val |
| Sangam | Clip_085 | 180 | Train |
| Sangam | Clip_086 | 180 | Val |
| Sangam | Clip_087 | 180 | Train |
| Sangam | Clip_088 | 180 | Train |
| Sangam | Clip_089 | 180 | Train |
| Sangam | Clip_090 | 180 | Val |
| Sangam | Clip_091 | 180 | Train |
| Sangam | Clip_092 | 180 | Train |
| Sangam | Clip_093 | 180 | Val |
| Sangam | Clip_094 | 180 | Train |
| Sangam | Clip_095 | 180 | Train |
| Sangam | Clip_096 | 180 | Train |
| Sangam | Clip_097 | 180 | Train |
| Sangam | Clip_098 | 180 | Train |
| Sangam | Clip_099 | 180 | Train |
| Sangam | Clip_100 | 180 | Train |
| Sangam | Clip_101 | 180 | Val |
| Sangam | Clip_102 | 180 | Train |
| Sangam | Clip_103 | 180 | Train |
| Sangam | Clip_104 | 180 | Train |
| Sangam | Clip_105 | 180 | Train |
| Sangam | Clip_106 | 180 | Train |
| Sangam | Clip_107 | 180 | Val |
| Sangam | Clip_108 | 180 | Train |
| Sangam | Clip_109 | 180 | Train |
| Sangam | Clip_110 | 180 | Train |
| Sangam | Clip_111 | 180 | Train |
| Sangam | Clip_112 | 180 | Train |
| Sangam | Clip_113 | 180 | Train |
| Sangam | Clip_114 | 180 | Train |
| Sangam | Clip_115 | 180 | Train |
| Sangam | Clip_116 | 180 | Val |
| Sangam | Clip_117 | 180 | Train |
| Sangam | Clip_118 | 180 | Train |
| Sangam | Clip_119 | 180 | Train |
| Sangam | Clip_120 | 180 | Train |
| Sangam | Clip_121 | 180 | Train |
| Sangam | Clip_122 | 180 | Train |
| Sangam | Clip_123 | 180 | Train |
| Sangam | Clip_124 | 180 | Val |
| Sangam | Clip_125 | 180 | Train |
| Sangam | Clip_126 | 180 | Train |
| Sangam | Clip_127 | 180 | Train |
| Sangam | Clip_128 | 180 | Train |
| Sangam | Clip_129 | 180 | Train |
| Sangam | Clip_130 | 180 | Train |
| Sangam | Clip_131 | 180 | Train |
| Sangam | Clip_132 | 180 | Train |
| Sangam | Clip_133 | 180 | Train |
| Sangam | Clip_134 | 180 | Train |
| Sangam | Clip_135 | 180 | Train |
| Sangam | Clip_136 | 180 | Train |
| Sangam | Clip_137 | 180 | Train |
| Sangam | Clip_138 | 180 | Train |
| Sangam | Clip_139 | 180 | Train |
| Sangam | Clip_140 | 180 | Train |
| Sangam | Clip_141 | 180 | Train |
| Sangam | Clip_142 | 180 | Train |
| Sangam | Clip_143 | 180 | Train |
| Sangam | Clip_144 | 180 | Train |
| Sangam | Clip_145 | 180 | Train |
| Sangam | Clip_146 | 180 | Train |
| Sangam | Clip_232 | 180 | Train |
| Sangam | Clip_233 | 180 | Train |
| Sangam | Clip_243 | 180 | Train |
| Sangam | Clip_244 | 180 | Train |
| Sangam | Clip_245 | 180 | Train |
Appendix B: Reconstruction Details for DT-R2S
B.1 Object-to-asset mapping
Assets are ranked against the per-axis maximum box size by a weighted cost over the three dimensions. Each axis is weighted by its normalized coefficient of variation, so the more discriminative dimensions dominate the match.
| Axis | Weight | Role |
|---|---|---|
| Height | 0.41 | most discriminative across the catalogue |
| Length | 0.35 | |
| Width | 0.24 | least discriminative — vehicle widths cluster tightly |
The top-5 candidates by this cost are then re-ranked by appearance: a SAM-segmented crop of the object and each candidate asset are encoded with DINOv3, and the highest cosine similarity wins.
B.2 Sensor pose optimization
The LiDAR-to-ego transform is recovered with CMA-ES over the 8-corner box-matching objective. The initial pose comes from the dataset's LiDAR-to-GNSS extrinsics, and a RANSAC ground-plane fit on the real point cloud fixes the plausible margin for the mounting height. Every bound below is therefore an offset from that initial pose, and \(\sigma_0\) is the initial step size that sets how widely candidates are sampled around the current mean.
| Axis | Initial \(\sigma_0\) | Search bound offset from init |
|---|---|---|
| x | 0.025 m | ±0.05 m |
| y | 0.025 m | ±0.05 m |
| z | 0.025 m | ±0.05 m |
| roll | 0.0175 rad (≈1°) | ±0.0523 rad (≈±3°) |
| pitch | 0.0175 rad (≈1°) | ±0.0523 rad (≈±3°) |
| yaw | 0.00875 rad (≈0.5°) | ±0.0175 rad (≈±1°) |
Appendix C: Setup of the Compared Injection Mechanisms for DT-S2R
The simulator-rendered RGB carries a strong visual signal of what its real counterpart looks like. While designing the conditioning path we therefore compared three ways of injecting it into the diffusion backbone (SDXL). All three are built on the same Stage 1 configuration, so the comparison isolates the injection mechanism rather than the backbone. A dash marks a component that configuration does not have.
| Hyperparameter | Ours Stage 1 | SDEdit | T2I-Adapter |
|---|---|---|---|
| Way of using each condition | |||
| Simulator RGB | residual ControlNet branch | placed in the initial latent at \(t_0 = 0.5\) | lightweight adapter |
| Semantics | residual ControlNet branch | residual ControlNet branch | lightweight adapter |
| Depth | residual ControlNet branch | residual ControlNet branch | lightweight adapter |
| Residual injection point | summed per branch, then added to the UNet as down_block_additional_residuals and mid_block_additional_residual |
adapter features added to the encoder | |
| Conditioning scale \(s_k\) | [1.0, 1.0, 1.0] for RGB, semantic and depth — no modality is down-weighted a priori |
||
| Pre-trained initialization, per condition | |||
| Simulator RGB | xinsir/controlnet-tile-sdxl-1.0 |
— (no trainable module) | from scratch |
| Semantics | from scratch | from scratch | from scratch |
| Depth | diffusers/controlnet-depth-sdxl-1.0 |
diffusers/controlnet-depth-sdxl-1.0 |
TencentARC/t2i-adapter-depth-midas-sdxl-1.0 |
| Optimization | |||
| Learning rate | 5×10−5 | 5×10−5 | 1×10−5 |
| Optimizer | AdamW, weight decay 0.01 | ||
| Schedule | constant, 1,000 warm-up steps | ||
| Gradient clipping | 1.0 | ||
| Optimization steps | 50,000 | ||
| Precision | mixed | ||
| Batch per device | 2 frames × 5 cameras | ||
| Diffusion Backbone (Frozen) | |||
| Backbone (UNet) | stabilityai/stable-diffusion-xl-base-1.0 | ||
| VAE | madebyollin/sdxl-vae-fp16-fix | ||
| Text encoders | CLIP ViT-L and OpenCLIP ViT-bigG, bundled with the SDXL base checkpoint | ||
| Shared protocol | |||
| Resolution | 576 × 1024 | ||
| Objective | MSE + \(\lambda\) × depth-weighted MSE, \(\lambda = 0.1\), minimum depth clamp 0.02 | ||
| Horizontal flip | p = 0.5, applied jointly to the views and all conditions | ||
| Photometric jitter | brightness, contrast, saturation 0.1 each — simulator RGB only, the real target is left untouched | ||
| Condition dropout | depth and semantics dropped independently at p = 0.1. Simulator RGB is never dropped | ||
| Text prompt | highly detailed realistic driving scene in {district}, South Korea, dropped with p = 0.1 | ||
| Sampling | DDPM scheduler, 50 steps, guidance scale 5.0 | ||
| Stage 2, applied on top of Ours only | |||
| Cross-view attention | mid_block, down_block_2, down_block_1 of each branch. For each camera, the attention is applied to its two neighbors (left and right) in the ring topology. |
— | — |
| Further training | 40,000 steps from the Stage 1 checkpoint, \(\lambda\) raised to 0.3 | — | — |
One asymmetry is worth stating explicitly. No SDXL segmentation or image-conditioned adapter is publicly available, so both of those T2I-Adapter branches start from scratch, whereas our RGB branch loads a pre-trained checkpoint.
BibTeX
@article{anonymous2026dtr2s2r,
title = {Digital Twin-Driven Real2Sim2Real: Simulator-Conditioned
Generation via Paired Driving-Scene Reconstruction},
author = {Anonymous},
journal = {Under review},
year = {2026}
}
Acknowledgments
This research (paper) used datasets from High-precision data collection vehicle daytime city road data. All data information can be accessed through AI-Hub.