Inspiration

When one of the developers of this app was at the airport several days ago, he noticed a lone officer walking around the parking lot, carrying a computer. The officer had evidently been tasked with locating parking violations, and was stopping at each vehicle to manually type in its license plate so that he could determine if the car was incorrectly parked. With thousands of vehicles at an average airport, and a minimum of 20 seconds required to record and look up each car's information, this task could literally take up days worth of man hours.

On a personal note, we have been impacted by personnel parking incorrectly on our own military installation, leading to delays and routine inconvenience. The primary reason that our unit has not been able to maintain control over the parking privileges is because of the amount of time that it takes to conduct parking enforcement, and the ease of copying or sharing parking passes.

We challenged ourselves to come up with a better solution. By combining the power of machine learning with the instant availability and versatility of the cloud, we created a product which automates a significant portion of the parking enforcement task cycle, allowing parking regulations to be enforced with a fraction of the time and effort.

What it does

Plate Gate is a system that uses mobile-based machine learning to locate and identify parking infractions in real time, using an integrated web management and database service. It uses a trained object detection model to recognize license plates and parse their data. It then passes this data back to the cloud-based API system, which interfaces with a back-end database to determine whether each vehicle is approved to be parked in that location. This database is managed through a web interface, allowing efficient management through CSV file uploads and simple item deletion. All elements of the API and app are authenticated, ensuring that no outside parties are able to gain access to personal data. It also maintains separate databases for all users, allowing many different sessions and endpoints to operate concurrently.

How we built it

The mobile app is built using Swift, and uses a simple and clear user interface for ease of use in the field. The API and management server is running on a Google Cloud Linux Virtual Machine, and is running Apache as its web server. It relies on extensive JavaScript and PHP scripting, and interfaces with a mySQL database in the backend. The mobile app communicates to the API via HTTP GET requests, first authenticating to receive an access token and then passing license plate data to determine whether each license plate is approved for that location. Because all enforcement checks occur on the server, updates to the database are instantaneously reflected on all clients. The front end for the web management interface was initially built using Webflow and exported into the cloud environment. The machine learning model for classifying the license plate numbers was built using a service called Turi, and trained using a data set we gathered.

Challenges we ran into

The biggest challenge that we faced was that neither of us had experience with mobile app development, creating a steep learning curve for coding in Swift. This was consistently the biggest hurdle, but we also faced a series of challenges with implementing the web interface and allowing it to communicate with the mobile app. We also struggled to get the optimal sensitivity of the machine learning model to get the highest accuracy.

Accomplishments that we're proud of

We are extremely proud of the full integration of the mobile app with the web interface. The level of accuracy of the machine learning model surprised us, especially under adverse conditions. We conducted testing during all levels of light, and the system was able to correctly identify the majority of license plates even in the middle of the night. This was also the first project that either of us have built using a machine learning model, which we trained ourselves. We were able to accomplish all of the primary goals for the project which we determined at the start, and are extremely happy with the end product.

What we learned

We learned the many nuances of integrating a full stack web interface with a mobile application. Over the course of this project, we learned almost all of the skills in Swift that were needed to build it, coming from almost no experience. At first, we planned on using a pre-built machine learning model, (Google's TensorFlow), but decided to stretch ourselves and instead write our own. We learned the importance of troubleshooting on the lowest level first, and gained significant experience in debugging web-based API systems.

What's next for Plate Gate

We plan on continuing the development of Plate Gate, and implementing it at our own institution. We hope that it will reduce parking congestion, and decrease the load on parking enforcement. We are excited to see where this project will turn into, and thank Hack CU for giving us the opportunity to develop it.

Share this project:

Updates