2016-11-28 2 views
0

TensorFlow를 사용하는 스타일 전송 알고리즘에서 콘텐츠 및 스타일 필터를 교육하는 방식 (예 : in this paper)을 이해하는 데 문제가 있습니다. 링크 된 종이에 알고리즘의 몇 가지 구현을 살펴 보았습니다. 그러나이 단계에 대한 처리 방법은 매우 불만 스럽습니다. 이를 위해 미리 훈련 된 모델을 사용하지 않고 순진한 버전을 구현하는 것이 도움이 될 것이라고 생각했습니다. 관련된 단계의 나의 이해는 다음과 같습니다 하나의 이미지에TensorFlow의 스타일 이전

  1. 기차 CNN과는 백색 잡음 이미지에서 훈련 네트워크, 피드를 사용
  2. (논문에서 그들은 사전 훈련 VGG 네트워크를 사용). 입력 이미지를 업데이트하여 최소화 된 새로운 손실 함수를 정의합니다 (이미지가 '페인트'되는 방식입니다). '컨텐츠'는 따라서 (백색 잡음) 화상

을 훈련 모델의 전환 층 사이의 거리를 최소화하고, 그 입력에 기인하여 유도되는, 구현되어야 무언가 같은

import TensorFlow as tf 

x_in = tf.placeholder(tf.float32, shape=[None, num_pixels], name='x') 
y_ = tf.placeholder(tf.float32, shape=[None, num_pixels], name='y') 

... 

diff = y_-y_out 
loss = tf.reduce_sum(tf.abs(diff)) # minimizing 'pixel difference' 
train_step = tf.train.AdamOptimizer(1e-4).minimize(loss) 
# training model 
for i in range(NUM_TRAINING_STEPS): 
    _, loss_val = sess.run([train_step, loss], 
          feed_dict={x_in: input_image, y_: input_image}) 

모델을 연습 한 후에 화이트 노이즈 이미지를 생성 할 수는 있지만 훈련 된 모델을 사용하여 입력 이미지를 업데이트하려면 어떻게해야합니까? 내 의심은 내가 x_in 유형의 tf.Variable이고 훈련 된 모델에서 가중치와 편향을로드하는 두 번째 네트워크를 만들어야한다는 것이지만이 세부 사항은 나를 벗어난다.

답변

0

예, 입력 이미지를 tf.Variable에 저장하고 훈련 된 모델에서 가중치를로드 한 다음 스타일 전송 손실 함수 wrt를 입력 변수에 사용하여 최적화 루프를 실행할 수 있습니다.

0

스타일 전송을 서비스 사이트로 사용하여 http://somatic.io

과 같은 스타일을 사용할 수 있습니다.
관련 문제