RC-3D (Rendered Change 3D) is a large-scale synthetic dataset of rendered indoor scenes organised as image triplets: a before frame, a during-change frame, and an after frame. CYWS-3D uses the before frame (Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ragavsachdeva/CYWS-3D/llms.txt
Use this file to discover all available pages before exploring further.
image1) and the after frame (image2) as the pair to compare, skipping the intermediate frame. The dataset is split into four parts (part1–part4), each with its own COCO-format annotation file, and the RC3D() factory function returns a single ConcatDataset that joins all four parts for seamless iteration.
Download
Fetch the archive withwget and extract it into a local directory:
Structure
After extraction the dataset is organised as four sibling directories:coco_annotations.json, images are stored in groups of three. Index 0 of each triplet is the before frame (image1), index 1 is the during-change frame (unused by the loader), and index 2 is the after frame (image2). The SubDataset loader therefore reads every third image starting at offset 0 for image1 and every third image starting at offset 2 for image2.
coco_annotations.json follows the standard COCO layout with "images" and "annotations" top-level keys. Bounding boxes are stored in COCO format [x, y, w, h]; the loader converts them to [x1, y1, x2, y2] before returning them.
Depth maps are single-channel PNG files located alongside the RGB images. The filename convention is depth_<image_basename>.png, where <image_basename> is the image filename without the .jpg extension. Depth loading is gated by the use_gt_depth flag.
COCO annotations store bounding boxes as
[x, y, width, height]. The RC-3D loader automatically converts these to corner format [x1, y1, x2, y2] before returning them in target1 and target2, so no manual conversion is needed in your training loop.Using the Dataset Loader
TheRC3D factory function and SubDataset class live in datasets/rc3d.py. RC3D() instantiates one SubDataset per part and wraps them in a ConcatDataset, so you interact with a single unified dataset object.
image1 always corresponds to the before frame (triplet index 0) and image2 to the after frame (triplet index 2). The intermediate during-change frame is never loaded by the dataset, so the ConcatDataset length equals the total number of triplets across all four parts, not the total number of individual images.Batch Fields
The table below lists every key that may appear in a batch dictionary returned bycollate_fn. Keys marked conditional are only present when use_gt_depth=True.
| Field | Type / Shape | Description |
|---|---|---|
image1 | FloatTensor (B, C, H, W) | ”Before” RGB frame (triplet index 0), values in [0, 1] |
image2 | FloatTensor (B, C, H, W) | ”After” RGB frame (triplet index 2), values in [0, 1] |
depth1 | FloatTensor (B, H, W) | Depth map for image1, loaded from depth_<stem>.png — conditional |
depth2 | FloatTensor (B, H, W) | Depth map for image2, loaded from depth_<stem>.png — conditional |
target1 | list[list[float]] | Single change bbox for view 1 as [[x1, y1, x2, y2]] (converted from COCO format) |
target2 | list[list[float]] | Single change bbox for view 2 as [[x1, y1, x2, y2]] (converted from COCO format) |
registration_strategy | list[str] | Always "3d" for every RC-3D sample |
Unlike KC-3D, RC-3D provides no ground-truth camera intrinsics, position, or rotation matrices. The 3D registration used by CYWS-3D on this dataset relies on the depth maps together with the model’s internal correspondence estimation rather than explicit camera parameters.