BoneAgeTW2 β€” EfficientNet-B3 Multi-Head TW2 Stage Classifier

Paper: arXiv:2607.23224
Code: github.com/jmmana/BoneAgeTW2
Author: Juan Manuel Castillo Pinto β€” Universidad de La Salle, BogotΓ‘


What is this?

A PyTorch checkpoint of the stage classifier from BoneAgeTW2, an end-to-end deep learning system for automated Tanner-Whitehouse 2 (TW2) skeletal maturation assessment.

The model uses a shared EfficientNet-B3 backbone with 20 independent classification heads (one per TW2 bone site) to simultaneously predict the maturation stage of each bone in a hand radiograph.

Model Performance (Validation, n=1,262 β€” RSNA Bone Age Dataset)

Metric Value
Mean exact accuracy (all 20 bones) 65.82%
Mean within-1 accuracy (all 20 bones) 96.77%
End-to-end MAE (RUS pathway) 14.71 months
Carpal bones exact accuracy 65.1–84.4%
RUS long bones exact accuracy 56.7–66.8%

The within-1 accuracy of 96.77% falls within the human radiologist inter-rater range (King et al., 1994).

Checkpoint

File Size Epochs Loss
models/stage_classifier_epoch2.pt 72 MB 2 0.9477

Loading the Model

import torch, timm
from huggingface_hub import hf_hub_download

# Download
ckpt_path = hf_hub_download("maktub83/BoneAgeTW2", "models/stage_classifier_epoch2.pt")
checkpoint = torch.load(ckpt_path, map_location="cpu")

# Rebuild backbone
backbone = timm.create_model("efficientnet_b3", pretrained=False, num_classes=0)
backbone.load_state_dict(checkpoint["backbone"])
backbone.eval()

# feat_dim = 1536
feat_dim = checkpoint["feat_dim"]

# Each head: Linear(feat_dim, n_stages)
# See github.com/jmmana/BoneAgeTW2/training/04_train_stage_classifier.py
# for build_model() and BONE_NAMES

TW2 Bones (20 heads)

RUS (13): radius, ulna, mc1, mc3, mc5, pp1, pp3, pp5, mp3, mp5, dp1, dp3, dp5
Carpal (7): capitate, hamate, triquetral, lunate, scaphoid, trapezoid, trapezium

Pseudo-Label Method

Training labels were generated by Gaussian inversion of the published TW2 reference distributions: for each bone, age, and sex, the MAP stage from gaussian_params.json is assigned as the pseudo-label. This produces 252,220 annotations from 12,611 RSNA radiographs without any manual effort.

Citation

@article{castillo2026boneagetw2,
  author  = {Castillo~Pinto, Juan~Manuel},
  title   = {{BoneAgeTW2}: Automated Skeletal Maturation Assessment via the {Tanner-Whitehouse 2} Method, Deep Learning, and Clinical Report Generation with Distribution Curves},
  journal = {arXiv preprint arXiv:2607.23224},
  year    = {2026}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Paper for maktub83/BoneAgeTW2