Looking for making a project that might be useful to the community we came across the problem of Malaria detection, In remote rural areas Malaria is still a prominent disease. According to the latest World malaria report, released in November 2018, there were 219 million cases of malaria in 2017. The estimated number of malaria deaths stood at 435 000 in 2017.
What it does :
It simply takes zoomed in blood smear images and predicts on the basis of staining whether the blood cells are infected or not. According to the official WHO malaria parasite counting protocol, a clinician may have to manually count up to 5,000 cells, an extremely tedious and time-consuming process, with the help of our system it achieves results much more quickly and effectively using CNNs.
How we built it :
We started with getting the dataset from https://lhncbc.nlm.nih.gov/publication/pub9932 which is publicly available, created our own model for classification of blood smear images making sure it doesn't overfit and then deployed it using Flask and PyTorch on an Amazon ec2 free tier instance, with reverse proxy using Nginx and 2 workers at the same time for load handling using Gunicorn. We also chose Cloudfare for DNS management as it provided free HTTPS and increased protection for our web app.
Challenges we ran into:
The first one for us was using PyTorch on hosting with limited storage space, we found out later about the smaller ~127MB packages for Linux. The biggest one being to reduce the network size and computaion power required for the model so as to enable the practical use of our model in remote and rural areas where high computation power may or may not be available, with 1 GB RAM in the free tier - which would be used by OS and the Web Server (Nginx and 2 workers for load balancing) and then running computation in the left out memory. We decided to build a model from scratch using CNNs resulting in a very lightweight model achieving performance very close to when using transfer learning.
Accomplishments that we're proud of:
We are proud to achieve such performance of our model without using transfer learning with way less number of parameters resulting in less memory consumption and less time for computation and hence making it efficient and effective to use for mobile devices too.
What we learned:
We did a lot of things for our working prototype which helped us implement our theory knowledge into practical application. We learned about hosting services, DNS and server management, security aspects of web apps etc.
What's next for Computer Aided Diagnostic System for Malaria:
We will keep refining the UI of our website and more detailed output descriptions and improve this prototype. We will also approach some pathology labs to test out our system on real world data. Due to being quite lightweight, we are next are going to implement this in a mobile app version which would could be downloaded (removing the need of Internet - which is still not very much available in remote areas) and used for the task.