- Linux OS
- Python 3
- CPU or NVIDIA GPU + CUDA CuDNN
-
Clone this repo:
git clone https://github.com/m4ln/stainTransfer_CycleGAN_pytorch.git cd stainTransfer_CycleGAN_pytorch
-
Some sample scripts are provided in
./scripts
. Before you can run them the first time, set execute permission via
chmod +x -R ./scripts/
-
Install dependencies via pip
#!./scripts/install_deps.sh
To train a model on your own dataset, you need to create a data folder with two subdirectories trainA
and trainB
that contain images from domain A and B (unaired). You can test your model on your training set by setting --phase train
in test.py
. You can also create subdirectories testA
and testB
if you have test data.
- Prepare your dataset as described above
- To view training results and loss plots, run
python -m visdom.server
and click the URL http://localhost:8097. - Scripts for training and testing are provided in
./scripts
- Train a model:
#!./scripts/train_cyclegan.sh python train.py --dataroot /{path_to_train_data} --name {experiment_name}
- To specify more train options, see the files in the directory
./options/train_options.py
- To see more intermediate results, check out
./results/{experiment_name}/web/index.html
.
- To specify more train options, see the files in the directory
- Test the model:
#!./scripts/test_cyclegan.sh python test.py --dataroot /{path_to_test_data} --name {experiment_name} --model cycle_gan
- To specify more test options, see the files in the directory
./options/test_options.py
- The test results will be saved to a html file here:
./results/{experiment_name}/test_latest/index.html
. - The (pre-)trained model is saved at
./results/{experiment_name}/latest_net_G_{A_or_B}.pth
. - The option
--model test
is used for generating results of CycleGAN only for one side. This option will automatically set--dataset_mode single
, which only loads the images from one set. In this case it might be neccesary to specify--model_suffix "_{A_or_B}"
to find the correct models.
On the contrary, using--model cycle_gan
requires loading and generating results in both directions, which is sometimes unnecessary. - The results will be saved at
./results/
. Use--results_dir {directory_path_to_save_result}
to specify the results directory.
- To specify more test options, see the files in the directory
If you use this project for your research, please cite our paper.
@article{runz2021normalization,
author = {Runz, Marlen and Rusche, Daniel and Schmidt, Stefan and Weihrauch, Martin and Hesser, Jürgen and Weis, Cleo-Aron},
title = {Normalization of HE-stained histological images using cycle consistent generative adversarial networks},
journal = {Diagnostic Pathology},
year = {2021},
volume={16},
pages={71},
doi = {10.1186/s13000-021-01126-y}
}
If you use our datasets, please cite.
@data{data/8LKEZF_2021,
author = {Runz, Marlen and Weis, Cleo-Aron},
publisher = {heiDATA},
title = {{Normalization of HE-Stained Histological Images using Cycle Consistent Generative Adversarial Networks [Dataset]}},
year = {2021},
version = {V1},
doi = {10.11588/data/8LKEZF},
url = {https://doi.org/10.11588/data/8LKEZF}
}
- Add evaluation scripts
The project is forked from pytorch-CycleGAN-and-pix2pix. Only a few parts are modified or added. Please refer to this project for more details on the project files.
- Error:
AttributeError: Can't pickle local object 'get_transform.<locals>.<lambda>'
Solution: Set option--num_workers 0
while training/testing.