📚

拡散モデル×画像復元を劇的加速:Residual Shifting (ResShift) とは?

2025/02/05に公開

近年、拡散モデル (Diffusion Model) が画像生成分野で大きな注目を集めています。しかし、従来の拡散モデルを画像復元タスク(例:超解像・デブラー・インペインティングなど)に応用しようとすると、何百・何千ものサンプリングステップを要してしまい、実用的な速度からはほど遠いという課題がありました。そんな中、\text{Efficient Diffusion Model for Image Restoration by Residual Shifting}(通称 ResShift)は、たった4ステップ程度の推論でも高品質な結果を得られる拡散モデルとして注目を集めています。

本稿では、ResShift の概要と背景、そして実際に研究を追う上で生じがちな疑問点をまとめながら解説します。


1. 背景:従来の拡散モデルとその問題点

拡散モデルは、大きく「正方向 (Forward)」と「逆方向 (Reverse)」の二段階を設定する点が特徴です。

  • 正方向: HQ画像にノイズを段階的に加えて最終的にガウスノイズへ崩壊させる確率過程
  • 逆方向: 学習したネットワークにより、ノイズから段階的にHQ画像をサンプリングするプロセス

画像生成の分野では優れた結果を出していますが、画像復元(超解像など)で拡散モデルを用いると、どうしても推論時に多ステップ(数百〜千ステップ前後)のサンプリングが必要になることが課題でした。これを数十〜数ステップに圧縮すると画質が大きく劣化してしまう傾向があり、実アプリケーションで使うには厳しい、という問題があったのです。


2. ResShift のアイデア:HQ↔LQ間の「残差」シフト

ResShift が提案する最大の特徴は、拡散の最終到達点を“ガウスノイズ”ではなく“LQ画像”に設定することです。具体的には下記のような流れでマルコフ連鎖を構築します。

  1. 残差 e_0 = y_0 - x_0

    • x_0 は HQ画像、y_0 は LQ画像。
    • これらの差分(Residual)を定義しておく。
  2. 正方向の拡散(HQ→LQ)

    • 従来だと「HQからガウスノイズへ一気に崩す」イメージでしたが、ここでは「HQから LQ へ“短いステップ”で遷移する」ように、確率分布を 人工的に 定義します。
    • 数式では各時刻 t の確率分布を
      q(x_t \mid x_{t-1}, y_0) \;=\; \mathcal{N}\!\bigl( x_t;\;\; x_{t-1} + \alpha_t \, e_0,\; \kappa^2 \,\alpha_t \, I \bigr),

      のように設定し、\alpha_t は少しずつ e_0 をシフトする係数。最終ステップで x_T \approx y_0 となる。
  3. 逆方向(LQ→HQ)の復元

    • 学習時は「正方向に対応する逆方向」をニューラルネットで近似させる。
    • 推論では、実際に与えられた LQ画像を初期状態として、数ステップのサンプリングを行うだけで HQ に至る。

このおかげで、わずか4ステップ程度の逆方向サンプリングでも従来の何百ステップ分に近い画質が得られると報告されています。


3. なぜ短いステップで高品質を実現できるのか?

  • ノイズ空間を経由しない
    従来は “HQ\to(多ステップ)\toノイズ” だったため、ノイズ領域からHQへ戻すのに時間とステップを要しました。ResShift は “HQ\toLQ” を直接結ぶため、初期状態(LQ画像)からHQへ距離が比較的近いという点が速さに直結します。
  • 多様な高周波成分をモデルが学習可能
    拡散モデルは生成力が高く、欠損やノイズをうまく補完できます。ステップ数を大幅に減らしても、学習時にうまく正方向分布を設定すれば、自然かつシャープな画質が得やすいのです。

4. 学習データの準備:劣化パイプラインはどう作る?

