An SVM classifier trained on frozen MedSigLIP-448 embeddings for Tanner-Whitehouse 3 (TW3) skeletal maturity staging of the distal radius from hand/wrist X-rays.
Part of the Chronos-MSK multi-agent bone age assessment system, built for the Google HAI-DEF competition.
Model Description
This model classifies cropped distal radius X-ray images into TW3 maturity stages. It operates in two steps: MedSigLIP-448 extracts a 1152-dimensional embedding from the image, then a lightweight SVM classifier maps that embedding to a maturity stage.
The approach demonstrates that MedSigLIP's medical pre-training captures bone morphology features so effectively that a simple linear classifier can perform meaningful skeletal staging — no fine-tuning of the vision encoder required.
TW3 Maturity Stages
The Tanner-Whitehouse 3 system grades the distal radius through a series of developmental stages based on ossification center appearance, epiphyseal shape, and fusion status:
The MedSigLIP embedding is useful beyond classification — for retrieval, clustering, or other downstream tasks:
python
1# Just get the embedding, no SVM prediction2embedding = get_embedding("radius_crop.png", vision_model, processor, device)3print(f"Shape: {embedding.shape}")# (1152,)4print(f"L2 norm: {np.linalg.norm(embedding):.4f}")
Training Details
Label Generation
TW3 stage labels are not available in public datasets. We used a teacher-student distillation approach:
Teacher: Google Gemini 3 Pro (Vision) was prompted with strict TW3 criteria to label 14,000 RSNA images with maturity stages
Validation: 88% agreement with human expert annotations on a held-out sample
Student: The lightweight SVM was trained on these synthetic labels, effectively distilling the reasoning of a massive proprietary model into a deployable open-weight classifier
Training Configuration
Parameter
Value
Feature extractor
MedSigLIP-448 (frozen, 1152-D)
Classifier
scikit-learn LinearSVC with Platt scaling
Kernel
Linear
Class weighting
Balanced (handles stage imbalance)
Probability calibration
Enabled (probability=True)
Preprocessing
StandardScaler (zero mean, unit variance)
Train/test split
90/10, stratified by stage
Training samples
~12,600
Test samples
~1,400
Why a Linear SVM?
MedSigLIP's pre-training on medical image-text pairs produces embeddings where bone morphology features are already well-separated. A linear classifier is sufficient because:
The 1152-D embedding space is high-dimensional enough for linear separability
SVMs with balanced class weights handle the natural imbalance across stages (more samples in middle stages)
Platt scaling provides calibrated probabilities for downstream confidence estimation
Training takes seconds (vs hours for fine-tuning), enabling rapid iteration
The model file is <5 MB (vs hundreds of MB for fine-tuned models)
Role in the Pipeline
In the full Chronos-MSK system, the Radiologist agent serves two purposes:
TW3 Stage Classification: Provides a categorical maturity assessment that contextualizes the numeric age prediction (e.g., "Stage H means near-complete fusion, consistent with 14-17 years")
Embedding Extraction: The same 1152-D MedSigLIP embedding used for classification is also passed to the Archivist agent for retrieval. This dual use of a single forward pass is efficient — one embedding serves two agents.
The stage classification is used for clinical reporting and sanity checking (e.g., if the regressor predicts 18 years but the radiologist sees Stage D, something is wrong). It does not directly influence the numeric bone age prediction.
Saved Artifacts
File
Description
Size
radiologist_head.pkl
scikit-learn Pipeline (StandardScaler + SVM) serialized with joblib
~5 MB
The base MedSigLIP-448 model (~1.2 GB) is downloaded automatically from google/medsiglip-448 on first use.
Limitations
TW3 labels were generated synthetically by Gemini 3 Pro, not by human radiologists. While 88% agreement was achieved, systematic biases from the teacher model may propagate.
The model classifies the distal radius only. Full TW3 assessment involves multiple bones (radius, ulna, metacarpals, phalanges) — this is a single-bone simplification.
Stage boundaries are inherently fuzzy in biology. Cases near stage transitions (e.g., G/H boundary) will have lower confidence and higher classification uncertainty.
Performance depends on crop quality. Poor crops from the Scout detector (missed detection, wrong region) will degrade staging accuracy.
Ethical Considerations
TW3 staging is used in clinical workflows for growth disorder diagnosis and in forensic/legal contexts for age determination. While this model provides a useful automated first assessment, skeletal maturity staging should always be confirmed by qualified radiologists, especially in consequential decisions. The synthetic labeling approach (using Gemini as teacher) means the model inherits any biases present in Gemini's training data.