IC-Lightは、テキストプロンプトまたはライトマスクで写真をリライトします。単に光を動かすだけではなく、プロに近いレベルの本当に良いレタッチも行い、自分自身、家族、風景のどんな粗い写真でも入力できます。ほぼどんなゲーミングノートPCのComfyUIでも、自宅で、無料で、写真をどこにもアップロードせずに動きます。
IC-Lightは、ControlNetの作者であるlllyasvielによるものです(GitHubのIC-Light)。より良い結果が出るIC-Light v2もありますが、私がこれを作った時点では、ComfyUIではなく、独自のウェブサイトの有料の非商用サービスとしてのみ提供されていました。ここではv1を使います。
ポイント
- ノード: ComfyUI-IC-Light(Kijai)、KJNodes、Essentials、rgthree。モデル:iclight_sd15_fc。
- グラフ: チェックポイント → Load And Apply IC-Light → KSampler。プロンプトとVAE → IC-Light Conditioning → KSampler。リサイズしてVAEエンコードした自分の写真を、foregroundとして。
- 光をプロンプトで指定:「daylight」「foggy morning」「neon light」「spotlight」。
- 顔を保つ: 元の画像からのDetail Transfer。
- ライトマスクが空のlatentの代わりになります。柔らかくしないと画像が焼けます。
ComfyUIが初めてなら、ComfyUIのノードの基本から始めてください。ワークフローと私のライトマスクは、私のPatreonで無料です。
インストール
- Manager → Custom Nodes ManagerでIC-Lightを検索します。Kijaiのものと、huchenleiのIC-Light Nativeの2つのパックがあります。どちらも便利で、私は両方をインストールし、ここではKijaiのものを使います。
- KJNodes(Kijaiのユーティリティノード)もインストールします。再起動して、ページを再読み込みします。
- Manager → Model ManagerでIC-Lightを検索します。3つのモデルがあり、必要なのは1つだけです。
- FC(foreground conditioned):私が使っているもの。
- FBC(foregroundとbackground)。
- FCON:ドキュメントによると、FCよりやや劣ります。
- ダウンロード後は、ページを更新(Ctrl+R)するだけです。再起動は不要です。
ワークフローを構築する
デフォルトのワークフローから始め、チェックポイントをepiCPhotoGasmに切り替えます。プロンプトの名前を「Positive」「Negative」に変え、緑と赤に色分けします。
- Load And Apply IC-Light: チェックポイントのモデルがここを通ってKSamplerに入ります。FCモデルを自動で拾います。
- IC-Light Conditioning: ポジティブプロンプト、ネガティブプロンプト、VAEを接続します。そのpositiveとnegativeの出力は、KSamplerに行きます。
- foreground: 自分の写真を入れたLoad Image → (Essentialsの)Image Resize → VAE Encode → conditioningのforeground入力。
conditioningノードには、opt_background入力もあります。背景画像を試しましたが見栄えが良くなかったのでやめました。代わりにプロンプトで背景を記述してください。empty_latent出力もあり、Empty Latent Imageノードと同じものです。後でライトマスクを入れる場所になるので、私は別のEmpty Latent Imageを残しています。
ポジティブプロンプトにdaylightやfoggy morningのようなライティングを入力して、Ctrl+Enterを押します。実行のたびに少しずつ異なります。バッチ数を増やすと、多くのバリエーションが見られます。ひどいものもあれば、使えるものもあります。選別してください。
比較して、Detail Transferで顔を保つ
結果を画像A、リサイズした元画像を画像Bにして、rgthreeのImage Comparerを追加します。スライダーをドラッグすると、顔が少し変わっているのが分かります。それがレタッチの面で、あなたを「改善」するのです。その後のあなたは、まったく同じではなくなり、それは良いことよりも悪いことのほうが多くあります。
ディテールを戻すために、Detail Transferを追加します。リライトした出力をtarget、元の画像をsourceに入れます。Photoshopのハイパス、アンシャープマスクのコツのように機能し、強すぎることもあります。blend factorを下げて調整してください。
調整中はseedを固定する
seedがrandomizeの状態では、変更のたびにすべてが再実行され、新しい画像になります。fixedに切り替えても、次のseedがすでに設定されているため、現在の画像は固定されません。代わりに、私はこうします。seedをincrementにして1から始め、各画像に既知の番号を付けます。気に入った番号(例えば3)に戻って実行し、その後fixedに切り替えます。これで、Detail Transferの設定を変えても、そのノードだけが数秒で再実行されます。
ライトマスク
空のlatentの代わりに、KSamplerにライトマスクを与えます。白が光になる白黒の画像です。マスクを読み込み、VAE Encodeして、KSamplerのlatent_imageに接続します。丸、ストライプ、斜めの線などのマスクのセットを描き、私のPatreonにあります。
硬いマスクは画像を焼きます。 純粋な白黒のマスクは非常に高いコントラストになり、丸いマスクは目にも当たる、とても強い光になりました。柔らかくするには、マスクとVAE Encodeの間にプレビュー付きのRemap Image Rangeを加え、最小値を上げて最大値を下げます。私は約20パーセントまで下げました。Photoshopのようなリアルタイムではなく、プレビューを見るのでさえ、グラフを実行する必要があります。
マスクを使うときは、プロンプトがとても重要です。「Spotlight」は強い光に、「neon light」はネオンになりました。私は通常、6〜8個を一度にキューに入れます。(プレビューノードの数字をクリックすると、以前の実行のプレビューがすべて表示されます。ComfyUIの新しい機能です。ときどきComfyUIを更新してください。)
Multiplier: IC-Light Conditioningのデフォルトの0.182が良好です。0.155では暗くなり、0.25では画像がほぼスタイライズされたように焼けました。
白黒の結果
ときどき白黒の画像が返ってきて、理由は分かりません。ネガティブプロンプトに「black and white」を入れると、彩度がおかしくなりました。Photonモデルを試したときも、最初は多くの白黒画像が出ました。VRAM 4GBのノートPCでは、24GBのPCよりずっと頻繁に出て、PCではほとんどがカラーです。「50% saturated」のようなプロンプトが役立つことがあります。結局、プロンプトを多用するよりも、主に選別することで対処しています。プロンプトは最小限にしています。
高解像度
SD 1.5とIC-Lightは512 × 512で学習されています。マスクが同じサイズ(リサイズノードを使います)であれば、1024 × 1024の画像を入力することもできます。結果は少し焼けてよりスタイライズされましたが、品質は高くなりました。アップスケーラーが肌をプラスチックのように柔らかくすることがあるので、それには価値があるかもしれません。
光を手で描く
ライトマスクを直接描くこともできます。
- Load Imageを右クリック → Open in Mask Editorで、光が当たる場所を塗ります(顔で1950年代のフィルムノワール風を試しました)。
- Convert Mask to Imageにしてから、VAE Encodeに入れます。
- 結果がぼやける場合は、サイズを確認してください。マスクが512 × 512の画像と正確に一致しないと、すべてが壊れます。
- 柔らかくします:画像に変換する前にMask Blur(Essentials)(私は66を使いました)、その後、白を下げたRemap Image Rangeを約30パーセントで適用します。
集合写真と風景
IC-Lightは、複数の人物にも機能します。生成した家族写真で、「daylight」は興味深い結果になりました。子供の上の光線のマスクや、プロンプトの「beam of light」は、クレイジーな光線を作りました。multiplierの調整が必要かもしれません。
オーストラリアの風景写真では、「daylight」は興味深い結果になり、「sunset」はあまりに赤く不気味になり、「afternoon」は、ときに存在しない風景で海を置き換えましたが、うまくいくこともありました。プロンプトを試行錯誤する必要があります。
結果をアップスケールする
リライトした512 pxの画像は、私の無料アップスケーリングのワークフローで8Kまで拡大できます。結果は必ずしも素晴らしくはなく、512のリライト画像のほうが良いと感じることが多くありました。それでも解像度が必要なら、十分な結果が得られます。
動画版を見る (19:19)
上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。
よくある質問
ComfyUIでIC-Light v2を使えますか?
私がこれを作った時点では使えませんでした。IC-Light v2は、独自のウェブサイトで有料の非商用サービスとしてのみ提供されていました。このガイドでは、ローカルで動くIC-Light v1を使います。
どのIC-Lightモデルをダウンロードすべきですか?
FC(foreground-conditioned)モデルだけを使っています。FBCモデルは背景も受け取りますが、背景画像を試しても見栄えが良くなかったため、代わりにプロンプトで背景を記述しています。
リライトした画像が白飛びしたり、白黒になったりするのはなぜですか?
硬い白黒のライトマスクは画像を白飛びさせます。Remap Image Rangeとマスクのぼかしで柔らかくしてください。白黒の結果は、VRAM 4GBのノートPCではよく出て、24GBのPCではまれでした。「50% saturated」のようなスタイルのプロンプトが役立つことがあります。
IC-Light Conditioningのmultiplierは、いくつにすべきですか?
デフォルトの0.182がよく機能します。0.155では暗くなり、0.25では画像がほぼスタイライズされたように焼けました。
