Inspiration
"Missing Persons" is a growing concern in many communities around the world, as an increasing number of individuals are reported missing every year. "Missing Criminals" also, is a persistent challenge for law enforcement agencies, as individuals who have committed crimes may go into hiding to evade capture. The problem lies in the difficulty in locating these missing individuals, as well as the limited resources available for searching for them. This often leads to emotional trauma for families and loved ones, and a strain on law enforcement agencies tasked with finding the missing. The need for a comprehensive and effective solution to address the issue of missing persons is clear, to reunite families, provide closure and support, and reduce the burden on law enforcement.
What it does
SpotBot is a missing person/criminal finding system. It takes in query image and details from users and this data is retrieved and the face is searched among available stocked photos of nearby cameras and stored in a directory. It employs the use of face detection and face recognition machine learning models to return the closest match of the found person in the stock images.
Please see the attached YouTube video link to get to know how it works.
How we built it
I used firebase for storing queries and user login info, also, firebase google MLKit to detect faces. I used Facenet's model to extract face embeddings and comparing them with the images meant to be taken from security cams.
The app uses TensorFlow and OpenCV machine learning libraries for face detection and recognition. The FaceNet method is used to get the face embeddings.
To show the process, everything is done step by step and there are buttons to detect face, extract embeddings from it and comparing them. But in a practical scenario, a loop must run and scan all the images to find the required person.
The closest match is returned as per the code, but we can configure it to return a result that crosses the minimum cutoff distance.
Challenges we ran into
The major challenge that I ran into was using the machine learning model's tflite file. This was my first project utilizing ML models in and Android app and sure they posed problem, but it worked at the end. Using firebase was also a challenge, since I stored the images in firebase storage and the other input details in the firebase database. Hence it needed us to search for the image in firebase storage whenever a query at the admin end was raised.
What we learned
Utilizing ML models in android app. I also learned to make better UIs and work more withthe components in android.
What's next for SpotBot
SpotBot has to increase facial recognition accuracy, an emotion detection could also be added to know if the person found is safe or found.
Built With
- android-studio
- firebase
- kotlin
- machine-learning
- mlkit
- model
- tensorflow