ControlNet
ControlNet は、pretrained Diffusion Model に additional condition を与え、生成結果を空間的に制御するための architecture です。
何を制御できるのか
ControlNet は、次のような condition を使って生成を制御できます。
- Edge map
- Human pose
- Depth map
- Segmentation map
- Sketch
これにより、text prompt だけでは制御しにくい構図や姿勢を指定できます。
Architecture
ControlNet は、pretrained diffusion model の重みを活かしながら、condition を処理する branch を追加します。

画像出典: Lilian Weng, “What are Diffusion Models?”。Condition branch を追加することで、pretrained model の能力を保ちながら制御性を高めます。
数式で見る zero convolution と条件分岐
ControlNet は、pretrained diffusion model の block を固定し、その横に condition 用の trainable branch を追加する設計として理解できます。元の block の出力を 、condition branch の出力を とすると、概念的には次のように書けます。
ここで、 は layer の hidden feature、 は edge、pose、depth などの condition、 は zero convolution です。Zero convolution は初期状態で重みと bias が 0 になるように置かれるため、training 開始時には次のようになります。
この式の気持ちは、「最初は pretrained diffusion model の挙動を壊さず、学習が進むにつれて condition branch が必要な差分だけを足していく」ということです。したがって、ControlNet は大規模 model の生成能力を保ちながら、空間的な制御信号を追加する方法だと見なせます。