One of our close friends was recently robbed during the day, and they were initially unable to track down who was responsible despite having a security system implemented in their house.However after several months, his family came to identify the robber as a local felon. We thought that there would be a simple and effective way to identify people with a criminal history by adapting security cameras, ultimately making the situation avoidable, or at least making the aftermath of a robbery a lot less of a hassle as people would have a list of suspect(s) beforehand. And thats exactly what we did.
What it does
The Criminal Cam utilizes a raspberry pi in conjunction with a camera module to take a continual stream of photos, and uses facial detection libraries in order to match faces from the stream to a database of individuals with a criminal record. Our mobile application then notifies people who could potentially be in danger, who are within a close proximity of the suspect. The Cam ultimately promotes a safer neighborhood with a lower rate of burglaries and other felonies.
How we built it
We used a raspberry pi combined with a camera module in order to capture a live stream. The camera code to take a continual stream of images was written in python. The images were encoded in a base64 image slot and using JSON objects and https requests, the latitude and longitude as well as the encoded image were transmitted to the server at the backend. In order to process the live stream, we wrote a backend in python. Our mobile app was built with swift that communicates with our backend server and pulls the criminal data and a small visual map to notify local users of the felon.
Challenges we ran into
Possible the biggest challenge we ran into was our issues with real-time data parsing. As we were continuously sending images to the server, we ran into problems where the server could not handle the incoming images and compare it to the data base. This was a pretty barring problem as this was our first time writing the server in python. Being inexperienced we persevered trying to optimize our algorithms for matching the faces and we were successfully able to do so after a long time.
Another error we struggled on for a while was sending Json objects using HTTP requests. Our team has attended several hackathons in the past and achieved invaluable experience. However, this was our first time bringing hardware to the table. Thus, this made it hard for us to debug our problems. After mindlessly watching tutorials after tuorials, we were able to fix the solution by making new objects and placing a key upon the Json object.
Accomplishments that we're proud of
Originally, our team split into three different teams. Ananth and Hari would be in charge of the raspberry pi3 and the camera module. They were supposed to send the continuous stream of images and the location. Nihal would be in charge of the server and comparing the images received from the raspberry pi3 to the data and then comparing it to the criminal data and identifying possible suspects. Sahas was in charge of the ios app which would notify local users in the possibility of a nearby felon. Using all our different skills and coming together and making a finished product made us feel accomplished.
We are also proud of the fact that we have implemented our first hardware solution to a hackathon. As veteran hackers with many awards, we are experienced in software. However, at hardware, we were just like beginners. This made our final product seem way more cool or fun than we have experienced at any other previous hackathon. This hackathon helped us discover our passion for a mix of hardware and software to create a solution. Additionally, Sahas was in charge of making part of the http server and also the ios app which would notify local users in the possibility of a nearby felon
What we learned
We learned a lot about the raspberry pi, and picked up a lot of knowledge about python. We also dealt with video and live streams for the first time as well. We used several new apis applicable to the camera and face detection. We learned to work with Json objects and HTTP requests.
What's next for Criminal Cam
We plan to improve accuracy for our face recognition algorithms, and improve large scale face detection. Furthermore, we plan to add more applications to the camera. We will improve the safety of students walking to school by alerting them if any suspicious individuals are in a nearby vicinity. Criminal Cam could also be applied other types of crimes and dangerous situations as well.