Inspiration

When driving around our campus, it’s nearly impossible to know where there might be free parking spaces, especially during busy events or days. We wanted to develop a streamlined solution to fix that, creating a software that allows drivers to find the cheapest and closest parking lot with open spots, taking into account their highest preferences.

What it does

People Park is a software that uses Google Cloud Vision to identify open parking spots in parking lots around a user. Then, using a combination of factors such as each parking lot’s pricing, parking duration, and distance from the user, the app makes a set of recommendations of nearby parking lots to go to, all depending on the user’s own preferences which they can set. All of this information is ideally formatted into a dynamic UI where a user can visualize the number of parking spaces available in a certain region of a map, and either zoom in view specific parking lots or zoom out to view the number of free parking spaces in a general area. An ideal next step and advanced feature we sought to implement is a model that would be able to predict how many parking spots would be available for a parking lot at any given point in the near future, using past data such on lot capacity for multiple features such as time of day and time of year to train, validate, and test the model.

How we built it

We segmented the code into two parts. The first part was trying two ways of classifying full vs empty parking spots. The first was using a pretrained AlexNet on parking lots to then perform classification. The second way was using Google Vision and their AutoML API to train on a public dataset of parking lots and then use the resulting model to classify parking spaces. For the purposes of building the program, we used static, old parking lot images, but after it is completed it theoretically could work with constant live updated images.

We then took the first part’s output (# of empty parking spots corresponding to each parking lot) coupled with a list of the customer’s inputs, and the data about each parking lot to calculate: Availabilities in the lot Distance of the customer from each lot using Google Maps DistanceMatrix API Price Utilizing this metric we developed a selection method based on the customer’s preference by altering the best selection tool parameters to output a final recommendation..

Challenges we ran into

When using the Google Cloud Vision AutoML Object Detection API, we ran into a host of challenges. Learning to set up and use the interface took quite a while, as we ran into problems with billing account settings. Afterwards, we experienced long wait times in trying to load our data, which included thousands of images into the model. We had implicitly assumed that upon loading the entire image would automatically be considered a bound and that we would be able to assign labels to the images after they were loaded. We found that we would have to do this manually, which was just not feasible for the large dataset. Afterwards, we decided to create a CSV file that pointed to the images. We had to reload the images into Google Cloud Storage, using a much smaller set (about 500 images for each label) to account for uploading times. We ran into several problems in the details of creating the CSV. After the data was finally loaded, the model took a long time to run. Once it finally ran, we found that the accuracy and precision was low. One of the main reasons for this was because the model would predict the wrong bounds for the right image. Because of long loading times, we didn’t have time to debug and improve the model. The other classification option, which was using Caffe and a pretrained AlexNet, also ran into issues because Caffe is more geared towards researchers, so to use it we needed to download many various dependencies, some of which required other dependencies to work.

Accomplishments that we're proud of

Having a detailed and thorough design doc for the project so that we were able to work with a clear vision in mind Breaking down the project into smaller achievable parts Teamwork and team coding Learning to use various tools and APIs such as the Google Vision API, Caffe software for AlexNets, and Google Maps API. Leaving room for scalability in design by using an object oriented program that allows each parking lot to pull real time information from parking lots located around the client.

What we learned

We learned how to take a larger vision for an idea with many moving components, and break it down to a simpler form that still allowed us to tackle the core of the problem. We learned how to utilize APIs in our code, and tackle problems that we have never encountered or coded before. We learned how to approach a problem where we’re taking in user preferences and finding a way to rank different preferences in our final recommendation; this involved understanding what the end user’s final needs were and what interface would make the most sense. We also came to understand a lot of complexities that come with training and testing data, primarily the amount of time and granularity it takes to load and process the data.

What's next for PeoplePark

We envision PeoplePark incorporating predictions on when a parking spot might become available in order to better our search of nearby parking. In addition, we hope to add more detailed functionality that directs people to individual parking spots based on the location from which they enter the parking lot, taking the next step and cutting down on the time it takes for the user to find all available parking spots. Also, we need to finish up with the image recognition segment of the project and create an output to the user, whether in the form of a text using the Twilio APIs or using the UI of an app.

Share this project:

Updates