Skip to content

ayush1997/Xvision

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xvision

Chest Xray image analysis using Deep Learning and exploiting Deep Transfer Learning technique for it with Tensorflow.

The maxpool-5 layer of a pretrained VGGNet-16(Deep Convolutional Neural Network) model has been used as the feature extractor here and then further trained on a 2-layer Deep neural network with SGD optimizer and Batch Normalization for classification of Normal vs Nodular Chest Xray Images.

Nodular vs Normal Chest Xray

Some specifications

Property Values
Pretrained Model VggNet-16
Optimizer used stochastic gradient descent(SGD)
Learning rate 0.01
Mini Batch Size 20
Epochs 20
2 Layers 512x512
GPU trained on Nvidia GEFORCE 920M

Evaluation

Confusion Matrix and Training Error Graph

Normal Nodule
Precision 0.7755102 0.55555556
Recall 0.76 0.57692308

Accuracy : 69.3333 %

DataSet

openi.nlm.nih.gov has a large base of Xray,MRI, CT scan images publically available.Specifically Chest Xray Images have been scraped, Normal and Nodule labbeled images are futher extrated for this task.

How to use ?

The above code can be used for Deep Transfer Learning on any Image dataset to train using VggNet as the PreTrained network.

Steps to follow

  1. Download Data- the script download images and saves corresponding disease label in json format.

python scraper.py <path/to/folder/to/save/images>

  1. Follow the scraper/process.ipynb notebook for Data processing and generate
  • Training images folder - All images for training
  • Testing images Folder - All images for testing
  • Training image labels file - Pickled file with training labels
  • Testing image labels file - Pickled file with testing labels
  1. Extract features(CNN Codes) from the maxpool:5 layer of PreTrained CovNet(VggNet) and save them beforehand for faster training of Neural network.

    python train.py <Training images folder> <Testing image folder> <Train images codes folder > <Test images codes folder>

    • Train images codes folder - Path where training images codes will be stored
    • Test images codes folder - Path where testing images codes will be stored
  2. The extracted features are now used for training our 2-Layer Neural Network from scratch.The computed models are saved as tensorflow checkpoint after every Epoch.

    python train_model.py <Training images folder> <Train images codes folder> <Training image labels file> <Folder to save models>

  3. Finally the saved models are used for making predictions.Confusion Matrix is used as the Performance Metrics for this classifcation task.

    python test_model.py <Testing images folder> <Test images codes folder> <Testing image labels file> <Folder with saved models>

Some Predictions

Alt text

References

  1. Learning to Read Chest X-Rays: Recurrent Neural Cascade Model for Automated Image Annotation
  1. Deep Convolutional Neural Networks for Computer-Aided Detection: CNN Architectures, Dataset Characteristics and Transfer Learning

Contribute

If you want to contribute and add new feature feel free to send Pull request here :D

To report any bugs or request new features, head over to the Issues page

To-do

  • Implement saliency map or use Deconv for better visualizations.