LoginSignup
5
3

More than 3 years have passed since last update.

超解像アルゴリズム「PULSE」をWindows環境で試してみた

Last updated at Posted at 2020-09-28

今年のCVPRで発表された、高性能の超解像アルゴリズム「PULSE:Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models」を試してみました。
流行りの「自己教師あり学習」です。

※論文の内容に関しては省略(いつか解説記事を書くかも?!)
 →書きました

「PULSE」のポイント

  • 今までとは評価ポイントが違う
    • 超解像した後の画像じゃなくて、超解像した後にダウンスケールした画像で比較
  • 今までの手法よりも超解像可能
  • 超解像自体はStyleGANを使用(CelebA-HQで学習済み)

このGIFがイメージをつかみやすいです。
transformation.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になります。
image.png
image.png

外国人バイアスがむごい...
あと、正面顔じゃないとダメそう。

感想

実行は簡単ですが、実際に使おうと思うと、いろいろとやらなくてはいけないことがいっぱいありそうです。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3