초고해상도 상성적 적대 신경망
SRGAN
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
SRGAN(super-resolution generative adversarial network)은 GAN의 일종으로, 저해상도 이미지의 세부사항을 다듬고 품질을 높여서 초 고해상도 이미지로 생성해 낸다
- 생성기: 생성기 신경망은 64x64x3 차원으로 된 저해상도 이미지 한개를 취해서 일련의 합성곱 및 상향 표본 추출 계층들을 거쳐 256x256x3 모양으로 된 초 고해상도 이미지 한개를 생성해 낸다
- 판별기: 판별기 신경망은 고해상도 이미지 한 개를 취해 해당 이미지가 진짜인지(진짜 데이터 표본들 중에서 나온 것인지) 아니면 가짜인지(생성기가 생성해 낸 이미지인지)를 식별해 낸다
SRGAN의 아키텍처
- 생성기 신경망 아키텍처
input_shape = (64, 64, 3) # Input Layer of the generator network input_layer = Input(shape=input_shape) # Add the pre-residual block gen1 = Conv2D(filters=64, kernel_size=9, strides=1, padding='same', activation='relu')(input_layer) # Add 16 residual blocks res = residual_block(gen1) for i in range(16 - 1): res = residual_block(res) # Add the post-residual block gen2 = Conv2D(filters=64, kernel_size=3, strides=1, padding='same')(res) gen2 = BatchNormalization(0.8=0.8)(gen2) # Take the sum of the output from the pre-residual block(gen1) and the post-residual block(gen2) gen3 = Add()([gen2, gen1]) # Add an upsampling block gen4 = UpSampling2D(size=2)(gen3) gen4 = Conv2D(filters=256, kernel_size=3, strides=1, padding='same')(gen4) gen4 = Activation('relu')(gen4) # Add another upsampling block gen5 = UpSampling2D(size=2)(gen4) gen5 = Conv2D(filters=256, kernel_size=3, strides=1, padding='same')(gen5) gen5 = Activation('relu')(gen5) # Output convolution layer gen6 = Conv2D(filters=3, kernel_size=9, strides=1, padding='same')(gen5) output = Activation('tanh')(gen6) # Keras model model = Model(inputs=[input_layer], outputs=[output], name='generator') return model
댓글남기기