This project trains a deep learning model using transfer learning (DenseNet121) to classify chest X-ray images into 15 categories (14 disease states + "No_Finding") using the NIH Chest X-ray dataset.
- Source: NIH Chest X-ray dataset (provided on HiPerGator)
- Path:
/lustre/fs0/bsc4892/share/ChestXray-NIHCC/images_14_cat - Classes: 15 total (including "No_Finding")
- Architecture: DenseNet121 with pretrained ImageNet weights
- Modification: Final classifier layer adjusted to output 15 classes
- Loss Function: CrossEntropyLoss with class balancing via
WeightedRandomSampler - Optimizer: Adam (lr=1e-4)
- Image Size: 224 x 224
- Epochs: 5
- Batch Size: 32
- Transforms:
- Resize
- ToTensor
- Normalize (ImageNet stats)
- Confusion Matrix: Plotted after model evaluation
- Metrics: Accuracy, Precision, Recall, F1-score via
classification_report
See requirements.txt for all required libraries. Key ones include:
torchtorchvisionmatplotlibseabornscikit-learntqdm
- The model uses a weighted sampler to handle class imbalance.
- ROC curves can be added by calculating per-class AUC using
roc_auc_scorefromsklearn.
chest_xray_densenet.ipynbβ Full training and evaluation notebookREADME.mdβ This file