Code Monkey home page Code Monkey logo

exif-tagger's Introduction

EXIF AutoTagger ๐Ÿ“ท๐Ÿท๏ธ

What is it?

This is a small tool that enables users to automatically detect and recognize people in their photos ๐Ÿ“ท using , and then add the adequate tags ๐Ÿท๏ธ.

Features:

  • Display photos along with their EXIF metadata.
  • Add map visualization when geographical tags are available.
  • Provide a database of known persons.
  • Auto-detect faces in images.
  • Allow the user to confirm the identities of people in a picture.
  • Auto-classify detected faces and predict the corresponding persons based on a ML model.
  • Can be compiled into a standalone executable (with a self contained sqlite database) for both Linux/Windows

example of tagging

How does it work?

The main process that enables us to easily cluster people from their faces is the process of transforming those faces into vector embeddings using a Deep Neural Network model such as Facenet, which has been trained on thousands of different faces.

embedding vector transformation

Vector embeddings are array of values produced by a model, each relating to a useful feature learned during training.
This allows us to locate faces into a space where similarities between faces translate into spatial closeness. \

Example of embedding space

This in turn allows us to conveniently cluster together face samples for the same identified individual using the method of our choice.

Example of embedding space

In this repository, the opted for a gaussian mixture with full covariance matrix.

When given a new sample, the identity of the person corresponding to the provided space is determined according to which cluster the sample's vector embedding is more likely to belong.

Example of embedding space

There are cases where the person we try to identify is not part of the people we known.
In such cases we would like to classify such individual as unknown.
There are two main methods for doing this:

  • Either by thresholding the likelyhood of the sample belonging to any cluster.
  • Or by incorporating many unknown facial profiles in the embedded space.

In this repository, we chose the second option, but maybe we will use a mix of both in the future.
A set of 500 facial profiles from VG2 was computed into their vector embeddings and into their respective gaussian components.

Disclaimer

Right now, the status of this application is set as work in progress โš ๏ธ. It is NOT intended to be used for any serious work, but the plan is that it is in the future.

Currently, the application requires a LOT of images of the same person. I'm exploring ways to mitigate it.

Feature wishlist

The following features would be nice to implement:

  • Automatically write image description using the people identified in a picture, as well as the time and place.
  • Automatically predict people in a whole picture folder
  • Folder view navigation on the side
  • Map with different photo markers (tagged/untagged) for swift photo exploration

Credit

Facenet pytorch repository
Pytorch
Pyinstaller
QT
Sqlite

Author

Pierre Louvart
โœ‰๏ธ [email protected]
๐Ÿ™ https://github.com/plouvart

License

This software is provided under the MIT license.

exif-tagger's People

Contributors

plouvart avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.