PyTorch implementation of a projection-aware longitudinal tumor synthesis framework for mammograms. The model uses paired prior and current mammograms, view/side embeddings, temporal cross-attention, a variational latent unit, anatomically constrained blending, and a Swin-based discriminator.
projection_aware_longitudinal_tumor_synthesis/
├── train.py
├── test.py
├── infer.py
├── configs/
├── data/
├── models/
├── losses/
├── engine/
├── metrics/
├── utils/
├── scripts/
└── assets/
dataset/
├── train/
│ ├── metadata.csv
│ ├── prior/
│ ├── current/
│ ├── breast_masks/
│ └── tumor_masks/
├── val/
│ ├── metadata.csv
│ ├── prior/
│ ├── current/
│ ├── breast_masks/
│ └── tumor_masks/
└── test/
├── metadata.csv
├── prior/
├── current/
├── breast_masks/
└── tumor_masks/
case_id,prior_path,current_path,breast_mask_path,tumor_mask_path,view,side,label
0001,train/prior/0001.png,train/current/0001.png,train/breast_masks/0001.png,train/tumor_masks/0001.png,CC,Left,1
0002,train/prior/0002.png,train/current/0002.png,train/breast_masks/0002.png,,MLO,Right,0label=1indicates cancer case.tumor_mask_pathcan be empty for normal cases.viewshould be one ofCC,MLO.sideshould be one ofLeft,Right.
conda create -n proj_tumor python=3.10 -y
conda activate proj_tumor
pip install -r requirements.txtpython train.py \
--data_root /path/to/dataset \
--train_csv train/metadata.csv \
--val_csv val/metadata.csv \
--output_dir runs/exp1python test.py \
--data_root /path/to/dataset \
--test_csv test/metadata.csv \
--checkpoint /path/to/checkpoints/best_generator.ptpython infer.py \
--data_root /path/to/dataset \
--csv_path test/metadata.csv \
--checkpoint /path/to/checkpoints/best_generator.pt \
--save_dir outputs/inference