| --- |
| license: apache-2.0 |
| tags: |
| - bone-age |
| - medical-imaging |
| - radiology |
| - pediatrics |
| - pytorch |
| - pytorch-lightning |
| datasets: |
| - rsna-bone-age |
| metrics: |
| - mae |
| --- |
| |
| # BoneAge: Pediatric Bone Age Assessment |
|
|
| Predicts skeletal bone age (in months) from pediatric hand/wrist X-rays. |
|
|
| ## Model Details |
|
|
| - **Architecture:** ConvNeXt-Tiny (ImageNet-22k pretrained) + sex-aware regression head |
| - **Input:** 512x512 grayscale hand X-ray + patient sex |
| - **Output:** Bone age in months + uncertainty estimates |
| - **Training data:** RSNA Pediatric Bone Age Challenge (12,611 images) |
| - **Validation MAE:** 7.97 months (single model, no TTA) |
|
|
| ## Usage |
|
|
| ```bash |
| pip install git+https://github.com/FlatNineOrg/medilab-boneage.git |
| boneage predict hand.png --sex male --uncertainty |
| ``` |
|
|
| ```python |
| from boneage.config import BoneAgeConfig |
| from boneage.inference.predictor import Predictor |
| |
| predictor = Predictor(BoneAgeConfig()) # auto-downloads weights |
| result = predictor.predict("hand.png", sex=1) |
| print(f"Bone age: {result['predicted_age_months']:.1f} months") |
| ``` |
|
|
| ## Training |
|
|
| Trained for 46 epochs on a Tesla P100 GPU (Kaggle). ConvNeXt-Tiny backbone with: |
| - AdamW optimizer (lr=1e-4, backbone at 0.1x) |
| - Cosine annealing with 5-epoch warmup |
| - Mixed precision (fp16) |
| - Augmentation: rotation, scale, flip, brightness/contrast, Gaussian noise, coarse dropout |
|
|
| ## License |
|
|
| Apache 2.0 |
|
|