Inspiration
One of my family members had to undergo surgery for skin cancer. A new mole appeared on her shoulder, and a biopsy revealed it was melanoma. She had surgery and recovered, but ever since, I’ve started to worry more about the moles on my own body. However, I couldn’t go see a dermatologist every time I felt concerned. Scheduling an appointment requires time, money, and coordination with the doctor’s schedule. I began to wonder: what if there were a way for all of us to overcome these obstacles and use technology to help detect skin cancer at an early stage?
What it does
When a user uploads a photo of a mole, this app analyzes it to determine whether it appears normal or atypical. If the mole is atypical, the app predicts the likelihood of it falling into one of four categories: benign keratosis-like (BKL), melanoma (MEL), basal cell carcinoma (BCC), or vascular lesions (VASC).
How we built it
- We obtained a dataset from Kaggle containing images of both normal moles and skin lesions classified into four categories: BKL (Benign Keratosis-Like), MEL (Melanoma), BCC (Basal Cell Carcinoma), and VASC (Vascular Lesions).
- Using Google Teachable Machine, we trained a machine learning model based on this dataset to recognize these categories.
- We built a server that allows users to upload images, which are then analyzed by the trained model to provide diagnostic predictions.
- Finally, we created a user-friendly web interface where users can upload images of their moles and view the results of the analysis directly on the webpage.
Challenges we ran into
One of our main challenges was running the prediction function using TensorFlow. We initially exported the model using Keras, and when we tested the prediction function in the Python console, it worked successfully. However, when we tried to import the Keras module in our Python application, we encountered an error stating that the Keras module could not be found. We eventually discovered that this was due to compatibility issues between Keras and the macOS Silicon architecture.
While we managed to make it work locally by setting up a virtual environment, the application would not run properly when deployed. To overcome this, we switched to a JavaScript library that supports TensorFlow execution directly in the browser, allowing us to run predictions smoothly without compatibility issues.
Accomplishments that we're proud of
We feel a great sense of accomplishment in successfully integrating multiple elements into this project. The detection feature powered by machine learning, the interactive experience of user file uploads, and a cute, comforting design to ease users' anxiety are all key aspects we’re proud of. Most importantly, we're proud to provide a service that helps people avoid unnecessary "what if" worries and offers accessible healthcare insights for those who may face time or financial barriers to seeing a doctor. We’re grateful to know that our project can make a positive impact on users' lives.
What we learned
We learned about new tools like Google Teachable Machine and gained a basic understanding of how image segmentation works in machine learning. We also learned how to integrate TensorFlow into a web application, allowing us to utilize machine learning in a user-friendly way. Additionally, we developed an understanding of how prediction scores are generated, displayed, and interpreted.
What's next for Detective Mole
Mobile App Development: To make the tool even more accessible, we would like to develop a mobile app. This would allow users to quickly take photos and analyze moles on the go, making it easier for them to regularly monitor their skin.
User Data History & Tracking: We would like to allow users to save their previous images and analysis results to track any changes over time. This feature would be helpful for spotting potential concerns that may develop gradually.
Professional Consultation Integration: We would like to add a feature for users to find their local dermatologists if needed.
Built With
- express.js
- javascript
- node.js
- react.js
- tailwind
- teachablemachine
- tensorflow
Log in or sign up for Devpost to join the conversation.