ControlNet
下絵で生成画像の形をつかむ仕掛け
- ControlNetは、画像を作るとき形を絵で指定してあげる仕掛けです。言葉に移しにくい構図や姿勢を下絵で渡します。
- 文だけ渡すと色や雰囲気は合っていても、**何がどこに置かれるかは出すたびに変わります。**ControlNetはその場所をつかまえておきます。
- 下絵は輪郭線、骨格線、遠近、色の塊のように何種類もあり、選ぶ種類によってつかまる部分が変わります。
- 元の模型は固定したまま、枝葉をひとつだけ付け足して学習します。だから下絵の種類を差し替えるように取り替えて使えます。
- つかまえる強さを調節できます。強くつかむと下絵通りに、緩くつかむと自由に外れます。
目次
1たとえで理解する
ズボンの前面に縦にまっすぐ立った折り目ひとつを思い浮かべてください。アイロンで一度押さえておくと、そこが折れる場所として決まります。布の色も、柄も、厚さもそのままです。決まるのはどこで折れるかひとつだけです。
強く長く押さえておくと折り目が刃物のように立って、どう動いてもその場所でしか折れません。さっと軽く当てると折り目がぼやけて、歩くたびに少しずつずれます。つかまえる場所もひとつではありません。外側の輪郭に沿ってつかむこともできれば、真ん中の一本だけつかむこともできます。
ControlNetは、画像を作る場面にこの折り目を前もってつかまえておくことです。色や質感や雰囲気は言葉で注文し、何がどこに置かれるかはつかまえておいた線が決めます。
2くわしく
言葉では場所を決めにくいです
注文文は何を描くかを決めるにはよく通じます。ですが「左から光が入って、窓枠が画面右上の三分の一の地点にかかり、椅子は少し斜めに」といった要求は、文に移す瞬間に崩れてしまいます。同じ文を十回入れれば十通りの配置が出ます。
選ぶ番号を固定すれば同じ絵はまた出てきます。しかしそれは絵一枚をつかまえておくことであって、構図をつかまえておくことではありません。文をひと文字直しただけで画面全体がまた崩れます。
ControlNetはこの問題を言葉で解きません。望む配置を線で描いてそのまま渡します。文は文のままにしておき、場所は線で決める方式です。
渡すのは絵ではなく線一枚です
渡す下絵は完成した絵ではありません。写真から境界線だけ抜き出した線画、関節の位置だけつないだ骨格線、画面の各場所がどれだけ遠いかを明るさで示した濃淡地図のように、情報をひとつの層だけ残した絵です。
一つの層だけ残すのには理由があります。参考写真を丸ごと入れると色や質感まで付いてきて、新しく作る余地がなくなります。境界線だけ残せば形は守られつつ色と質感の場所は空いていて、その空いた場所を注文文が埋めます。アイロンでつかまえるのが布ではなく折れる場所ひとつだけなのと同じです。
下絵を手で描く必要もありません。参考写真一枚を入れると線や骨格を抜き出してくれる道具が別にあるので、その結果をそのまま使います。もちろん自分で線を引き入れてもかまいません。
元のものはそのままに線だけ乗せます
ControlNetは画像生成モデルを新しく作るわけではありません。すでに学習を終えたモデルは手を加えず固定したまま、その横に同じ形の写しをひとつ置いて写しだけを学習させます。写しは下絵を読み取って「ここに線がある」という信号に変える作業を学びます。
写しが作った信号は、元のモデルが絵を仕上げていく途中に少しずつ足されます。最初はこの信号が何の影響も与えないよう抑えておき、学習が進むにつれ少しずつ働くよう開いていきます。布の織りには触れず折れる場所だけ加えるのと同じやり方です。
この構造のおかげで、下絵の種類ごとに枝葉を別々に作っておいて必要なとき差し替えられます。線をつかまえる枝葉と姿勢をつかまえる枝葉をそれぞれ付けたり外したり、二つを一度に付けることもできます。
どれくらい強く、どこまでつかむか
下絵をどれくらい強く従うかはつまみひとつで調節します。強くつかむと線を一寸も外れませんが、絵が硬くなり線の外側が貧弱になります。緩くつかむと自然になる代わりに構図が少しずつずれます。アイロンを長く押さえるかさっと当てるかの違いと同じです。
いつからいつまでつかまえるかも決められます。絵はぼやけた塊から始まり何段階も経てくっきりしていきますが、大きな配置は前の段階で決まり、細かい模様は後の段階で決まります。だから前の段階だけつかまえて後ろを緩めると、構図は守りつつ細部は自由に出ます。
何をつかむか選ぶこと
同じ写真から抜き出しても、どの下絵を使うかによって結果が大きく分かれます。境界線を使うと原本の外郭がほぼそのまま残り、骨格線だけ使うと姿勢だけ同じで残りは完全に新しく出ます。遠近だけ使うと空間配置だけ残り、何を置くかは注文文が決めます。
だから「何を守り何を変えるか」を先に決めてから下絵の種類を選ぶのが順序です。守るものを詰め込みすぎると新しく作る余地がなくなり、少なすぎるとつかまえた意味がなくなります。
3もう少し正確に
ControlNetは、画像生成モデルに条件入力をひとつ追加する構造です。学習を終えたモデルの値は固定しておき、前半分を複製した写しが下絵を受け取って特徴に変えたあと、その結果を元のモデルの中間段階ごとに足します。写しと元のモデルをつなぐ結びつきは最初は何も流さない状態から始まるので、学習初期に元の性能を損ないません。
アイロンのたとえがずれる点もあります。押さえた折り目はその場所でしか折れないようにする物理的な力ですが、ControlNetは強制ではなく段階ごとにヒントを足す方式です。だから強さを下げれば線を越えることがあり、注文文と下絵が食い違うと両方とも中途半端な絵になることもあります。折り目は人が場所を見てつかまえますが、下絵はたいてい参考画像から自動で抜き出すという違いもあります。
4やってみる
5よくある誤解
下絵を入れるとその絵に色を塗ってくれると思われがちですが、実際には絵を最初から新しく作りながら形だけ下絵のほうへ引き寄せます。
ControlNetを使うとモデルを再学習させることになると思われがちですが、実際には元のモデルは固定されたままで、横に付けた枝葉だけが学習されます。
下絵が精密なほど結果がよいと思われがちですが、実際には線が細かすぎると新しく作る余地がなくなり、硬くぎこちない絵になります。
7ひとこと要約
つまりControlNetは絵を作る前に折れる場所をアイロンで押さえておくようなもので、色と雰囲気は言葉で注文し、形はつかまえておいた線でつかむことができます。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02