AI総合研究所

SHARE

X(twiiter)にポストFacebookに投稿はてなブックマークに登録URLをコピー

ContorlNetとは?プリプロセッサ一覧やインストール方法、使い方を解説

この記事のポイント

  • この記事はControlNetの概要とその使い方について紹介しています。
  • 高度な画像制御機能を備えたAI技術であり、さまざまなクリエイティブな分野での活用が期待されています。

監修者プロフィール

坂本 将磨

Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。

情報技術の進化により、画像生成AIの能力は格段に上がっていますが、具体的な構図やポーズを指定しての画像生成は従来困難でした。そこで登場したのが「ControlNet」、Stable Diffusionをベースにした画像生成AIにおいて、視覚的な条件を追加することで精度の高い生成を可能にする技術です。この記事では、ControlNetの概要から使い方、さらには商用利用の注意点までを詳しく解説します。読者の皆様にとって、新しいクリエイティブな可能性を広げる一助となることでしょう。ControlNetの展開により、AIによる画像生成の領域はさらなる発展を遂げつつあります。

ControlNetとは

ControlNetは、Stable Diffusionをベースとした画像生成AIに、より詳細な制御機能を追加する革新的な拡張モデルです。
2023年初頭にStanford大学のLvmin Zhang氏らの研究チームによって発表され、画像生成AIの新たな可能性を切り開きました。

従来のAI画像生成では、プロンプトによるテキスト指示が主な制御手段でしたが、意図した通りの構図やポーズを得ることは困難でした。ControlNetは、この課題を解決するために開発された技術で、参照画像やスケッチなどの視覚的な条件を追加することで、より正確な画像生成を実現します。

画像生成研修

技術的な背景

ControlNetの核となる技術は、「Zero Convolution」と呼ばれる特殊な畳み込み層です。
この層により、追加の学習なしで既存のStable Diffusionモデルに制御機能を組み込むことが可能になりました。

以下に、ControlNetの技術的な特徴をご紹介します。

1.元のディフュージョンモデルをロック(固定)する

ControlNetでは、Stable Diffusionなどのすでに学習済みのモデルをロックします。これは、元のモデルの「知識」をそのまま使いたいからです。

ディフュージョンモデルは、数十億枚の画像でトレーニングされていて、様々な画像を生成する「ベースのスキル」が備わっています。
この「ロック」によって、元のモデルの出力が変わらないように固定されるため、元の画像生成能力をそのまま利用できます。

2.追加の条件を学習する「trainable copy(学習可能なコピー)」

ControlNetでは、元のモデルの各層に「trainable copy(学習可能なコピー)」と呼ばれる新しい部分を追加します。

このtrainable copyは、「ポーズやエッジ情報、深度マップ」など、ユーザーが指定した条件を学習し、生成に反映する役割を担っています。

3.Zero Convolution(ゼロ初期化された畳み込み層)による条件の統合

ControlNetでは、元のモデルとtrainable copyをつなぐために、「Zero Convolution(ゼロ初期化された畳み込み層)」という特殊な層を使います。

このZero Convolutionは「1×1の畳み込み層」と呼ばれ、最初は重みが「0」に設定されています
これにより、学習の初期段階では、元のモデルに何も影響を与えないようになっています。

学習が進むにつれて、Zero Convolution層が少しずつ重みを増やしていき、trainable copyで学習された条件情報が元のモデルの出力に自然に反映されるようになります
このおかげで、元のモデルの品質を保ちながら、追加した条件が画像に統合されていきます。

参考:Adding Conditional Control to Text-to-Image Diffusion Models


ControlNetの主要機能一覧

線画への色付け

手描きの線画やスケッチを自動で色付けでき、細部までプロンプトで指定した色やスタイルを忠実に再現します。
アニメーション制作マンガの下塗り作業の自動化に役立ちます。

解像度のアップスケール

AIが画像の文脈を理解し、ノイズを抑えつつ最大4倍まで拡大できます。
SNSや印刷物などで高品質な画像が求められる場面で有効です。

出力画像の高度な制御

生成画像の明るさやコントラスト、シャープネスやノイズ除去などの細かな画質調整が可能です。
用途に応じた設定で、写真調からイラスト調まで表現を変えることができます。


ControlNetの操作ツール(プリプロセッサ)の機能

ControlNetの主要機能である「線画への色付け」「解像度のアップスケール」「出力画像の高度な制御」は、それぞれControlNetの「操作ツール(プリプロセッサ)」によって実現されています。

これらの操作ツール(プリプロセッサ)は、元画像からエッジやポーズ、深度などの特徴を抽出して条件情報としてモデルに提供し、生成画像にそれを反映させるための重要な役割を担います

以下に、ControlNetで使用される各操作ツール(プリプロセッサ)の機能とその具体例を紹介します。

操作ツール(プリプロセッサ)一覧

Canny

画像のエッジ検出を行い、輪郭情報のみを抽出して生成モデルに提供します。エッジに沿った線画の構造に基づいて、画像生成がコントロールされます。

Openpose

