https://github.com/tomaszrewak/cnn-chest-x-ray-abnormalities-localization
Using CNN, transfer learingn and attribution methods to localize abnormalities on x-ray chest images.
https://github.com/tomaszrewak/cnn-chest-x-ray-abnormalities-localization
attribution chest-xray-images convolutional-neural-networks deep-learning medical-imaging tensorflow transfer-learning vgg16
Last synced: 6 months ago
JSON representation
Using CNN, transfer learingn and attribution methods to localize abnormalities on x-ray chest images.
- Host: GitHub
- URL: https://github.com/tomaszrewak/cnn-chest-x-ray-abnormalities-localization
- Owner: TomaszRewak
- License: mit
- Created: 2018-04-07T11:40:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-06-18T07:49:49.000Z (over 7 years ago)
- Last Synced: 2025-04-01T13:43:22.564Z (7 months ago)
- Topics: attribution, chest-xray-images, convolutional-neural-networks, deep-learning, medical-imaging, tensorflow, transfer-learning, vgg16
- Language: Python
- Size: 337 KB
- Stars: 10
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CNN-chest-x-ray-abnormalities-localization
Using a convolutional neural network, transfer learingn and deep neural network attribution methods to localize abnormalities on x-ray chest images.
## Project status
The project is right now in its initial stage. It still requires some fine tuning. I've managed just to put all the pieces together for it to work.
## Acknowledgement
Special thanks are due to:
- Ayush Singh (@ayush1997). After making some small changes, I've reused his scrapper to download x-ray images from the openi.nlm.nih.gov website (https://github.com/ayush1997/Xvision). My project is also inspired by the way Ayush uses the VGG16 CNN to classify x-ray images.
- Marco Ancona (@marcoancona) for his amazing library called DeepExplain (https://github.com/marcoancona/DeepExplain). It provides (used in this project) attribution methods for Deep Learning that are compatible with tensorflow.## Classifier
The VGG16 is a base of the classification model used to distinguish between normal and abnormal x-ray images. It has been stripped of all fully connected layers. These layers have been replaced with new ones, trained with a transfer learning techniques.
| | Precision | Recall | F-Score | Support |
| --- | --- | --- | --- | --- |
| Normal | 0.58 | 0.56 | 0.57 | 259 |
| Abnormal | 0.77 | 0.79 | 0.78 | 488 |
| avg/total | 0.71 | 0.71 | 0.71 | 747 |## Attribution
Abnormalities are located using DeepLIFT attribution method.
## Usage
To run the whole process you have to follow these steps. (You might have to create ```data``` and ```data/model``` paths manually)
### 1. Download VGG16 model.
```
python scraper/download_model.py
```
e.g.
```
python scraper/download_model.py data/vgg16.tfmodel
```### 2. Download x-ray images and their descriptions.
```
python scraper/scraper.py
```
e.g.
```
python scraper/scraper.py data
```### 3. Extract final convolution layer features.
```
python learning/transfer_feature_extraction.py
```
e.g.
```
python learning/transfer_feature_extraction.py data/images data/transfer_features.pickle data/vgg16.tfmodel
```
In this step vgg16 network is split and only convolution layers are used.### 4. Prepare training and testing examples.
```
python learning/learning_examples_preparing.py
```
e.g.
```
python learning/learning_examples_preparing.py data/images-description.json data/transfer_features.pickle data/training.pickle data/testing.pickle data/examples.json
```It produces training and testing examples used in the training process.
### 5. Train fully connected layers.
```
python learning/fully_connected_layers_training.py
```
e.g.
```
python learning/fully_connected_layers_training.py data/training.pickle data/testing.pickle data/model/model.ckpt
```Features that have been previously extracted from convolutional layers are now used to train fully connected layers.
### 6. Visualize.
```
python learning/visualization.py
```
e.g.
```
python learning/visualization.py data/vgg16.tfmodel data/model/model.ckpt data/examples.json data/images data/results deeplift
```Examples on `````` are now passed through VGG16 CNN connected with our fully connected layers. DeepLIFT attribution method is then used to localize abnormalities. Results are sroted in `````` directory. Names of output files contain information about prediction ```[normal probability, abnormal probability]```.