Category: Python

  • SISR 결과

    좌측 이미지가 원본이다. 실제 크기가 저만하다. 가운데는 전통적인 방법인 inter_cubic method를 이용하여 화면을 키운 것이다. 오른쪽은 Enhanced Real-SRGAN을 응용하여 만든 이미지이다. 쓸만한 수준이라고 생각한다.

    Lanczos 변환을 포함하여 이미지 품질을 검증하여 보았다. 일단 이 경우에는 참 값이 없다. 그래서 참값이 없어도 평가할 수 있는 BRISQUE나 NIQE, ILNIQE를 이용해 보았다. 그리고 Sharpness를 평가할 때 사용하는 Laplacian 변환을 이용했다. 일단 기존 이미지 평가 방법은 BRISQUE, NIQE, ILNIQE 로는 SISR의 우월성이 보이지 않는다. 다만, Sharpness로 평가하면 좋은 결과를 얻을 수 있다.

  • Exponential Moving Average

    PyTorch 에서 학습률 조정에 EMA를 기본으로 제공하고 있지는 않다. 하지만 EMA를 이용할 수 있는 코드를 예시로 공개하고 있다. 기록을 위하여 블로그 작성함.

    >>> ema_avg = lambda averaged_model_parameter, model_parameter, num_averaged:\
    >>>         0.1 * averaged_model_parameter + 0.9 * model_parameter
    >>> ema_model = torch.optim.swa_utils.AveragedModel(model, avg_fn=ema_avg)
  • Relativistic GAN

    ESRGAN에서는 GAN 손실값을 Standard GAN (SGAN)과는 다른 방법으로 평가한다. 깃헙에서 ESRGAN에 대한 코드를 여러 곳에서 찾아보았지만 무엇이 정답인지 알기 어려웠다. 그러던 와중 RGAN 저자가 관련 코드를 공개한 것을 발견하였다.

    arXiv 논문에보면 단독 저자로 나온다. 단독 저자로 이런 결과를 낼 수 있는 것을 보면 똑똑한 사람 같다.

  • GAN 훈련

    GAN을 이해하기 위해서는 어떻게 훈련 과정이 이루어지는지 알아야 한다.

    • 1단계: 판별기에 실제 데이터를 보여주고, 1.0 이라는 값이어야 한다고 알려준다.
    • 2단계: 판별기에 생성기로부터 만들어진 가짜 데이터를 보여주고 0.0 이어야 한다고 알려준다.
    • 3단계: 판별기에 생성기의 결과를 보여주고, 생성기에 결과가 1.0 이어야 한다고 알려준다.

    참고문헌: GAN 첫걸음. 타리크 라시드 지음