This repository contains the whole process of our experiments.
pip install -r requirements.txt
Put the database in the ./datasets/image_mask_old
directory, while place the data information in the ./datasets/training_validation.json
, ./datasets/test_1.json
and ./datasets/test_2.json
files.
Run the following command:
python preprocessing.py
We will obtain the preprocessed dataset in the ./datasets/image_mask_new
directory.
The overall structure of the dataset is as follows:
- datasets/
- image_mask_old/
- id_1/
- image.nii.gz
- mask.nii.gz
- id_2/
- image.nii.gz
- mask.nii.gz
- id_3/
- image.nii.gz
- mask.nii.gz
- id_4/
- image.nii.gz
- mask.nii.gz
- ...
- id_1/
- image_mask_new/
- id_1/
- image.nii.gz
- mask.nii.gz
- id_2/
- image.nii.gz
- mask.nii.gz
- id_3/
- image.nii.gz
- mask.nii.gz
- id_4/
- image.nii.gz
- mask.nii.gz
- ...
- id_1/
- training_validation.json
{ "train": [ { "image": "id_1/image.nii.gz", "mask": "id_1/mask.nii.gz", "label": label_1, "radiomics": [ feature_1_1, feature_1_2, feature_1_3, feature_1_4, feature_1_5, feature_1_6, feature_1_7, feature_1_8, feature_1_9, feature_1_10 ] }, ... ], "validation": [ { "image": "id_2/image.nii.gz", "mask": "id_2/mask.nii.gz", "label": label_2, "radiomics": [ feature_2_1, feature_2_2, feature_2_3, feature_2_4, feature_2_5, feature_2_6, feature_2_7, feature_2_8, feature_2_9, feature_2_10 ] }, ... ] }
- test_1.json
{ "test": [ { "image": "id_3/image.nii.gz", "mask": "id_3/mask.nii.gz", "label": label_3, "radiomics": [ feature_3_1, feature_3_2, feature_3_3, feature_3_4, feature_3_5, feature_3_6, feature_3_7, feature_3_8, feature_3_9, feature_3_10 ] }, ... ] }
- test_2.json
{ "test": [ { "image": "id_4/image.nii.gz", "mask": "id_4/mask.nii.gz", "label": label_4, "radiomics": [ feature_4_1, feature_4_2, feature_4_3, feature_4_4, feature_4_5, feature_4_6, feature_4_7, feature_4_8, feature_4_9, feature_4_10 ] }, ... ] }
- image_mask_old/
We download the pre-trained models of ResNet-18, ResNet-34, ResNet-50 , and Swin Transformer on large-scale medical datasets, and place resnet_18_23dataset.pth
, resnet_34_23dataset.pth
, resnet_50_23dataset.pth
, and model_swinvit.pt
files in the ./models
directory.
The model is built using PyTorch. All details have been assembled in the ./train
and ./test
directories. Please replace the "data_dir"
parameter in the following .sh
files with the absolute path, and then execute the following commands to train, validate, and test the models:
sh train_test_resnet18_radiomics_cat_only.sh
sh train_test_resnet18_pretrain.sh
sh train_test_resnet18_pretrain_radiomics_cat_only.sh
sh train_test_resnet18_pretrain_radiomics_cat.sh
sh train_test_resnet18_pretrain_radiomics_add.sh
sh train_test_resnet18_pretrain_radiomics_lr_add.sh
sh train_test_resnet34_radiomics_cat_only.sh
sh train_test_resnet34_pretrain_radiomics_cat_only.sh
sh train_test_resnet50_radiomics_cat_only.sh
sh train_test_resnet50_pretrain_radiomics_cat_only.sh
sh train_test_densenet_radiomics_cat_only.sh
sh train_test_swintr_radiomics_cat_only.sh
sh train_test_swintr_pretrain_radiomics_cat_only.sh
The results will be saved in the ./output
directory.
If you find our work to be useful for your research, please consider citing.
@article{tian2024predicting,
title={Predicting occult lymph node metastasis in solid-predominantly invasive lung adenocarcinoma across multiple centers using radiomics-deep learning fusion model},
author={Tian, Weiwei and Yan, Qinqin and Huang, Xinyu and Feng, Rui and Shan, Fei and Geng, Daoying and Zhang, Zhiyong},
journal={Cancer Imaging},
volume={24},
number={1},
pages={8},
year={2024},
publisher={Springer}
}