hossein1387 / U-Net-Fixed-Point-Quantization-for-Medical-Image-Segmentation

Repository containing code for "U-Net Fixed-Point Quantization for Medical Image Segmentation" paper at MICCAI2019
MIT License
83 stars 17 forks source link
machine-learning miccai-2019 quantization segmentation

alt text alt text alt text

U-Net Fixed Point Quantization For Medical Image Segmentation

This repository contains code for "U-Net Fixed-Point Quantization for Medical Image Segmentation " paper to be appeared at MICCAI2019. It contains our experiments on three different datasets namely: The Spinal Cord Gray Matter Segmentation (GM), The ISBI challenge for segmentation of neuronal structures in Electron Microscopic (EM) and The public National Institute of Health (NIH) dataset for pancreas segmentation in abdominal CT scans.

Data pre-processing:

For each dataset, we used a pre-processing script that can be found in pre-processing directory. Please follow instructions for each dataset. For GM, there is no seperate pre-processing script. Pre-processing happens automatically before training. You can also download the pre-processed data from this link.

Configuring the Model using config.yaml:

Every dataset contains a main directory called ***_BASE. This directory contains the original code for that dataset. The files found in folders in the dataset directory are symbolically linked to the files in BASE directory except the config file. The configuration file is a YAML file that shows what configuration is used for this specific experiment. For instance, for EM dataset, to run an experiment with a specific integer quantization precision (lets try Q4.4 bit for weight and Q4.4 bit for activation), you first need to modify the configuration as follow:


UNET:
    dataset: 'emdataset'
    lr: 0.001
    num_epochs: 200
    model_type: "unet"
    init_type: glorot
    quantization: "FIXED"
    activation_f_width: 4
    activation_i_width: 4
    weight_f_width: 4
    weight_i_width: 4
    gpu_core_num: 1
    trained_model: "/path/to/trained/models/em_a4_4_w4_4.pkl"
    experiment_name: "em_a4_4_w4_4"
    log_output_dir: "/path/to/output/folder"
    operation_mode: "normal"

All datasets use the same configuration format. The following are most of the configuration that can be used:

Running code:

After the configurations are set properly, you can run the following command to start the requested opration (the following shows command to run an em dataset experiment):

python em_unet.py -f config.yaml -t UNET

Citation

If you found our work interesting, please consider citing our paper:

MohammadHossein AskariHemmat, Sina Honari, Lucas Rouhier, Christian S. Perone, Julien Cohen-Adad, Yvon Savaria, Jean-Pierre David, U-Net Fixed-Point Quantization for Medical Image Segmentation, Hardware Aware Learning for Medical Imaging and Computer Assisted Intervention (HAL-MICCAI), 2019.

Bibtex:

@inproceedings{askarimiccai2019,
title={U-Net Fixed Point Quantization For Medical Image Segmentation},
author={AskariHemmat, MohammadHossein and Honari, Sina and Rouhier, Lucas  and S. Perone, Christian  and Cohen-Adad, Julien and Savaria, Yvon and David, Jean-Pierre},
booktitle={Medical Imaging and Computer Assisted Intervention (MICCAI), Hardware Aware Learning Workshop (HAL-MICCAI) 2019},
year={2019},
publisher={Springer}
}