/chainer-dfi

Implementation of Deep Feature Interpolation

Primary LanguagePythonMIT LicenseMIT

chainer-dfi

Implementation of "Deep Feature Interpolation for Image Content Changes"(https://arxiv.org/abs/1611.05507) using Chainer.

Requirements

Usage

Download Caffe model and convert

Download Caffe VGG-19 layer model

Download VGG_ILSVRC_19_layers.caffemodel from https://gist.github.com/ksimonyan/3785162f95cd2d5fee77.

Convert Caffe model to Chainer model.

$ python src/create_chainer_model.py

To use Labeled Faces in the Wild (LFW)

Download dataset

  • Download "All images aligned with deep funneling"(lfw-deepfunneled.tgz) from LFW web site
  • Download "LFW attributes file"(lfw_attributes.txt) from the same site.
  • Extract tgz file.

Interpolate feature

Example:

python src/train_lfw.py lfw-deepfunneled lfw_attributes.txt "Silvio Berlusconi" 23 smiling image/lfw_out.jpg -g 0

Output example

person name: "Silvio Berlusconi"
image number: 23

Feature: smiling

Original Weight: 0.1 Weight: 0.2 Weight: 0.3 Weight: 0.4 Weight: 0.5
Original image Image with interpolation weight=0.1 Image with interpolation weight=0.2 Image with interpolation weight=0.3 Image with interpolation weight=0.4 Image with interpolation weight=0.5

Feature: senior

Original Weight: 0.1 Weight: 0.2 Weight: 0.3 Weight: 0.4 Weight: 0.5
Original image Image with interpolation weight=0.1 Image with interpolation weight=0.2 Image with interpolation weight=0.3 Image with interpolation weight=0.4 Image with interpolation weight=0.5

To use Large-scale CelebFaces Attributes (CelebA) Dataset

Download dataset

Make image list for source and target images

Example:

$ python src/extract_image.py img_align_celeba list_attr_celeba.txt image_normal.txt image_smile.txt smiling young,bags_under_eyes -e eyeglasses,male,pale_skin,narrow_eyes,bushy_eyebrows,chubby,double_chin,bald,bangs,receding_hairline,sideburns,wavy_hair,blond_hair,gray_hair,mouth_slightly_open

Interpolate feature

Example:

$ python src/train.py sample/sample.png image/out/out.png image_normal.txt image_smile.txt -g 0 -c 19,39,159,179

Output example

Feature: smiling

Original Weight: 0.1 Weight: 0.2
Original image Image with interpolation weight=0.1 Image with interpolation weight=0.2
Weight: 0.3 Weight: 0.4 Weight: 0.5
Image with interpolation weight=0.3 Image with interpolation weight=0.4 Image with interpolation weight=0.5

Difference from the original implementation

  • feature φ(x) is not normalized.
  • attribute vector w is normalized by w -> ||φ(x)|| * w / ||w|| (||w|| means L2 norm)

License

MIT License