We wanted to build a project involving machine learning and classification and we decided early on we wanted to do something with identifying dog breeds, because dogs are literally amazing. While we had the basic idea in mind, we decided to package it in an iOS app to help people who may have lost their dogs get some help from the community or if people just want to see random dogs they can do that too! Plus if dogs ever acquire sentience and human level intelligence, we have the start of a Dog Tinder and/or Dog SnapChat!
What it does
The app's functionality can be split into two parts. First the app allows users to take pictures of any dog they encounter in the wild. The image is uploaded and the breed of the dog is identified and the information is stored for later use. Secondly, a map is available that plots out all dogs seen in the local area.
How I built it
- The iOS application is built and hosted using Expo SDK and React Native
- The backend is ran using Flask hosted by App Engine
- The classifier was trained using the Stanford Dog dataset using Google's AutoML to automatically come up with an optimal model
Challenges I ran into
- Uploading all of the image data set to cloud storage took hours.
- Trying to successfully train classifiers was extremely challenging (we ended up trusting google's wisdom instead)
- Learning to do mobile stuff on the fly
Accomplishments that I'm proud of
- First time ever developing a mobile application
- First time ever using a machine learning model in an actual larger project
- Managed to take advantage of GCP in a way that I haven't before
What I learned
- Machine learning is hard (but interesting)
- GCP, although the interface is a bit confusing, has a lot of useful things
What's next for Find Fido
- Try to clean up annotations and interface
- Give user's ability to filter by breed and look for specific types of dogs