This repository contains serial and parallel implementation of an algorithm taken from Dense 3D Face correspondence paper that automatically establishes dense correspondences between a large number of 3D faces. Starting from automatically detected sparse correspondences on the outer boundary of 3D faces, the algorithm triangulates existing correspondences and expands them iteratively by matching points of distinctive surface curvature along the triangle edges.
serial.py
contains serial implementation of the algorithm.serial.ipynb
contains serial implementation with 3D plots and visualizations.multi-processing.py
contains parallel implementation of the algorithm, it uses Python's inbuiltmultiprocessing
module. (~8x faster)multi-threading.py
uses Python's inbuiltmultithreading
module, performs poorly because of Python's GIL issue.
- memcached (sudo apt install memcached)
- pymemcached (pip install pymemcached)
Note: Before running
multi-processing.py
start the memcached deamon withmemcached -u memcached -d -m 1024 -I 128m -l 127.0.0.1 -p 1111
.
To know more about the implementation, refer to the original Dense 3D Face Correspondence paper and the report prepared for this project.
Click on the image below to play :)
- V. Hemanth Sai
- Rishabh Agrahari (that's meeee 😎 )
- Pratyush Prateek Singh
- Utkarsh Ranjan
- Nitin Mahawar