MedOtter/PENGWIN_Task2
PENGWIN Task 2: Pelvic Fragment Segmentation on Synthetic X-ray Images Mirror of the training split of Task 2 of the MICCAI 2024 PENGWIN challenge (https://pengwin.grand-challenge.org/), from the official Zenodo record 10913196 (train.zip, md5 9c90215dae54d8f494a85cfc7b19bc96). These are SYNTHETIC X-rays, not real radiographs: DeepDRR renders of the 100 PENGWIN Task 1 training CTs simulating intraoperative C-arm fluoroscopy, 500 random poses per CT = 50,000 image/mask pairs.… See the full description on the dataset page: https://huggingface.co/datasets/MedOtter/PENGWIN_Task2.
PENGWIN Task 2: Pelvic Fragment Segmentation on Synthetic X-ray Images
Mirror of the training split of Task 2 of the MICCAI 2024 PENGWIN challenge (https://pengwin.grand-challenge.org/), from the official Zenodo record 10913196 (train.zip, md5 9c90215dae54d8f494a85cfc7b19bc96).
These are SYNTHETIC X-rays, not real radiographs: DeepDRR renders of the 100 PENGWIN Task 1 training CTs simulating intraoperative C-arm fluoroscopy, 500 random poses per CT = 50,000 image/mask pairs. Projections 0000-0249 show clean anatomy; 0250-0499 additionally contain up to 10 simulated K-wires/orthopaedic screws (has_hardware). The challenge validation (8,000) and test (600) X-rays were never publicly released. No real radiographs exist anywhere in PENGWIN 2024. (Zenodo's description writes the hardware range as 0250-0500; indices verifiably end at 0499.)
Columns
Mask encoding
A pixel's uint32 value has bit b = 10*(category-1) + fragment set iff that fragment projects onto the pixel (categories: 1 sacrum SA, 2 left hipbone LI, 3 right hipbone RI; fragments 1-10, fragment 1 = main). Overlapping fragments are the norm (X-ray projection superimposes bone), so decode to per-fragment binary masks - do not treat the value as a class ID. Bit 0 is never set. Bit b corresponds exactly to label value b in MedOtter/PENGWIN_Task1.
import numpy as np
masks = [((seg >> b) & 1).astype(bool) for b in range(1, 31) if ((seg >> b) & 1).any()]The official pengwin_utils.py (this repo's root, from the Zenodo record) provides seg_to_masks / masks_to_seg, the DRR renderer, and the challenge augmentation pipeline. Official deterministic test-time input: neglog then quantile window (0.01, 0.95) (see build_augmentation(train=False)).
Overlap warning
Derived from exactly the 100 CTs in `MedOtter/PENGWIN_Task1` (same case numbering, same patients) - never treat the two as independent benchmarks. Task 1 in turn likely shares patients with CTPelvic1K's CLINIC subset (no ID crosswalk exists), and its GT was seeded by a CTPelvic1K-pretrained nnU-Net. Do not confuse with the separate PENGWIN 2026 challenge, whose "Task 2" is a different task on different data.
License
The Zenodo record metadata declares CC BY 4.0, while the challenge summary paper's Data Availability statement says the X-ray training set is released under CC BY-NC-SA - the same record-vs-paper conflict as PENGWIN Task 1. As with our Task 1 mirror, this mirror adopts the stricter author-stated CC BY-NC-SA 4.0.
Citation
Sang Y. et al., "Benchmark of Segmentation Techniques for Pelvic Fracture in CT and X-Ray: Summary of the PENGWIN 2024 Challenge," IEEE TMI, doi:10.1109/TMI.2025.3650126 (arXiv:2504.02382). Data: doi:10.5281/zenodo.10913196. Lineage: Liu Y. et al., MICCAI 2023, doi:10.1007/978-3-031-43996-4_30.
