CS294-26 Project 3: Face Morphing

Romil Bhardwaj

Defining Correpondences

I wrote a short utility using plt.ginput to annotate images. Here are the annotations of my face and the target - James May.

Computing the Midway Face

After computing the triangles, the midway face can be computed by setting the warp and dissolve fractions to 0.5 for the morph function. This ensures that both, the geometry and the appearance are mid-way through. Here's a old looking me:

The Morph Sequence

By varying the dissolve fraction and the warp fraction from 0 to 1, we can create multiple frames for an animation which shows me morphing into captain slow. Here's a gif of the animation:

The Mean Face of the Danes Dataset 

Computing the mean face requires first aligning all faces using affine transforms using a fixed traingulation, and then averaging the pixels over all frames. This is the mean face I got. Creepy:

Here's some faces from the dataset morphed into the average shape.

My face morphed into the mean geometry.

Mean face morphed into my geometry.

Caricaturizing myself

To create a caricature of myself, I first computed top 4 of my keypoints that were the furthest from the population mean. I then exaggerated these keypoints by extrapolating them away from the mean value of those keypoints, thus highlighting those features. Here's the result

Bells and Whistles - Meet Asian (Female) Romil!

I downloaded an average asian female face from the web and changed my face geometry and appearance to morph myself into an asian female.