Inspiration
A recent survey by the Prevent Cancer Foundation found that more than half of American adults are not up to date on their annual skin cancer screenings. This is concerning given that skin cancer is one of the most common types of cancer in the US, with more than 3.3 million Americans affected by non-melanoma skin cancers.
It is not uncommon to notice small lesions or unusual freckles pop up on our bodies, but many of us put off seeing a dermatologist. I myself recently had a scare related to a skin lesion, which gave rise to the idea for this project.
The motivation behind SpotCheck is to aid users in performing routine self-screenings by evaluating skin lesions and recommending further evaluation by a medical professional if indicated.
What it does
Client uploads photo of skin lesion to S3 bucket, which triggers classifierLambda classifierLambda passes image to pre-trained model deployed on Sagemaker and classifies image as BENIGN or MALIGNANT Lambda function adds classification to S3 object's metadata. Client calls API GET method endpoint ( /detect/{fileName} ) Lambda proxy (getRecommentdation) gets classification label from object metadata and returns recommendation to the user. If the image is classified as malignant: "Our analysis suggests that this lesion may require further examination. We strongly recommend consulting a dermatologist for a professional evaluation." If the image is classified as benign: "Our analysis suggests that this lesion is likely benign. However, we recommend consulting a dermatologist to confirm and ensure your health and safety."
How we built it
This project utilizes AWS cloud services. A pre-trained deep learning model for skin cancer detection from Hugging Face was used for image classification. API Gateway was used for routing requests, Lambda for computing, and Sagemaker for deploying the Hugging Face model. Uploaded images were stored with S3.
Challenges we ran into
Initially I planned to train and deploy my own model. To avoid paying for costly computing resources, I attempted to train the model locally, which was far too slow. Additionally, dependencies for the classification Lambda function were larger than the size limit for Lambda deployment packages, necessitating the use of a container hosted with AWS ECR. For the sake of cost and expediency, I opted to use the pre-trained model from Hugging Face.
What's next for SpotCheck
-Due to time constraints, I have focused on the backend of this application for submission. Next steps will involve building a reactive UI. -For the sake of expediency I used a pre-trained model for image classification. Further training and testing could be done in order to optimize model performance and ensure that recommendations are as accurate as possible. -Authentication with and IdP such as AWS Cognito should be added to the application.
Built With
- amazon-web-services
- api-gateway
- hugging-face
- jupyter-notebook
- lambda
- python
- s3
- sagemaker
Log in or sign up for Devpost to join the conversation.