/Neural-AutoTagging

this repository aims to mimic the auto tagging feature of facebook.... giving some sample images of a few persons this auto tagger can tag these persons where ever they appear in another photos

Primary LanguageJupyter NotebookMIT LicenseMIT

HitCount

Neural-AutoTagging

Neural auto Tagging aims to automatically tag photos based on the few images that it has been shown.it uses Siamese Neural Network Architecture . and the model is based on FaceNet model.

Adding User to The Database

1. Through webcam: users can opt for option 1 in user registration to take a snapshot of themselves from the integrated wecam. program automatically crops the face part from the taken photo and stores in a desired place. moreover if the person is not looking at the webcam then the program waits until it detects a face.
2. Adding photo through webcam is easy but the photo quality can depend on the quality of the webcam and also lightning condition of the room so there is another option to add user from disk. this gives better results

Deleting User

There is also an option to delete user and all photographs stores from the data base

How well does it perform

Enough of talking tech but the important question is how well does it really perform in real life.let me share some real snapshots to give you a real idea about this

Here is a pic to priyanka chopra which it was able to detect perfectly
its not that it can only detect faces in which person is looking directly. here is a picture of aishwarya rai who is looking slightly side ways

It can also detect if two persons are present in the same frame which is the sole perpose of this repository. here is a picture of emma watson and beyonce which is deteced perfectly even though 4 female actress are present in the data base.

So now the main question comes is it perfect. common nothing is perfect in this world and this is no exception. have a look at the following image in which abhishek is recognized as beyonce.

here is another one

Tips to improve performance

1. try using high quality of images. don't use webcam if you webcam is of poor quality
2. try training the model from ground up. i used trained weights here because of lack of computing power . this network can achieve good accuracy by minimizing some thing called triplet loss

Note

Any one can raise an issue if any bug is found. i am also open to pull requests.

Credits

1.Code for Facenet model is based on the assignment from Convolutional Neural Networks Specialization by Deeplearning.ai on Coursera. 2.Florian Schroff, Dmitry Kalenichenko, James Philbin (2015). FaceNet: A Unified Embedding for Face Recognition and Clustering
3. Yaniv Taigman, Ming Yang, Marc'Aurelio Ranzato, Lior Wolf (2014). DeepFace: Closing the gap to human-level performance in face verification
4.The pretrained model we use is inspired by Victor Sy Wang's implementation and was loaded using his code . read more here