Inspiration
Have you ever experienced the poor parking system of Virginia Tech? Like many of you, I've felt the frustration of circling lot after lot, watching precious minutes tick away, with class starting soon. It's not just the lost time, but the stress and uncertainty that comes with it. This challenge, faced daily by thousands of Hokies, was the reason we created HokieLot. We envisioned a new way to save student's time and give them less headaches with the current parking system of Virginia Tech. We wanted to create a solution that was not only effective, but also cost and energy efficient.
What it does
Our web application delivers real-time updates on available parking spots in the Perry Street Lot 3 parking lot on campus. Updated at five-minute intervals, the platform provides students with immediate, accurate information on parking availability across campus. There is a web cam pointed towards the lot and takes pictures at each interval. Once taken, the picture gets processed giving a confidence interval for each object you are trying to find similarity for. In this case, if the program detects a car, it will increase the count. The count is then pushed onto a webpage so that users will be able to get information about the parking lot. The program works for both real time use and for a multitude of preset images.
How we built it
The application is composed of three integral components:
AI Model/Back-end services: Utilizes machine learning algorithms to dynamically identify the number of cars currently occupying the parking lot and manages requests between the front-end and the AI model, ensuring seamless communication and data integrity. We specifically used Yolov8 to get a confidence interval for each car detected in the image. The training model used was a data set from COCO (common objects in common).
Front-end Interface: A user-friendly web platform that displays crucial parking information to the users in real-time. We used HTML, CSS, and JavaScript to create a page that displays the number of cars in the parking lot in real time. We used flask to host the output number from the model.
Hardware Setup: We integrated a webcam with a computer to capture images over a couple of hours. The photos were automatically renamed in a sequential order which was in line with the incremental sequence of accessing photos in the main method. This ensured for seamless integration if using a back log of photos. There is also a feature that allows for taking pictures in real time instead of using stored photos, however for easier testing purposes, we decided against this.
Challenges we ran into
One of the biggest difficulties we came across was finding a suitable parking lot to test our data. Ideally, we would have taken all the pictures at a bird eyes view however we did not have a camera or drone that could accomplish this. This was an issue because if there were other cars outside the parking lot or trees obstructing the camera, the program had issues detecting the parked cars. Another complication we ran into was trying to connect the back-end with the front-end. We wanted our program to update real time, making the counter increase/decrease as more cars left and entered the parking lot. We ultimately achieved this, however, there were many hurdles. An implementation we wanted to include was for the program to detect handicap spots. We used our own data set and tried training our model, but it was very flawed and did not work at all. We ended up scrapping this idea.
Accomplishments that we're proud of
One of our most significant achievements is the successful implementation of the YOLOv8 machine learning model to reliably estimate the number of cars in the parking lot. Initially, the model faced challenges due to various external factors, often leading to underestimated counts. However, we innovated by adopting a quadrant-based approach. We divided each image into multiple smaller sections or "quadrants," and performed estimations on these sub-sections independently. This strategy dramatically improved the model's accuracy, reducing the error margin to a mere 2-3 cars per image.
What we learned
- Under-utilization of Accessible Parking: One surprising observation was the under-utilization of accessible parking spaces on campus. Throughout the day, these spots remained largely vacant. This finding raises questions about the actual demand for accessible parking and may suggest an opportunity to reassess the allocation of such spaces.
- Complexity of Real-world Variables: Various unexpected factors, such as lighting conditions and overlapping cars introduced complexities in our model's performance. These real-world variables underlined the necessity of designing robust models capable of handling such unpredictability.
- User Experience: As we worked on the front-end, we learned that user experience is not just about aesthetics but also about delivering real-time, accurate information in the most accessible and intuitive manner possible. This also relates back to the slideshows and videos that will be incorporated in the presentation later on.
What's next for HokieLot
While our current model is effective, there are definitely steps that can be taken to optimize the algorithm. This can be achieved by extensively training our own data or by using a better public dataset. The next step that can be taken is by scaling HokieLot all across campus. By implementing HokieLot in numerous locations, students will be able to get a much getter gauge of how busy certain locations are on campus. Another feature we can add is implementing it into security cameras. By taking snapshots of live security footage, we would be able to determine how many parking spots are left while also retaining the functionality of the camera.
Log in or sign up for Devpost to join the conversation.