A team of radiologists from New Orleans studied the usefulness of Chest Radiographs for diagnosing COVID-19 compared to the reverse-transcription polymerase chain reaction (RT-PCR) and found out they could aid rapid diagnosis, especially in areas with limited testing facilities [1].
Another study found out that the radiographs of different viral cases of pneumonia are comparative, and they overlap with other infectious and inflammatory lung diseases, making it hard for radiologists to recognize COVID‐19 from other viral pneumonia cases [2].
This project aims to make the former study a reality while dealing with the intricacies in the latter, with the help of Deep Learning.
The project uses the COVID-19 Radiography Database [3] as it's dataset.
It has a total of 21165
Chest X-Rays (CXRs) belonging to 4 different classes (COVID-19
, Lung Opacity
, Normal
and Viral Pneumonia
).
Three top scoring CNN architectures, VGG-16 [4], ResNet-18 [5] and DenseNet-121 [6], trained on the ImageNet Dataset [7], were chosen for fine-tuning on the dataset.
The results obtained from the different architectures were then evaluted and compared.
Finally, with the help of Gradient weighted Class Activation Maps (Grad-CAM) [8] the affected areas in CXRs were localized.
|
VGG-16 |
ResNet-18 |
DenseNet-121 |
Pathology |
COVID-19 |
Lung Opacity |
Normal |
Viral Pneumonia |
|
Accuracy |
Precision |
Recall |
F1-Score |
0.9956 |
0.9833 |
1.0000 |
0.9916 |
0.9582 |
0.8833 |
0.9464 |
0.9138 |
0.9622 |
0.9667 |
0.8923 |
0.9280 |
0.9913 |
0.9833 |
0.9833 |
0.9833 |
|
Accuracy |
Precision |
Recall |
F1-Score |
0.9871 |
0.9667 |
0.9830 |
0.9748 |
0.9664 |
0.8667 |
1.0000 |
0.9286 |
0.9664 |
1.0000 |
0.8823 |
0.9375 |
0.9957 |
1.0000 |
0.9836 |
0.9917 |
|
Accuracy |
Precision |
Recall |
F1-Score |
0.9957 |
0.9833 |
1.0000 |
0.9916 |
0.9623 |
0.9167 |
0.9322 |
0.9244 |
0.9623 |
0.9500 |
0.9047 |
0.9268 |
0.9957 |
0.9833 |
1.0000 |
0.9916 |
|
|
Total Correct Predictions |
Total Accuracy |
20362 |
98.44% |
229 |
95.42% |
|
Total Correct Predictions |
Total Accuracy |
20639 |
99.78% |
230 |
95.83% |
|
Total Correct Predictions |
Total Accuracy |
20540 |
99.30% |
230 |
95.83% |
|
Confusion Matrices |
|
|
|
git clone 'https://github.com/priyavrat-misra/xrays-and-gradcam.git' && cd xrays-and-gradcam/
pip install -r requirements.txt
- Using
argparse
script for inference
python overlay_cam.py --help
usage: GradCAM on Chest X-Rays [-h] [-i IMAGE_PATH]
[-l {covid_19,lung_opacity,normal,pneumonia}]
-m {vgg16,resnet18,densenet121}
[-o OUTPUT_PATH]
Overlays given label's CAM on a given Chest X-Ray.
optional arguments:
-h, --help show this help message and exit
-i IMAGE_PATH, --image-path IMAGE_PATH
Path to chest X-Ray image.
-l {covid_19,lung_opacity,normal,pneumonia}, --label {covid_19,lung_opacity,normal,pneumonia}
Choose from covid_19, lung_opacity, normal &
pneumonia, to get the corresponding CAM. If not
mentioned, the highest scoring label is considered.
-m {vgg16,resnet18,densenet121}, --model {vgg16,resnet18,densenet121}
Choose from vgg16, resnet18 or densenet121.
-o OUTPUT_PATH, --output-path OUTPUT_PATH
Format: "<path> + <file_name> + .jpg"
python overlay_cam.py --image-path ./assets/original.jpg --label covid_19 --model resnet18 --output-path ./assets/dense_cam.jpg
GradCAM generated for label "covid_19".
GradCAM masked image saved to "./assets/res_cam.jpg".