Instructions to use stevenrq8/fracturas-modelo with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use stevenrq8/fracturas-modelo with Keras:
# Available backend options are: "jax", "torch", "tensorflow". import os os.environ["KERAS_BACKEND"] = "jax" import keras model = keras.saving.load_model("hf://stevenrq8/fracturas-modelo") - Notebooks
- Google Colab
- Kaggle
🦴 Detección de fracturas óseas — MobileNetV2
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.
Demo interactiva
Prueba el modelo en el Space de Hugging Face: 👉 stevenrq8/fracturas-rayos-x
Uso
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%}")
Datos de entrenamiento
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.
Resultados (test set, umbral 0.310)
| 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 |
Comparativa de modelos (umbral 0.5)
| 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).
Entrenamiento
- Framework: TensorFlow / Keras
- Hardware: Google Colab (GPU T4)
- Épocas: EarlyStopping (paciencia 5) + ReduceLROnPlateau
- Regularización: Dropout 0.3, data augmentation, class_weight
- Fine-tuning: descongelación de las últimas capas de MobileNetV2
Limitaciones
- Dataset pequeño (3 888 imágenes únicas) — sobreajuste moderado (train AUC ~0.96 vs val ~0.84)
- Mezcla de regiones anatómicas sin etiqueta explícita (muñeca, hombro, rodilla…)
- Sin validación clínica por radiólogos
- Una sola vista por caso, sin datos demográficos del paciente
Archivos
| Archivo | Descripción |
|---|---|
best_mobilenet.keras |
Modelo final elegido para despliegue |
Licencia
MIT — ver LICENSE.
- Downloads last month
- 41
Model tree for stevenrq8/fracturas-modelo
Base model
google/mobilenet_v2_1.0_224Spaces using stevenrq8/fracturas-modelo 2
Evaluation results
- accuracy on Bone Fracture Multi-Region X-ray Data (deduplicated)test set self-reported0.815
- Recall (fractura, umbral 0.310) on Bone Fracture Multi-Region X-ray Data (deduplicated)test set self-reported0.953
- f1 on Bone Fracture Multi-Region X-ray Data (deduplicated)test set self-reported0.782
- auc on Bone Fracture Multi-Region X-ray Data (deduplicated)test set self-reported0.910