AI · AI画像
AI画像アップスケール(超解像)の仕組みは?
結論
AIアップスケール(超解像)は、小さな画像と大きな画像のペアで学習したニューラルネットワークを使い、画像を拡大するときに足りないピクセルを予測します。バイキュービック補間のように近くのピクセルを平均するのではなく、学習で身につけた、もっともらしい輪郭やテクスチャを描き込みます。追加されたディテールはくっきり見えますが作り出されたものなので、見た目は良くなっても、事実としての情報が増えるわけではありません。
AI 画像高画質化を開く従来のリサイズとAIアップスケールの違い
500ピクセルの画像を2000ピクセルに拡大すると、縦横それぞれで、4ピクセルのうち3ピクセルは元には存在しませんでした。その値は何かが決めなければなりません。
従来の手法では、近くのピクセルから計算します。ニアレストネイバーは最も近いピクセルをコピーするので、輪郭がブロック状になります。バイリニアやバイキュービックは近傍の加重平均を取るので滑らかですが、ぼんやりした仕上がりです。小さい画像でくっきりしていた輪郭が、大きい画像ではなだらかなグラデーションになります。これらは高速で予測しやすく、何かを作り出すことは決してありません。
AIアップスケーラーは、シャープな画像が普通どう見えるかを学習します。学習時には、大量の高解像度画像と、それを縮小して劣化させた同じ画像を見て、小さい版を大きい版に戻す対応を学びます。使用時にはその学習した対応を適用するので、単純な平均ならぼやけるだけの場所に、くっきりした輪郭、髪の毛の一本一本、レンガの質感を描けます。
| 手法 | 新しいピクセルの埋め方 | 見た目 | ディテールを作り出す? |
|---|---|---|---|
| ニアレストネイバー | 最も近いピクセルをコピー | ブロック状、ドット絵のよう | しない |
| バイキュービック | 近傍16ピクセルの加重平均 | 滑らかで輪郭が柔らかい | しない |
| 精度重視で学習したCNN(SRCNN型) | 学習した対応。ピクセルの一致を目標に学習 | バイキュービックよりシャープだが、まだ少し滑らか | わずかに |
| GANベース(ESRGAN、Real-ESRGAN) | 学習した対応に、写実的な質感を評価する識別器を併用 | くっきりした輪郭とテクスチャ | する |
| 拡散ベース | 小さい画像を条件に大きい画像を生成 | 非常に精細で、内容が変わることもある | する(最も多い) |
SRCNNからGANへ:正確さよりシャープさ
SRCNNは、超解像向けの初期のディープネットワークの1つで、低解像度の画像を高解像度に変換するようにエンドツーエンドで学習した小さな畳み込みネットワークでした。この系統のモデルは、本物の画像とのピクセル単位の差を最小にするよう学習されます。そのためPSNRなどの指標では高得点が出ますが、見た目は滑らかになります。ネットワークが輪郭がわずかに左か右か迷うとき、この損失で最も安全な答えは両方の平均、つまりぼかしだからです。
SRGANは目標を変えました。本物の高解像度写真とアップスケールされた写真を見分ける、識別器という第2のネットワークを追加したのです。アップスケーラーは識別器をだますことで報酬を得るので、正確なピクセルは元と違っていても、くっきりした写実的なテクスチャを作ります。SRGANの著者らは、誤差を最小にする手法には高周波のディテールが欠けがちで、人の目には物足りなく映ると指摘しました。ESRGANはネットワーク設計、敵対的学習、知覚損失を改良し、その後の多くのツールのベースになりました。
Real-ESRGANが加えたもの:現実的な劣化での学習
初期のモデルは、バイキュービックで単純に縮小しただけの画像で学習していました。現実の写真には、カメラのぼけ、センサーノイズ、JPEG圧縮、複数回のリサイズ、シャープ処理のハローなど、もっと多様な劣化があります。きれいな縮小だけで学習したモデルはそれらを扱えず、ディテールと一緒にノイズまで拡大してしまうことがよくあります。
同じ研究グループによるReal-ESRGANは、ESRGANの生成器を引き継ぎつつ、学習データを変えました。きれいな画像から、高次の劣化プロセスで学習ペアを作ります。ぼかし、リサイズ、ノイズ、JPEG圧縮を適用し、その一連をもう一度繰り返して、何度も保存・共有された画像を模倣します。輪郭周りのリンギングやオーバーシュートといったアーティファクトも再現します。スペクトル正規化つきU-Netという、より強力な識別器が、各ピクセルでディテールを判定します。学習データはすべて合成なので、実際の低解像度と高解像度の写真ペアは必要ありません。
その結果、拡大しながら圧縮ブロックやノイズを取り除くモデルになり、古いWeb画像、スクリーンショット、スマホの写真に向いています。アニメやイラストには、フラットな色とくっきりした線が写真とは異なるテクスチャを必要とするため、通常は別の重みが学習されます。
たとえば cv.cm の画像アップスケーラーは、コンパクトなReal-ESRGANモデルをブラウザ内で2倍または4倍で実行し、写真用とアニメ用を選べるので、画像が端末の外に出ることはありません。
上手なアップスケールの手順
- 手元で最良の元データから始めます。スクリーンショットや、メッセージアプリで再送された版ではなく、オリジナルのファイルを使いましょう。
- 先にトリミングします。必要な部分だけをアップスケールするほうが速く、メモリも少なくて済みます。
- 内容に合ったモデルを選びます。写真には写真用モデル、イラスト、線画、ゲームアートにはアニメ/イラスト用モデル。
- 目標に届く最小の倍率を選びます。800ピクセルから1600ピクセルが必要なら、4倍にして縮小するのではなく、2倍にします。
- 元画像と等倍で比較します。作り出されたディテールが最初に現れる、顔、文字、髪、細かい模様を見ましょう。
- 結果が滑らかすぎる、プラスチックのようなら、編集ソフトでバイキュービック拡大とブレンドするか、少し粒状感を加えます。
- PNGか高品質のJPEGで保存します。アップスケール後に強いJPEG圧縮をかけると、ブロックノイズが戻ってきます。
拡散ベースのアップスケーラーとクリエイティブアップスケール
新しい種類のアップスケーラーは、拡散を使います。たとえばSR3は、低解像度の入力を条件に、ノイズから段階的に高解像度の画像へ磨き上げます。多くの画像生成AIも、拡大した画像に対してプロンプトつきで画像から画像を実行する、クリエイティブ(ディテール追加)アップスケールを備えています。
こうした手法は、GANアップスケーラーよりはるかに多くのディテールを生み出せるので、AIアートに役立ちます。代償は制御しにくさです。自由度が高い分、顔が変わる、物が増える、小さな文字が書き換わる、素材の質感が変わるといったことが起こりえます。書類、商品、証拠など、元の画像に忠実でなければならないものには、GANアップスケーラーか従来のリサイズを選びましょう。拡散アップスケールは、忠実さより見栄えが大事なときに使います。
限界:アップスケールにできないこと
- 画像にない情報は復元できません。幅10ピクセルの顔は、実際の人物ではなく、もっともらしい顔になります。人物の特定、ナンバープレートの読み取り、証拠の作成にAIアップスケールを使ってはいけません。
- 文字には危険があります。小さくぼやけた文字が、くっきりと説得力のある別の文字に変わることがあります。
- 強いぼけや動きによるぶれは難しい。アップスケーラーは特定の種類の劣化で学習されているため、極端なケースでは、にじんだり絵画風になったりします。
- 布、草、レンガのような繰り返しパターンは、人工的なテクスチャに変わることがあります。
- 肌の過剰な平滑化:写真用モデルは毛穴や細かいしわを消してしまうことがあり、強い修整をしたように見えます。
- 大きな倍率は大量のメモリを使います。4倍のアップスケールは入力の16倍のピクセル数なので、大きな画像はタイルに分けて処理する必要が生じることがあります。
これらの限界を踏まえて使えば、AIアップスケーラーは、印刷や大画面で表示したいAI生成画像、古い小さな写真、Webグラフィックの最後の仕上げとして最適です。
よくある質問
AIアップスケールはPhotoshopのリサイズより優れていますか?
拡大では、輪郭とテクスチャをぼかさずに描くため、見た目は多くの場合そうです。ただし、作り出されたディテールをいっさい加えたくないときは、従来のリサイズのほうが適しています。
AIアップスケールで古いぼやけた写真を復元できますか?
ぼけ、ノイズ、圧縮を減らして、写真をシャープに見せることはできます。失われた本当のディテールは復元できないので、顔や文字が少し変わる場合があります。
2倍と4倍のどちらを選べばよいですか?
必要なサイズに届く最小の倍率を選びます。4倍は時間とメモリがかかり、作り出すディテールも多くなるので、アーティファクトが出る可能性も増えます。
アップスケールした画像が絵画のように見えるのはなぜですか?
モデルが、細かくノイズのあるテクスチャを、学習した滑らかなテクスチャに置き換えたためです。別のモデルや小さい倍率を試すか、通常の拡大とブレンドして軽く粒状感を加えてください。
AIアップスケールで印刷用のdpiを上げられますか?
dpiはただの表示上の値で、重要なのは印刷サイズでのピクセル数です。アップスケールでピクセルが増えるので、4倍にすれば同じシャープさで約4倍の幅まで印刷できます(モデルの限界の範囲内で)。