kahmed68/xctpore-canonical-splits
XCTPore — Canonical Splits This repository hosts canonical Leave-One-Stack-Out (LOSO), Leave-One-Geometry-Out (LOGO), and Leave-One-Material-Out (LOMO) split definitions for the XCTPore benchmark of X-ray CT scanned additively manufactured metal coupons. It is a lightweight repository: the binary volumes (~6 GB of 16-bit TIFFs) are not mirrored here and remain hosted on the original Google Cloud bucket maintained by the Advanced Remanufacturing and Technology Centre (ARTC) at… See the full description on the dataset page: https://huggingface.co/datasets/kahmed68/xctpore-canonical-splits.
XCTPore — Canonical Splits
This repository hosts canonical Leave-One-Stack-Out (LOSO), Leave-One-Geometry-Out (LOGO), and Leave-One-Material-Out (LOMO) split definitions for the XCTPore benchmark of X-ray CT scanned additively manufactured metal coupons. It is a lightweight repository: the binary volumes (~6 GB of 16-bit TIFFs) are not mirrored here and remain hosted on the original Google Cloud bucket maintained by the Advanced Remanufacturing and Technology Centre (ARTC) at A*STAR Singapore. This repository contains only the per-stack manifest, the split definitions, a loader stub, and the dataset card.
What this repository is for
XCTPore [Mutiargo et al., SINCE 2022] introduced a public 3-class XCT porosity dataset of 11 stacks but did not publish a standardised benchmark protocol. Subsequent work has used random slice splits that leak between adjacent (nearly identical) slices in the same stack, inflating reported metrics. This repository fixes that by publishing stack-level train / validation / test splits across three protocols (LOSO, LOGO, LOMO) so that any new model can be benchmarked against the same protocol as the chapter "From X-ray CT to Structural Response: An AI-Driven Pipeline for Defect-Aware Analysis of Additively Manufactured Metal Components" (book chapter in Artificial Intelligence-based Methods in Structural Mechanics and Dynamics, [details TBD]).
Files
Getting the binary data
The 16-bit XCT slices and their 3-class masks are hosted at the canonical ARTC location:
Original release: GitHub: BismaMutiargo/XCTPore follow the README for download instructions; the data lives in a public Google Cloud bucket and egress fees (a few cents at the time of writing) are paid by the requestor.
Once downloaded, the binary file naming used in manifest.csv matches the upstream release ({stack_id}_train.tif, {stack_id}_mask.tif), so no renaming is required.
Quick start
from huggingface_hub import hf_hub_download
import pandas as pd, json
manifest = pd.read_csv(hf_hub_download(
repo_id="kahmed68/xctpore-canonical-splits",
filename="manifest.csv",
repo_type="dataset",
))
splits = json.load(open(hf_hub_download(
repo_id="kahmed68/xctpore-canonical-splits",
filename="splits.json",
repo_type="dataset",
)))
# LOGO fold 2: held-out LargeBracket geometry
fold = splits["logo"][2]
print(fold["train"], fold["val"], fold["test"])
# -> ['MA001', 'MA002', 'MB001', 'MB002', 'TA001', 'TA002', 'TB001'],
# ['TB002'],
# ['MC001', 'MC002', 'TC002']Citation
Please cite the original XCTPore dataset release:
@article{Mutiargo2022,
title = {XCTPore: An Open Source Database for Porosity in X-ray CT scanned Components},
author = {Mutiargo, Bisma and Malcolm, Andrew A. and Wong, Zheng Zheng and
Siow, Bryan Wei Kang and Goh, Richie Rui Xin},
journal= {4th Singapore International Non-destructive Testing Conference (SINCE)},
year = {2022},
doi = {10.58286/27521}
}If you also use the canonical splits and/or the structural-mechanics pipeline (Mori–Tanaka, Murakami, voxel-FE modal), please cite the chapter (citation TBD).
License
BSD-2-Clause-style permissive, matching the upstream XCTPore release. See LICENSE.
