Downloads · 30 days
27
32% of all-time downloads
stevenrq8/fracturas-modelo
fracturas-modelo is a image classification model from stevenrq8. Use it when you need a label for an image. It is set up for keras. The card lists the license as mit.
Modelo de clasificación binaria (fractura / normal) sobre radiografías óseas. Desarrollado como proyecto final de Aprendizaje Computacional (Ingeniería de Sistemas, Universidad de Córdoba).
Downloads · 30 days
27
32% of all-time downloads
All-time downloads
84
Public
Repo size
9.7 MB
Likes
0
Public
Click a slice to open those files.
.keras9.7 MB · 100%
From the Hugging Face model README
Modelo de clasificación binaria (fractura / normal) sobre radiografías óseas. Desarrollado como proyecto final de Aprendizaje Computacional (Ingeniería de Sistemas, Universidad de Córdoba).
Arquitectura: MobileNetV2 con transfer learning desde ImageNet + cabeza de clasificación personalizada. Umbral de decisión ajustado a 0.310 para priorizar la sensibilidad clínica (recall ≥ 0.95).
⚠️ Demostración académica. No es un dispositivo médico ni está validado clínicamente. No debe usarse para decisiones clínicas reales.
Prueba el modelo en el Space de Hugging Face: 👉 stevenrq8/fracturas-rayos-x
from huggingface_hub import hf_hub_download
from tensorflow import keras
import numpy as np
from PIL import Image
model = keras.models.load_model(
hf_hub_download("stevenrq8/fracturas-modelo", "best_mobilenet.keras")
)
UMBRAL = 0.310
IMG_SIZE = (224, 224)
img = Image.open("radiografia.jpg").convert("RGB").resize(IMG_SIZE)
arr = np.asarray(img, dtype="float32")[None, ...]
p = float(model.predict(arr).ravel()[0])
etiqueta = "FRACTURA" if p >= UMBRAL else "NORMAL"
print(f"{etiqueta} — P(fractura) = {p:.1%}")
Dataset base: Bone Fracture Multi-Region X-ray Data
(Kaggle, bmadushanirodrigo, licencia ODC-By v1.0).
El split oficial tenía 63 % de duplicados y 873 grupos con fuga entre train/val/test. Se deduplicó y re-dividió antes del entrenamiento:
| Split | Normal | Fractura | Total |
|---|---|---|---|
| Train | 1 611 | 1 127 | 2 738 |
| Val | 343 | 244 | 587 |
| Test | 328 | 235 | 563 |
Desbalance leve (59 % normal / 41 % fractura) corregido con class_weight.
| Métrica | Valor |
|---|---|
| Accuracy | 0.815 |
| Recall (fractura) | 0.953 |
| Especificidad | 0.649 |
| Precision | 0.661 |
| F1 | 0.781 |
| AUC-ROC | 0.910 |
| Tiempo inferencia (CPU) | 0.070 s |
| Tamaño del modelo | 9.3 MB |
| Modelo | Accuracy | Recall | AUC | Tamaño |
|---|---|---|---|---|
| CNN desde cero | 0.673 | 0.243 | 0.820 | 1.2 MB |
| MobileNetV2 ✅ | 0.815 | 0.796 | 0.910 | 9.3 MB |
| EfficientNetB0 | 0.798 | 0.681 | 0.919 | 43.4 MB |
Se eligió MobileNetV2 por su mejor equilibrio entre recall, AUC y tamaño (viable en hardware CPU gratuito).
| Archivo | Descripción |
|---|---|
best_mobilenet.keras | Modelo final elegido para despliegue |
MIT — ver LICENSE.