Skip to main content

To use U-net architecture and train models for medical imaging at ease.

Project description

Train Unet

Aim is to create a low-code easy to use python library for training CNN models using Unet architecture with custom metrics like IoU (Intersection over Union) for semantic segmentation of medical images/scans.

Appliccations in Medical Imaging

  • Many medical applications necessitates finding and accurately labeling things found in medical scans.
  • This is often done using advanced software to assist medical technicians and doctos. However, this task still requires human intervention and such as, can be tedious,slow, expensive and prone to human error.
  • There's huge initiative for use Computer Vision and Deep Learning to automate many of these tasks.

Analyzing medical scans such as

  • CAT scans
  • X-rays
  • Ultra sound
  • PET
  • NMR


U-net - Image segmentation using CNN's.

U-net has become very popular end-to-end encoder-decoder network for Semantic segmentation.

It has a unique Up-down archtiecture which has a contracting path and an expansive path.

U-NET archtiectURE: alt text

U-NET Structure: alt text

Intersection over union(IoU) metrics

IoU is basically a measure of overlap.

IoU = ^Size_of_union/_Size of Intersection

  • Typically IoU over 0.5 is acceptable.
  • higher the IoU better the prediction.

Installation and Usage

git clone https://github.com/iamlmn/train-unet.git
cd train-unet
pip install -r requirements.txt
python3 train_unet/main.py

Training sets & test sets (.png) are expected to be in the below folder format.

Input struct on single train and test set: alt text


Sameple dataset is in data folder. Finding the nuclei in Divergent images. #Spot Nuclei. Speed Cures. (The Kaggle Data Science bowl 2018 Challenge).

use it from Python:
# Configure training target images
IMG_WIDTH = 128
IMG_HEIGHT = 128
IMG_CHANNELS = 3
TRAIN_PATH = '../data/U_NET/train/'
TEST_PATH = '../data/U_NET/validation/'
MODEL_OUTPUT_PATH = 'py_model.h5'

# Training and prediction
from train_unet import TrainUnet
unet_test = TrainUnet(TRAIN_PATH, TEST_PATH, IMG_HEIGHT, IMG_WIDTH, IMG_CHANNELS, MODEL_OUTPUT_PATH) # Create Unet object
X_train, Y_train = unet_test.resize_training_sets(combine_masks = True) # prep training data
X_test = unet_test.resize_target_sets() # prep Target sets
unet_test.train_illustrate() # illustrate every 10th training and masked images
model_path = unet_test.train_model() # Traing
preds_train, preds_val, preds_test = unet_test.load_and_predict() # predict
unet_test.plot_random_comparisons(preds_train_t, preds_val_t, preds_test, _save = True) # comparison plots on random images
ix = 25 # temp
unet_test.classification_report(ix)

TODOs and completed work :

  • Base module class
  • Generalization
  • Brainstorm ideas
  • 3d Segmentations?
  • Unit tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

train_unet-0.0.1.8.tar.gz (25.6 MB view hashes)

Uploaded Source

Built Distribution

train_unet-0.0.1.8-py3-none-any.whl (12.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page