loog
PULSE | 株式会社バンコム

PULSE

June 29, 2020

PULSE?

32×32ピクセルの小さな画像から、1024×1024ピクセルの高画質な画像を生成するAIです。

Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models

https://github.com/adamian98/pulse

GAN が使用されているようです。

こんな感じ

元の画像は、マイク・タイソン氏です。

この画像を、32x32pix に変換します。
コンバーターも提供されているので、楽ちんです。

小さい画像

生成された画像

何という爽やかな笑顔でしょうか。

歯並びに違和感と覚えますが、CGだと言われなければ気が付かないレベルではないでしょうか。

注意点

公式に、真っ先に書かれていますが、
解像度の低い画像から、同一位人物の高画質な画像を生成することはできません。

あくまでも、
32x32pixに縮小した際に、与えられた32x32pixの画像と一致する、「新しい誰か」
を作り出しているだけです。

環境構築

さて、Githubがあるので、簡単にテストできそうですが、結構時間を喰いました。

Anaconda うまく行かない問題

pulse.yml を見ると、依存も多いですし、Anaconda が使用されています。

最初、Anaconda を入れて試してみたのですが、うまく行きませんでした。

Issues を見ていたら、Docker を使えという記述と、 Dockerfile のサンプルが有ったので、それに従い、Docker 内で成功しました。

なお、先程 Anaconda で再挑戦したら、すんなり成功しました。
依存を解決していた内に、なにか変わったのでしょう・・・。

モデルファイル手に入らない問題

Google drive でファイルが配布されていますが、
Exceeded to … のようなエラーが出てしまいます。

ブラウザで別途ダウンロードし、自分のGoogle Drive に入れて、URLを取得し、書き換えるのが一番はやいと思います。

いくつか試す

いくつか試したので記載します。

マイク・タイソン氏

オリジナル縮小AI生成

パクタソの女性

オリジナル縮小AI生成

ガチャピン

オリジナル縮小AI生成

コンバーターで、顔を検出できませんでした。
まぁ、人間ではないので仕方ないですね。
恐竜だものね。

手作業で、適当にトリミングして、32x32pixにして、run.py してみました。

ですが・・・

Could not find a face that downscales correctly within epsilon

と、言われてしましました。
残念。

漫画

続いて、漫画はどうなるのでしょうか?

数枚試しましたが、基本的に Could not find a face that downscales correctly within epsilon で、失敗します。

成功例

ゴルゴ13は、成功しました。

2枚めは、なんかそれっぽいです!