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.
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 |
Normal | Nodule | |
---|---|---|
Precision | 0.7755102 | 0.55555556 |
Recall | 0.76 | 0.57692308 |
Accuracy : 69.3333 %
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.
The above code can be used for Deep Transfer Learning on any Image dataset to train using VggNet as the PreTrained network.
- Download Data- the script download images and saves corresponding disease label in json format.
python scraper.py <path/to/folder/to/save/images>
- 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
-
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
-
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>
-
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>
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
- Implement saliency map or use Deconv for better visualizations.