General Plan
Task Breakdown
Project Management: Manages the overall project flow and handles external communications with stakeholders and advisors
Frank Genderson
Camera Systems: Researches and compares camera systems and the tools and architecture around them
Joris Wilson
Kavin Mohan
Google Sheets Server: Creates the server to be run on Google Sheets
Frank Genderson
Kavin Mohan
Alan Manjarrez
Vehicle Detection Software: Creates original and leads in modifying existing python code
Joris Wilson
React Native App Development: Programs and manages the user interface for the ROOST app
John Shea
Alan Manjarrez
Meeting Minutes: Manages write-ups of meeting events
John Shea
Camera System
The camera system involves one camera and takes pictures over specified intervals. These pictures are then sent through a redaction filter to increase privacy. The photos then go through a pre-trained algorithm that detects if a car is in these spots or not. This data is then sent through a server which is then sent to an app to display which spots are open.
Sensors
We had considered using a multitude of different sensors including, ultrasonic, pressure, inductive, and thermal for car detection. For the sensors, there would need to be one sensor per car detected, making it less cost-effective in the long run. Inductive sensors would also require the inductive wire to sense each individual car.
Vehicle Detection Software
We have looked between OpenCV and YOLOv5. We tested both models and found out that that YOLOv5 was the better option because the model was pre-trained. OpenCV could not detect as well for the images that we sent through the software. However, OpenCV proved better to do the redaction tasks needed
Application Software
We will be making an app using ReactNative and the Expo framework. This will be using Javascript and Node.js using chocolatey. Regardless, we needed the app to be developable for Android as that is easier to make.
Hardware Specifications
Hikvision DS-2CD2955FWD-IS camera with 360° capture ability
Raspberry Pi in order to act as a server for processing image data captured by the camera
Software Specifications
Acquire vehicle detection data from camera images.
Data shall be parsed quickly and accurately.
Code shall be efficient (to allow for quick data parsing, saving power, etc.).
Visual Studio
Programming integrated development environment (IDE).
Languages used: Python.
Python Libraries: OpenCV, os, torch.
YOLOv5
Pre-trained vehicle detention model that can be intergraded into our existing python code.
React Native
JavaScript-based framework for developing mobile apps for Android and iOS.
GitHub
Our GitHub page documenting our progress.
Out first round of testing was planned and accomplished in early October. The goal of this test was to take pictures of the vehicles parked in Babbio garage, and test them with the default YOLOv5 object detection software. This test was fairly simple, and somewhat unofficial, since the images would not reflect the quality and angles of the actually images we would be using with the actual camera. However, this test proved beneficial in testing if the detection software would work. This test had mixed results with the various images we took, but considering it was able to detect some of the vehicles, we considered this a small success.
Our second round of testing was planned in early November. For this test, the goal was to test the images received from the 360 degree camera, as well as the YOLOv5 software. The software used for the images was similar, the only difference was the new images reflected the actually location and angles we would have for the camera. This test proved to be more successful, as the two 180 degree views from the camera were able to capture a larger amount of cars in the parking lot from one camera. The results for this test were more successful than the previous test. Since we were able to adjust the parameters of the vehicle detection knowing what the quality and angle of the images we would be using, we were able to select the right parameters to detect the most amount of cars. The only issues we ran into for this test is because the images, which are at 180 degrees, are wide images, some of the vehicles at the edge of the image would not be detected since they were covered by other vehicles in the way.
Going forward, we plan to take more images from the camera to test the images from different spots in garage, and run them through our image detection software. Moreover, we plan to add a feature where the license plates and people are blurred in order to protect the privacy of bystanders and personal information of the vehicles. In order to do this, we plan to use OpenCV's haar cascades, which are pre-trained models that are capable of detecting and blurring license plates and individual faces. Additionally, we plan to take the outputs from the vehicle detection software, and use it order to route the number of vehicles in the garage at any given time to a local server, and then to our app for the user.