人のポーズをスケルトン(棒人間)のような形式で表現します。ポーズ指定ができ、人物の構図や姿勢に基づいた画像生成が可能です。

Openposeについては、こちらで詳しく解説しています。

openpose例Openpose例

Depth

画像の深度(奥行き)情報を抽出し、立体的な構図で画像生成を行います。遠近感や奥行きのある画像が得られます。

Depth例Depth例

Scribble

手書きの落書きや抽象的な線画から画像を生成します。ラフなスケッチや形状情報を基に生成が行われます。

sctibble例Scribble例

Inpaint

画像内の選択範囲を修正するための機能です。欠損部分や指定箇所に変更を加え、部分的な修正や補完に適しています。

Inpaint例Inpaint例

Reference

元画像のスタイルや色を保持しながら、新たな画像を生成します。既存の画像のスタイルを基にした生成が可能です。

Mlsd

画像から直線部分を抽出し、建物や構造物の骨格に沿った画像生成をサポートします。建築物や人工物に適した構図の生成に役立ちます。

Tile

低解像度画像をタイル化しながらアップスケールすることで、画質を維持しつつ画像を大きくできます。

Lineart

元画像から線画情報を抽出し、線画スタイルを基に画像生成を行います。

Normal

法線マップを利用し、3D的な立体感を表現した画像生成を行います。

egmentation

画像を要素ごとに分割し、各領域に異なる条件を適用します。物体の領域を指定して、要素ごとの画像生成が可能です。

Softedge

元画像の主線を抽出し、柔らかな輪郭を維持した画像生成が可能です。

これらの操作ツール(プリプロセッサ)は、ControlNetにおける画像生成のための事前処理として、元の画像から必要な特徴を抽出し、条件情報としてモデルに提供します。
各ツールが特定の特徴を取り出すプリプロセッサとして機能することで、ユーザーが意図した構図やスタイルでの画像生成が可能になります。


ControlNetのインストール方法

ControlNetの導入はStable Diffusion Web UIの拡張機能として行いますが、正しくセットアップしないと様々な問題が発生する可能性があります。
このセクションでは、初心者でも確実にインストールできるよう、詳しく解説していきます。

Stable Diffusion Web UI Forgeへのインストール手順

Stable Diffusion Web UI Forgeをまだインストールしていないという方には、以下の記事をご覧ください。
Stable Diffusion Web UI Forgeのインストール方法・使い方をわかりやすく解説!

なお、forgeにはControlNet自体はすでにインストールされています。そのため、あとはControlNetで使用したい機能に合わせたモデルをインストールしていきます。

まずは、huggingfaceのPythonライブラリを使用するために、以下を実行して下さい。

pip install huggingface_hub


次に、モデルを一括インストールするためのPythonスクリプトを作成します。任意のディレクトリにて、以下を実行して下さい。

nano download_controlnet.py


すると、編集画面が開くので、以下をコピペして下さい。

from huggingface_hub import snapshot_download

# ダウンロード設定
snapshot_download(
    repo_id="comfyanonymous/ControlNet-v1-1_fp16_safetensors",
    revision="main",
    allow_patterns="*.safetensors",
    local_dir="/home/azureuser/stable-diffusion-webui-forge/models/ControlNet"
)


貼り付けたら、そのPythonファイル(今回は、download_controlnet.pyという名前)を以下のコードで実行して下さい。なお、Pythonファイルを作成したディレクトリで実行する必要があります。

python3 download_controlnet.py


インストール中は以下のような画面になっています。

ControlNetモデルインストール中ControlNetのモデルインストール中の画面

これで、ControlNet使用のための準備は終わりました。


ControlNetの使い方

ControlNetを効果的に活用するためには、基本的な操作方法から各機能の特徴まで、段階的に理解を深めていく必要があります。
ここでは、実践的な使用方法について解説していきます。

ControlNetは基本的に、forgeを下部に移動すると表示される「ControlNet Integrated」から使用します。
ControlNetIntegratedControlNet Integratedの表示

「ControlNet Integrated」は、下記のような構成となっています。
ここで、写真を添付したりモデルを設定したりすることでControlNetを使用する事が出来ます。

ControlNetIntegratedの中身ControlNet Integratedの中身

ControlNetを使用する際は、以下の項目を選択していきます。

使用したい写真のアップロード

まずは、下記の箇所を選択肢、使用したい写真をアップロードして下さい。

写真の選択写真のアップロード

Enableにチェックを入れる

次に、「Enable」にチェックを入れます。

EnableへのチェックEnableへのチェック

使用したい機能を選択する

その次は、ControlNetの中でも使用したい機能を選択して下さい。

使用したい機能の選択使用したい機能の選択

Preprocessor、Modelの該当ファイルを選択する

最後に、先ほど選択した機能に対応するPreprocessor、Modelのファイルを選択して下さい。

PreprocessorとModelの選択PreprocessorとModelの選択

上記の写真の設定ではcannyを設定しているので、cannyによる画像生成をしてみます。
結果的に、下記のように設定できました。

canny例設定紹介cannyの設定紹介

