这周做了一个DeepLearning在Neural Style Transfer上应用的Assignment 。参考算法论文如下

 Gatys et al. (2015) (https://arxiv.org/abs/1508.06576).

先上效果图:

① 美丽的中国石油大学(北京)+ 毕加索风格图像:(所有图像都预处理成400x300的图片)

      

②再放点其他的:

※※过程如下:

  • Create an Interactive Session
  • Load the content image
  • Load the style image
  • Randomly initialize the image to be generated
  • Load the pretrained VGG16 model
  • Build the TensorFlow graph:Initialize the TensorFlow graph and run it for a large number of iterations, updating the generated image at every step
    • Run the content image through the VGG16 model and compute the content cost
    • Run the style image through the VGG16 model and compute the style cost
    • Compute the total cost
    • Define the optimizer and the learning rate

VGG网格结构代码:

  1 ### Part of this code is due to the MatConvNet team and is used to load the parameters of the pretrained VGG19 model in the notebook ###
  2
  3 import os
  4 import sys
  5 import scipy.io
  6 import scipy.misc
  7 import matplotlib.pyplot as plt
  8 from matplotlib.pyplot import imshow
  9 from PIL import Image
 10 from nst_utils import *
 11
 12 import numpy as np
 13 import tensorflow as tf
 14
 15 class CONFIG:
 16     IMAGE_WIDTH = 400
 17     IMAGE_HEIGHT = 300
 18     COLOR_CHANNELS = 3
 19     NOISE_RATIO = 0.6
 20     MEANS = np.array([123.68, 116.779, 103.939]).reshape((1,1,1,3))
 21     VGG_MODEL = 'pretrained-model/imagenet-vgg-verydeep-19.mat' # Pick the VGG 19-layer model by from the paper "Very Deep Convolutional Networks for Large-Scale Image Recognition".
 22     STYLE_IMAGE = 'images/stone_style.jpg' # Style image to use.
 23     CONTENT_IMAGE = 'images/content300.jpg' # Content image to use.
 24     OUTPUT_DIR = 'output/'
 25
 26 def load_vgg_model(path):
 27     """
 28     Returns a model for the purpose of 'painting' the picture.
 29     Takes only the convolution layer weights and wrap using the TensorFlow
 30     Conv2d, Relu and AveragePooling layer. VGG actually uses maxpool but
 31     the paper indicates that using AveragePooling yields better results.
 32     The last few fully connected layers are not used.
 33     Here is the detailed configuration of the VGG model:
 34         0 is conv1_1 (3, 3, 3, 64)
 35         1 is relu
 36         2 is conv1_2 (3, 3, 64, 64)
 37         3 is relu
 38         4 is maxpool
 39         5 is conv2_1 (3, 3, 64, 128)
 40         6 is relu
 41         7 is conv2_2 (3, 3, 128, 128)
 42         8 is relu
 43         9 is maxpool
 44         10 is conv3_1 (3, 3, 128, 256)
 45         11 is relu
 46         12 is conv3_2 (3, 3, 256, 256)
 47         13 is relu
 48         14 is conv3_3 (3, 3, 256, 256)
 49         15 is relu
 50         16 is conv3_4 (3, 3, 256, 256)
 51         17 is relu
 52         18 is maxpool
 53         19 is conv4_1 (3, 3, 256, 512)
 54         20 is relu
 55         21 is conv4_2 (3, 3, 512, 512)
 56         22 is relu
 57         23 is conv4_3 (3, 3, 512, 512)
 58         24 is relu
 59         25 is conv4_4 (3, 3, 512, 512)
 60         26 is relu
 61         27 is maxpool
 62         28 is conv5_1 (3, 3, 512, 512)
 63         29 is relu
 64         30 is conv5_2 (3, 3, 512, 512)
 65         31 is relu
 66         32 is conv5_3 (3, 3, 512, 512)
 67         33 is relu
 68         34 is conv5_4 (3, 3, 512, 512)
 69         35 is relu
 70         36 is maxpool
 71         37 is fullyconnected (7, 7, 512, 4096)
 72         38 is relu
 73         39 is fullyconnected (1, 1, 4096, 4096)
 74         40 is relu
 75         41 is fullyconnected (1, 1, 4096, 1000)
 76         42 is softmax
 77     """
 78
 79     vgg = scipy.io.loadmat(path)
 80
 81     vgg_layers = vgg['layers']
 82
 83     def _weights(layer, expected_layer_name):
 84         """
 85         Return the weights and bias from the VGG model for a given layer.
 86         """
 87         wb = vgg_layers[0][layer][0][0][2]
 88         W = wb[0][0]
 89         b = wb[0][1]
 90         layer_name = vgg_layers[0][layer][0][0][0][0]
 91         assert layer_name == expected_layer_name
 92         return W, b
 93
 94         return W, b
 95
 96     def _relu(conv2d_layer):
 97         """
 98         Return the RELU function wrapped over a TensorFlow layer. Expects a
 99         Conv2d layer input.
100         """
101         return tf.nn.relu(conv2d_layer)
102
103     def _conv2d(prev_layer, layer, layer_name):
104         """
105         Return the Conv2D layer using the weights, biases from the VGG
106         model at 'layer'.
107         """
108         W, b = _weights(layer, layer_name)
109         W = tf.constant(W)
110         b = tf.constant(np.reshape(b, (b.size)))
111         return tf.nn.conv2d(prev_layer, filter=W, strides=[1, 1, 1, 1], padding='SAME') + b
112
113     def _conv2d_relu(prev_layer, layer, layer_name):
114         """
115         Return the Conv2D + RELU layer using the weights, biases from the VGG
116         model at 'layer'.
117         """
118         return _relu(_conv2d(prev_layer, layer, layer_name))
119
120     def _avgpool(prev_layer):
121         """
122         Return the AveragePooling layer.
123         """
124         return tf.nn.avg_pool(prev_layer, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
125
126     # Constructs the graph model.
127     graph = {}
128     graph['input']   = tf.Variable(np.zeros((1, CONFIG.IMAGE_HEIGHT, CONFIG.IMAGE_WIDTH, CONFIG.COLOR_CHANNELS)), dtype = 'float32')
129     graph['conv1_1']  = _conv2d_relu(graph['input'], 0, 'conv1_1')
130     graph['conv1_2']  = _conv2d_relu(graph['conv1_1'], 2, 'conv1_2')
131     graph['avgpool1'] = _avgpool(graph['conv1_2'])
132     graph['conv2_1']  = _conv2d_relu(graph['avgpool1'], 5, 'conv2_1')
133     graph['conv2_2']  = _conv2d_relu(graph['conv2_1'], 7, 'conv2_2')
134     graph['avgpool2'] = _avgpool(graph['conv2_2'])
135     graph['conv3_1']  = _conv2d_relu(graph['avgpool2'], 10, 'conv3_1')
136     graph['conv3_2']  = _conv2d_relu(graph['conv3_1'], 12, 'conv3_2')
137     graph['conv3_3']  = _conv2d_relu(graph['conv3_2'], 14, 'conv3_3')
138     graph['conv3_4']  = _conv2d_relu(graph['conv3_3'], 16, 'conv3_4')
139     graph['avgpool3'] = _avgpool(graph['conv3_4'])
140     graph['conv4_1']  = _conv2d_relu(graph['avgpool3'], 19, 'conv4_1')
141     graph['conv4_2']  = _conv2d_relu(graph['conv4_1'], 21, 'conv4_2')
142     graph['conv4_3']  = _conv2d_relu(graph['conv4_2'], 23, 'conv4_3')
143     graph['conv4_4']  = _conv2d_relu(graph['conv4_3'], 25, 'conv4_4')
144     graph['avgpool4'] = _avgpool(graph['conv4_4'])
145     graph['conv5_1']  = _conv2d_relu(graph['avgpool4'], 28, 'conv5_1')
146     graph['conv5_2']  = _conv2d_relu(graph['conv5_1'], 30, 'conv5_2')
147     graph['conv5_3']  = _conv2d_relu(graph['conv5_2'], 32, 'conv5_3')
148     graph['conv5_4']  = _conv2d_relu(graph['conv5_3'], 34, 'conv5_4')
149     graph['avgpool5'] = _avgpool(graph['conv5_4'])
150
151     return graph
152
153 def generate_noise_image(content_image, noise_ratio = CONFIG.NOISE_RATIO):
154     """
155     Generates a noisy image by adding random noise to the content_image
156     """
157
158     # Generate a random noise_image
159     noise_image = np.random.uniform(-20, 20, (1, CONFIG.IMAGE_HEIGHT, CONFIG.IMAGE_WIDTH, CONFIG.COLOR_CHANNELS)).astype('float32')
160
161     # Set the input_image to be a weighted average of the content_image and a noise_image
162     input_image = noise_image * noise_ratio + content_image * (1 - noise_ratio)
163
164     return input_image
165
166
167 def reshape_and_normalize_image(image):
168     """
169     Reshape and normalize the input image (content or style)
170     """
171
172     # Reshape image to mach expected input of VGG16
173     image = np.reshape(image, ((1,) + image.shape))
174
175     # Substract the mean to match the expected input of VGG16
176     image = image - CONFIG.MEANS
177
178     return image
179
180
181 def save_image(path, image):
182
183     # Un-normalize the image so that it looks good
184     image = image + CONFIG.MEANS
185
186     # Clip and Save the image
187     image = np.clip(image[0], 0, 255).astype('uint8')
188     scipy.misc.imsave(path, image)

接下来就是

# Deep Learning & Art: Neural Style Transfer
# This assignment:
# - Implement the neural style transfer algorithm
# - Generate novel artistic images using your algorithm

# - Most of the algorithms you've studied optimize a cost function to get a set of parameter values. In Neural Style Transfer, you'll optimize a cost function to get pixel values.

  1 # Deep Learning & Art: Neural Style Transfer
  2 # This assignment:
  3 #     - Implement the neural style transfer algorithm
  4 #    - Generate novel artistic images using your algorithm
  5
  6 #    - Most of the algorithms you've studied optimize a cost function to get a set of parameter
  7 #    - values. In Neural Style Transfer, you'll optimize a cost function to get pixel values.
  8
  9 import os
 10 import sys
 11 import scipy.io
 12 import scipy.misc
 13 import matplotlib.pyplot as plt
 14 from matplotlib.pyplot import imshow
 15 from PIL import Image
 16 from nst_utils import *
 17 import numpy as np
 18 import tensorflow as tf
 19
 20 # Essential params
 21 class CONFIG:
 22     IMAGE_WIDTH = 400
 23     IMAGE_HEIGHT = 300
 24     COLOR_CHANNELS = 3
 25     NOISE_RATIO = 0.6
 26     MEANS = np.array([123.68, 116.779, 103.939]).reshape((1,1,1,3))
 27     VGG_MODEL = 'pretrained-model/imagenet-vgg-verydeep-19.mat' # Pick the VGG 19-layer model by from the paper "Very Deep Convolutional Networks for Large-Scale Image Recognition".
 28     STYLE_IMAGE = 'HZC_test_image/2.jpg' # Style image to use.
 29     CONTENT_IMAGE = 'HZC_test_image/bjs.jpg' # Content image to use.
 30     OUTPUT_DIR = 'output/'
 31
 32 #    STYLE weights
 33 #     When complete the assignment, come back and experiment with different weights to see
 34 #    how it changes the generated image G.
 35 #    default value:
 36 #     权重不同,最终生成图像风格也不同
 37 STYLE_LAYERS = [
 38     ('conv1_1', 0.2),
 39     ('conv2_1', 0.2),
 40     ('conv3_1', 0.4),
 41     ('conv4_1', 0.4),
 42     ('conv5_1', 0.4)
 43    ]
 44
 45 #    - use a previously trained convolutional network, and build on top of that.
 46 #    - model: vgg-19; a 19-layer version of VGG network.
 47 #    -         this model has already been trained in the very large ImageNet database.
 48
 49 #    step 1: run the following model to load parameters from VGG model.
 50 #    Use load_vgg_model function in nst_utils.py
 51 model = load_vgg_model("pretrained-model/imagenet-vgg-verydeep-19.mat")
 52 # print(model)
 53
 54 #    CONTENT image
 55 content_image = scipy.misc.imread("images/louvre.jpg")
 56 imshow(content_image)
 57
 58 #    STYLE image
 59 style_image = scipy.misc.imread("images/monet_800600.jpg")
 60 imshow(style_image)
 61
 62 #Tool that was necessary
 63
 64 #    Reshape and normalize the input image (content or style)
 65 def reshape_and_normalize_image(image):
 66
 67     #    Reshape image to mach expected input of VGG16
 68     # image = np.reshape(image,(300,400,3))
 69     image = np.reshape(image,((1,)+image.shape))
 70
 71     #    Substract the mean to match the expected input of VGG16
 72     image = image - CONFIG.MEANS
 73     return image
 74
 75 #    Generate a noisy image bt adding random noise to the content_image
 76 def generate_noise_image(content_image,noise_ratio = CONFIG.NOISE_RATIO):
 77
 78     # Generate a random noise_image
 79     noise_image = np.random.uniform(-20,20, (1, CONFIG.IMAGE_HEIGHT, CONFIG.IMAGE_WIDTH, CONFIG.COLOR_CHANNELS)).astype('float32')
 80
 81     # Set the input_image to be a weighted average of the content image and  a noise image
 82     input_image = noise_image*noise_ratio + content_image*(1 - noise_ratio)
 83
 84     return input_image
 85
 86 #Save image
 87 def save_image(path, image):
 88
 89     # Un-normalize the image so that it looks good
 90     image = image + CONFIG.MEANS
 91
 92     # Clip and Save the image
 93     image = np.clip(image[0], 0, 255).astype('uint8')
 94     scipy.misc.imsave(path, image)
 95
 96 #    Compute the Content Cost use Tensorflow
 97 def compute_content_cost(a_C,a_G):
 98     """
 99     Compute the Content Cost
100
101     Arguments:
102     a_C >>> tensor of dimension(1,n_h,n_w,n_c) hidden layer activations
103     a_G >>> tensor of dimension(1,n_h,n_w,n_c) hidden layer activations
104
105     Returns:
106     J_content >>> scalar that you compute using equation that you needed
107
108     """
109     #    Retrieve params
110     m,n_H,n_W,n_C = a_G.get_shape().as_list()
111
112     #  Reshape a_C and a_G
113     a_C_unrolled = tf.reshape(a_C,[n_H*n_W,n_C])
114     a_G_unrolled = tf.reshape(a_G,[n_H*n_W,n_C])
115
116     # Compute the cost with tensorflow
117     params = 1/(4*n_H*n_W*n_C)
118     J_content = params*(tf.reduce_sum(tf.square(tf.subtract(a_C_unrolled,a_G_unrolled))))
119
120     return J_content
121
122
123 # Gram_matrix (Style matrix)
124 def gram_matrix(A):
125     """
126     Argument:
127     A -- matrix of shape(n_C, n_H,n*W)
128
129     Returns:
130     GA -- Gram matrix of A: shape(n_C,n_C)
131     """
132     GA = tf.matmul(A,tf.transpose(A))
133
134     return GA
135
136 # Style cost
137 # We only use a single layer l
138 def compute_layer_style_cost(a_S,a_G):
139     """
140     Arguments:
141     a_S -- tensor of dimension(1,n_H,n_W,n_C), hidden layer activations representing style
142     a_G -- tensor of dimension(1,n_H,n_W,n_C), hidden layer activations
143     Returns:
144     J_style_layer -- tensor representing a scalar value(标量), style cost
145     """
146
147     #    Retrieve params from a_G
148     m,n_H,n_W,n_C = a_G.get_shape().as_list()
149
150     #    Reshape the images to have them of shape(n_C, n_H*n_W)
151     a_S = tf.reshape(a_S, [n_C,n_H*n_W])
152     a_G = tf.reshape(a_G, [n_C,n_H*n_W])
153
154     #    Compute gram matrix for both images S and G
155     GS = gram_matrix(a_S)
156     GG = gram_matrix(a_G)
157
158     #    Compute the loss
159     params = 1/(4*(n_C**2)*((n_H*n_W)**2))
160     J_style_layer = params*(tf.reduce_sum(tf.square(tf.subtract(GS,GG))))
161
162     return J_style_layer
163
164 # Combine the style costs for different layers as follows:
165 def compute_style_cost(model,STYLE_LAYERS):
166     """
167     Computes the overall style cost from several chosen layers.
168
169     Arguments:
170     model -- our tensorflow model
171     STYLE_LAYERS -- A python list contains:
172                     -- the names of the layers we would like to extract style from
173                     -- a coefficient for each of them
174     Returns:
175     J_style -- tensor representing a scalar value
176     """
177     #    The overall style cost
178     J_style = 0
179
180     for layer_name, coeff in STYLE_LAYERS:
181         # Select the output tensor
182         out = model[layer_name]
183
184         # Set a_S to be the hidden layer activation that we have selected.
185         a_S = sess.run(out)
186         #  U don't have to do it again
187         # Set a_G to be the hidden layer activation from same layer.
188         a_G = out
189
190         # Compute style_cost for the current layer
191         J_style_layer = compute_layer_style_cost(a_S, a_G)
192         # Add coeff
193         J_style += coeff * J_style_layer
194
195     return J_style
196
197 # Define the total cost to optimize
198 def total_cost(J_content, J_style, alpha=10, beta=40):
199     """
200     Compute the total cost function
201
202     alpha>>> hyperparameter weighting the importance of the content cost
203     beta >>> hyperparameter weighting the importance of the style cost
204
205     Returns:
206     J -- total cost as defined by the formula above.
207     """
208     J = alpha*J_content + beta*J_style
209     return J
210
211 # Solving the optimization problem
212 # STEP1: Create an interactive session:
213 tf.reset_default_graph()
214
215 sess = tf.InteractiveSession()
216
217 # STEP2: Load the content&style image
218 content_image = scipy.misc.imread("HZC_test_image/2.jpg")
219 content_image = reshape_and_normalize_image(content_image)
220 print(content_image.shape)
221 style_image = scipy.misc.imread("HZC_test_image/bjs.jpg")
222
223 style_image = reshape_and_normalize_image(style_image)
224 print(style_image.shape)
225 # STEP3: Randomly initialize the image to be generated
226 generated_image = generate_noise_image(content_image)
227     # print(generated_image.shape) # 1x300x400x3
228 imshow(generated_image[0])
229
230 # STEP4: Load the VGG16 model
231 model = load_vgg_model("pretrained-model/imagenet-vgg-verydeep-19.mat")
232
233 # STEP5: Build the tensorflow graph
234
235 #     Run the content image through the VGG16 model and compute the content cost
236 #         Assign the content image to be the input of the VGG model
237 sess.run(model['input'].assign(content_image))
238 #        Select the output tensor of the layer conv4_2
239 out = model['conv4_2']
240 # Set a_C to be the hidden layer activation from the layer we have selected
241 a_C = sess.run(out)
242 a_G = out
243 J_content = compute_content_cost(a_C, a_G)
244
245 #     Run the style image through the VGG16 model and compute the style cost
246 #          Assign the input of the model to be the "style" image
247 sess.run(model['input'].assign(style_image))
248 J_style = compute_style_cost(model, STYLE_LAYERS)
249
250 #    Compute the total cost
251 J = total_cost(J_content, J_style, alpha=10, beta=40)
252
253 #    Define the optimizer and the learning rate
254 #         optimizer
255 optimizer = tf.train.AdamOptimizer(2.0)
256 #        train_step
257 train_step = optimizer.minimize(J)
258
259 # STEP6: Initialize the TensorFlow graph and run it for a large number of iterations,
260 # updating the generated image at every step.
261 def model_nn(sess,input_image,num_iterations=200):
262
263     # Initialize the global variables
264     sess.run(tf.global_variables_initializer())
265
266     # Run the noisy input image
267     sess.run(model['input'].assign(input_image))
268
269     for i in range(num_iterations):
270
271         # Run the session on the train_step to minimize the total cost
272         sess.run(train_step)
273
274         # Compute the generated image by runing the session on the
275         # Current model['input']
276         generated_image = sess.run(model['input'])
277
278         # Print every 20 iterations
279         if i%20 == 0:
280             Jt,Jc,Js = sess.run([J, J_content, J_style])
281             print("iterations"+str(i)+":")
282             print("total cost ="+str(Jt))
283             print("content cost = "+str(Jc))
284             print("style_cost = "+str(Js))
285
286             save_image("output/generated_image_cup.jpg", generated_image)
287     # Save last generate image
288     save_image('output/generated_image_cup.jpg',generated_image)
289
290     return generated_image
291
292 model_nn(sess, generated_image, num_iterations=200)
293
294
295
296 # plt.show()
297
298 # Test code for "compute_content_cost"
299 # tf.reset_default_graph()
300
301 # with tf.Session() as test1:
302 #     tf.set_random_seed(1)
303 #     a_C = tf.random_normal([1,4,4,3],mean=1,stddev=4)
304 #     a_G = tf.random_normal([1,4,4,3],mean=1,stddev=4)
305 #     J_content = compute_content_cost(a_C, a_G)
306
307 #     print("J_content="+str(J_content.eval()))
308
309 # # Test code for "gram_matrix"
310 # tf.reset_default_graph()
311
312 # with tf.Session() as test2:
313 #     tf.set_random_seed(1)
314 #     A = tf.random_normal([3,2*1], mean=1, stddev=4)
315 #     GA = gram_matrix(A)
316
317 #     print("GA = " + str(GA.eval()))
318
319 # Test code for "compute_layer_style_cost "
320 # tf.reset_default_graph()
321
322 # with tf.Session() as test3:
323 #     tf.set_random_seed(1)
324 #     a_S = tf.random_normal([1,4,4,3],mean=1,stddev=4)
325 #     a_G = tf.random_normal([1,4,4,3],mean=1,stddev=4)
326 #     J_style_layer=compute_layer_style_cost(a_S, a_G)
327 #     print("J_style_layer = " + str(J_style_layer.eval()))
328
329 # Test code for "total_cost"
330 # tf.reset_default_graph()
331
332 # with tf.Session() as test:
333 #     np.random.seed(3)
334 #     J_content = np.random.randn()
335 #     J_style = np.random.randn()
336 #     J = total_cost(J_content, J_style)
337 #     print("J = " + str(J))

转载于:https://www.cnblogs.com/IrivingLoveLuna/p/10160605.html

Deep Learning Neural Style Transfer(VGG) ——By何子辰相关推荐

  1. 15.深度学习练习:Deep Learning Art: Neural Style Transfer

    本文节选自吴恩达老师<深度学习专项课程>编程作业,在此表示感谢. 课程链接:https://www.deeplearning.ai/deep-learning-specialization ...

  2. 吴恩达深度学习课程deeplearning.ai课程作业:Class 4 Week 4 Art Generation with Neural Style Transfer

    吴恩达deeplearning.ai课程作业,自己写的答案. 补充说明: 1. 评论中总有人问为什么直接复制这些notebook运行不了?请不要直接复制粘贴,不可能运行通过的,这个只是notebook ...

  3. 吴恩达深度学习4.4练习_Convolutional Neural Networks_Art Generation with Neural Style Transfer

    转载自吴恩达老师深度学习课程作业notebook Deep Learning & Art: Neural Style Transfer Welcome to the second assign ...

  4. Deep Learning Art: Neural Style Transfer(吴恩达课程)

    Deep Learning & Art: Neural Style Transfer(吴恩达课程) # UNQ_C1 # GRADED FUNCTION: compute_content_co ...

  5. Neural Style Transfer 神经风格迁移详解

    Neural Style Transfer 神经风格迁移详解 今天和大家分享一个比较有意思的东西,Neural Style Transfer,神经风格迁移,简单说就是我们将一张普通的照片赋予它艺术作品 ...

  6. 吴恩达老师深度学习视频课笔记:神经风格迁移(neural style transfer)

            什么是神经风格迁移(neural style transfer):如下图,Content为原始拍摄的图像,Style为一种风格图像.如果用Style来重新创造Content照片,神经风 ...

  7. 神经风格迁移(Neural Style Transfer)程序实现(Caffe)

    前言 上次的博客写了神经风格迁移(Neural Style Transfer)程序实现(Keras),使用keras的一个好处就是api简单,能够快速部署模型,使用很方便.出于学习目的,这次又使用ca ...

  8. 神经风格迁移(Neural Style Transfer)程序实现(Keras)

    前言 以前翻译了神经风格迁移的论文:一个艺术风格化的神经网络算法(A Neural Algorithm of Artistic Style)(译),这篇文章中会给出其基于Keras的实现.github ...

  9. Neural Style Transfer: A Review

    这篇是风格转移方面的综述,文中总结了多种风格转移的方法.因为18年看过很多风格转移方面的论文,因此翻译这篇综述. Gatys等人的开创性工作.通过分离和重新组合图像内容和风格,展示了卷积神经网络(CN ...

  10. Towards Ultra-Resolution Neural Style Transfer via Thumbnail Instance Normalization

    碎碎念:毕设打算做风格迁移的,然而没有接触过这方面,记录一下qwq Abstract 基于现有的风格迁移框架处理高分辨率有以下缺点: 内存成本 笔触过小 针对上述两点问题,本文提出Ultra-Reso ...

最新文章

  1. 这些重大科技领域问题,听听专家怎么说
  2. .NET Compact Framework下SQL CE的使用
  3. 面试结尾——你有什么问题?
  4. 加入依赖后刷新_和平精英海岛图神秘野区加入!地图没显示 刷新点在这儿
  5. 【深度学习】你不知道的车牌识别系统
  6. JavaScript实现Interpolation search插值查找算法(附完整源码)
  7. VTK:简单操作之UniformRandomNumber
  8. python 数据模型
  9. 我们为什么要做 SoloPi
  10. git中reset与revert的区别
  11. 采用推理的方法认知单词、CBOW模型
  12. scrapy使用pipeline保存不同的表单Item到数据库、本地文件
  13. AndroidManifest中android:label与第三方库冲突问题
  14. 凯撒密码加密器(命令行版)
  15. 新手学习日记-Javascript和Html 1:如何在html中调用Js函数
  16. 欢度世界杯——倒时差
  17. Google Analytics与百度统计比较
  18. 排序算法总结(Python实现)——(一)
  19. 洛谷4315 月下“毛景树”(树链剖分)
  20. SAP License:SAP常见问题与解决办法(汇总帖)

热门文章

  1. lstm数学推导_LSTM简介以及数学推导(FULL BPTT)
  2. conda pip 安装NumPy速度不佳解决方案
  3. 系统学习机器学习之误差理论
  4. 目标跟踪算法的分类(一)
  5. PhysioBank 存档数据目录
  6. php可输入的下拉框,JavaScript_可编辑下拉框的2种实现方式,可编辑下拉框-HTML 复制代码 代 - phpStudy...
  7. python epoll多路复用技术_python网络编程——IO多路复用之epoll
  8. 用java语言求前50个素数_Java求质数的几种常用算法总结
  9. mysql join不加关联条件的含义
  10. mysql 或hive left join不加关联条件