Turning mugshots to mugshots: a GAN that un-rotates faces
A 2017 ICCV paper that synthesizes frontal faces from extreme side angles using two perceptual paths at once.

What it does
TP-GAN takes a single face photo shot from any angle—15 degrees off-center all the way to full profile—and generates a photorealistic frontal view of the same person. It was built for the MultiPIE dataset and trained on controlled conditions with cropped, aligned inputs.
The interesting bit
The “global and local perception” split is the hook: one network path handles the overall face structure, while a second path focuses on four local patches (eyes, nose, mouth). The two streams merge to keep identity consistent even when the input is basically an ear and a cheek. The 90-degree model was trained only on 45–90 degree images, which is either admirably honest or a quiet admission that extreme angles break most assumptions.
Key highlights
- TensorFlow 0.12 implementation, so expect archaeology if you try to run it today
- Requires 5 facial keypoints for preprocessing via a provided Matlab script
- Uses a borrowed Light-CNN “DeepFace” network for identity preservation
- Outputs synthesized test images for multiple poses and illumination settings available via Google Drive
- Non-commercial license only; commercial use requires contacting the authors
Caveats
- Code is an “initial release” that “may not be fully tested”—the authors’ words, not mine
- Original MultiPIE dataset cannot be redistributed; you must request it separately
- 90-degree inputs have overlapping left/right eye patches, which the model handles by training exclusion
Verdict
Worth studying if you’re building face normalization pipelines or writing a literature review on pose-invariant recognition. Skip it if you need production-ready code or modern PyTorch implementations; this is a reference release from the TF 0.12 era with the maintenance level to match.