gan-skin-lesion

Code to reproduce the results for the paper "Skin Lesion Synthesis with Generative Adversarial Networks" in ISIC Skin Image Analysis Workshop and Challenge @ MICCAI 2018.

In this repository you will find the code to generate the "Instance" and "Semantic" images. The network used is pix2pixHD (Wang et al.), which is referenced below. You can find our PGAN modification in the link here and the classification network used for our tests here.

Example Synthetic Images

Preparing the data and environment

Configuring the container.

We used nvidia-docker for all experiments. Run the following command to configure a container:

nvidia-docker run -ti --userns=host --shm-size 8G -v /home/gan-skin-lesion/:/gan-skin-lesion/ --name ganskinlesion -p 8008:8008 tensorflow/tensorflow:nightly-devel-gpu-py3 /bin/bash

Inside the container, install dependencies:

apt-get install imagemagick git

pip install scikit-image pillow joblib

Download and extract your data.

You need to download the 2018 ISIC Challenge training set. Download images and ground truth for tasks 1 and 2.

Generate semantic and instance maps.

run the script prepare_files.sh pointing to the files you've just downloaded. Example:

sh prepare_files.sh -a ISIC2018_Task2_Training_GroundTruth_v3/ -s ISIC2018_Task1_Training_GroundTruth/ -i ISIC2018_Task1-2_Training_Input/

When the script finishes running (it may take a good while), you should have a folder called pix2pixHD (which will be cloned from the original authors). Also, you should see a pix2pixHD/datasets/skin/ folder containing the data you need to train the model: semantic and instance maps. The semantic maps are inside the train_label folder, and the instance maps are inside the train_inst folder. The data is already divided in train and test, with 250 out of the total 2594 images for test.

Running the GAN

Install dependencies

pip3 install -r requirements.txt

Run training

python3 train.py --name label2skin --dataroot datasets/skin/ --label_nc 8 --gpu_id 0 --batchSize 2 --tf_log --continue_train

Check the pix2pixHD/options folder for more details.

Run test

python3 test.py --name label2skin --dataroot datasets/skin/ --label_nc --gpu_id 0

Citation

If you find this useful for your research, please use the following.

  @inproceedings{bissoto2018skin,
	title={Skin Lesion Synthesis with Generative Adversarial Networks},
	author={Bissoto, Alceu and Perez, F\'abio and Valle, Eduardo and Avila, Sandra},
	booktitle={OR 2.0 Context-Aware Operating Theaters, Computer Assisted Robotic Endoscopy, Clinical Image-Based Procedures, and Skin Image Analysis},
        pages={294--302},
        year={2018},
        publisher={Springer}
}