Crowdsourced Classifier is the final project that I made for my CS-402, Mobile App Development class that I took Spring semester of 2017 at Boise State University. I came up with the idea for this app because of two events: First, at the same time I started working on this app I had already been researching Convolutional Neural Networks for my Senior Seminar paper and how they use classifications of images in their training data. And second, ever since I learned about the protein folding game called foldit I have always loved the idea of having regular people help advance science. So in this project I set out to combine those two ideas into an app for the Android Play Store.
The way the app works is as follows: The user creates an account and then selects a category of images he or she would like to start classifying. Each classification the user makes is stored into a global database along with all other classifications from all other users (only two pieces of information are stored, the web address of the image being classified and the raw text of the classification). Then, when the user reaches a total of 50 classified images, he or she now can request access to the database which is done via a request button in the settings tab. Once the database is requested, a PHP script on the server where the database is stored converts the database into a CSV file and sends it to the users email address.
This means that this app can be used both by people interested in computer science and machine learning, but also by the general public and anyone who wants to help advance machine learning and science in general. The key advantage of this approach to image classifications is that it allows the person using the database many different classifications to the same image. This means he or she could find, for instance, the top 5 most used words for a given image and then use those as the “correct answer” for what that image is.
I created this application using Android Studio, PHP, and a MySQL database with a table for users and another for the images and their classifications. I also used a large number of libraries for this project including Volley with JSON for handling my PHP scripts for account creation, user login, user information handling, among other things. I also incorporated Picasso, a dynamic image loading library, so that the user does not store any of the images on their phone and rather each time the user wants to classify a new image Picasso uses the image's URL to download it onto their phone at that time.