Filling holes in faces with a 2016 GAN hack
A straightforward TensorFlow implementation of semantic image inpainting that grafts completion logic onto an existing DCGAN framework.

What it does
This repo takes a pre-trained Deep Convolutional GAN and repurposes it to fill masked regions in images—primarily faces. You provide a photo with a hole in it; the model hallucinates what should go there, guided by perceptual and contextual loss functions from a 2016 CVPR paper. A checkpoint trained on CelebA for 20 epochs is included, so you can skip straight to inference.
The interesting bit
The project is essentially a surgical modification: Brandon Amos duplicated Taehoon Kim’s DCGAN-tensorflow codebase and spliced in completion logic. It’s a useful snapshot of how researchers in 2016 bootstrapped new ideas by forking working GAN implementations rather than building from scratch. The accompanying blog post appears to be the primary documentation—there’s no elaborate README tutorial here.
Key highlights
- Implements Yeh and Chen Chen et al.’s “Semantic Image Inpainting” paper in TensorFlow
- Ships with a pre-trained face model (CelebA, 20 epochs) in
./checkpoint - Forked from the well-known DCGAN-tensorflow project; modifications are MIT-licensed
- Author’s blog post contains usage details not present in the README
- 1,319 stars suggests it was a popular reference implementation in the mid-2010s deep learning wave
Caveats
- The README is minimal; you’ll need the external blog post for actual usage instructions
- TensorFlow circa-2016 means modern compatibility is uncertain; no mention of TF2 migration
- 20 epochs on CelebA is a modest training run by contemporary standards
Verdict
Worth a look if you’re studying the evolution of image inpainting or need a historical reference implementation of the Yeh et al. approach. Skip it if you want a maintained, modern inpainting tool—this is a period piece from the early GAN era.