본문 바로가기
IT/영상 처리

[논문 분석] SRGAN(Super-Resolution Using a Generative Adversarial Network) 논문 분석 및 테스트

by 빨강자몽 2018. 11. 25.

SRGAN

  • 논문 링크 : https://arxiv.org/abs/1609.04802
  • SRGAN을 이해하기 전에 VDSR, ESPCN을 이해한다면 조금 더 SRGA을 이해하는데 도움이 될 것 같다.
  • SRGAN의 목적을 간단하게 이해한다면, VDSR, ESPCN과 같이 기존의 Super Resolution의 경우 Loss를 평가할 때 psnr 방식을 사용하였다.  
    하지만 PSNR이 높은 사진일 수록 사람 눈에 선명하게 보이는 것은 아니다.
    -> 즉, 사람 눈으로 보기에 선명하게 보이게 만들려는 목적과 기존의 평가 방식은 맞지 않는다.
  • SRGAN을 사용하게 되면 psnr은 조금 낮더라도, 사람 눈에 보다 정확하게 보이게 학습을 하게 된다.
  • 단점 : "GAN을 사용하다 보니 이미지가 크게 변하지 않더라도, 질감이나 느낌이 변형될 수 있다. 때문에 의료, 감시 등과 같은 영역에는 부적절 할 수 있다"라고 논문에 쓰여져 있다.
  • 기존 GAN방식과 유사한 구조를 취하고 있고, Loss의 경우 content loss(mse), perceptual loss, adversarial loss를 사용하고 있다.
    [논문 + 개인적인 생각] content loss의 경우 단순히 픽셀 간 비교를 통한 학습을 목표로 하고 , percepual loss의 경우 이미지의 특성을 분석하여 학습을 하는 것을 목표로 하며, adversarial의 경우 실제 input 이미지와 비슷하게 학습되게 된다.
  • 구조 : 기존의 gan과 동일한 구조를 취하고 있다.

  • 결국에는 원본 HR이미지를 LR이미지로 낮춘 후, 다시 원본 HR이미지로 복구 시키는 방식으로 학습하게 된다.
    이를 통해 새로운 이미지가 들어 왔을 때 기존의 학습된 모델을 바탕으로 Super Resolution하게 된다. 


직접 구현 및 테스트 일지

  • 테스트는 다음과 같이 진행하였다. (생각보다 파라미터가 많다...)
  • 처음 scale을 2,3으로 변경해 보았을 때 생각보다 LR이미지와 Ground Truth이미지와 크게 차이가 없어서 학습이 좋게 이뤄지지 않았다.
  • 학습 데이터 변경 : 기존 학습하고자 하는 데이터(눈 사진 200 * 200), imagenet 사진 데이터, vdsr을 한번 거친 이미지로 학습을 하였다.
    vdsr을 한 번 거친 눈 사진의 경우 선명한 생각보다 좋은 성능을 보였으나 실제 이미지에서 왜곡이 많이 생겨 중도에 멈췄다. (한 번 해보고 싶어서 했다.)
  • vgg weight의 변경 : content loss : perceptual loss = 1 : 2e-6를 1:1 비율 등 여러 시도를 해 보았다.
    vgg Loss를 키우게 되면 원본 이미지의 패턴 등의 특징을 비슷하게 해주는 것 같다. 하지만 너무 높이면 실제 이미지와 너무 다르게 과장 되게 된다.
    많은 테스트는 부족했지만 논문과 비슷한 정도의 loss를 했을 때 좋은 성능을 보여주었다.
  • vgg filter 특성에 대한 추가적인 공부를 하면 좋을 것 같다.
  • gan loss weight의 변경 : gan weight 변경의 경우 이렇다 할 좋은 결과를 보여주지 못했다.