2023年4月14日(現地時間) – ControlNet 1.1 ナイトリーバージョンがリリースされました。
ControlNetとは
ControlNetとは、画像生成をよりコントロール可能なものとする重要な技術です。入力画像から様々な形で画像生成をコントロールすることができます。
例えば、Canny モデルでは、入力から線を抽出して生成画像をコントロールすることができます。
Human Pose モデルでは、OpenPoseのポーズ推定技術を使用して、生成する2D/3D人物のポーズをコントロールすることが可能となります。
最初の入力画像から線画やポーズを推定するプロセスはプリプロセッサ(preprocessor)によって行われますが、このプロセスは飛ばすことができます。
ControlNet 1.1
ControlNet 1.1には、堅牢性と結果品質を向上させた以前のモデルがすべて含まれ、いくつかの新しいモデルが追加されました。合計で、14モデル(production readyモデル11、experimentalモデル2、unfinishedモデル1)が含まれています。
どのようがコントロールが可能か、バージョン1.0と比較してどのように改善されているかを紹介していきたいと思います。ControlNet 1.1の開発であり、進行中以下の紹介する内容も変更される可能性があることにご注意ください。
Depth
深度マップ(Depth map)でStable Diffusionをコントロールすることができます。
深度マップ(Depth map)とは、3D空間における物体の距離を表す2D画像のことです。通常、グレースケール画像として表現されます。画像内の明るい領域は近い距離を、暗い領域は遠い距離を示します。
1.1では、次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
プリプロセッサで生成された深度マップに最適化されているわけではなく、3Dエンジンで作成されたものでよりうまく機能するようです。
Normal
ノーマルマップ(Normal Maps)でStable Diffusionをコントロールすることができます。
ノーマル(法線)マップは、表面の微細なディテールや凹凸をシミュレートするために使用されるテクスチャマップの一種です。ノーマルマップは、表面の法線ベクトルを表すRGB画像であり、各ピクセルの色がその点での法線方向を表します。
Normal 1.0で使用されていたnormal-from-midas法は、合理的でも物理的に正しくもなく、多くの画像であまりうまく機能しませんでしたが、Normal 1.1は、プリプロセッサが比較的正しいプロトコル(NYU-V2’s visualization method )で法線マップを推定するように訓練されているため、はるかに合理的となっています。つまり、Normal 1.1は、色が正しい限り(青が前、赤が左、緑が上)、レンダリングエンジンからの実際の法線マップを解釈できます。
以前は、あまり頻繁に使われるものではありませんでしたが、かなり改善されており、より頻繁に使用される可能性があるとされています。
Canny
Canny MapsでStable Diffusionをコントロールすることができます。
Cannyは、画像処理において一般的に使用されるエッジ検出アルゴリズムの一つで画像内の物体の境界線や形状を検出するために使用されます。
1.1では、Depthと同様に次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
CannyモデルはControlNetの中でも頻繁に使われる重要なモデルの一つとされており、8台のNvidia A100 80Gを搭載したマシンでバッチサイズ8×32=256で3日間、72×30=2160米ドルでトレーニングしたとのことです。結果、Canny 1.1はCanny 1.0より少し堅牢で、視覚的品質が少し向上しています。
MLSD
M-LSD直線でStable Diffusionをコントロールすることができます。
MLSD(Multi-Scale Line Descriptor)は、画像内の直線や線分を効率的に検出し、記述するためのアルゴリズムです。MLSDは、複数のスケールで線分を検出するために設計されており、画像内の線分が異なる長さや太さを持っていても、ロバストに検出できることが特徴です。
1.1では、Depth、Cannyと同様に次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
また、16本以上の直線を持つ画像を見つけるために30万枚の画像を追加してトレーニングデータセットが拡大されました。
ControlNet 1.1 Scribble
Scribbles(簡単な手描きの走り書きのようなもの)でStable Diffusionをコントロールすることができます。
1.1では、Depth、Cannyなどと同様に次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
また、このモデルは、落書きが比較的太い線でもうまく機能するようになっているとのことです。
Soft Edge(旧HED)
こちらも検出したエッジを使用したコントロール方法です。1.0では、HED Boundaryとされていました。このモデルは、前モデルと比較して大幅に改善されているので、できるだけ早いアップデートが推奨されています。いくつかのモデルがありますが、デフォルトでは、SoftEdge_PIDIを使用すると良いようです。
1.1では、Depth、Cannyなどと同様に次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
テストでは、Soft Edge 1.1は深度モデルと同様に使用可能であり、より頻繁に使用される可能性があるとのことです。
また、「SoftEdge_safe」と呼ばれる新しいタイプのソフトエッジが追加されました。これは、HEDやPIDIが、ソフトエッジの中にオリジナル画像の破損したグレースケール版を隠す傾向があり、そのような隠れたパターンがControlNetを混乱させ、悪い結果につながるという問題を解決するものとなっています。
Segmentation
Semantic SegmentationでStable Diffusionをコントロールすることができます。
セマンティックセグメンテーションは、画像を意味的に理解可能な領域に分割することを目的としています。これにより、画像内の物体の位置、形状、大きさなどの情報を抽出することができます。
1.1では、ADE20KとCOCOの両方のアノテーションを受け取ることができるようになりました。従来のSegmentation 1.0では約150色をサポートしていましたが、Segmentation 1.1ではさらに182色をサポートしています。以前の入力もすべてそのまま使えるはずです。
Openpose
OpenPoseは、リアルタイムで人体姿勢推定(Pose Estimation)を行うオープンソースのコンピュータビジョンライブラリです。このOpenposeでStable Diffusionをコントロールすることができます。
1.0ではボディだけでしたが、顔や手の推定も可能となっています。モデルには次の2つの選択肢が用意されています。
- “Openpose”=Openpose body
- “Openpose Full” = Openpose Body + Openpose Hand + Openpose Face
1.1での改良は、主にOpenPoseの実装を改良したことに基づいています。特に手について生成が改善されているようです。
また、Depth、Cannyなどと同様に次のような問題が修正されています。
- グレースケールを繰り返すため、以前のモデルではグレースケールの人物画像を生成する可能性がやや高い
- 一部の画像は低画質、非常に不鮮明、または著しいJPEGアーチファクトがある
- データ処理スクリプトのミスにより、ペアプロンプトが誤って表示された画像があった。
Lineart
ラインアートのプリプロセッサは、画像から詳細または粗い線画を生成できます。このモデルは十分なデータ拡張(data augmentation)で学習され、手動で描かれた線画を受け取ることができます。
Anime Lineart
このモデルは、実際のアニメの線画や抽出された線画を入力とすることができます。線画に自動で色を塗ってくれます。
Shuffle
Shuffleでは、画像を再編成するモデルが学習されています。ランダムフローで画像をシャッフルし、Stable Diffusionを制御して画像を再構成しています。このControlNetは画像を再構成するように学習されているので、入力をシャッフルする必要はなく、元の画像を入力として使用することもできるとのことです。
ControlNet Shuffleの説明については、なぜかわかりませんが力が入っている感じで、他のすべてのControlNetsやユーザープロンプトと非常にうまく機能する可能性を秘めた、唯一無二の方法とされています。
Instruct Pix2Pix
指示ベースの画像編集モデル Instruct Pix2Pix で Stable Diffusion をコントロールすることができます。
公式のInstruct Pix2Pixとは異なり、50%の指示プロンプトと50%の説明プロンプトで学習させるモデルとのことです。例えば、”a cute boy “は説明プロンプトで、”make the boy cute “は指示プロンプトです。また、「YをXにする(make Y into X)」よりも「Xにする(make it into X)」のような指示の方がうまくいくようです。
Inpaint
ControlNet の Inpaintは、50%のランダムマスクと50%のランダムオプティカルフローオクルージョンマスクでトレーニングされています。つまり、このモデルは、インペイントアプリケーションをサポートするだけでなく、ビデオのオプティカルフローのワーピングに取り組むことができるとのことです。将来的にいくつかの例が提供される予定のようです。
Tile (Unfinished)
より多くの人が、画像を非常に大きく(4kや8k)するための方法について考え始めています。
問題は、Stable Diffusionでは、プロンプトが常に各タイルに影響を与えるということです。
例えば、プロンプトが「a beautiful girl」だったとして、画像を4×4=16のブロックに分割し、各ブロックで拡散を行った場合、「a beautiful girl」ではなく「16 beautiful girl」が16個得られることになります。これはよく知られた問題です。
今のところ、「clear, clear, super clear」のような無意味なプロンプトを使ってブロックを拡散させるのが一般的な解決策ですが、拡散強度が高ければ、結果は悪くなることが予想されます。また、プロンプトが悪いので、内容もかなりランダムになってしまいます。
ControlNet Tileは、この問題を解決するためのモデルです。与えられたタイルに対して、タイルの中にあるものを認識し、その認識されたセマンティックスの影響力を高め、また、内容が一致しない場合はグローバルプロンプトの影響力を低下させることができます。
なお、これは未完成のモデルであり、このようなアイデアを訓練/使用するためのより良い方法を探しているとのことです。
ダウンロード
ControlNet は、もっともメジャーなところでは、Stable Diffusion Web UI Automatic1111で利用できますが、A1111へのアップデートは進行中です。現在ベータテストが開始されています。
ControlNet 1.1 github ページへ(このリポジトリは、すべてが問題ないことを確認した後、ControlNetにマージされる予定です。)
モデルのダウンロードはこちらから
A1111プラグインはこちらから
コメント