As COVID-19 wreaks havoc on our Society it becomes more important to offer software solutions to help our medical experts to help others.
This Artificial Intelligence aims to recognize COVID-19 in chest CT-scans and to help CT operators.
We are using an unaltered dataset from Kaggle of CT-scans from patients with COVID-19.
https://www.kaggle.com/andrewmvd/covid19-ct-scans
Starting the training with a simple model to see how it behaves with the dataset.
In order to understand what is going on in the picture we are using the Conventional Neural Network. In our case it has the structure Convolution -> Pooling -> Convolution -> Pooling -> Convolution -> Pooling -> Fully connected Layer -> Output.
Convolution is the act of taking the original data, and creating feature maps from it. Pooling is down-sampling, most often in the form of "max-pooling," where we select a region, and then take the maximum value in that region, and that becomes the new value for the entire region. Fully Connected Layers are typical neural networks, where all nodes are "fully connected." The convolutional layers are not fully connected like a traditional neural network.
Polling: Take a smaller polling Window out of the entire feature-map. Take the maximum value in the window and that becomes the new value for that region. Continue that process until Pooling ends.
To determine the Quality of our model we create a figure after training. We are using the Binary Cross-Entropy Loss function because we only have two labels to differentiate (Covid/non-Covid). The figure shows two line plots, the right with the cross-entropy loss over epochs for the train (blue) and test (orange) dataset, and the left plot showing classification accuracy over epochs. The purpose of loss functions is to compute the quantity that a model should seek to minimize during training. Since the Validation loss does not go down training process is nearly non existing. We seek to improve that in the next steps.
As the Validation shows there is room for improvements.
Through trial and error we improved our implementation. firstly we reworked our input pipeline to help the Conventional Neural Network. next we changed our Conventional Neural Network. It now has the following structure: Convolution -> Pooling -> Convolution -> Pooling -> Convolution -> Convolution -> Convolution -> Pooling -> Convolution -> Pooling -> Convolution -> Pooling -> Fully connected Layer -> Output.
In this case, the plot shows better convergence of the model over training with regard to loss and classification accuracy.
In order to improve the results we trained to train a model using transferred learning. Transferred learning is the principle of using an already trained model and retraining the last layer(s) for the desired use case. This is advisable with limited datasets and training time.
We used a VGG-16 model trained on the imagenet dataset. Imagenet is a dataset of over 15 million labeled high-resolution images belonging to roughly 22,000 categories. Providing a lot of variety to the images we can not provide with our limited dataset.
After retraining the last layers of the model on our dataset we got the following result:
Validation Loss: 0.47
Validation Accuracy: 0.86
With this new model we got the following Results:
Confusion matrix:
Results:
Heatmap:
We decided to offer our solution for free to everyone. to allow easy usage we we created a website. On this website the user only has to upload the CT image and then the results are displayed directly.
We plan to release our project as open source. We encourage the use of our project for research. Additionally, we encourage the use of our project for a basis of a different or better solution.
Comments
Please log in or sign up to comment.