-
-
Training for Convolutional Neural Network Model
-
Accuracy and Loss Graphs for Convolutional Neural Network Model
-
Number of Images per each label in our dataset
-
Training for DenseNet Transfer Learning Neural Net
-
DenseNet Neural Net Loss Graph
-
DenseNet Neural Net Confusion Matrix
-
Training for ResNet Transfer Learning Neural Net
-
ResNet Neural Net Confusion Matrix
-
Sample Data from our dataset
-
All of our models and corresponding training and validation accuracies
-
ResNet Neural Net Loss Graph
What it does
By statistics drawn from health claim data, about 84.5 million American citizens suffer from skin diseases. The Global Burden of Disease project has shown that skin diseases continue to be the 4th leading cause of nonfatal disease burden worldwide. However, people are usually confused about their skin disease type, not to mention the appropriate treatment for it. Based on this information, we came up with the idea of using existing skin disease data to train a model that can help people recognize their skin disease, and give treatment recommendations accordingly.
How we built it
For the front end, we created a webpage that can identify which type of skin disease our users may have through the pictures they upload. We include ten common skin disease types in our prediction model. The accuracy of our model can reach 0.72. We designed a simple and easy-to-use customer UI. For the backend, we mainly trained a machine-learning model for skin disease detection. We used the TensorFlow package to preprocess our data, including normalization and rescaling of the dataset. We tried different existing models such as ResNet and Densenet, and build CNN models ourselves. After training our models and testing them on validation data, we reached a final accuracy of 0.72. Throughout the process, we read through a lot of papers and websites and we learned a lot about which ML model is better for image classification.
Challenges we ran into
The size of our dataset is huge, even the smallest subfile contains over a thousand images. This leads to a major obstacle of the project: the content of our images varies significantly from each other. Some of them are part of the skin and some of them are body parts, which obviously increases the difficulty for the model to classify each class. We also found that there exist some similar patterns between different types of skin diseases and thus it is more difficult for the model to differentiate them. Time management is also a big challenge we faced for this project. Training an image classification model takes hours. Every time we change a simple parameter, such as the number of layers, learning rate, optimizer, and loss function, we have to run our model on our dataset again, which takes up an hour (1/36 of our entire hackathon challenge).
Accomplishments that we're proud of
We are satisfied that we are able to train a multiclass image classification machine learning model within 36 hours, and use a website to make it interactable with users.
What we learned
We learned to solve a real-world problem by defining the problem, gathering and analyzing data, coming up with a plan, and implementing our solution. We are more familiar with the training machine learning model process, which includes data exploration, data cleaning, and preprocessing, model building, training model on our datasets, and prediction. We also have a better understanding of the structure of NN and how to use packages like TensorFlow, PyTorch, and scikit-learn.
What's next for Do you Have Skin Disease
Beyond recommendations of optimal medical treatment, we propose to add features that will present our users with nearby pharmacies and clinics where they can get the medication and treatment for their symptoms. We are also thinking of providing the top three possible skin diseases that align with the user's image instead of one, since one prediction may contain bias.
Built With
- css
- html
- javascript
- matplotlib
- numpy
- pytorch
- scikit-learn
- tensorflow
Log in or sign up for Devpost to join the conversation.