/COVID-19-Detection-Flask-App-based-on-Chest-X-rays-and-CT-Scans

COVID-19 Detection 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. 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.

Primary LanguageJupyter Notebook

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:

  1. Chest X-ray images (1000 images) were obtained from: https://github.com/ieee8023/covid-chestxray-dataset
  2. 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

Authors

Kaushik Jadhav