Downloads · 30 days
0
ibdagib/edgefracture-cxr-fracture-probe
edgefracture-cxr-fracture-probe is a image classification model from ibdagib. Use it when you need a label for an image. It is set up for sklearn. The card lists the license as apache-2.0.
A lightweight linear probe that classifies fractures from CXR Foundation embeddings. Designed for edge deployment on NVIDIA Jetson Orin Nano (8 GB).
Downloads · 30 days
0
Access
Public
Updated Feb 24, 2026
Repo size
2.8 MB
Likes
0
Public
Click a slice to open those files.
.joblib2.8 MB · 100%
From the Hugging Face model README
A lightweight linear probe that classifies fractures from CXR Foundation embeddings. Designed for edge deployment on NVIDIA Jetson Orin Nano (8 GB).
This is a logistic regression classifier trained on 88,064-dimensional embeddings extracted by Google's CXR Foundation model. It converts CXR Foundation — a chest X-ray foundation model — into a musculoskeletal fracture detector, demonstrating that CXR Foundation's learned representations transfer beyond its original thoracic training domain.
sklearn.linear_model.LogisticRegression with StandardScaler preprocessing and temperature calibration (T=3.49)model, scaler, temperatureTrained on FracAtlas — 4,083 musculoskeletal X-rays (717 fractures, 3,366 normal) across four body regions: hand, leg, hip, and shoulder.
5-fold stratified cross-validation with bootstrap confidence intervals (1,000 iterations):
| Region | n_train | AUC | 95% CI |
|---|---|---|---|
| Hand | 1,510 | 0.850 | [0.829, 0.873] |
| Leg | 2,237 | 0.888 | [0.859, 0.914] |
| Hip | 179 | 0.864 | [0.764, 0.953]* |
| Shoulder | 98 | 0.848 | [0.664, 0.972]* |
| Overall | 4,024 | 0.882 | -- |
* Wide CI due to small sample size — statistically unreliable.
The probe achieves strong performance with remarkably few labeled examples, demonstrating that CXR Foundation embeddings carry transferable signal even for out-of-domain musculoskeletal anatomy:
| Training examples | AUC |
|---|---|
| 10 | 0.555 |
| 25 | 0.578 |
| 50 | 0.607 |
| 100 | 0.683 |
| 250 | 0.785 |
| 500 | 0.820 |
| 4,024 (full) | 0.882 |
0.820 AUC at just 500 examples suggests viable deployment in data-scarce clinical settings.
import joblib
import numpy as np
# Load the probe
probe = joblib.load("fracture_probe.joblib")
model = probe["model"]
scaler = probe["scaler"]
temperature = probe["temperature"]
# Given a CXR Foundation embedding vector
# embedding = extract_embedding(image) # shape: (88064,)
embedding_scaled = scaler.transform(embedding.reshape(1, -1))
logit = model.decision_function(embedding_scaled)
probability = 1 / (1 + np.exp(-logit / temperature))
SHA-256 checksum for fracture_probe.joblib:
5ab04c187564f84cd26dfac5467f2949094f1045efc9b59d2d97260ec3f0dad6
A .sha256 sidecar file is included in this repository for automated verification.
If you use this model, please cite:
@misc{edgefracture2026,
title={EdgeFracture: CXR Foundation Fracture Probe for Edge Deployment},
author={Ibrahim Dagib},
year={2026},
url={https://huggingface.co/ibdagib/edgefracture-cxr-fracture-probe}
}
This probe is one component of the EdgeFracture pipeline — a two-model fracture triage system combining CXR Foundation embeddings with MedGemma clinical reasoning, built for the Google MedGemma Impact Challenge.