実装や論文でよくみられるリアル画質劣化の合成例としては、以下のような流れがあります。

  1. ブラー付与: ガウスカーネルや異方性カーネルをランダムに設定し、HQ画像をぼかす。
  2. ダウンサンプリング: ×2〜×4 など任意の倍率。補間モードも複数混在。
  3. ノイズ付加: ガウスノイズやポアソンノイズをランダム強度で付与。
  4. 圧縮: JPEG圧縮で品質を 70〜95 程度に振りつつ加える。
  5. 最終的に LQ画像 完成。これと元の HQ をペアにして (x_0, y_0) として学習。

一方、拡散モデル内部がリアルな撮影劣化を忠実再現するわけではない点に注意が必要です。拡散モデルは「最終的に x_T \approx y_0 になる確率過程」を人工的に設計しているだけで、1ステップずつ物理的ぼかしをかけるわけではありません。あくまで「学習用の (HQ, LQ)ペア」として幅広く合成することで、推論時にさまざまなLQ画像へ汎化できるよう狙っています。


5. よくある疑問 (Q&A)

(1) 「実際の劣化」と正方向拡散は違うのに、なぜ復元できる?

  • 拡散モデルにおける「正方向」は物理的劣化を厳密に再現するためのものではない
    ResShift では HQ と LQ の差分をシフトするマルコフ連鎖を人工的に作り、その「逆向き」を学習しているだけです。
  • 最終的に x_T \approx y_0 になればOK
    “本物の撮影プロセスをステップごとにトレース” しなくても、学習時にペアが一致していれば逆方向推定が機能します。

(2) ドメインシフトが大きいと失敗しそうだが、うまくいくのはなぜ?

  • 多様な合成劣化で学習
    学習時にブラー、ノイズ、圧縮などを乱数で大きく振り、多彩なLQパターンを準備。実際の推論でドメインがややずれていても、近い領域をカバーできる。
  • 拡散モデルは確率的生成で自然な補完が得意
    多少の差異は統計的に補完し、“それらしさ” を高める方向へ誘導される。

(3) 劣化過程が厳密にわかるなら、ワンパスCNNで十分では?

  • 単一の逆演算だけでは高周波表現を一意に確定しづらい
    たとえば超解像では「同じLQでも複数のHQがあり得る」ため、1回の推定で平均的な解に偏るか、過剰・過小補正が生じやすい。
  • 拡散モデルは多段階生成で豊かなディテールを生む
    不定性の大きい領域でも自然なテクスチャを生成しやすい。

(4) それでも多ステップを踏むのはなぜ?

  • ステップごとに「現状のノイズ/残差」を推定→除去
    反復的に誤差を制御でき、ネットワークが豊富な表現力で細部を生成可能。
  • 知覚品質が向上
    視覚的に魅力的な出力を得るためには、確率的・段階的な手順が有利に働く場合があります(特に大きな欠損やぼかしがあるケース)。

6. まとめと今後の展望

ResShift は、わずか4ステップ程度で既存の拡散ベース復元手法と同等以上の性能を示し、実用化を大きく前進させる手法として注目されています。その鍵となっているのは「HQ\toLQへのマルコフ連鎖を人工的に設計し、逆方向を学習する」という逆転の発想です。

ただし、

  • 依然としてワンパスCNNより計算コストが高い場面がある
  • ドメインシフトが大きすぎると破綻する可能性がある
  • サンプリングのランダム性をどこまで制御・許容できるか

といった課題もあり、今後のさらなる改良・高速化手法 (DPM-Solver など) の発展が期待されます。

それでも、超解像やデブラー、インペインティング、顔画像復元など多様なタスクでの有効性が既に示されており、“拡散モデル×画像復元” を実用レベルに引き上げる大きなステップであるといえるでしょう。


7. 参考リンク

まとめ: 従来の拡散モデルを高速・高品質化するうえで、**「ガウスノイズではなくLQを最終状態とする」**という設計は非常に有用です。実践的な復元タスクで拡散モデルを活用したい方は、ぜひ ResShift の仕組みやコードをチェックしてみてください。

Discussion