hwonheo's picture
Bake model_version tag (YYYYMMDD-TASK-SEQ-VARIANT) + fix LICENSE link
8310e31 verified
|
Raw
History Blame Contribute Delete
2.8 kB
---
license: other
license_name: research-only
license_link: LICENSE
tags:
- medical-imaging
- mri
- segmentation
- canine
- veterinary
- lora
- pytorch
- monai
library_name: pytorch
pipeline_tag: image-segmentation
---
# DeepCAN-SEG-PosEnc-T1
**Canine Brain MRI 9-Class Segmentation — T1 sequence adapted**
A T1-weighted axial domain adaptation of [`hwonheo/DeepCAN-SEG-PosEnc`](https://huggingface.co/hwonheo/DeepCAN-SEG-PosEnc).
The shared base (T2-trained) was adapted to T1 with LoRA (rank 16, α 32) on Conv3d
layers; the adapters are **merged into the base weights**, so this checkpoint is a
standard `LRSegmentationMultiClassUNet` — a drop-in replacement loaded exactly like
the base model.
## Classes (9, L/R separated)
`0` Background · `1/5` Lateral Ventricle L/R · `2/6` Gray Matter L/R ·
`3/7` White Matter L/R · `4/8` Cerebellum L/R
Input is 4-channel: image intensity + normalized x/y/z position encoding (for L/R
hemisphere discrimination). Models expect the `RPS` orientation / 0.5 mm grid layout.
## Performance (held-out T1 subjects, Dice, mean of classes 1–8)
| split | base (T2 model on T1) | **T1-adapted** | Δ |
| --- | --- | --- | --- |
| val | 0.322 | **0.649** | **+0.327** |
| test | 0.298 | **0.626** | **+0.328** |
Per-class val Dice: BG 0.96 · Cereb 0.79/0.81 · GM 0.69/0.69 · WM 0.58/0.61 · Vent 0.52/0.52.
The base T2 model nearly collapses on T1 (WM/Ventricle ~0.1–0.2); T1 adaptation roughly
doubles Dice with symmetric L/R recovery.
## Training
| | |
| --- | --- |
| Base | DeepCAN-SEG-PosEnc (T2) |
| Method | LoRA (r=16, α=32) on all Conv3d, base frozen, adapters merged at export |
| Data | 30 T1 HR subjects → 1510 balanced 64³ patches @ 0.5 mm |
| Optimizer | AdamW, LR 2e-4, weight decay 1e-5 |
| Schedule | cosine, 200 epochs (early-stopped @ 40) |
| Loss | MultiClass Dice + CE (dice_weight 0.7) |
| W&B | https://wandb.ai/heohwon/DeepCAN-SegSR-public/runs/wrkvlfbo |
## Usage
```python
from huggingface_hub import snapshot_download
snapshot_download(repo_id="hwonheo/DeepCAN-SEG-PosEnc-T1",
local_dir="src/checkpoint/DeepCAN-SEG-PosEnc-T1")
# Loads exactly like the T2 base (plain UNet, in_channels auto-detected = 4)
from src.inference.models.segmentation_inferencer import SegmentationInferencer
seg = SegmentationInferencer(
checkpoint_path="src/checkpoint/DeepCAN-SEG-PosEnc-T1/DeepCAN-SEG-PosEnc-T1.pth",
device="cuda")
```
In the clinical pipeline, T1 axial scans are auto-detected from DICOM metadata
(EchoTime/RepetitionTime/SeriesDescription) and routed to this checkpoint.
## License
Research use only — see [LICENSE](https://huggingface.co/hwonheo/DeepCAN-SEG-PosEnc-T1/resolve/main/LICENSE).
Contact: Hwon Heo, PhD (heohwon@gmail.com), BMC lab, Asan Medical Center.