COVID-19-Detection-Flask-App-based-on-Chest-X-rays-and-CT-Scans
COVID-19 Detection based on Chest X-rays and CT Scans using four Transfer Learning algorithms: VGG16, ResNet50, InceptionV3, Xception. The models were trained for 500 epochs on around 1000 Chest X-rays and around 750 CT Scan images on Google Colab GPU. After training, the accuracies acheived for the model are as follows:
InceptionV3 VGG16 ResNet50 Xception Chest X-rays 96% 94% 83% 92% CT Scans 93% 93% 80% 95%
A Flask App was later developed wherein user can upload Chest X-rays or CT Scans and get the output of possibility of COVID infection.
The article for the project was selected and published in Towards Data Science:
https://towardsdatascience.com/covid-19-detector-flask-app-based-on-chest-x-rays-and-ct-scans-using-deep-learning-a0db89e1ed2a
NOTE ----- DO THIS BEFORE SETUP -----
The dataset and models of the repository have been moved to Google Drive due to expiry of my Github LFS. So please download the zip file from here, extract it and replace the above data and models folder with these. Make sure you follow these steps otherwise Flask App will not work properly. Also make sure you have PYTHON V 3.8.5. Other versions might not be supported
Dataset
The dataset for the project was gathered from two sources:
- Chest X-ray images (1000 images) were obtained from: https://github.com/ieee8023/covid-chestxray-dataset
- CT Scan images (750 images) were obtained from: https://github.com/UCSD-AI4H/COVID-CT/tree/master/Data-split 80% of the images were used for training the models and the remaining 20% for testing
Evaluation and Results
Sample output of test images
Classification Reports for Chest X-rays: VGG, InceptionV3, ResNet50, Xception
Confusion Matrix for Chest X-rays: VGG, InceptionV3, ResNet50, Xception
Classification Reports for CT Scans: VGG, InceptionV3, ResNet50, Xception
Confusion Matrix for CT Scans: VGG, InceptionV3, ResNet50, Xception
Screenshots of Flask App
For more screenshots, please visit the screenshots folder of my repo, or click here
Technical Concepts
ImageNet is formally a project aimed at (manually) labeling and categorizing images into almost 22,000 separate object categories for the purpose of computer vision research.
More information can be found here
ResNet50 ResNet-50 is a convolutional neural network that is 50 layers deep. You can load a pretrained version of the network trained on more than a million images from the ImageNet database. The pretrained network can classify images into 1000 object categories, such as keyboard, mouse, pencil, and many animals. Unlike traditional sequential network architectures such as AlexNet, OverFeat, and VGG, ResNet is instead a form of “exotic architecture” that relies on micro-architecture modules.
More information can be found here
VGG16 is a convolutional neural network model proposed by K. Simonyan and A. Zisserman from the University of Oxford in the paper “Very Deep Convolutional Networks for Large-Scale Image Recognition”. The model achieves 92.7% top-5 test accuracy in ImageNet, which is a dataset of over 14 million images belonging to 1000 classes.
More information can be found here
Inception-V3 is a convolutional neural network that is 48 layers deep. You can load a pretrained version of the network trained on more than a million images from the ImageNet database. The pretrained network can classify images into 1000 object categories, such as keyboard, mouse, pencil, and many animals. As a result, the network has learned rich feature representations for a wide range of images. The network has an image input size of 299-by-299.
More information can be found here
Xception is a convolutional neural network that is 71 layers deep. You can load a pretrained version of the network trained on more than a million images from the ImageNet database. The pretrained network can classify images into 1000 object categories, such as keyboard, mouse, pencil, and many animals. As a result, the network has learned rich feature representations for a wide range of images. The network has an image input size of 299-by-299.
More information can be found here
How to use Flask App
- Download repo, change to directory of repo, go to command prompt and run pip install -r requirements.txt
- The dataset and models of the repository have been moved to Google Drive due to expiry of my Github LFS. So please download the zip file from here, extract it and replace the above data and models folder with these. Also make sure you have PYTHON V 3.8.5. Other versions might not be supported
- On command prompt, run python app.py
- Open your web browser and go to 127.0.0.1:5000 to access the Flask App
How to use Jupyter Notebooks
- Download my repo and upload the repo folder to your Google Drive
- Go to the jupyter notebooks folder in my repo, right click the notebook you want to open and select Open with Google Colab
- Activate free Google Colab GPU for faster execution. Go to Runtime -> Change Runtime Type -> Hardware Accelerator -> GPU -> Save