Implementation of the paper A Learned Representation for Artistic Style
Simply implementing the paper A Learned Representation for Artistic Style (Conditional instance normalization)
def conditional_instance_norm(x, scope_bn, y1=None, y2=None, alpha=1):
mean, var = tf.nn.moments(x, axes=[1, 2], keep_dims=True)
if y1==None:
beta = tf.get_variable(name=scope_bn + 'beta', shape=[x.shape[-1]], initializer=tf.constant_initializer([0.]), trainable=True)
gamma = tf.get_variable(name=scope_bn + 'gamma', shape=[x.shape[-1]], initializer=tf.constant_initializer([1.]), trainable=True)
else:
beta = tf.get_variable(name=scope_bn+'beta', shape=[y1.shape[-1], x.shape[-1]], initializer=tf.constant_initializer([0.]), trainable=True) # label_nums x C
gamma = tf.get_variable(name=scope_bn+'gamma', shape=[y1.shape[-1], x.shape[-1]], initializer=tf.constant_initializer([1.]), trainable=True) # label_nums x C
beta1 = tf.matmul(y1, beta)
gamma1 = tf.matmul(y1, gamma)
beta2 = tf.matmul(y2, beta)
gamma2 = tf.matmul(y2, gamma)
beta = alpha * beta1 + (1. - alpha) * beta2
gamma = alpha * gamma1 + (1. - alpha) * gamma2
x = tf.nn.batch_normalization(x, mean, var, beta, gamma, 1e-10)
return x
- Download the dataset MSCOCO, and unzip the dataset to the folder 'MSCOCO'
├── imgs
├── results
├── save_imgs
├── save_para
├── style_imgs
├── vgg_para
├── MSCOCO
├── COCO_train2014_000000000009.jpg
├── COCO_train2014_000000000025.jpg
├── COCO_train2014_000000000030.jpg
├── COCO_train2014_000000000034.jpg
├── COCO_train2014_000000000036.jpg
├── COCO_train2014_000000000049.jpg
...
- Download the vgg16.npy, and put it into the folder 'vgg_para'
- Execute the python file 'main.py'
- python3.5
- tensorflow1.4.0
- scipy
- numpy
- pillow
Style = alpha * style2 + (1 - alpha) * style1
Content | Style1 | Style2 | Result |
---|---|---|---|
Content | Style1 | Style2 | Result |
---|---|---|---|
Content | Style1 | Style2 |
---|---|---|
alpha=0 | alpha=0.6 | alpha=1.0 |
---|---|---|
Content | Style1 | Style2 |
---|---|---|
alpha=0 | alpha=0.6 | alpha=1.0 |
---|---|---|
Content | Style1 | Style2 |
---|---|---|
alpha=0 | alpha=0.2 | alpha=0.4 | alpha=0.6 | alpha=0.8 | alpha=1.0 |
---|---|---|---|---|---|
Content | style | result |
---|---|---|