Stable DiffusionのUpscalerの各メソッド比較
「Extras」のセクションでは、「upscaler」機能により、入力した画像をより高精細に出力することが可能です。
(1) None
(2) Lanczos
(3) LDSR
(4) ScuNET
(5) ScuNET PSNR
(6) ESRGAN_4x
(7) BSRGAN
(8) SwinIR_4x
GANとは「Generative Adversarial Network(敵対的生成ネットワーク)」のことです。「Upscaler 2 visibility」のオプションを設定することにより、Upscaler 1とUpscaler 2で、それぞれ異なるメソッドをかけ合わせて出力することも可能です。今日は、勉強のために実験をしてみることにします。
お侍さんを高画質にしてみる
これは幕末に撮影された薩摩藩の侍の有名な写真です。写真の中央の方の放つ異様な殺気がとても印象的ですね。どことなくキムタクに似ているようにも見えます。今回はこの方をサンプルとして、最新技術で鮮明にしていこうと思います。
今回はResize=2と設定し、2倍の解像度となる512x512ピクセルの画像を生成していきます。まず始めに、上記の(1)~(8)の中に、どのような違いがあるのかを調べるため、片方のUpscalerのみを利用して変化させて出力を比較しました。
(1) None(未処理)と比べると、(7) BSRGANが最も綺麗に出力されているように感じます。
また、様々なメソッドで試してみた結果、Upscale1とUpscale2を入れ替えても、100+0や0+100、50+50で行っても同じ出力となるようでした。Upscaler1とUpscaler2で、ただ単純に2回行っているだけなのでしょうか。その順序は入れ替えても同一の結果になるようです。
GFPGAN visibility
今回は、0.1からスタートし、0.1刻みでGFPGANをかけていき、合計10枚でどのような変化が生まれるのか、最適値はどの程度なのかを探る実験をしていきたいと思います。
どうでしょうか。綺麗になりすぎると、少し違和感が出てきます。バッチシ決めたヘアスタイルに、どことなくピアスが似合いそうな現代的な雰囲気です。少し怖いお兄さんな感じです。途中から二重瞼がハッキリとしていますが、おそらく元々一重瞼だったのではないかと推測しています。修正とは、あくまで想像でしかないのですね。
GFPGANはかけすぎ注意、かけても0.1か0.2くらいがよいのだと思います。
CodeFormer
AUTOMATIC1111によれば、
とのことです。これは実際に試してみなければよく分かりません。先程の最後に出現した画像(BSRGAN + GFPGAN 1.0)を元に、「CodeFormer visibility」を0.0, 0.2, 0.4, 0.6, 0.8, 1.0と設定して再度生成し、6枚の画像でどのように変化していくのかを実験して確かめてみたいと思います。
肌にツヤが出て、モダンな雰囲気に。パーティ会場で女性を口説いてそうで、侍魂などどこかに置いてきてしまっています。
元のお侍さんに申し訳ないので、結論に入ります。
結論
上記のように、BSRGANをベースに、「ほどほどに」修正処理を施すことにより、現代の技術で侍を蘇らせることに成功しました。どうしても現代化してしまうようで、やりすぎない方がよいでしょう。古い写真の粗い解像度のもののほうが、どことなく迫力があるように感じます。
Method: BSRGAN
GFPGAN: 0.2
CodeFormer: 0.2
CodeFormer weight: 0
今回は上記が最適な設定となりました。
もし復元したい古い写真などがあれば、ぜひ試してみるとよいかと思います。皆様のご参考になれば幸いです。
前回までの実験はこちら。
新しくTwitterアカウント作成しました。
もしよろしければ仲良くしてもらえれば嬉しいです。