AALNet / README.md
omskim's picture
Update README.md
6184523 verified
|
Raw History Blame Contribute Delete
3.18 kB
metadata
license: cc-by-nc-4.0
base_model:
  - timm/hrnet_w48.ms_in1k
pipeline_tag: keypoint-detection
tags:
  - medical
  - radiology
  - cephalometry
  - landmark-detection
  - facial-asymmetry
  - orthodontics
  - orthognathic-surgery
  - hrnet
extra_gated_heading: Request access to AALNet weights
extra_gated_prompt: >-
  These weights were trained on posteroanterior cephalograms of patients from a
  single institution and are released for non-commercial research only (CC BY-NC
  4.0). They are not a medical device and must not be used for clinical
  diagnosis or treatment decisions.
extra_gated_fields:
  Affiliation: text
  Intended use:
    type: select
    options:
      - Research
      - Education
      - label: Other
        value: other
  I will use these weights for non-commercial research or education only: checkbox
  I will not use these weights for clinical diagnosis or treatment decisions: checkbox
  I will not attempt to identify any individual from the model or its outputs: checkbox
extra_gated_button_content: Agree and request access

AALNet: Asymmetry-Aware Landmark Network

Trained weights of AALNet for detecting 33 landmarks on posteroanterior (PA) cephalograms, from the paper "Asymmetry-aware landmark Network: clinical-asymmetry-aware deep learning for automatic landmark detection on posteroanterior cephalograms".

Code, model description and data preparation: https://github.com/sanghunk20/AALNet

Files

lambda02/fold{0..4}/
├── checkpoint_best.pth   # model weights only (state_dict under the key "model")
└── config.json           # configuration used to build the model

The paper trains AALNet (asymmetry-loss weight λ_asym = 0.2) on five cross-validation folds and reports the mean over the five models on a fixed test set. All five models are provided; there is no single "best" model.

Usage

git clone https://github.com/sanghunk20/AALNet && cd AALNet && pip install -e .
hf download omskim/AALNet --local-dir outputs

python -m aalnet.scripts.eval_checkpoint \
    --output_root outputs \
    --data_root /path/to/dataset_800 \
    --pixel_spacing_file /path/to/pixel_spacing_per_image.json \
    --split test

To load one model in Python:

import torch
from aalnet.models.aalnet import AALNet

model = AALNet(pretrained=False)
state = torch.load("outputs/lambda02/fold0/checkpoint_best.pth", map_location="cpu", weights_only=True)
model.load_state_dict(state["model"])
model.eval()

Input images must be preprocessed as described in the GitHub README (skull ROI crop + letterbox to 800×800).

Training data

PA cephalograms from a single institution (Yonsei University Dental Hospital), used under institutional review board approval. The images cannot be shared.

Intended use and limitations

For research use only. Not a medical device and not validated for clinical decision-making. The models were trained on data from one institution and may not generalise to other devices, populations or acquisition protocols.

License

CC BY-NC 4.0: non-commercial use with attribution.

Citation

The paper is under review; the reference will be added on publication.