Skip to content

marinbenc/medical-polar-training

Repository files navigation

Training on Polar Coordinates Improves Biomedical Image Segmentation

Note: Updated version for multiple objects is included in the multiple-objects branch.

--

The code from the paper M. Benčević, I. Galić, M. Habijan and D. Babin, "Training on Polar Image Transformations Improves Biomedical Image Segmentation," in IEEE Access, vol. 9, pp. 133365-133375, 2021, doi: 10.1109/ACCESS.2021.3116265.

Paper link (open access): https://doi.org/10.1109/ACCESS.2021.3116265

BibTex:

@ARTICLE{9551998,
  author={Benčević, Marin and Galić, Irena and Habijan, Marija and Babin, Danilo},
  journal={IEEE Access}, 
  title={Training on Polar Image Transformations Improves Biomedical Image Segmentation}, 
  year={2021},
  volume={9},
  number={},
  pages={133365-133375},
  doi={10.1109/ACCESS.2021.3116265}}

Requirements:

  • PyTorch 1.7.1
  • PyTorch ignite 0.4.3
  • segmentation_models_pytorch 0.1.3
  • Albumentations 0.5.2
  • OpenCV 4.5.1.48
  • Check environment.yml for more packages.

Usage

Training

  • python train.py -h: used to train the polar and cartesian network
  • python train_hourglass.py -h: used to train the centerpoint predictor

Testing

  • python test.py -h: test the polar and cartesian networks
  • python test_center_from_model.py -h: test the polar network with polar origins from the cartesian network
  • python test_centerpoint_model.py -h: test the polar network with polar origins from the centerpoint predictor

Preparing the datasets

Liver

Data obtained from LiTS - Liver Tumor Segmentation Challenge. Link: https://competitions.codalab.org/competitions/17094#participate

The project was trained on the training data, with a (101, 15, 15) train-test-valid split. Download the dataset and add it the scans as follows:

datasets/
  liver/
    scans/
      train/
        segmentation-100.nii
        volume-100.nii
        ...
      test/
        ...
      valid/
        ...

Then run python datasets/liver/scans_to_images.py.

Polyp

Data obtained from CVC-ClinicDB.
Link: https://polyp.grand-challenge.org/Databases/

We use the version from Kaggle since it's in color and uses PNG: https://www.kaggle.com/balraj98/cvcclinicdb

Download the dataset and add it as follows:

datasets/
  polyp/
    CVC-ClinicDB/
      Original/
        612.png
        ...
      Ground Truth/
        ...

Then run python datasets/polyp/split_dataset.py.

Dataset citation:

Bernal, J., Tajkbaksh, N., Sánchez, F.J., Matuszewski, B., Chen H., Yu, L., Angermann, Q., Romain, O., Rustad, B., Balasingham, I., Pogorelov, K., Choi, S., Debard, Q., Maier-Hein, L., Speidel, S., Stoyanov, D., Brandao, P., Cordova, H., Sánchez-Montes, C., Gurudu, S.R., Fernández-Esparrach, G., Dray, X., Liang, J. and Histace, A. "Comparative Validation of Polyp Detection Methods in Video Colonoscopy: Results from the MICCAI 2015 Endoscopic Vision Challenge", IEEE Transactions on Medical Imaging, 2017, Issue 99

Lesion

Dataset obtained from: https://challenge2018.isic-archive.com/task1/ Download link: https://challenge.isic-archive.com/data#2018

Download the validation and training input and GT for Task 1 and extract the folders as follows:

datasets/
  lesion/
    ISIC2018_Task1-2_Validation_Input/
    ISIC2018_Task1-2_Training_Input/
    ISIC2018_Task1_Validation_GroundTruth/
    ISIC2018_Task1_Training_GroundTruth/

Then, navigate to datasets/lesion and run python make_dataset.py.

Dataset citation:

[1] Noel Codella, Veronica Rotemberg, Philipp Tschandl, M. Emre Celebi, Stephen Dusza, David Gutman, Brian Helba, Aadi Kalloo, Konstantinos Liopyris, Michael Marchetti, Harald Kittler, Allan Halpern: “Skin Lesion Analysis Toward Melanoma Detection 2018: A Challenge Hosted by the International Skin Imaging Collaboration (ISIC)”, 2018; https://arxiv.org/abs/1902.03368

[2] Tschandl, P., Rosendahl, C. & Kittler, H. The HAM10000 dataset, a large collection of multi-source dermatoscopic images of common pigmented skin lesions. Sci. Data 5, 180161 doi:10.1038/sdata.2018.161 (2018).

Stacked Hourglass Data

To prepare the data for training the centerpoint model, first do the steps above for the appropriate dataset. Then, run python make_heatmap_dataset.py --dataset <dataset_name>.