Inspiration
1.8 billion people around the world suffer with anemia due to malnutrition. A majority of these people do not have access to affordable diagnoses and treatment, and many do not even know of the implications of untreated anemia. We believe that it is necessary to ensure that all humans around the world, from developing countries or not, have access to quick, easy, and free anemia diagnosis, as well as medical recommendations and treatment plans.
What it does
We created a website where people can upload an image of their fingernails to receive a percent chance on how likely they are to be anemic. The website takes the image and sends it to the convolutional neural network model which processes it with a sigmoid function and returns a score between 0 and 1. If the score is less than or equal to 0.3, the site takes the user to a new page saying that they most likely do not have anemia. However, if the score is greater, then it will send the user to a page displaying the percent chance of anemia, and links to medical advice and recommendation, including changes in eating habits and other ways to overcome anemia.
How we built it
We discovered a strong correlation between fingernail coloring/patterns and prevalence of anemia in individuals. With this, we built a convolutional neural network to analyze photos of fingernails and accurately return an anemia diagnosis. Furthermore, we integrated this with a full-stack web application where users can easily upload a picture of their fingernails, and receive information within seconds. Our ML model was trained on over 4,500+ photos of fingernails in a publicly available dataset, ensuring accuracy and ample data for training and validation
Challenges we ran into
With anemia.ai being our first exposure to machine learning, we faced many issues with preprocessing and training. Firstly, we faced an issue with inconsistent file sizes in our training/testing dataset. Due to this, we had to batch resize all of our files, as well as organize and split them into the proper architecture for training. When we first trained the model, we were receiving extremely low accuracy percentages. To resolve this, we added dropout layers to our model and continuously retrained the model under various architectures (until 4 am 😅), until we were finally able to achieve an accuracy which we were proud of.
Accomplishments that we're proud of
We are proud of our convolutional neural network which can accurately predict anemia by malnutrition from simply a photo of one's fingernails. We are also proud of our user-friendly frontend interface and the large-scale implications of this project.
What we learned
We learned about neural networks and CNN to create a functional machine learning model. We also learned a lot about preprocessing our data and training a model on many different architectures to optimize accuracy. Furthermore, we learned about creating a frontend interface and integrating our machine learning model into a functional website.
What's next for Anemia.ai
To further increase the accessibility of our project, we would like to implement an easier way to produce the images of fingernails for the model. As of right now, a user must upload a preprocessed and cropped image of their fingernails, however we would like to utilize OpenCV to allow users to simply take a photo of their hand. From there, the model can isolate the fingernails and run the anemic predictions. Anemia.ai has vast implications, allowing people in third-world-countries without accessing to proper medical equipment to receive a preliminary diagnosis and correct their eating habits to regress the probability of having anemia.
Built With
- ai
- cnn
- colab
- inception
- keras
- machine-learning
- python
- tensorflow
Log in or sign up for Devpost to join the conversation.