A Label-Conflict-Aware, Pixel-Hash Curation and Reproducible Benchmarking Protocol for a Bangladeshi Chest X-ray Dataset
Description
A Primary Chest X-ray Dataset of Normal Bangladesh: Version 6 (curated release) This dataset contains chest X-ray (CXR) images from Epic Chittagong, Bangladesh (2025), labelled Normal or Pneumonia, for developing and benchmarking pneumonia-classification models. Version 6 is a curated derivative of Version 5 (doi: 10.17632/wndbd5r26y.5). Using exact decoded-pixel hashing, 25 redundant same-label duplicate copies were removed, and 96 images belonging to groups of identical images with conflicting class labels were excluded. 2,626 source images were audited, 0 were unreadable, and 2,505 were retained. Images are unchanged (original bytes and native resolution, no resizing, recompression or relabelling). The original train/test partition is preserved. Composition Train: Normal 991, Pneumonia 1,003 Test: Normal 256, Pneumonia 255 Total: 2,505 images (JPEG/PNG, variable resolution) Included files Images in train/test folders by class, plus manifest.csv (paths, hashes, sizes), benchmark_splits.csv (fixed train/validation/test assignment), data_dictionary.csv, a full audit of every Version 5 file and its keep/remove decision, near-duplicate review candidates, dataset card, checksums and changelog. Code The Python notebook that produces this release (LCA-PHC: Label-Conflict-Aware Pixel-Hash Curation) is available at: https://github.com/IntelliMed-AI-Research-Lab/LCA-PHC-Label-Conflict-Aware-Pixel-Hash-Curation-for-a-Bangladeshi-Chest-X-ray-Dataset Notes on Version 5 The Version 5 page text stated 3,355 images, but the Version 5 archive contained 2,626. Version 6 counts are computed from the files. Limitations Labels come from the source folder structure and are not independently clinically adjudicated; the label conflicts found indicate noise in the source labels. No patient identifiers exist, so splits are image-level and patient independence is unknown. Only exact duplicates were removed; perceptual-hash review flagged 115 near-duplicate candidate pairs (41 across train/test) that were NOT removed and may inflate test performance. Burned-in text and metadata were not reviewed. Ethics approval, consent and acquisition details: [AUTHOR TO FILL]. Not for clinical use. Intended uses Pneumonia vs. normal classification, transfer-learning benchmarks, label-noise and dataset-curation research, teaching. License: CC BY 4.0
Files
Steps to reproduce
Steps to Reproduce (Version 6 curation) Code: https://github.com/IntelliMed-AI-Research-Lab/LCA-PHC-Label-Conflict-Aware-Pixel-Hash-Curation-for-a-Bangladeshi-Chest-X-ray-Dataset Environment: Python 3 notebook (Kaggle; GPU only for the optional benchmark). Libraries: requests, Pillow, ImageHash 4.3.2, NumPy, pandas, SciPy, scikit-learn, matplotlib, seaborn, PyTorch/torchvision. 1. Download the Version 5 archive (doi: 10.17632/wndbd5r26y.5; 524,339,616 bytes). Verify SHA-256 = 3d07a6f0d3ba37c9a72edba45d05e307ab57ebf2ba2effe2b3373da448dcad0c; stop if it differs. If the direct download is refused, download manually from the DOI page. 2. Extract; locate train/test folders with Normal and Pneumonia subfolders. 3. For every image: open with Pillow, apply EXIF orientation, convert to RGB; record file SHA-256, format, size; compute pixel hash = SHA-256 of (width, height) + decoded RGB bytes. Exclude unreadable or multi-frame files. 4. Group by pixel hash. If a group has more than one class label, exclude ALL members. Otherwise keep one image (test copy first, then lexical path) and mark the rest as duplicates. 5. Check counts: 2,626 audited, 25 duplicates, 96 conflicting-label, 0 unreadable, 2,505 retained (train Normal 991 / Pneumonia 1,003; test Normal 256 / Pneumonia 255). Investigate any mismatch; never force totals. 6. Copy retained images byte-for-byte to images/<split>/<class>/<pixel_hash><ext>; verify each copy by SHA-256; confirm unique pixel hashes and no train/test overlap. 7. Write manifest.csv, data_dictionary.csv and the audit files (full inventory with decisions, removed duplicates, excluded conflicts). 8. Compute descriptive statistics on 256x256 grayscale previews (brightness, contrast, entropy, Laplacian variance, resolution flags). Descriptive only; no exclusions. 9. Near-duplicate review: 64-bit pHash, Hamming distance <= 4 gives 115 candidate pairs (41 cross-split). Review only; none removed. 10. Benchmark split: stratified 80/20 train/validation inside the training subset (seed 42); original test set held out (benchmark_splits.csv). 11. Optional benchmark: ImageNet-pretrained ResNet18, ResNet50, DenseNet121, EfficientNet-B0, MobileNetV3-Large; 224x224 padded resize, +/-5 degree rotation (train only), AdamW (lr 1e-4, wd 1e-4), cosine schedule, batch 16, 12 epochs, seeds 42-44. Select the epoch by validation macro-F1; no test-set tuning. 12. Package as ZIP with README, dataset card, changelog, SHA256SUMS.txt. Notes: Steps 1-10 and 12 need no GPU. Benchmark results show utility on this image-level split only, not clinical validity.
Institutions
- University of DhakaDhaka Division, Dhaka