728x90
반응형
원본 CycleGAN 논문에서 눈에 띄는 성과 중 하나는 모델이 주어진 사진을 특정 아티스트 스타일의 그림으로 변환하는 방법을 학습하는 것이다.
CycleGAN 모네 정의
gan = CycleGAN(
input_dim = (256, 256, 3)
, learning_rate = 0.0002
, lambda_validation = 1
, lambda_reconstr = 10
, lambda_id = 5
, generator_type = 'resnet'
, gen_n_filters = 32
, disc_n_filters = 64
)
생성자(ResNet)
- 전차 네트워크(residual network) 또는 ResNet이라고 부른다.
- ResNet 구조는 이전 층의 정보를 네트워크의 앞쪽에 있는 한 개 이상의 층으로 스킵한다는 점에서 U-Net과 비슷하다.
- 차이점은 네트워크의 다운샘플링 층을 이에 상응하는 업샘플링 층으로 연결하여 'U' 모양을 구성하는 대신 ResNet은 잔차 블록(residual block)을 차례대로 쌓아 구성된다.
잔차 블록의 케라스 코드
from kears.layer.merge import add
def residual(layer_input, filters):
shortcut = layer_input
y = ReflectionPadding2D(padding =(1,1))(layer_input)
y = Conv2D(filters, kernel_size=(3, 3), strides=1, padding='valid', kernel_initializer = self.weight_init)(y)
y = InstanceNormalization(axis = -1, center = False, scale = False)(y)
y = Activation('relu')(y)
y = ReflectionPadding2D(padding =(1,1))(y)
y = Conv2D(filters, kernel_size=(3, 3), strides=1, padding='valid', kernel_initializer = self.weight_init)(y)
y = InstanceNormalization(axis = -1, center = False, scale = False)(y)
return add([shortcut, y])
- ResNet 생성자는 잔차 블록의 양쪽에 다운샘플링과 업샘플링 층이 있다.
- ResNet 구조는 수백 또는 수천 개의 층도 훈련할 수 있다고 알려져 있다. 앞쪽의 층에 도달하는 그레이디언트가 작아져 매우 느리게 훈련되는 그레이디언트 소실(vanishing gradient) 문제가 없다.
http://www.yes24.com/Product/Goods/81538614?OzSrank=1
728x90
반응형
최근댓글