Skip to main content
<ZM/>
← Back to Projects

Deep Learning · Medical Imaging

chexnet-reproduction

PythonPyTorchDenseNet-121BCEWithLogitsLossFocal LossAdamWGrad-CAM
A reproduction of CheXNet-style multi-label disease classification on the NIH ChestX-ray14 dataset (112,120 images, 14 disease labels), split patient-wise into train/val/test (75,828 / 10,696 / 25,596) to prevent data leakage. Starting from an ImageNet-pretrained DenseNet-121 baseline trained with BCEWithLogitsLoss, the project layers in three targeted improvements: Focal Loss (γ=2, α=1) to counter severe class imbalance, AdamW with learning-rate scheduling, and per-class decision thresholds tuned via precision-recall curves. Grad-CAM visualizations are used to interpret what the model attends to. Results: mean AUC-ROC improved from 0.7901 to 0.8036, and mean F1 (tuned thresholds) jumped 3.2× from 0.1056 to 0.3393, eliminating 4 diseases that scored zero F1 under the baseline. The key finding: threshold tuning — not the loss function swap — did most of the work, a useful reminder that evaluation methodology can matter as much as model architecture.