--- library_name: transformers tags: - radiology - medical_imaging - bone_age - x_ray - crop license: apache-2.0 pipeline_tag: object-detection base_model: - timm/mobilenetv3_small_100.lamb_in1k --- This model crops hand radiographs to better standardize the image input for bone age models. The model uses a lightweight `mobilenetv3_small_100` backbone and predicts normalized `xywh` coordinates. ![figure](images/fig.png) The model was trained and validated using 12,592 pediatric hand radiographs from the [RSNA Pediatric Bone Age Challenge](https://www.rsna.org/rsnai/ai-image-challenge/rsna-pediatric-bone-age-challenge-2017) using an 80%/20% split. On single-fold validation, the model achieved mean absolute errors (normalized coordinates) of: ``` x: 0.0152 y: 0.0121 w: 0.0261 h: 0.0213 ``` To use the model: ``` import cv2 import torch from transformers import AutoModel model = AutoModel.from_pretrained("ianpan/bone-age-crop", trust_remote_code=True) model = model.eval() img = cv2.imread(..., 0) img_shape = torch.tensor([img.shape[:2]]) x = model.preprocess(img) x = torch.from_numpy(x).unsqueeze(0).unsqueeze(0) x = x.float() # if you do not provide img_shape # model will return normalized coordinates with torch.inference_mode(): coords = model(x, img_shape) # only 1 sample in batch coords = coords[0].numpy() x, y, w, h = coords # coords already rescaled with img_shape cropped_img = img[y: y + h, x: x + w] ``` If you have `pydicom` installed, you can also load a DICOM image directly: ``` img = model.load_image_from_dicom(path_to_dicom) ```