What happens to a model after training?
A DenseNet121 reads chest X-rays and shows its evidence. The real work is everything after training: tests, a quality gate that blocks worse models, drift monitoring, and a browser build checked against PyTorch before every release.
Pick any of the 20 sample films, drag one into the box, or upload your own PNG or JPG. Your image never leaves your device.
PyTorch training with patient-level splits, logged to MLflow. Weights versioned on Hugging Face and pinned by SHA-256.
CI runs tests and a quality gate: a new model can't ship if its AUROC drops against the baseline.
CI exports the weights to ONNX and checks the output matches PyTorch and Grad-CAM before this page is published.
Colour photos, tiny images and odd shapes are flagged before anyone trusts the answer.
Grad-CAM shows where the evidence came from — and when the model is looking at the wrong thing.
The same model ships as a FastAPI Docker image with Prometheus, Grafana and drift detection for server deployments.
Pulled from GitHub Actions each time this page loads: the latest test run and the latest release of this site, stage by stage.
7d88ee05…); the server refuses to start with any other file.No. It's a research and portfolio project. It hasn't been clinically validated and must not be used for diagnosis.
Mean AUROC 0.879 on the 234-image CheXpert validation set. That number is optimistic because the best epoch was picked on the same set — the next version fixes this with a held-out patient split and bootstrap confidence intervals. Expect lower scores on images from other hospitals.
159,329 chest radiographs from Stanford's CheXpert dataset (rows with uncertain labels were dropped), using a DenseNet121 pretrained on ImageNet, 10 epochs on one Colab T4 GPU.
Grad-CAM: it highlights the regions that pushed the model's score up. It shows where the evidence came from, not whether the model is right — it can latch onto tubes, markers or text.
Nowhere. The model is downloaded once and runs in your browser with ONNX Runtime Web. Open your browser's network tab while you drop an image — nothing is sent.
Chest X-rays are grayscale, reasonably large and roughly square. Colour photos, tiny thumbnails and panoramas are flagged so nobody trusts an answer the model was never trained to give.
CI runs unit and API tests, a quality gate that blocks releases if AUROC drops, SHA-256 pinning of the weights, and a parity check proving the browser model matches PyTorch and Grad-CAM before this page is published.
Yes — docker compose up starts a FastAPI service with Prometheus, Grafana and live drift detection. The code is on GitHub.