Skip to content
NAMEFRAMEPricing

The dead city capture.

A ruined post-Soviet block: collapsed facades, burnt buses, standing water and debris over the pavements. The crowd is re-scattered every frame rather than placed once, so no two frames share an arrangement, and each person who is riding or sitting is labelled separately from the bicycle, scooter, skateboard, wheelchair, bench or chair they are on. Twelve unlabelled barrels, bins and cones stand among them. The map is the work of an environment author who gave it to us and agreed to the capture in writing, which no other scene here can say. 300 frames, 10,693 labelled instances across 7 classes, graded A · 90.3 out of 100 by the run's own validator, whose findings are listed further down, in full.

Map
DeadCity_Demo01
Frames in the run
300
Labelled instances
10,693
Resolution
1280×720
Seed
20260911
Validator grade
A · 90.3/100

The map was built by George Shachnev, who sells it on Fab. He sent us the scene and agreed to the capture and to being named here. Everything below is what our pipeline made from it: the frames and the labels are ours, the environment is his, and no part of it is redistributed in the pack.

What it is for

Aerial detection where the ground is hostile: people and the things they sit on, ride and push, scattered across rubble, flooded pavement and wrecked vehicles, with seven classes and a crowd that is arranged differently in every single frame.

How the labels were made

Every label was derived from the engine's own per-instance ID buffer and the camera transform that rendered the frame, not from a model and not by hand. What occludes what is decided by the GPU on the same pass that draws the frame.

Engine
Unreal Engine 5.8
Camera
One spawn zone photographed from above, 30 to 40 m, 1280×720
Classes
person, bicycle, scooter, skateboard, wheelchair, bench, chair
Annotation formats
YOLO, COCO, per-instance ID buffers, per-frame metadata JSON
Packaged
300 of 300 frames, across 1 archive
Version
1.0

What the frames look like

Twelve frames chosen from the three hundred, one or two per weather preset rather than the twelve that look best: three clear, two partly cloudy, two cloudy, two rain, two fog and one light rain, ordered by the hour they were shot at. Picking the densest twelve instead came back without a single sunny frame, which is a sheet that shows the run's maximum rather than its spread.

Aerial frame plugin_000161 of the Unreal Engine dead city capture, with 56 labelled instances outlined by NameFrameAerial frame plugin_000166 of the Unreal Engine dead city capture, with 68 labelled instances outlined by NameFrameAerial frame plugin_000229 of the Unreal Engine dead city capture, with 79 labelled instances outlined by NameFrameAerial frame plugin_000022 of the Unreal Engine dead city capture, with 61 labelled instances outlined by NameFrameAerial frame plugin_000006 of the Unreal Engine dead city capture, with 57 labelled instances outlined by NameFrameAerial frame plugin_000023 of the Unreal Engine dead city capture, with 62 labelled instances outlined by NameFrameAerial frame plugin_000254 of the Unreal Engine dead city capture, with 74 labelled instances outlined by NameFrameAerial frame plugin_000226 of the Unreal Engine dead city capture, with 51 labelled instances outlined by NameFrameAerial frame plugin_000096 of the Unreal Engine dead city capture, with 50 labelled instances outlined by NameFrameAerial frame plugin_000181 of the Unreal Engine dead city capture, with 59 labelled instances outlined by NameFrameAerial frame plugin_000266 of the Unreal Engine dead city capture, with 61 labelled instances outlined by NameFrameAerial frame plugin_000243 of the Unreal Engine dead city capture, with 52 labelled instances outlined by NameFrame
DeadCity_Demo011280×720 per frameReport previews, downscaled for the web

Download the archive.

One archive, holding the whole run.

The same run is published on the Hugging Face Hub, with a dataset viewer over the frames: huggingface.co/datasets/NameFrame/dead-city-unreal-synthetic.

Dead city · complete capture

617 MB

All 300 frames of the run: images, YOLO labels, the same labels as COCO, per-instance segmentation, per-frame camera metadata, the capture contract and the run's own report. 10,693 labelled instances. Depth is left out: it is 1.37 GB per capture of float32 nobody training a box detector will open, and the job files to re-capture it are published.

Frames
300
Annotated instances
10,693
Format
ZIP

Counted from the run’s own labels: 300 of 300 requested frames matched a label file in the export.

  • images/ rendered RGB frames, unmodified PNG
  • segmentation/ per-instance ID buffers, one colour per instance
  • labels/ YOLO boxes, one text file per frame
  • annotations/instances.json the same labels in COCO format
  • metadata/ per-frame camera, actor and spawn-manifest records
  • reports/ this capture's own report and validation output
  • capture.json the run contract: classes, camera policy, seed
  • data.yaml class names, ready for a YOLO trainer
Download 617 MB

SHA-25691b373b49fe37e915193fd42ec517789ade7f72584cbe06b7981f677dbf4f5e4

Known limitations

The validator graded this run A · 90.3/100, and its report ships inside every archive. Here is what it and we know is wrong with the data.

  • The validator took 7.59 points off for class-imbalance: rarest/commonest class ratio 0.052. It is one of the reasons the run scored 90.3 rather than 100.
  • The validator took 1.83 points off for near-duplicate-images: visually near-identical images in one split (dHash <= 4) (11 of 300). It is one of the reasons the run scored 90.3 rather than 100.
  • The validator took 0.21 points off for underexposed-images: mean luminance < 35.0 (8 of 300). It is one of the reasons the run scored 90.3 rather than 100.
  • The validator took 0.07 points off for blurry-images: variance-of-Laplacian < 100.0 (2 of 300). It is one of the reasons the run scored 90.3 rather than 100.
  • The capture checked itself for people it could see and did not label: 0/34 engine-visible people unlabelled (0.00%, 300/300 frames). The check ships inside the pack.
  • One map, one seed and one camera policy. A model trained on this capture alone has seen one place; the eight captures are published together for that reason.
  • The archive carries COCO boxes rather than COCO polygons. The per-instance ID buffers ship alongside them and are the mask ground truth.
  • A detector trained on all eight of these captures and nothing else reached 0.350 recall on real drone footage. Synthetic data alone did not close that gap, and this archive is published so the number can be argued with rather than believed.

The checks behind those numbers, and how a run is graded, are on the dataset quality page, and the validator itself is described under dataset validation.

Terms, plainly

Free to download, read, train on and benchmark against. Publish whatever results you get, including bad ones. What you may not do is repackage the pack and sell it as your own dataset.

The images depict environment and prop content licensed for use inside Unreal Engine projects. Redistribution rights for that underlying content are not granted with these packs, so check the source licence before publishing derivatives. The full text ships as TERMS.txt inside each archive.

The map this capture was shot in was built by George Shachnev, who gave us the scene and agreed to the rendering. The frames and labels published here are ours; the environment is theirs, and none of it is redistributed in this pack.

Citation

If you publish anything you got out of this data, this is how to point at the exact run it came from. The seed and the map are the part that matters: they are what makes the run reproducible.

NameFrame. "Dead city: synthetic computer-vision dataset." Version 1.0, generated with Unreal Engine 5.8 on DeadCity_Demo01, seed 20260911. https://getnameframe.com/datasets/dead-city

Need this scene, but yours?

This capture came out of one NameFrame run: a map, a class list, a camera policy and a seed. Change any of them and you get a different dataset with the same ground truth guarantees. That is what the generator is for.