초해상 알고리즘 「PULSE」를 Windows 환경에서 시험해 보았다

올해의 CVPR로 발표된, 고성능의 초해상 알고리즘 「PULSE:Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models 」를 시험해 보았습니다.
유행의 「자기 교사 있어 학습」입니다.

※논문의 내용에 관해서는 생략(언젠가 해설 기사를 쓸지도?!)
→ →

「PULSE」의 포인트


  • 지금까지와는 평가 포인트가 다르다
  • 초 해상 후 이미지가 아닌 초해상 후 다운 스케일링 된 이미지와 비교

  • 지금까지의 기법보다 초해상 가능
  • 초해상 자체는 StyleGAN을 사용 (CelebA-HQ에서 학습됨)

  • 이 GIF는 이미지를 잡기 쉽습니다.


    소스 코드



    소스 코드는 Github 으로 공개되고 있습니다.
    이번에는 이것을 그대로 사용합니다.

    설치



    Python 3.7에서 다음 모듈을 설치했습니다.
  • Anaconda Navigator GUI에서 설치
  • matplotlib
  • numpy
  • pandas
  • pillow
  • scipy
  • requests

  • 명령줄에서 설치
  • pytorch
  • torchvision
  • cudatoolkit (이번에는 10.2 사용)


  • 환경 구축



    초해상하고 싶은 화상을 넣어 두는 폴더를 준비합니다.
    여기서는 우선 "input"이라고 합니다.

    거기에 초해상하고 싶은 이미지를 넣습니다. (복수 넣어도 OK)
    이미지에는 몇 가지 제한이 있습니다.
  • 종횡의 크기는 동일
  • 사이즈는 1,024의 약수
  • 형식은 PNG(RGB)

  • 실행


    > python run.py
    

    에서 실행합니다.

    오류 대응



    대부분의 이미지에서 다음과 같은 오류가 발생합니다.
    Loading Synthesis Network
    Optimizing
    BEST (100) | L2: 0.0058 | GEOCROSS: 4.3057 | TOTAL: 0.7981 | time: 10.0 | it/s: 9.98 | batchsize: 1
    Could not find a face that downscales correctly within epsilon
    

    위의 예에서 L2의 최소값은 '0.0058'이지만 기본 임계값은 '0.002'로 되어 있으며, 그보다 가까워지지 않으면 오류가 발생합니다.

    대응 방법으로서는, 인수 「eps」로 임계치의 값을 변경합니다.
    > python run.py -eps 0.005
    

    실행 결과



    실행 결과는 runs 폴더에 저장됩니다.
    출력되는 초해상 이미지는 1,024x1,024의 png가 됩니다.



    외국인 바이어스가 굉장하다. . .
    그리고, 정면 얼굴이 아니면 안되자.

    감상



    실행은 간단합니다만, 실제로 사용하려고 하면(자), 여러가지 하지 않으면 안 되는 것이 가득 있을 것 같습니다.

    좋은 웹페이지 즐겨찾기