Screen Shot 2017-06-05 at 11.37.55 PM.png

Pupid

The health and wellness benefits of having a dog are almost immeasurable. They provide companionship, comfort, and many times service to their owners. For people with autism they can provide a form of calming social interaction, and studies have proven that they reduce stress, anxiety, and depression. In addition to all of this, they are really really adorable! I decided that for my final project I would build an app centered around these cute and cuddly creatures. My concept is to have a couple of features that help owners decide on the perfect pup. The main motivation for creating this application is to make identifying breeds quick and easy. Rather than trying to mix and match what you see with Google searches, all you have to do is open the app and snap a picture. 

I used OpenCV to perform object recognition on photos taken by users. This actually required two separate android studio projects, one for uploading stock photographs of breeds to a SQL Database run on a Mamp server, and the other for running the user side of the application. In order to optimize comparing a user generated photograph with so many stock photographs, I put each stock photograph’s descriptor Mat (in JSON array form) into the database, so that for each object recognition comparison half of the object recognition (the scene detection, description, and extraction) was already done. This is all completely set up before the app is running, and more stock photographs can be added to the database at any time (increasing the number of comparable breeds). The user facing side of the application works by asking the user to take a picture or select one from their gallery. First it takes this photograph in and does the OpenCV extraction process on it, then it pulls all of the descriptor Mats from the database and tries to match up the keypoints. I chose to use the ORB algorithm because it ran in a short amount of time and was able to analyze the most general set of photographs (other algorithms had trouble if the picture was the wrong size). Based on the matches returned by ORB, I was able to sort the closest 200 keypoints on each stock photograph, average them, and decide which breed was the closest (if any).

The second feature requirement was implemented with Android Studio. Each of the five breeds was given a number (1-5) on a scale of characteristics that the breed matches including size, activity level, comforting qualities, and outdoor space requirements that were matched with different answers to user survey questions to determine compatibility.