現役グラビアカメラマンでありエンジニアでもある西川和久氏による生成AIグラビア連載の第24回は、照明を自由にコントロールできる新技術 『IC-Light』編。
『生成AIグラビアをグラビアカメラマンが作るとどうなる?連載』記事一覧』
lllyasviel氏復活第一弾のIC-Light
前回(第23回)にControlNetやFooocus、stable diffusion webui forgeを作ったlllyasviel氏、ここ数ヶ月Xなどに書き込みが無いと書いたが、いきなり驚くべき仕掛けを提げての復活。その名もIC-Light(Imposing Consistent Light)。Stable Diffusionの技術を使って、照明を自由にコントロールできる仕掛けだ。
これまでStable Diffusionでは、SD 1.5、SDXLに関わらず、Promptで光や照明などの指示はできたのだが、どのように反映されるかは、Modelやその他の設定しだい。例えば
backlight, soft bounced lighting, soft natural lighting, candolelight, neon light, hard(soft) shadows, spot light…など。
うまく行くときもあるが、多くの場合、何度ガチャっても思った光にならないケースが多い。
加えて上下はfrom above / from belowで指定できるものの、右左については、そもそも概念が無く、右手を上げてとか、左斜め前などは、Promptで書いたところで効かない。従って”右からの光”などの指定も不可能。
これらを一気に解決できるのがIC-Lightとなる。現在、Web UIタイプのデモ、ComfyUIのカスタムノードが2種類出ており、順に動かしてご紹介する(残念ながらAUTOMATIC1111のExtensionsは未だ無い)。
Google Colabでサクッと試す
Google Colabは、PythonやCUDAなどが使えるGoogleのクラウドAI環境だ。無償版と有償版(いくつかのパターンがある)があり、IC-Lightを試す程度であれば無償版でも問題無い。
また構築した環境をNotebooksとして公開することもでき、今回は日頃ComfyUIのカスタムNodeなどでお世話になっている-Zho-氏のものを使用する。
まずここからNotebooksを開き、自分のGoogleドライブへコピーする(ファイル>ドライブにコピーを保存)。
これで自分のGoogleドライブにこのNotebooksのコピーが出来る。後は説明通り上から順に実行すればOKだ。中国語だが、何となく分かるだろう。
一番上にあるブロックの再生ボタンを押し、停止するまで待つ。ここではGitHubからリポジトリをcloneして、必要なモジュールをインストールしている。
次に「Relighting with Foreground Condition」と「Relighting with Foreground and Background Condition」の二つがあるが、これはどちらかを実行。後者は文字通り、背景も含めたライティングだ。
まず前者Foreground Conditionから。動き出すと最後にURL(.gradio.liveの方)が出るのでそれをクリックしてブラウザで開けばデモ画面になる。
左上に画像をセットして、PromptとLeft Lightを指定、[Relight]ボタンを押せば実行する。(極端な例だが)ご覧のように左からの光が当たった画像に変わった。
もう一方のForeground and Background Conditionは、被写体に加え背景を指定してそれに馴染ませる感じとなる。論より証拠。ご覧の通り、別々だった2つの画像が見事に1枚の画像に収まっている。デモページの下の方にはいろいろサンプルがあるので、まずはそれから試せば分かりやすいだろう。
ComfyUIで試す
最新の技術に即対応する(ケースが多い)ComfyUIは、早速カスタムNodeが2つ登場した。一つは上記のデモとほぼ同等の機能。結果自体は同じなので省略。興味がある人は、このカスタムNodeを参考にして欲しい。
もう一つはComfyUI-IC-Light-Wrapper。マスクを生成しそれを使って画像の光を作るパターンとなる。実は先に説明したデモUI、筆者的に残念な部分がある。それはFront Lightが無いこと。
グラビアやポートレートの場合、たまに射光は使うがほとんどは正面からのフラット光。それができないとあまり使い道がない。これを可能にしたのがComfyUI-IC-Light-Wrapperだ。
ご覧のように左下側でマスクを作り、それを使い画像を生成する。Promptにはfront light, soft light。
イメージに近いのが出るまでガチャる必要はあるものの、うまく行けばこんな感じに。光源の位置やサイズを調整すれば、Googleフォトのポートレートライトのような機能となる。
いかがだろうか。出たばかりで筆者もまだ使いこなせていないが、機能だけはお分かりいただけたと思う。これまでできなかったことが出来るようになるのはとても楽しく、いろいろ試して欲しい。
今回締めのグラビア
本来であればIC-Lightを使ったグラビアにしたいのだが、ベースにしているModelがSD 1.5なので、フルHD相当の画素数にするには、後処理で更にimg2imgでのUpscaleが必要。これはちょっと気が乗らず、今回は最近お気に入りのModel、cyberrealisticXL_v10PlayVAEを普通に使用した。
注意点としては、同じページにv1.1(VAE)もあるが、個人的な好みはv1.0 Play(VAE)となる。扉の写真も同様。
Promptでjapanese womanとすれば、いい感じの日本人が現れる。日本人対応のリアル系Modelはマージタイプが多いのだが、これはTrained=学習したタイプ。前者とは一味違った質感が特徴的だ。お題は、桜は終わってしまったし、と言って紫陽花はまだ早い…何となくこんな感じにと特に無し。共通点はポニーテール(笑)。
最近生成AI業界の動きが活発になってきた。次はどんな新技術が出てくるのだろうか!?
Forge用extension登場!
入稿後、stable diffusion webui forge用extensionが出たので軽くご紹介。まずここからModelを2つダウンロードし、[Forgeホームフォルダ]/models/unetへ入れる(unetフォルダが無い時には作る)。
iclight_sd15_fc_unet_ldm.safetensors (FG用)
iclight_sd15_fbc_unet_ldm.safetensors (BG用)
次に以下のURLでExtensionsにインストール。再起動すると、左側の機能にIC-Lightの項目が増えている。
https://github.com/huchenlei/sd-forge-ic-light
txt2imgとimg2imgに対応しており、使い方が少し違う。この辺りは上記GitHubの説明を見て欲しい(txt2img/img2img共にCFG Scaleは低めの2、img2imgはDenoising strength 1)。
この画面キャプチャはtxt2imgで背景指定。いずれにしても気軽に楽しめる環境が一つ増えて嬉しい限り。