あとは、下記のようにいつも通りの設定をします。今回は、サイバーパンク風になるようにプロンプトを記述してみました。
canny生成設定紹介canny生成時の画面

実行して見ると、下記のような画像が生成されました。
canny実行例cannyの実行例

また、生成結果の表示部分を見ると、下記のように2つの写真が表示されています。
canny生成時の出力部分canny生成時の出力部分

左側は今回の生成結果で、右側は以下のようにcannyによって抽出された線画になります。
cannyによって抽出された線画cannyによって抽出された線画

最終的には、以下のような流れで生成できたという事になります。

cannyの生成の流れcannyの生成の流れ

パラメータ設定

ControlNetを効果的に使用するためには、パラメータ設定を理解し、適切に調整することが重要です。以下に、代表的なパラメータやオプションをいくつか紹介します。

Control Weight:ControlNetが生成結果にどの程度影響を与えるかを調整

Timestep Range:Diffusionモデルの生成プロセス(ステップ)のどの段階でControlNetの影響を適用するかを設定

Pixel Perfect:入力画像のサイズと生成される画像の解像度を自動的に調整するオプション

Allow Preview:ControlNetの設定を適用する前に、結果のプレビューを表示するオプション

Use Mask:入力画像の特定の部分を指定し、その領域のみControlNetの影響を適用


ControlNetの活用事例

ControlNetはさまざまな創作活動やプロフェッショナルな制作現場での活用が期待されています。以下に、その可能性を示す事例を挙げます。

イラスト制作での活用例

ControlNetは、イラスト制作において下書きやラフスケッチからの生成を効率化できる可能性があります。
例えば、OpenPoseを使ってキャラクターのポーズを指定し、Depthモデルと組み合わせて自然な立体感を持つキャラクターを作成することが挙げられます。

また、背景制作においても、CannyエッジSegmentationで構図を細かく制御し、複雑な背景を効率的に生成できる可能性があります。

イラスト制作イメージ

写真編集への応用

ControlNetは、写真編集において構図や遠近感を調整する際にも有用であると期待されています。
Depthモデルを活用して遠近感を再構成し、Normalマップで光源や陰影を調整することが可能かもしれません。

また、スタイル変換においても、プロンプトを利用して写真をアニメ風水彩画風に変換するなど、写真の新しい表現方法を探索できる可能性があります。

写真編集

コンテンツ制作とメディアの融合

ControlNetは映画やゲームのコンテンツ制作にも応用できると考えられます。シナリオに基づいてシーンの構成キャラクターの動きなどをAIに制御させ、映像制作の効率化が期待されています。

プロンプトを使ってシーンの立体感やキャラクターの動作を指定し、迅速にプロトタイプ映像を生成することが可能かもしれません。

映画イメージ


ControlNetの商用利用について

ControlNetを商用目的で使用する場合は、法的な考慮事項とライセンスの確認が重要です。適切な使用方法を理解し、リスクを最小限に抑えながら活用していきましょう。

ControlNetの商用利用では、以下の権利関係を慎重に確認する必要があります。

商用利用イメージ

ベースモデル

商用利用する際には、学習に使用されたベースモデルのライセンスを確認することが重要です。モデルによっては、商用利用が制限されている場合があるため、商用利用が可能なモデルを選択する必要があります。

ライセンスが明示されている場合でも、条件をよく確認し、商用利用に対応していることを確実に理解しておきましょう。

学習データ

ControlNetは、学習に使用されたデータセットが重要な要素となります。データセットの利用規約を確認し、著作権や使用許諾が適切に処理されていることを確かめる必要があります。

特に、権利処理済みデータを使用することが求められます。無断で使用されたデータが含まれている場合、商用利用において法的リスクが生じる可能性があるため注意が必要です。

出力結果

ControlNetを用いて生成された画像の権利帰属も確認するべきポイントです。出力結果の利用範囲を明確化し、商用利用における制限を把握することが大切です。

特に生成画像の権利が第三者に帰属する場合、その利用に関して追加の手続きや許諾が必要となる可能性があります。

AI駆動開発


まとめ

本記事では、Stable Diffusionの拡張モデルであるControlNetについて、基本的な概念から実践的な使い方まで解説してきました。ControlNetの特徴である高度な画像制御機能は、ポーズや構図の指定、画風変更、線画への色付けなど、様々な場面で活用できます。特に、商用利用の際は必ずライセンスを確認し、適切な使用範囲を守ることが重要です。本記事が、あなたの画像生成AI活用の際の一助になれば幸いです。

AI活用のノウハウ集「AI総合研究所」サービスご紹介資料

「AI総合研究所 サービス紹介資料」は、AI導入のノウハウがないというお客様にも使いやすい最先端のAI導入ノウハウを知れる資料です。

資料ダウンロード
監修者

坂本 将磨

Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。

関連記事

AI導入の最初の窓口。

お悩み・課題に合わせて活用方法をご案内いたします。
お気軽にお問合せください。

AI総合研究所 Bottom banner

ご相談
お問い合わせは
こちら!