Inspiration
Pulmonary Embolism (PE) is a cardiovascular disease that is considered to be the third most common cause of cardiovascular-related deaths after coronary atherosclerotic heart disease and hypertension with an estimate of 60,000 to 100,000 deaths per year according to a paper released by the American College of Cardiology (ACC) with the title ‘Management of PE’ . The rise of the aging population, poor living standards and less-efficient diagnostic techniques have led to a rise in the occurrence of PE. Increased cases of deaths caused by PE arise from misdiagnosis and a long diagnostic time that leads to late treatment which more often than not, ends up in death. Diagnosing PE can be greatly challenging as its symptoms are very similar to those of other illnesses and accurate diagnosis is crucial. Manual interpretation of the scans takes a very long time and it is a complex matter that requires experts in the field. However, there is a low number of these experts and they may be subject to various limitations such as fatigue and cognitive biases which may also lead to errors. As such I became motivated to aid in this process by creating an application that can shorten diagnostic time for the radiologist and also enable patients to receive prompt medical services.
What it does
The web application has its input as the patient's CTPA scan and thereafter, it runs an inference in which output is derived as a percentage of various classes which inform the radiologist of the presence of Pulmonary Embolism (PE), the location of it and added information such as qa_contrast which indicates whether radiologists noted an issue with contrast in the study.
How I built it
After identifying the problem faced by society at hand and ensuring there is a hich chance of viability for the solution, I first sought to ensure that there is data readily available for it. And I came across a kaggle competition on the same (https://www.kaggle.com/competitions/rsna-str-pulmonary-embolism-detection/overview). However, I was unable to work with this data as it was too large in capacity and in a format I was not well knowledgeable in. And thus I turned to a dataset that had .jpeg images from which I had to endure alot of time in consolidating my own custom set of data while referencing the original train and test CSV files. After acquiring a sufficient number of images to work with, I went on ahead to create a model using Colab based on Adams Optimizer where I achieved an accuracy of 89%. The model was then saved and was accessed by Flask from which an endpoint was interacted with by Laravel which I used to create the views and models to interact with the mysql database.
Challenges I ran into
The challenge I ran into was in obtaining and preparing the data. At the time of its development, there was only one kaggle comptetition that served as a reliable source of data for the task. With it as well, the data was large in capacity for the machine I was using at the time for efficient computing without capacity being surpassed and I had to manually prepare the data (such as creation of csv files) since the original data was in .dcm format (a format I was not well informed with at the time).
Accomplishments that I am proud of
I am proud that the application is able to 'tell' the percentages of the various classifications. Its aim is not to provide for a true-probability scenario but to be able to inform the radiologist of the present percentages of the various classes be it exam-level, image-level or informational.
What I learned
I got to learn a number of medical terms and as well on how to create a multilclass/multilabel image classification system. I also got introduced to and started learning Python language.
What's next for CT scan analysis using ResNet to shorten Diagnostic Time for PE
The next step on this project is to work more collaboratively with actual radiologists so as to actually know the proper procedures on performing diagnosis. I also aim to be able to cumulatively run a cluster of scans at once that are taken from a single patient that can provide an overall analysis since I came to know, after further research, that more than one scans are taken per patient for the analysis to be made.
Built With
- flask2.1.2
- laravel8.83.18
- mysql
- python3.8.10
- tensorflow
Log in or sign up for Devpost to join the conversation.