초고해상도 상성적 적대 신경망

1 분 소요

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
    

업데이트:

댓글남기기