Inspiration

We got inspired to take on this project after talking to the people at the American Wild Horse Campaign. AWHC's goal is to create an AI model that identifies wild horses just by a picture of the horse. For this, they required mass amounts of data. AWHC's plan is to utilize community gathered data.

What it does

Our product is a community based app that allows users to submit images of horses to contribute to AWHC's mission in a gamified manner. The core feature of the app is data collection. Users are able to enter details about the Horse such as breed, color, physical markings like spots as well as meta-data like geolocation. Users then take photos of the horse at three angles (required to train the model) and upload their results to a cloud storage bucket. This data is sorted and verified to ensure validity. We ensure that the image was not altered and that the horse is clearly visible through the use of different image classification models publicly available. The data is sorted and stored in Google Cloud Firestore, which makes further data processing simpler.

In order to engage with the community further, we have gamified collecting data. Users receive points for contributing valid images, and are then ranked locally amongst other users. This would motivate users to keep contributing. We also added a way to easily share the photos you have contributed to other social media to entice other potential users to join.

How we built it

We utilized Flutter when building our app. Using Flutter allows us to target many platforms like Android, iOS, and web at once, furthering the possible reach of our app. We also used Firebase to handle most back end tasks such as user management, data management, and storage. We also wrote a custom back end using Flask and Azure to handle things such as image validity.

Challenges we ran into

It was our first time using Azure and a custom backend, and we ran into lots of issues with deployment and debugging.

Accomplishments that we're proud of

We are proud of being able to implement a (crude) fully fleshed out product that works across the whole stack.

What we learned

Through the process of building our solution, we learned about app development, UI/UX design, and how to implement and deploy a back end.

What's next for Horse Catcher

We want to improve our custom back end. Right now, it is Flask based which is not as performant as we wished. Optimizing some of that code or switching to a different framework might resolve that issue. We would also like to use more sophisticated ML models for detecting invalid images. We used off-the-shelf models for this prototype, but we believe investing in a custom build model could be beneficial.

Share this project:

Updates