Otama's Playground

AIで遊んだ結果などをつらつら載せていきます。

Stable Diffusionモデルで姿勢を学習・制御するControlNetの基礎

ControlNetは、既存のStable Diffusionモデルを拡張し、人物の姿勢などの空間的な条件付けを学習できるようにする画期的な技術です。どのような手法でこれを実現しているのかを図を交えながら説明していきます。

ControlNetについて

arxiv.org

ControlNetの概要

ControlNetは既存の学習済みtext2imageモデルを拡張し、空間的な条件付け(今回でいうと人物の姿勢)を学習できるようにする手法です。ベースモデルに空間的な条件付けを学習するためのControlNetモジュールを追加し、姿勢を学習できるようにしています。

ControlNetモジュール

下に論文から引用してきたControlNetモジュールのアーキテクチャを貼っておきます(aがControlNet追加前、bが追加後)。

元の学習済みモデルは重みを固定し、拡張した部分のみを、姿勢を覚えさせるために学習させます。学習済みモデルが持つ重みをControlNetの初期値(重み)とすることで、効率的に学習ができます。

(図にあるZero Convolusionについては、Appendixの方で説明します)

引用: Lvmin Zhang, Anyi Rao, Maneesh Agrawala, 2023, Adding Conditional Control to Text-to-Image Diffusion Models, https://arxiv.org/abs/2302.05543

最終的なアーキテクチャ

以下に論文から引用してきたモデル(ベースモデル部分のアーキテクチャ)を置いておきます。

引用: Lvmin Zhang, Anyi Rao, Maneesh Agrawala, 2023, Adding Conditional Control to Text-to-Image Diffusion Models, https://arxiv.org/abs/2302.05543

これをStable Diffusion全体で表すと以下のようなアーキテクチャになります。

ControlNet適用後のアーキテクチャ

最後に

ControlNetは、Stable Diffusionモデルに姿勢制御機能を加えることで、画像生成技術に新たな可能性をもたらします。Zero Convolutionを活用して安定した学習プロセスを実現することで、より精度の高い画像生成が可能となります。この記事で紹介した技術を活用することで、より高度な画像生成モデルを構築できるようになるでしょう。

ControlNetを実際に使用する方法については以下の記事で説明しているので、余裕ある方は試してみてください。

otama-playground.com

Stable Diffusion周りで読んだ論文は以下の記事でまとめているので、興味ある方はぜひご活用ください。

otama-playground.com

Appendix

Zero Convolutionとは

もし畳み込み層の初期化が適切でない場合、学習時にモデルのパラメータが急激に変動することで、生成される画像に不規則なアーティファクト(望ましくないパターンや欠陥)が現れることがあります。こうした学習時のノイズは、勾配の収束を遅れさせるため効率が低下します。

こういった有害なノイズを防ぐためにControlNetモジュールではZero Convolutionが使用されています。Zero Convolutionは以下二点によりノイズを抑制します。

  • ゼロ初期化
    • パラメータがゼロから始まるため、学習の初期段階で大きな変動が発生しません。これにより、モデルが安定して学習を開始できます。
  • 徐々に成長するパラメータ
    • パラメータが徐々に成長することで、学習プロセスが安定し、ノイズの影響を最小限に抑えることができます。