メインコンテンツへスキップ
見出し画像

【ローカルAI写真高画質化】究極の写真アップスケール手法を見つけてしまった話【SeedVR2】

    はじめに

    本記事では、前回の記事(逆さ顔)を作っているときに偶然見つけてしまったAI画像アップスケール手法を紹介したいと思います。

    SeedVR2モデルをちょっと工夫利用した、アイデンティティを保存する事をより優先する(リアル)写真のAIアップスケール手法です。

    AIでの高画質化・修復やアップスケールは、大雑把に分けると二種類あります。

    • ✅ アイデンティティを保存しない手法

    • ✅ アイデンティティを保存する手法

    アイデンティティを保存しない高画質化

    もっとも簡単なものはHires-fixが有名ですが、拡大してからAIモデルでimg2imgする事です。利用するAIモデルやプロンプトが指定する品質になります。

    たとえば、AI生成した画像の高画質化であれば、多くの場合アイデンティティを厳密に保存する必要がないので利用しやすいと思います。

    また、アイデンティティの一部だけを保存する手法もあります。一般に劣化写真修復などで、白黒スタイルは破棄し、影や奥行きを保存して、詳細その他はAIが「勝手に生成」する手法です。

    アイデンティティを保存する高画質化

    AIで写真を高画質化する場合は、アイデンティティを保存する方が難しいです。

    用途としては、リアル写真に対して画風スタイルを変更せずに、そのまま拡大高画質化したい時に利用します。

    ESRGAN等の手法のアップスケーラの場合は、良くアイデンティティを保存し、元画像を大きく変更しませんが、当然AI効果(高画質化効果)も弱くなります。しかし、元画像が高画質である場合は、十分効果が得られます。

    一方で、Stable Diffusion/FLUX/Qwen/ZImage等の拡散法を利用する画像生成AIを利用したアップスケール(img2img)は、元画像のアイデンティティを大きく失いますが、AI高画質化効果も強くなります。

    実際には、ControlNet等も利用してそれらのバランスを調整するのが一般的な手法ですが、アップスケール専用のSeedVR2モデル(拡散法)を利用すると、ローカルAIにおいて現状では簡単かつ最も良いバランスで高画質化できます。

    SeedVR2も完璧ではない

    しかし、SeedVR2も拡散法AIなので、画像によっては大きくアイデンティティを失います。勝手に存在しないオブジェクトを生成する事もあります。

    テストデータを作る

    高画質の(たぶんAIでない)人物pexels写真素材を利用します。どの程度正確に復元出来るかを確認するため、高解像度画像の画質を落として比較します。

    3376x6000の高解像度画像を360x640に縮小して、どの程度オリジナルに近くなるかを確認します。(手の部分のみを拡大しています)

    画像
    左:オリジナル 右:縮小版

    SeedVR2アップスケール

    SeedVR2のこの手の写真の復元力は凄まじいものがあると思いますが、画像によってはAI効果(ハルシネーション)が強くなってしまう事もあります。

    画像
    左:オリジナル 右:SeedVR2 + RTX VSR
    seedvr2_ema_7b_sharp_fp8_e4m3fn_mixed_block35_fp16.safetensors

    【見つけてしまった手法】でアップスケール

    そこで、新たに【見つけてしまった手法】の結果と比べます。

    画像
    左から、【オリジナル】 【縮小版】 【通常】 【見つけてしまった手法】

    鮮明さという点で言えば、通常のSeedVR2が(オリジナルを超えて)最もシャープですが、新しい手法の方が、余計なハルシネーションを低減している事が確認できます。

    戦略

    画像生成AIの性質を利用しました。

    0度・90度・180度・270度に回転した画像に対してSeedVR2を適用し、最後に平均(コンポジション)をとります。

    画像

    画像生成AIは、(物理特性や)上下左右の対称性を統計的に学習しています。

    従来の古典的な画像フィルタであれば、順方向でフィルタをかけても反転してフィルタをかけてもマトリックスは変わらないので厳密に同じになりますが、生成AIをフィルタのように利用すると、上下反転や回転で全く別の処理・意味・結果になります。

    つまり、それぞれが異なるハルシネーションを出すので、最後の平均(コンポジション)で異物が低減されるわけです。

    さらに、画像生成AIは(バイアスがあるので)順方向の生成に強いという性質もあります。拡散法のSeedVR2も同じ傾向があり、人の顔では顕著に現れ、順方向の顔は綺麗になりますが、逆さになると不自然になります。※ 逆立ちだけでなく、画像を単純に逆さにしてアップスケールすると品質が下がります

    もちろん、画像に写るすべてのものが順方向というわけではないので、それぞれの方向が得意とする部分やスタイルが綺麗になります。(それ以外はランダムになるので相殺されるという目論見です)

    ComfyUIワークフロー

    特に工夫はありません。回転→SeedVR2→回転(元に戻す)→合成しているだけです。ただし順方向が最も綺麗になるのは明白なので、重みも利用しています。

    ※ オリジナルの情報も多少残したいので、各回転すべてで変化の少ないRTX VSRを2割ほど混ぜています。

    画像
    【見つけてしまった手法】のワークフロー

    まとめ

    デメリットは明らかですが、SeedVR2を4回実行しなければなりません。4倍時間がかかります。また均されるため、シャープさも1回実行に劣ります。

    しかし、筆者が確認した画像においては、元画像に忠実で、AIアーティファクトがほとんど生成されず、非常に良い汎用性を維持できています。

    付録

    本記事で紹介したComfyUIワークフローjsonファイルを支援者様(メンバーシップ)向けに添付しています。参考程度にご利用ください。

     
     
    3Dアート作品や3Dモデルデータも扱っています。最近は専らAIを利用した作品が多いです。 ※ BOOTHにて各種販売も行なっております。 https://lit.link/catappart3d

    あなたへのおすすめ