Parking is a common issue student and faculty face on university campuses. With most students not willing to pay the hundreds of dollars for permits, they end up cruising around, looking for vacant parking spots which lead to heavily congested areas around campus. During sporting events, the difficulty of finding a parking spot is further elevated.
What it does
Using surveillance infrastructure which has already implemented such as security and traffic cameras, detection of vacant spots can be done by using a machine-learning algorithm to recognize the absence/presence of vehicles in the form of a mobile application for ease of access to drivers.
How we built it
We began by defining the parking spaces. Ids were assigned to each parking space, and the coordinates of the vertices of the polygon that encloses each parking space were recorded. To imitate the surveillance camera, we shot a video from our handheld camera, which we then stabilized in Photoshop. As the video is being transferred into the computer, we have a python script that captured one frame of the video every second. These frames are then sent to our python server. The server passes these frames through YOLO, a popular real-time object detection convolutional neural network. The network is able to find all the cars in the image and draw a box around each car. We then compare the overlap between the box and each parking spot to determine whether a parking spot is taken. Finally, we used socket.io to send the results of these computations in real time to our React Native app, which displays these results on a user-friendly interface.
Challenges we ran into
As we imitated the surveillance camera, slight movements greatly affected the coordinates of the polygons, so we had to utilize image stabilization to mitigate some of these effects. We also struggled to get the image recognition to work. We tried using GCP's AutoML but it couldn't recognize all the cars. Furthermore, it was difficult for us to get socket.io in our flask server to connect to our react native client.
Accomplishments that we're proud of
We're proud of completing this project despite the late start and lack of sleep.
What we learned
I learned how to run YOLOv4 locally on my machine for image recognition! We also learned Socket.io.
What's next for ParkingSpotter
Using the magic of machine learning and pre-existing infrastructure, our app can help to alleviate the parking problem at university campuses. As long as the parking lot managers are willing to plot out the parking spots, they can drastically modernize their parking space. In the future, we hope to train our own convolutional neural networks to identify parking lines and plot out the parking spots automatically, making this process even easier.