Git Product home page Git Product logo

videofacesummary's Introduction

videofacesummary

makes a summary of faces seen in a video or image

Face Detection and Chip Vectorization

The process to analyze a batch of media (videos or images) using this repository is:

  1. Select a face detection technique to run on the media
  2. Select a chip vectorization technique to run on the media
  3. (optional) Resolve the output into a reference set of unique faces and when/where they appeared

Instructions for building and running the containers for each technique can be found in the associated repository folder.

Face Detection Techniques

  1. dlib_detect - Based on the dlib library's facial landmarks models
  2. mtcnn_detect - Based on the Multi Task CNN algorithm
  3. tinyface_detect - Based on the TinyFace algorithm
  4. frcnn_detect - Based on Faster R-CNN

Output of the Face Detection Techniques is a pickle file for each video or image. The pickle files contains a list of bounding boxes for detected faces found in the video or image.

Chip Vectorization Techniques

  1. resnet50_vector - Make vectors from chips using resnet50 model
  2. facenet_tf_vector - Make vectors from chips using the FaceNet algorithm via Tensorflow
  3. openface_vector - Make vectors from chips using the FaceNet algorithm via Torch

Output of the Chip Vectorization Techniques is a pickle file for each video or image. The pickle file contains a dictionary of unique faces and when/where they appeared in the video or image.

(optional) Create a Reference Set of Unique Faces

Resolving the output into a reference set of unique faces can be done by building the Dockerfile.process container and following the instructions below marked 'run the container to build a reference set of faces from processed media with custom parameters'.

Video Processing container

Dockerfile.process combines face detection (dlib) and chip vectorization (resnet50) components into one pipeline for ease of use. You may find better performance and accuracy on your media from using a different combination of the modular detection and vectorization techniques contained in the subfolders of this repository.

build the container

docker build -f Dockerfile.process -t vfs.process .

run the container to process videos with default parameters

docker run -v /dirWith1movie:/in -v /outputDir:/out vfs.process

run the container to process videos with custom parameters

docker run -v /dirWith1movie:/in -v /outputDir:/out vfs.process directFeatures.py --reduceby 1.0 
            --every 30 --tolerance 0.50 --jitters 4
  • reduceby = Factor to reduce video resolution (ex: 1.0 = original resolution, 2.0 -> reduce horizontal and vertical resolution by 2)
  • every = Process every nth frame (ex: 30 = every 30th frame of video)
  • tolerance = Different faces are tolerance apart (ex: 0.4->tight 0.6->loose)
  • jitters = How many perturberations to use when making face vector

run the container to build a reference set of faces from processed media

Note: This will try to process all pickle files that were vectorized via resnet50 in the "/out" volume by default and build a reference set of faces at /reference/face_reference_set_resnet50.pkl and a hash table of filenames and content hashes at /reference/hash_table.pkl

docker run -v /dirWithDetectedFaces:/out -v /referenceDir:/reference vfs.process resolveVideos.py

run the container to to build a reference set of faces from processed media with custom parameters

docker run -v /dirWithDetectedFaces:/out -v /referenceDir:/reference vfs.process resolveVideos.py 
             --vectors_used openface --detected_faces_folder /out --reference_faces_file face_reference_set_openface.pkl 
             --hash_table_file anotherfile.pkl --tolerance 0.6  --verbose False
  • vectors_used = Vectorization technique used to generate pickle files (resnet50, facenet_tf, openface). Note that vector distance comparison between pickle files created with different vectorization techniques does not provide meaningful results. (default = resnet50)
  • detected_faces_folder = Folder containing 'detected_faces' pickles files (default:/out)
  • reference_faces_file = Pickle file in '/reference' containing reference set of detected faces (default: face_reference_set_resnet50.pkl)
  • hash_table_file = Pickle file in '/reference' containing hash table of filenames and content hashes (default: hash_table.pkl)
  • tolerance = Different faces are tolerance apart (ex: 0.4->tight 0.6->loose)
  • verbose = Print out detailed information related to processing time and results (default: False)")

Jupyter container

Interactive playing with data processed by the Video Processing container

build the container

docker build -f Dockerfile.notebook -t vfs.notebook .

run the container

docker run -v /someDirWithdatafiles:/in -p8888:8888 vfs.notebook

videofacesummary's People

Contributors

d-grossman avatar tukeyclothespin 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.