This project aims to monitor a parking lot with computer vision and provide a mobile phone based interface for communicating availability of parking space.
Introduction The idea for this project comes from a real life problem. In my suburban neighbourhood most people don't have have their own driveway. Instead there are a couple of small parking lots scattered around. Coming home from work sometimes means circling round for a free parking spot. This is a nuisance that I hope to fix with this project. While this specific situation is the inspiration, the project should be adaptable to suit different situations and purposes.
Goal Monitor the number of free parking spaces in a public parking lot. This number is stored on a server and can be accessed by mobile phone.
Conclusion This project is functional, it does what is stated in the goal. In that sense this project is a success. However, it is more a rough proof of concept than a deploy-able package. I have been in a bit over my head here, since this stuff is pretty new to me. I lost a lot of time learning basics and chasing dead ends, so the current status is far less than what I aimed for. I am not done though, more is to come. And since the contest is now over, I feel free to invite the community to participate. Most importantly, I learned a lot en had great fun. I hope others can use this project in their learning process.
Method The basic method I used is described here. I used lots of code comments to provide more detailed information. Specific instructions about recreating the project are in the Github-repository.
The current number of cars in the parking lot is stored in a database running on a Flask web server. Visiting the server returns this car count. Analysis is done on video images from a camera that is aimed at the entry of a parking lot. The background is subtracted, so only moving objects remain. The resulting image is noisy, therefor it is cleaned up. The moving objects are tracked to determine whether it is moving into or out of the parking lot. Analysis on the moving object is done to determine whether it is a car. If a car is detected moving in or out of the parking lot, a query is sent to the database increasing / decrease the car count. The app sends requests to the server, and displays the information. The number can also but retrieved with a browser.
Footage I found a video with a lot of really good edge cases that I could never produce myself. Therefore I decided to develop using this video and then try it for real near my house. I did not manage this within the time of the contest.
What's next? There is plenty left to do. First off I want to rework the car detection. I currently use a HAAR-cascade with a feature file that is trained on the backside of cars. However, it is not very good. In the sample video one car is not detected, probable because it is from the front. It did search for other options, but these where not feasible in time I had left. Next up is adding a timed update and an audio response to the app. Maybe a GPS-trigger. After that, increasing web security by switching to POST-request and adding a password. Then the options of the app can be increased with the option to set/correct the number in the database and a request for the last frame from the camera.
Lastly A HUGE 'Thank you' to the folks at Imaginghub, Basler and UP-Board for providing the UP Embedded Vision Starter Kit. I used it to developed this project.
|ParkingLotMonitor1||Project in action||jpg|
|ParkingLotMonitor2||Project in action||jpg|
|Change car detection||twenty_twenty||2018-11-29|
|And time-interval and audio to app||twenty_twenty||2018-11-29|
|Try the set up for real||twenty_twenty||2018-11-29|