0.735
mAP50
Best configuration, measured end to end on the panorama. Real data alone reaches 0.706.
Instance segmentation and tracking of architectural components in 360° construction video, with a procedural Blender pipeline that manufactures the training data the domain lacks.
ETH Zürich, 3D Vision course (HILTI collaboration) · Feb 2026 – Jun 2026

Construction sites are filmed with 360° cameras for progress tracking and quality control. The footage arrives as equirectangular video, and the job is to segment and track nine architectural classes per frame, three of which form confusable pairs: column against wall column, inner against outer window, door against dismounted door. Two things make this hard. The projection stretches non-uniformly with latitude and wraps at the seam, so any object crossing it appears as two fragments at opposite image edges. And the entire labelled corpus is 955 frames of construction interior that looks nothing like COCO.
The geometry problem yields to re-projection: each frame becomes six perspective cube faces, segmented by COCO-pretrained models in their native domain, then merged back into the panorama by a seam-aware stitch. Those two steps together take RF-DETR-Seg from 0.161 to 0.706 mAP50, the projection carrying most of it. The data problem needed a different answer, a procedural Blender pipeline that builds, renders, and labels construction scenes in one pass, which lifted the result to 0.735 with the largest gains on the rarest classes.
Re-projecting into six perspective faces lets pretrained models work in their native geometry, at the cost of five new seams where there was one.
Three per-face backbones spanning CNN single-stage, query-based transformer, and real-time DETR, each fine-tuned on cube-face crops for 50 epochs with early stopping.
955 labelled frames cannot carry a nine-class taxonomy, so the rest of the training data is manufactured: Blender assembles a site, renders it, and annotates it in the same pass.
Training a detector on a fresh batch takes around 24 hours, far too slow to steer generation. A dashboard closes the loop in about five minutes instead.
Per-frame masks become persistent identities across the 1 FPS stream, reasoned on the sphere rather than in flat pixels.
Six perspective cube faces per panoramic frame, an instance-segmentation model on each, a seam-aware merge back to equirectangular, and an online tracker over the result.
Key technical decisions
0.735
mAP50
Best configuration, measured end to end on the panorama. Real data alone reaches 0.706.
+0.545
mAP50, pipeline vs direct inference
0.161 running the same model straight on panoramic frames, 0.706 through projection and stitching.
+0.135
Elevator AP50 from synthetic data
| Class | Real | Real + synthetic | Δ |
|---|---|---|---|
| Elevator | 0.577 | 0.712 | +0.135 |
| Staircase | 0.368 | 0.420 | +0.052 |
| Outer window | 0.530 | 0.560 | +0.030 |
| Inner window | 0.505 | 0.523 | +0.018 |
| Column | 0.479 | 0.494 | +0.015 |
| Wall column | 0.585 | 0.600 | +0.015 |
| Door frame | 0.192 | 0.202 | +0.010 |
| Door | 0.444 | 0.444 | 0.000 |
| mAP50 | 0.706 | 0.735 | +0.029 |