タグ: Ai Artwork

  • [ComfyMaster16] ComfyUIでImage-to-Image(i2i)を始めよう

    「写真の表情を変えたい」、「イラストをリアルな絵画風にしたい」…
    それ、i2iで実現できます!

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」、いよいよ今回から「Image-to-Image(i2i)編」に突入します。
    この記事では、ComfyUIを使用したi2iの基本から応用まで、実践的なステップを踏んで解説していきます。

    前回はこちら。初回はこちら

    1. Image-to-Image(i2i)とは

    Image-to-Image(i2i)とは、既存の画像を入力として使用し、新しい画像を生成する技術です。元の画像の構造や特徴を保持しながら、新しい要素を追加したり、スタイルを変更したりすることができます。

    ComfyUIでのi2iは、通常の画像生成と同じノードの多くを使用しますが、主な違いは入力に既存の画像を使用することです。この技術は、写真の編集や修正、アートスタイルの変換、キャラクターデザインの変更、風景画の変更や拡張など、幅広い用途に活用できます。

    今回は、インペインティングによる表情の変更と、アニメ調からリアル調へのスタイル変換を解説します。

    2. インペインティングによる表情の変更

    では、実際にComfyUIでi2iのワークフローを構築してみましょう。今回は、以下の画像の表情を変えたいと思います。

    画像
    • ワークフローが埋め込まれたPNG画像(webp形式ではなく)とGoogle Colabでの ComfyUI i2i編ノートブックは文末にて提供しています
    • メニューの「Load Default」をクリックし、標準のワークフローをロードした状態にします。モデルはstable-diffusion-xl-base-1.0を使用します。
    画像
    • 次に「Load Image」ノードを追加し、「choose file to upload」から対象の画像をアップロードします。
    画像
    • ウィジェット用で右クリックし、表示されたメニューから「Open in MaskEditor」をクリックします。
    画像
    • マスク範囲を指定するためのキャンバスが表示されます。
    画像
    • 今回は、表情を変更したいので、顔をブラシで塗りつぶします。
    • 「Thikness(ペンの太さ)」「Opacity(不透明度)」「Color(ペンの色)」は作業用のパラメータです。最終画像への影響はありません。
    • その後、「Save to node」をクリックします。
    • 以下のように顔がマスキングされます。
    画像
    • 次に、「VAE Encode (for inpainting)」ノードを追加します。
    • 「Load Image」の出力「IMAGE」「MASK」を、それぞれ「VAE Encode (for inpainting)」ノードの入力「pixels」「mask」に接続します。
    • 「Load Checkpoint」ノードの出力「VAE」「VAE Encode (for inpainting)」ノードの入力「vae」に接続します。
    画像
    • 「Empty Latent Image」ノードを削除します。
    画像
    • 「VAE Encode (for inpainting)」ノードの出力「LATENT」「KSampler」ノードの入力「latent_image」に接続します。
    画像
    • ポジティブプロンプトを「1girl, smile」に変更します。
    画像
    • これで「Queue Prompt」をクリックし、生成を実行します。以下が生成結果です。表情は変わりましたが、周囲との馴染みが若干悪いです。
    画像
    • 生成結果を調整する際は、「KSampler」ノードの「denoise」の値を調整してください。この値を 1.0から 0.9, 0.8,…と下げていくことで、変化の度合いを調整できます。
    画像

    denoise = 0.8

    画像

    denoise = 0.75

    画像

    ※このパラメーターを 0.8 以下にすると、破綻しやすくなるので段階を踏みながら設定していくことをおすすめします。

    細かな制御をしたい場合はVAE Encode (for Inpainting) のパラメータ「grow_mask_by」も操作するとよいでしょう。

    「grow_mask_by」を小さい値にすると、境界線が目立つようになります。

    画像
    画像

    逆に、「grow_mask_by」を大きな値にすると境界が曖昧になります。なお最大値は64です。大きくすると処理時間が長くなります。

    denoise = 0.9, grow_mask_by = 64, seed = 1

    画像

    バッチ生成してみましょう。
    denoise = 0.9, grow_mask_by = 64, seed = 5

    画像

    3. アニメ調からリアル調へのスタイル変換

    先ほどのワークフローを利用し、アニメ調からリアル調へのスタイル変換をします。ワークフローの変更点としては、以下になります。

    • 顔に掛けていたマスクを外します。今回はスタイルを変えるので、画像全体を対象とするためです。マスクの外し方は、「Open in MaskEditor」でマスク用のキャンバスを開き、左下の「Clear」をクリックし、マスクを削除後、「Save to node」をクリックします。
    画像
    • 「VAE Encode (for inpainting)」ノードを「VAE Encode」ノードに変更します。「VAE Encode」ノードは、「VAE Encode (for inpainting)」ノードからマスクの入力が削除されたバージョンです。
    画像
    • 使用するモデルをRealVisXL_V4.0.safetensorsに変更します。RealVisXLは、実写の描写が得意なモデルで、これを利用することでリアル調のスタイルに変換します。以下のリンクからRealVisXLをダウンロードし、「ComfyUI/models/checkpoints」フォルダに格納してください。

    ※ダウンロード済みの場合は選択するだけになります。

    https://huggingface.co/SG161222/RealVisXL_V4.0/blob/main/RealVisXL_V4.0.safetensors

    • ポジティブプロンプトを「1girl」にします。表情は変えないので、smileは削除します。
    画像
    • 「KSampler」ノードの「denoise」を0.55-0.70程度に設定します。ここは、生成結果を確認しながら調整してください。
    画像
    • ここまでの設定で画像生成してみましょう。以下が生成結果です。元画像からスタイルが変わっていることが確認できます。
    画像

    4. 倫理的考慮事項

    i2iの使用には倫理的な配慮が必要です:

    1. 著作権: 他者の作品を無断で使用しない。特にdenoiseを下げすぎると、依拠性や類似性を意図して侵害することになります。
    2. プライバシー: 個人を特定できる画像の使用に注意
    3. ミスインフォメーション: 偽の画像やディープフェイクなど、誤解を招く画像の作成を避ける
    4. 不適切なコンテンツ: 有害や攻撃的な画像の生成を控える

    画像生成AIの責任は生成者にあります。責任ある使用を心がけ、創造性と倫理のバランスを保つことが重要です。

    ▶画像生成AIクリエイター仕草(v.1.0)

    【参考】AUTOMATIC1111での i2i 関連情報はこちら

    https://note.com/aicu/n/n08ebe0637a41

    5. まとめ

    ComfyUIでのi2i技術は、あなたのクリエイティブな可能性を大きく広げるツールです。基本的なワークフローの構築から始まり、パラメータの微調整、高度なテクニックの適用まで、段階的に技術を磨いていくことで、より印象的で独創的な画像を生成できるようになります。

    最後に、AIを使用した創作活動には倫理的な配慮も必要です。著作権や個人情報の扱いには十分注意し、責任ある利用を心がけましょう。

    この記事を参考に、ComfyUIでのi2i探索を楽しんでください。新しい発見や素晴らしい創作の旅が、あなたを待っています!

    次回は、image-to-image編 第2回「Outpainting機能」を紹介します。
    乞うご期待!

    X(Twitter)@AICUai もフォローよろしくお願いいたします!

    画像生成AI「ComfyUI」マスターPlan

    画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

    • メンバー限定の会員証が発行されます
    • 活動期間に応じたバッジを表示
    • メンバー限定掲示板を閲覧できます
    • メンバー特典記事を閲覧できます
    • メンバー特典マガジンを閲覧できます
    • 動画資料やworkflowといった資料への優先アクセスも予定

    ゼロから学ぶ「ComfyUI」マガジン

    https://note.com/aicu/m/md2f2e57c0f3c

    マガジン単体の販売は1件あたり500円を予定しております。
    2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

    https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

    もちろん、初月は無料でお試しいただけます!
    毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
    退会率はとても低く、みなさまにご満足いただいております。
    ✨️オトクなメンバーシップについての詳細はこちら

    お楽しみ、メンバー向けボーナストラックには、今回のi2iサンプルワークフローが埋め込まれたPNGファイルと、i2i編で便利な Google Colab用 ComfyUI ノートブック(新作)、さらに今回の内容で使った workflowファイルをお贈りします。もりだくさんです!


    この記事の続きはこちらから https://note.com/aicu/n/nfc8eb955e57b

    Originally published at https://note.com on Sept 15, 2024.

  • [ComfyMaster14]ComfyUIでのTextToImageを極める!!(4)複数キャラを同時に制御する

    ComfyUIで「思い通りの画像を生成したい!けど思うようにいかない…」という方、TextToImage(t2i)を使いこなせていますか?
    Stable Diffusionの内部の仕組みを理解し、ComfyUIでのText to Imageテクニックを身につけて、思い通りの画像を生成できるようになりましょう!

    画像
    制御したいですよね

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」第14回目になります。

    前回「ComfyUIでのTextToImageを極める!! (3)Concatで複数CLIPをつなぐ」で
    は、Conditioning(Concat)ノードと複数CLIPを結合して「プロンプトの限界」を超え、その内部動作をソースコードから確認しました。
    今回は実験を通して確認していきたいと思います。

    長いプロンプトを使った実験

    前回、Concatをつかうことで、長いプロンプト中の「緑の森」「赤い城」といった背景/世界と建築物での「色分け」を紹介しました。

    CLIP1「a red castle on a hill」(1344×768, seed:13)
    CLIP2「A fantasy landscape, overlooking a vast green forest」

    画像

    さらに Conditioning(Concat)のToとFromはToがベースプロンプトで、Fromが追記であることを解説しました。でも短いプロンプトで入れ替えてみても絵に変化はなく、どちらがベースなのかは確認できなかったという結論になっていました。
    今回はキャラクターイラストを使って、ものすごく長いプロンプトで実験してみましょう。
    AICUで生成AIを使ってキャラクターデザインやイラストレーションを担当している犬沢某先生に相談して長めのプロンプトをいただきました。

    face focus, dog ears, 1boy, best quality, 16K, eating hair, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old,

    beautiful, bold black outline, pink, pastel colors, Light Pink, scowl, brown hair, golden eyes, simple line drawing, animal ears, solo, brown hair, overalls, cat ears, dark skin, short hair, dark-skinned female, simple background, choker, sweater, yellow shirt, long sleeves, pink choker, white background, closed mouth, extra ears, animal ear fluff

    これは2つのキャラクターを表現する2つのプロンプトを貼り付けたものです。途中に「髪を食べる(eating hair)」という謎の単語を含めて合計78ワードあります。

    画像

    Concatを使った実験:単純な結合

    まずは実験として、「Load Default」をつかって初期のワークフローにして、モデルをSDXL(sd_xl_base_1.0.safetensors)に変更し、, seed=13 fixed, 1344×768にして、CLIPひとつでそれぞれ生成してみます。

    「face focus, dog ears, 1boy, best quality, 16K, eating hair, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old, beautiful, bold black outline, pink, pastel colors, Light Pink, scowl, brown hair, golden eyes, simple line drawing, animal ears, solo, brown hair, overalls, cat ears, dark skin, short hair, dark-skinned female, simple background, choker, sweater, yellow shirt, long sleeves, pink choker, white background, closed mouth, extra ears, animal ear fluff」、ネガティブプロンプトは「text, watermark」(2トークン消費)で生成してみます。

    画像

    さすが!!かわいい!
    男性と女性が混ざった雰囲気ですね。長いプロンプトが結合できていることが確認できました。

    プロンプトの整理

    次にこの2人分のプロンプトを前半と後半に分けて生成してみます。

    画像

    前半「face focus, dog ears, 1boy, best quality, 16K, eating hair, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old」
    Negative 「text, watermark」, SDXL, 1344×768, seed=13

    (顔の焦点, 犬の耳, 1boy, 最高品質, 16K, 髪を食べる, 犬の鼻, 見る人を見ている, 短い髪, 痩せている, 大きな目, 浅黒い肌, 背が高い, 裸のオーバーオール, 20歳)

    画像

    顔に焦点を当てた半裸でオーバーオールを着た20歳の青年が生成されました。続いて後半です。

    後半「beautiful, bold black outline, pink, pastel colors, Light Pink, scowl, brown hair, golden eyes, simple line drawing, animal ears, solo, brown hair, overalls, cat ears, dark skin, short hair, dark-skinned female, simple background, choker, sweater, yellow shirt, long sleeves, pink choker, white background, closed mouth, extra ears, animal ear fluff」
    Negative 「text, watermark」, SDXL, 1344×768, seed=13

    (美しい, 太い黒の輪郭, ピンク, パステルカラー, ライトピンク, しかめっ面, 茶色の髪, 金色の目, シンプルな線画, 動物の耳, ソロ, 茶色の髪, オーバーオール, 猫耳, 浅黒い肌, 短い髪, 浅黒い肌の女性, シンプルな背景, チョーカー, セーター, 黄色のシャツ, 長袖, ピンクのチョーカー, 白背景, 閉じた口, 余分な耳, 動物の耳の綿毛)

    画像

    Concatを使った実験:整理と結合

    これらを Conditioning(Concat)を使って繋いでみます。

    画像

    CLIP1-Conditioning_to「face focus, dog ears, 1boy, best quality, 16K, eating hair, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old」
    CLIP2-Conditiong_from「beautiful, bold black outline, pink, pastel colors, Light Pink, scowl, brown hair, golden eyes, simple line drawing, animal ears, solo, brown hair, overalls, cat ears, dark skin, short hair, dark-skinned female, simple background, choker, sweater, yellow shirt, long sleeves, pink choker, white background, closed mouth, extra ears, animal ear fluff」
    Negative 「text, watermark」, SDXL, 1344×768, seed=13

    画像

    1boyとdark-skinned femaleが混ざっていますので、難しいと思います。中性的ではありますが、どちらかというと男性っぽいですね。
    まずはConcatで結合が機能していると考えられます。

    FromとToはどっちがベースなのか実験的に確認する

    さてFromとToはどっちがベースなのか実験的に確認していきましょう。
    さきほどの中性的なイラストの前後半を入れ替えてみます。

    画像

    CLIP1-Conditioning_to「beautiful, bold black outline, pink, pastel colors, Light Pink, scowl, brown hair, golden eyes, simple line drawing, animal ears, solo, brown hair, overalls, cat ears, dark skin, short hair, dark-skinned female, simple background, choker, sweater, yellow shirt, long sleeves, pink choker, white background, closed mouth, extra ears, animal ear fluff」
    CLIP2-Conditiong_from「face focus, dog ears, 1boy, best quality, 16K, eating hair, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old」
    Negative 「text, watermark」, SDXL, 1344×768, seed=13

    画像

    たしかに同じではなさそうです。toとfromは英語的な意味とは逆で、「toがベースでfromが追加条件」という説が実証できているようにも見えます。

    キャラクターの描き分け実験:空白CLIP、クオリティプロンプト

    実はこのプロンプト、2つのキャラクターが混ざっています。1boyとfemale、Dog earsと Cat ears、「髪の毛を食べる」と「口を閉じる」という破綻しやすそうなキーワードが混在していますので、これを整理してみます。

    混ざっているプロンプトをわかりやすく、キャラクター1,2と演技、画風やクオリティプロンプト、と分けて入れ替えてみます。

    キャラクター1「1girl, pink, pastel colors, Light Pink, scowl, golden eyes, animal ears, solo, overalls, cat ears, dark skin, short hair, dark-skinned female, choker, sweater, yellow shirt, long sleeves, pink choker, closed mouth, extra ears, animal ear fluff」(1girl、ピンク、パステルカラー、ライトピンク、しかめっ面、金色の目、動物の耳、ソロ、オーバーオール、猫耳、黒い肌、ショートヘア、肌の黒い女性、チョーカー、セーター、黄色のシャツ、長袖、ピンクのチョーカー、口を閉じた、余分な耳、動物の耳の綿毛)

    これをConditioning_toに設定して、Conditioning_fromを空白する例と、それを入れ替えた例、さらにクオリティプロンプトと背景設定を入れ替えた例を実験します。

    画像

    やはり空白のような極端に短いCLIPでは効果は確認できないようです。クオリティプロンプトを加えてみます。

    画像

    Conditioning_to「1girl, pink, pastel colors, Light Pink, scowl, golden eyes, animal ears, solo, overalls, cat ears, dark skin, short hair, dark-skinned female, choker, sweater, yellow shirt, long sleeves, pink choker, closed mouth, extra ears, animal ear fluff」
    Conditioning_From「beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K」

    画像
    画像

    Conditioning_to「beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K」
    Conditioning_from「1girl, pink, pastel colors, Light Pink, scowl, golden eyes, animal ears, solo, overalls, cat ears, dark skin, short hair, dark-skinned female, choker, sweater, yellow shirt, long sleeves, pink choker, closed mouth, extra ears, animal ear fluff」

    画像

    たしかに、ベースプロンプトがConditioning_toではありそうです。長いプロンプトでの実験は効果ありそうです。画風とキャラクターについての実験を続けます。

    続いてキャラクター2のプロンプトを設定します。もともと頂いたプロンプトからキャラクターとして一貫性がありそうな「1boy, dog ears, dog nose, short hair, skinny, big eyes, looking at viewer, dark skin, tall, naked overalls, 20-year-old, brown hair」(1boy、犬耳、犬鼻、短髪、痩せ型、大きな目、視聴者を見ている、黒い肌、背が高い、裸のオーバーオール、20歳、茶髪)として、先程のキャラクター1の代わりに入れてみます。

    画像

    Conditioning_to「1boy, dog ears, dog nose, short hair, skinny, big eyes, looking at viewer, dark skin, tall, naked overalls, 20-year-old, brown hair」
    Conditioning_from「beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K」

    画像

    入れ替えてみます。

    画像

    Conditioning_to「beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K」
    Conditioning_from「1boy, dog ears, dog nose, short hair, skinny, big eyes, looking at viewer, dark skin, tall, naked overalls, 20-year-old, brown hair」

    画像

    たしかに、ベースプロンプトがConditioning_toではありそうです。

    実験:多段Concat

    それではConcatを多段にするとどうなるでしょうか?
    接続としては以下のようになります。
    Concat1(To:画風 + From: キャラクター1boy)
    Concat2(To:Concat1の結果+Form:キャラクター2girl)

    画像
    画像

    多段Concatは問題なく接続されますし、結果も良好です。
    さて次は問題です。

    Concat1(To:画風 + From: キャラクター2girl)
    Concat2(To:Concat1の結果+Form:キャラクター1boy)

    このようなネットワークを組んだときに、boyが出るのかgirlが出るのか、皆さんはどう考えますか?

    画像
    画像

    結果は「入れ替えても変わらない」です。Conditioningの多段、特にFromを多段Concatで入れ替えても結果は変化ありませんでした。
    シードによって描かれる結果は変わりますが、Fromを入れ替えても変化はないのです。これは便利ですね。

    画像
    画像

    Concat1(To:キャラクター1boy+ From: 画風
    Concat2(To:Concat1の結果+Form: キャラクター2girl

    画像

    Concat1(To:キャラクター1boy+ From: キャラクター2girl
    Concat2(To:Concat1の結果+Form: 画風

    画像

    ComfyUIにおいて強調構文は平均ではなく、Fromは掛け算のように働くと覚えておくと良いのかもしれないですね。

    実験:Combineでの融合と入れ替え

    同じようにConditioning(Concat)ではなく、Conditioning(Combine)で融合と入れ替えをしてみます。こちらも全く変化なしです。

    画像
    画像
    画像
    画像
    画像
    画像

    複数の異なる特徴を持ったキャラクターを描くには?

    さて、Concatの理解は進みましたでしょうか?
    では複数の異なる特徴を持ったキャラクターを描くにはどうやったら良いのでしょうか?

    ポイントは、まず「大事なものはToに設定」そして「それぞれのCLIPにも設定」しましょう。
    複数のキャラクターの画風の統一を図りたい、同じ空間や世界に配置したいときはToに書きます。これをベースとして、このように2人の人物が出てくれば、あとは詳細を75トークン以内で表現するだけで2人以上のキャラクターの画像をそれぞれ生成することができるようになります。

    CLIPを2つでConcatだけで構成する場合にはこんな感じです。
    [CLIP1] best quality, beautiful, 1girl and 1boy,
    [CLIP2] best quality, beautiful, 1girl and 1boy,
    ここまでいれる、というテクニックが非常に重要です。
    こんな絵も作れるようになります。

    画像

    [CLIP1]
    best quality, beautiful, 1girl and 1boy, 1girl, female, 20-year-old, cat ears, pink choker, sweater, yellow shirt, long sleeves, white background, closed mouth, extra ears, animal ear fluff, solo, brown hair, overalls, pink, pastel colors, Light Pink, face focus,

    [CLIP2]
    best quality, beautiful, 1girl and 1boy, blue choker, eating hair, dog ears,16K, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, bold black outline, scowl, brown hair, golden eyes, simple line drawing, animal ears, simple background, dark skin, short hair, dark-skinned

    多段Concatを使った作例

    実際にはCLIP2つだけで複数キャラクターと世界や画風を設定するよりも、多段のConcatを使ったほうが楽かもしれません。
    一連の流れを出力例からおさらいします。

    画像

    ベースになる画風を1段目のConditiong_toに設定します。

    Conditiong_to「1boy and 1girl, beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K」

    画像

    二人がどんな演技をしているか、共通で維持したいものはすべてのCLIPに入れておけば強調されます。

    画像

    conditioning_fromとconditioning_toに共通に「1girl and 1boy」を入れて、それぞれの特徴をCLIP1とCLIP2で詳細に描写していくことができます。

    画像

    このあたりで一度、シードをfixedからIncrementに変更して、Queue Prompt Extra Options▶Batch countを20として、20枚、シードを増やしながら一気に生成してみます。

    画像
    画像
    美しい結果はメンバーシップエリアに置いておきます…!

    肌の褐色をプロンプトで強調していくか、いろんな方向性があり得ると思いますが、ここまで制御性が高くなっていると、好きなテイストを選ぶことも難しくないと思います。

    この段階では画風、肌の色やレイアウトのほうが表情や指といった細かいところよりも重要です。画面比率を変えると大幅に変わってしまいますので今回は1344×760で固定しておいたほうが良いでしょう。
    SDXLの場合、テキスト以外にも画像解像度等の条件が加えられる場合はconditioning_toの方を使います。

    表情や指がおかしいところはImageToImageで修正できますが(次回以降)、今回はネガティブプロンプトやembeddingで仕上げていきます。

    プロンプトだけのSDXL、TextToImageで完成させた作品がこちらです。
    便宜上、CLIP0、CLIP1、CLIP2と呼んでいますが、いままでの2段構成のConditioning(Concat)によって実装しています。

    画像

    CLIP0(conditioning_to) : 1boy and 1girl looking each other, beautiful, bold black outline, simple line drawing, simple background, white background, best quality, 16K

    CLIP1(Conditiong_from) : 1boy and 1girl looking each other,1boy face focus, dog ears, 1boy, best quality, 16K,, dog nose, looking at looking at viewer, short hair, skinny, big eyes, dark skin, tall, naked overalls, 20-year-old

    CLIP2(Conditioning_from) : 1boy and 1girl looking each other, 1girl , pink, pastel colors, Light Pink, scowl, golden eyes, animal ears, solo, overalls, cat ears, dark skin, short hair, dark-skinned female, choker, sweater, yellow shirt, long sleeves, pink choker, closed mouth, extra ears, animal ear fluff

    Negative: text, watermark, embeddings:negativeXL_D

    まとめ:conditioning

    これまで4回にわたってComfyUIでSD1.5およびSDXLを使ってプロンプトの基本的な方法から、応用的なテクニックまでを紹介してきました。今回はイラストレーションで「複数のキャラクターを同時制御する」という実験を行いましたが、プロンプトだけでなく、CLIPの内部やConditioningを使ってComfyUIならではの絵作りを探求していくベースになったようであれば幸いです。実はconditioningにはたくさんあり、今回紹介したCombine、Concatの他にはAverage、 Set Areaなど複数存在します。例えばAverageは結合ではなく線形補間します。

    画像

    次回は、image-to-imageの方法を紹介します。乞うご期待!

    X(Twitter)@AICUai もフォローよろしくお願いいたします!

    画像生成AI「ComfyUI」マスターPlan

    画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

    • メンバー限定の会員証が発行されます
    • 活動期間に応じたバッジを表示
    • メンバー限定掲示板を閲覧できます
    • メンバー特典記事を閲覧できます
    • メンバー特典マガジンを閲覧できます
    • 動画資料やworkflowといった資料への優先アクセスも予定

    ゼロから学ぶ「ComfyUI」マガジン

    https://note.com/aicu/m/md2f2e57c0f3c

    マガジン単体の販売は1件あたり500円を予定しております。
    2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

    https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

    もちろん、初月は無料でお試しいただけます!
    毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
    退会率はとても低く、みなさまにご満足いただいております。
    ✨️オトクなメンバーシップについての詳細はこちら

    本編で2人以上のキャラクターをそれぞれ描くことができるようになりましたね。ここではシードを変えた問のさまざまな中間生成画像を紹介します。


    この記事の続きはこちらから https://note.com/aicu/n/nacf66b92d2d5

    Originally published at https://note.com on Sept 4, 2024.

  • [ComfyMaster13]ComfyUIでのTextToImageを極める!! (3)Concatで複数CLIPをつなぐ

    ComfyUIで「思い通りの画像を生成したい!けど思うようにいかない…」という方、TextToImage(t2i)を使いこなせていますか?
    Stable Diffusionの内部の仕組みを理解し、ComfyUIでのText to Imageテクニックを身につけて、思い通りの画像を生成できるようになりましょう!

    こんにちわ、AICU media編集部です。
    ComfyUI マスターガイド」第13回目になります。

    前回は「ComfyUIでのTextToImageを極める!!(2)Combineでプロンプト融合」と題して複数プロンプトを組み合わせての生成について解説いたしました。
    今回は、長文プロンプトを分割して意図した絵を生成する方法を解説いたします。

    前回「ComfyUIでのTextToImageを極める!!(2)Combineでのプロンプト融合」はこちら

    前回は複数CLIPの活用として「Combine」を学びました。ComfyUIでは、複数のCLIPTextEncodeノードとConditioning(Combine)ノードを組み合わせることで、複数のプロンプトを同時に使用できます。例えば「龍」と「虎」を別々のCLIPTextEncodeノードに指定すると、「龍」と「虎」を組み合わせた画像を生成することができるようになりました。

    でも今回のカバーアートのような「複数の人物を一つの画像で描くためには?」…?今回はConcat機能と複数CLIPを使って「プロンプトの限界」を超えていきます。

      CLIPの内部と「Concat」

      まず、自然言語処理やStable Diffusionにおける「トークン」とは、プロンプトに入力する単語や文字列といった「テキストデータを処理する際に使用される基本的な単位」を指します。1単語を1トークンとしてカウントし、区切りに使われるカンマ(,)も1トークンとみなされます。
      モデルにもよりますが、SDXLの場合は75トークン(≒単語数)が1つの処理単位(バッチ)であり、75トークンを超える長いプロンプトの場合は、プロンプトを複数のバッチに分割して処理する方法が推奨されます。

      長いプロンプトをChatGPTで作ってみる

      例えば、 “A beautiful garden with red roses and white lilies blooming under a clear blue sky” というプロンプトがあるとします。

      画像
      画像

      例えばChatGPTを使って「もっと詳細を!」と作文してもらいました。
      プロンプトとしてはこんな感じです。

      extract this stable diffusion prompt longer to 75 tokens.
      “A beautiful garden with red roses and white lilies blooming under a clear blue sky”
      make more detail for each words.

      (このStable Diffusionのプロンプトを75トークンに長く引き延ばします。
      「澄み切った青空の下、赤いバラと白いユリが咲き誇る美しい庭」
      それぞれの単語をより詳しく説明)

      A stunning, vibrant garden filled with deep red roses, their petals velvety and rich, alongside pristine white lilies, their petals delicate and gracefully open, all flourishing under a vast, clear blue sky with soft clouds gently drifting in the distance.

      (深紅のバラが咲き誇る見事な庭園。その花びらはビロードのように滑らかで、濃厚な色合いです。その傍らには、花びらが繊細で優雅に開く純白のユリが咲いています。すべては広大な澄み切った青空の下で、遠くには柔らかな雲が静かに漂いながら、咲き誇っています)

      画像

      更に拡大していきます。「more」といえば、ChatGPTがどんどん作ってくれます。

      “A breathtaking, lush garden teeming with radiant, deep crimson roses, each petal exquisitely velvety and glowing under the sunlight. The roses stand tall and proud, surrounded by elegant, snow-white lilies with intricate, soft petals that curve gracefully outward. The lilies’ golden stamens catch the light, contrasting with their pure white petals. The garden is bathed in warm sunlight, the vibrant greenery of the foliage complementing the vivid flowers. Above, the expansive sky is a brilliant, azure blue, with delicate wisps of clouds painted across the horizon, creating a serene and peaceful atmosphere, where every bloom flourishes in perfect harmony with nature.”

      「息をのむほど見事な緑豊かな庭には、鮮やかな深紅のバラが咲き乱れ、その花びらは、日光に照らされて、どれもこれも見事にベルベットのように艶やかです。バラは堂々と誇らしげに咲き、その周りには、複雑に入り組んだ柔らかな花びらが優雅に外側へと反り返る、エレガントな純白のユリが咲いています。ユリの黄金色の雄しべは光を浴びて輝き、純白の花びらとコントラストを描いています。庭は温かい日差しに包まれ、鮮やかな花を引き立てる葉の生き生きとした緑色が映えています。頭上には広々とした空が鮮やかな紺碧色に輝き、水平線には繊細な雲の塊が描かれ、静かで穏やかな雰囲気を醸し出しています。そこでは、あらゆる花が自然と完璧な調和を保ちながら咲き誇っています。」

      画像

      ここまで来ると美しさも素晴らしいのですが、ワードカウントすると101ワードありました。

      画像

      https://wordcounter.io/#google_vignette

      Tokenizerによるトークンの理解

      トークン数についても数えていきましょう。CLIPは実はOpenAIによって開発された技術です。2021年1月5日にOpenAIによって公開された「言語と画像のマルチモーダルモデル」で、インターネットから集めた画像とテキストの40億ペアからなるデータになっています(最新のStable DiffusionではOpenCLIPなど違うCLIPが使われています)。

      トークン化をカウントできるツール「Tokenizer」がOpenAIによって公開されています。

      https://platform.openai.com/tokenizer

      画像

      ワード数は101ワードでしたが、トークン数は137です。

      画像

      [Token IDs]ボタンを押すと、トークンのIDを見ることができます。

      画像

      Claudeを使ったComfyUIソースコードの理解

      トークン数が75トークン超の場合、一般的に言われている仕様は以下のようなものです。

      • 現在のバッチに入りきるだけの単語を追加します。
      • 残りの単語は新しいバッチの先頭に追加します。

      「誰かが言っている」という理解ではなく、実際のソースコードを分析してみる習慣をつけましょう。
      ComfyUIのsd1_clip.pyの処理をClaudeに解説してもらいました。

      https://github.com/comfyanonymous/ComfyUI/blob/8ea165dd1ef877f58f3710f31ce43f27e0f739ab/comfy/sd1_clip.py


      このコードではトークンの最小値と最大値が設定されています。SD1Tokenizer クラスを詳しく見てみましょう

      SD1Tokenizer Token Details
      Token RangeMinimum token value: 0 (pad token when `pad_with_end` is False)
      Maximum token value: Size of the vocabulary – 1
      Special TokensStart token: Typically 49406
      End token: Typically 49407
      Maximum Length`max_length`: 77 (default, can be set in the constructor)
      `max_tokens_per_section`: 75 (max_length – 2)
      Note: The actual vocabulary size and special token values may vary depending on the specific CLIP tokenizer used.

      SD1Tokenizer クラスでは、トークンの範囲が以下のように設定されています:

      1. 最小トークン値:
        • 基本的に 0 です。これは `pad_with_end` が False の場合のパディングトークンとして使用されます。
      2. 最大トークン値:
        • 明示的には設定されていませんが、使用される CLIPTokenizer の語彙サイズによって決まります。
        • 通常、CLIP モデルの語彙サイズは 49408 ですので、最大トークン値は 49407 になります。
      3. 特殊トークン:
        • 開始トークン(start_token): 通常 49406
        • 終了トークン(end_token): 通常 49407
      4. 最大長:
        • `max_length`: デフォルトで 77 に設定されています(コンストラクタで変更可能)
        • `max_tokens_per_section`: `max_length – 2` で、通常は 75 になります

      これらの値は、使用される具体的な CLIP トークナイザーによって若干異なる可能性があります。また、このコードでは埋め込み(embeddings)も扱えるようになっており、これらは通常のトークン範囲外の値を持つ可能性があります。トークナイザーの実装上、0 から語彙サイズ-1 までの整数値がトークンとして使用されます。特殊トークン(開始、終了、パディング)も含めて、この範囲内に収まるように設計されています。全てのトークンをバッチに分けたら、最後のバッチも空欄を追加して75トークンにします。


      Claudeによるソースコード分析は便利で丁寧です。

      他にもこんな質問もできます。

      この処理はどこで扱われますか?
      1.1 倍の重みになる (a b c d e) と、
      数値指定有りでその倍数になる (a b c d e:1.1)

      質問ありがとうございます。その特定の処理は、`token_weights` 関数内で行われています。この関数を詳しく見てみましょう。

      def token_weights(string, current_weight):
          a = parse_parentheses(string)
          out = []
          for x in a:
              weight = current_weight
              if len(x) >= 2 and x[-1] == ')' and x[0] == '(':
                  x = x[1:-1]
                  xx = x.rfind(":")
                  weight *= 1.1
                  if xx > 0:
                      try:
                          weight = float(x[xx+1:])
                          x = x[:xx]
                      except:
                          pass
                  out += token_weights(x, weight)
              else:
                  out += [(x, current_weight)]
          return out
      

      この `token_weights` 関数は、括弧で囲まれたテキストとその重みを処理します。具体的には(略)

      この関数により、(a b c d e)`は1.1倍の重みを持ち、(a b c d e:1.1) は指定された1.1倍の重みを持つようになります。また、これらの構造がネストされている場合も適切に処理されます。

      この処理の結果は、その後 `tokenize_with_weights` メソッド内で使用され、各トークンに適切な重みが割り当てられます。


      AUTOMATIC1111にはプロンプトの文法やトークン数のチェックを行う補助機能がありますが、ComfyUI にはありません。 これはComfyUI の自由度との引き換えになります。しかもAUTOMATIC1111WebUIとは文法は同じでも中身は全然違うようです。AUTOMATIC1111内部ではCLIPの隠れ層出力に重み付けをしたあと、元の平均で正規化します。つまりあるトークンを強くしようとすると、他のトークンは弱くなるようです。ComfyUIでは単に定数倍するのではなく、空文によるCLIP出力を基準に重み付けします。正規化はしないので、重みをつけたトークンのみが影響を受けます。

      このような「CLIPでプロンプトをどのように扱っているか?」はソースコードを直接読んだり分析したりする以外は、モデルとの対話を通して推測することができます。

      AUTOMATIC1111WebUIにおいては「BREAK構文」や、オープンソースで数多くの拡張機能やテクニックが開発されてきました。例えば日本人が開発したExtentions「Regional Prompter」を使うことで複数の特徴を持つ人物を同時にプロンプトで表現できるようになります。

      https://note.com/aicu/n/n832941df99c5

      これから解説する「Concat Conditioning」はComfyUIにおいてAUTOMATIC1111の「BREAK構文」を実装するものです。複数のCLIP出力を結合します。

      分割位置の明示的な指定

      • プロンプトは最初にトークン化されます。
      • トークン化されたプロンプトは、最大長(デフォルト77トークン)のバッチに分割されます。
      • 各バッチは開始トークン(START_TOKEN)、プロンプトのトークン(最大75トークン)、終了トークン(END_TOKEN)、必要に応じてパディングトークンで構成されます。
      • 8トークン以上の「長い単語」は、複数のバッチにまたがって分割される可能性があります。
      • バッチ間で直接的な文脈の共有はありません。
      • 各バッチは独立して処理されます。

      モデルは各バッチを個別に処理するため、バッチ間の長距離の依存関係は失われる可能性があります。
      しかし、全てのバッチが同じプロンプトの一部であるため、全体的なテーマや文脈は維持される傾向があります。

      つまりComfyUIにおいて「長いプロンプトをそのまま1つのCLIPに入力した場合、意図しない位置で分割され、その文脈が無視される可能性がある」ということは知っていてください。しかしこの特性を利用することで、プロンプトレベルで「描き分け」や「色分け」を明示的に行うことができます。

      Conditioning(Concat)ノードの実装

      Conditioning(Concat)ノードを使って「色分け」を実装してみましょう。
      Concatとは「結合」、という意味です。

      標準ワークフローを改造し、以下のプロンプトを意図した位置で分割し、「色分け」を明示的に行った画像を生成してみます。使用するプロンプトは以下になります。

      A fantasy landscape, a red castle on a hill, overlooking a vast green forest,

      「広大な緑の森を見下ろす丘の上の赤い城」という「緑の森」と「赤い城」が混在するプロンプトです。

      普通に生成するとこのような画像になります。色が混ざってしまう事が多くなり、制御性が低く、運任せになってしまいます。

      画像
      画像

      これを「赤い城」と「緑の森」をそれぞれ複数のCLIPで表現できるようになれば制御性がよさそうです。

      • メニューの「Load Default」をクリックし、標準のワークフローをロードした状態にします。前回の続きで改造しても構いません。
      画像
      • ポジティブプロンプト用のCLIPTextEncodeノードを1つ追加します。
      画像
      • 1つ目のCLIPTextEncodeノードのプロンプトに「a red castle on a hill」と入力します。これをCLIP1と呼ぶことにします。
      • 2つ目のCLIPTextEncodeノードのプロンプトに「A fantasy landscape, overlooking a vast green forest」と入力します。これをCLIP2と呼ぶことにします。
      画像
      • Conditioning(Concat)ノードを作成し、2つのCLIPTextEncodeノードの出力を接続します。
      画像
      • Conditioning (Concat)ノードの入力「conditioning_to」と「conditioning_from」をそれぞれ2つのCLIPを接続します。
      • どちらのCLIPを to と from につなぐのかは、この段階ではどちらでも構いません(後ほど解説します)。
      • Conditioning (Concat)ノードの出力をKSamplerpositive入力に接続します。
      画像
      • 以下が最終的なワークフローになります。
      画像

      これでCLIP1が「丘の上の赤い城」、CLIP2が「広大な緑の森を見下ろす幻想的な風景」となり、それぞれがConcatを通して条件づけされることになります。どんな画像が生成されるのでしょうか。

      以下の画像は、分割前と分割後の比較画像になります。分割前は、森は緑ですが、丘が赤くなっています。分割後は、城だけが赤くなっていることが確認できます。

      画像

      Default workflowにて「a red castle on a hill,
      A fantasy landscape, overlooking a vast green forest」(1344×768, seed:13)

      画像

      CLIP1「a red castle on a hill」(1344×768, seed:13)
      CLIP2「A fantasy landscape, overlooking a vast green forest」

      画像

      Conditioning_toとConditioning_fromの意味

      今回の実装例ではConditioning_toとConditioning_fromは「どちらのCLIPに接続しても構いません」としましたが、実際のプロンプトで絵作りをする時にはどのような意味を持っているのでしょうか。まずは入れ替えてみます。

      画像

      Conditioning_to: a red castle on a hill
      Conditioning_from: A fantasy landscape, overlooking a vast green forest
      512×512, seed:12

      画像

      Conditioning_to: A fantasy landscape, overlooking a vast green forest
      Conditioning_from: a red castle on a hill 
      512×512, seed:12

      画像
      画像

      絵的にはほとんど変化がありません。しかしこれはプロンプトが短すぎるせいかもしれません。

      SDXLを使った実験は次回に行うとして、今回は、このノードのソースコードを使って、Claudeに内部の定義を聞いてみましょう。

      https://github.com/comfyanonymous/ComfyUI/blob/febea8c1015888ea81e9efc92236bdb4ceabc623/nodes.py#L105

      Claudeによる解説


      ConditioningConcatクラスの concat メソッドを詳しく見てみると、conditioning_to と conditioning_from には実際に違いがあります。以下にその違いを説明します。

      1. 役割の違い:
        • conditioning_to は主要な条件付けであり、修正される対象です。
        • conditioning_from は付加的な条件付けで、conditioning_to に追加されます。
      2. 処理方法:
        • メソッドは conditioning_to の各要素に対してループを行います。
        • conditioning_from は最初の要素のみが使用されます。
      3. 連結(Concatenation)の方法:
        • conditioning_to の各要素の最初のテンソルが、conditioning_from の最初の要素の最初のテンソルと連結されます。
      4. メタデータの扱い:
        • conditioning_to の各項目のメタデータ(2番目の要素)は保持されます。
        • conditioning_from のメタデータは使用されません。
      5. 出力構造:
        • 出力は conditioning_to の構造を維持しつつ、各要素が連結によって修正されます。

      つまり、英語の「to」と「from」の直感的な意味とは逆で、正しい覚え方は

      「conditioning_to」がベースとなるプロンプトまたは主要な条件付け
      「conditioning_from」が追加または補足的な条件付け

      ということになりそうです(何度か確認しました)。
      以上、Conditioning(Concat)ノードと複数CLIPを結合して「プロンプトの限界」を超え、その内部動作をソースコードから確認しました。
      次回は実験を通して確認していきたいと思います。

      具体的にはこんな絵を作ってみます。

      画像

      まとめ:変化しつつある画像生成AIの常識

      これまで3回にわたってComfyUIでSDXLのプロンプトを記述する基本的な方法から、応用的なテクニックまでを紹介してきました。画像生成AIが登場したばかりの頃のTextToImage、特にプロンプトは、かつては試行錯誤を通してテキストや構造を工夫することが中心でしたが、AUTOMATIC1111とComfyUIのCLIPの扱いが大きく変わっていることに気づかれたと思います。
      AICUでは従来のような仮説や構造、文法や有効なワードを探求するだけでなく、ChatGPTやClaudeなどのLLMを使ってプロンプトそのものをメタに扱ったり、ソースコードを分析して正しい解釈を得たり、実験をして確かな情報を獲得していく方法が重要と考えて記事中で提案しています。次回はさらに実用的に、今回の内容を使って「複数のキャラクターを同時制御する」という実験を行います。様々なプロンプトを試してみて、自分にとって最適な表現方法を見つけてみましょう。

      ComfyUIは、非常に強力な画像生成ツールです。プロンプトの力を最大限に活用することで、あなたの創造性を形にすることができます。ぜひ、色々なプロンプトを試して、素晴らしい画像を生み出してください!

      X(Twitter)@AICUai もフォローよろしくお願いいたします!

      画像生成AI「ComfyUI」マスターPlan

      画像生成AI「Stable Diffusion」特に「ComfyUI」を中心としたプロ向け映像制作・次世代の画像生成を学びたい方に向けたプランです。最新・実用的な記事を優先して、ゼロから学ぶ「ComfyUI」マガジンからまとめて購読できます。 メンバーシップ掲示板を使った質問も歓迎です。

      • メンバー限定の会員証が発行されます
      • 活動期間に応じたバッジを表示
      • メンバー限定掲示板を閲覧できます
      • メンバー特典記事を閲覧できます
      • メンバー特典マガジンを閲覧できます
      • 動画資料やworkflowといった資料への優先アクセスも予定

      ゼロから学ぶ「ComfyUI」マガジン

      https://note.com/aicu/m/md2f2e57c0f3c

      マガジン単体の販売は1件あたり500円を予定しております。
      2件以上読むのであればメンバーシップ参加のほうがお得です!というのもメンバーシップ参加者にはもれなく「AICU Creator Union」へのDiscordリンクをお伝えし、メンバーオンリー掲示板の利用が可能になります。

      https://note.com/aicu/membership/boards/61ab0aa9374e/posts/db2f06cd3487?from=self

      もちろん、初月は無料でお試しいただけます!
      毎日新鮮で確かな情報が配信されるAICUメンバーシップ。
      退会率はとても低く、みなさまにご満足いただいております。
      ✨️オトクなメンバーシップについての詳細はこちら


      この記事の続きはこちらから https://note.com/aicu/n/n301bb146abdd

      Originally published at https://note.com on Sept 4, 2024.

    1. 「AICUマガジンVol.3」Kindle Unlimitedにて無料配信開始!!

      こんにちわ。AICU media編集部です。
      「つくる人をつくる・わかるAIをとどける」高校生でも楽しめる未来のクリエイターのためのクリエイティブAI情報誌「AICUマガジン Vol.3」は2024年6-7月合併号!「いまこそしりたい画像生成AIの社会と倫理」と題して、気になる画像生成AIの法律と倫理についてまとめてお届けします。

      生成AIを使ってみたいけど法律的に大丈夫なの? こんな使い方をしてみたいんだけど炎上しないかな…? そんなお悩みにAICUが具体的な練習問題とともにわかりやすくお届けします! 

      「AICUマガジンVol.3」の見どころ🤩

      ⚖️ 特集「いまこそ知りたい画像生成AIの社会と倫理」⚖️

      AIイラストの著作権問題から、炎上しないための使い方まで徹底解説!🔥 具体的な練習問題で楽しく学べちゃう!💯

      画像

      🚀 特集「AICU media 上半期人気記事一挙紹介」🚀

      2024年上半期にバズったAIツール、サービスを見逃し厳禁!👀

      画像

      🎨 サクッと先取り!クリエイティブAIツール 🎨

      プロンプトからサイトが作れる!?話題の「CREATE.xyz」を使ってみた!未来のWebデザインを体験!✨

      画像

      「Stability AI Fan!」

      Stable Diffusionユーザー必見!ディープな情報満載!😎

      画像
      画像
      画像

      📰 イベントレポート 📰

      「技術書典16」「JETRO AiSalon Tokyo June 2024」「Google for Japan」…注目のイベントをレポート!

      画像
      画像
      画像
      画像

      💡「ようこそ!アイキュー部」💡

      大人気連載漫画!10分でAIの基礎知識をGET!🧠
      なんと豪華51ページ相当の学習コンテンツを一挙掲載!!

      画像

      今回は「ようこそアイキュー部」の漫画版が始まる前の前日譚から…

      • Google Slidesでバリエーション広告を大量生成
      • バッチファイルでバリエーション広告を生成(1)使ってみよう編
      • バッチファイルでバリエーション広告を生成(2)解説編
      • 漫画版 第1話(再掲)
      画像
      画像

      ✍️ 編集コラム ✍️

      「画像生成AIは飽きる、飽きられる、だからこそプロの仕事はこうなる。」プロの視点から見た、画像生成AIとの向き合い方とは…?🤔

      画像

      🌸 はるしね~しょん(編集部だより) 🌸

      編集部の裏側をチラ見せ!AICUマガジンの制作秘話も…?🤫

      🎁 特別コンテンツ 🎁

      2024年12月末まで視聴可能【生成AIの社会と倫理】「画像生成AI Stable Diffusion スタートガイド」 #SD黄色本 公式ワークショップ

      画像

      話題の #SD黄色本 ワークショップが期間限定で視聴可能! お見逃しなく!

      美麗な表紙は
      インフルエンサーな「デルタもん」

      画像

      イラストレーター/キャラクターデザイナーの犬沢某さんが製作してくださいました

      ▼表紙を担当させていただきました。犬沢某(いぬさわばう)です。
      今回のテーマは「画像生成AI時代の社会と倫理」ということで、
      生成AI時代の社会に支えられるキャラクターの代表でもある「デルタもん」を描かせていただきました。
      近い将来、デルタもんのコスプレをしながら、ファッションモデルのようなインフルエンサーさんが、街中で自撮りをしている姿を見る日が来るかもしれませんね。
      テクニック的にはSD黄色本の内容で、AUTOMATIC1111を使って生成したものです。
      ふだんはオーバーオールを着た犬の少年ばかり描いています。
      犬沢某 (いぬさわばう/BowInusawa)

      🐶ばう先生、いつもありがとうございます🐾

      そして…気になる夏のアートコンテスト結果は…!?ファイナリストの皆さんを紹介

      詳しくは「AICUマガジン Vol.3」本誌🎉 読者のひろば🎉誌上にて!
      力作が集結!栄冠は誰の手に…?🏆


      レベルアップしたクリエイティブな夏休みを過ごそ~!🌻
      Kindle Unlimitedで無料です!

      https://j.aicu.ai/MagV3

      バックナンバーはこちら https://ja.aicu.ai/mag/

      https://note.com/aicu/n/n61476a3fc852

      https://prtimes.jp/main/html/rd/p/000000017.000133647.html

      #AICUマガジン #画像生成AI #著作権 #AIイラスト #生成AIの社会と倫理

      Originally published at https://note.com on Aug 6, 2024.

    2. FLUX.1[dev]の実力は?比較しながらGoogle Colabで動かしてみた。

      2024年8月1日、「世界最強」といわれるベンチャーキャピタル(VC)「アンドリーセン・ホロウィッツ」(a16z)が主導で投資する、Black Forest Labs(以下BFL)が、画像生成AIの新モデル「FLUX.1」発表しました。

      Stable Diffusionの元開発者たちを取り込み開発した画像生成モデルは「12B」つまり「120億パラメータ」という大規模なパラメータサイズで、『Midjourney v6.0、DALL·E 3、Stable Diffusion 3などを上回る性能を達成した』と伝えています。驚異的な画像生成能力を持つだけでなく、『これまでのAIが苦手としてきた人間の手の描写や複雑な場面の再現にも秀でている』と伝えています。さらに、商用からオープンソースまで、多様なニーズに応える3つのバージョンを用意し、ユーザーの需要を満たそうとしています。

      本記事では、FLUX.1の実力をStability AIの「Stable Diffusion 3」と比較しながら調査してみます。そして実際にComfyUIとFLUX.1  [dev]を用いて画像生成を行うまでの手順と、Google Colabで動作するノートブックをメンバーシップ向けに共有します。

      1. FLUX.1について

      画像

      FLUX.1は、Black Forest Labsが開発した最新の画像生成AI技術です。VQGANLatent DiffusionStable Diffusionモデル ( Stable Diffusion XLStable Video DiffusionRectified Flow Transformers )、超高速のリアルタイム画像合成のためのAdversarial Diffusion Distillationの研究開発に関わった人々が参加しています。基本的な信念としては、広くアクセス可能なモデルは、研究コミュニティと学術界内での革新とコラボレーションを促進するだけでなく、信頼と幅広い採用に不可欠な透明性を高めるということです。

      FLUX.1の主な特徴

      1.最先端の性能: 既存の主要なAIモデル(Midjourney v6.0、DALL·E 3、Stable Diffusion 3など)を上回る性能を達成したと伝えています。
      テキストから画像を生成する能力において新たな基準「ELO score」と、画像の詳細さ、プロンプトへの忠実性、スタイルの多様性、シーンの複雑さなどの面で優れた性能を示していると主張しています。

      画像

      たしかに、BFLのモデルはELO scoreにおいて優位性があるようです。
      順位としては FLUX.1 [pro] > FLUX1. [dev] > SD3-Ultra > Ideogram > FLUX.1 [schnell] > Midjourney-V6.0 > Dall-E 3 HD > SD3-Medium > SD3-Turboといった序列が付けられています。このバーグラフが正しければ、FLUX.1 [dev]はSD3-Ultra並であることがわかります。

      画像

      2.多様なバリエーション: FLUX.1 [pro]、FLUX.1 [dev]、FLUX.1 [schnell]の3バージョンを提供します。それぞれ用途やライセンスモデルが異なります。

      画像

      3.革新的な技術: マルチモーダルおよび並列拡散トランスフォーマーブロックのハイブリッドアーキテクチャを採用し、12Bパラメータにスケールアップ。

      4.柔軟性: 0.1から2.0メガピクセルの範囲で多様なアスペクト比と解像度をサポート。

      画像

      5.アクセシビリティ: APIを通じたアクセスと一部バージョンのオープンソース提供。

      FLUX.1の3つのバリエーション

      Black Forest Labsは、異なるニーズに対応するため、FLUX.1を3つのバリエーションで提供しています。

      1. FLUX.1 [pro]:APIのみのフラッグシップ

      FLUX.1 [pro]は、FLUX.1の最高性能を誇るバージョンです。

      • 最先端のパフォーマンスを持つ画像生成
      • トップクラスのプロンプト追従能力
      • 卓越した視覚的品質と画像の詳細さ
      • 多様な出力

      現在、Black Forest LabsはFLUX.1 [pro]の推論コンピューティング能力を徐々に拡大しているそうです。APIを通じてアクセスできるほか、ReplicateやFal.aiなどのパートナー企業を通じても利用可能です。さらに、企業向けのカスタマイズソリューションも提供するとのことです。

      https://fal.ai/models/fal-ai/flux/dev

      https://replicate.com/black-forest-labs/flux-dev

      2. FLUX.1 [dev]:オープンウェイトモデル

      FLUX.1 [dev]は、非商用アプリケーション向けのオープンウェイトモデルです。

      • FLUX.1 [pro]から直接蒸留された効率的なモデル
      • 同等のサイズの標準モデルより高効率
      • 高品質とプロンプト追従能力を維持

      FLUX.1 [dev]の重みはHuggingFaceで公開されており、ReplicateやFal.aiで直接試すこともできます。ガイダンス蒸留を使用したトレーニングを行い、生成された出力は、ライセンスに記載されているように、個人的、科学的、商業的な目的で使用することができます。

      3. FLUX.1 [schnell]:ローカル利用向け

      FLUX.1 [schnell]は、ローカル開発と個人利用に特化した最速モデルです。

      • Apache2.0ライセンスで公開
      • Hugging Faceでweightsを入手可能
      • GitHubで推論コードを公開
      • ReplicateとFal.aiでも利用可能

      各モデルの公開が非常に戦略的に進められていることが印象的です。

      2. ComfyUIでFLUX.1[dev]を使用する

      ComfyUIの作者であるcomfyanonymous氏が早速workflowを公開しています。以下のリンクに詳細がまとめられています。AICU AIDX Labではこのリンクの内容に従い、使用準備を進めていきます。
      文末にメンバーシップ向けにGoogle Colabで動作するノートブックを公開します(AICUのGitHub上でも無償公開しています)。

      https://github.com/comfyanonymous/ComfyUI_examples/tree/master/flux

      weightsのダウンロード

      以下のリンクよりFLUX.1[dev]のweightsをダウンロードします。flux1-dev.sft (23GB) をダウンロードし、ComfyUI/models/unetに格納してください。

      https://huggingface.co/black-forest-labs/FLUX.1-dev

      CLIPのダウンロード

      以下のリンクよりCLIPモデルをダウンロードします。clip_l.safetensorst5xxl_fp16.safetensors(または省メモリ版のt5xxl_fp8_e4m3fn.safetensors)をダウンロードし、ComfyUI/models/clipに格納してください。

      https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main

      VAEのダウンロード

      以下のリンクよりVAEをダウンロードします。ae.sftをダウンロードし、ComfyUI/models/vaeに格納してください。

      https://huggingface.co/black-forest-labs/FLUX.1-schnell/blob/main/ae.sft

      Workflowのロード

      以下の画像をダウンロードし、ComfyUIのキャンバスにドラッグ&ドロップしてください。画像ですが、workflowの情報が含まれているため、キャンバスにロードできます。

      https://github.com/comfyanonymous/ComfyUI_examples/blob/master/flux/flux_dev_example.png

      この狐娘さんの画像にワークフローが仕込まれています!

      画像

      ✨️このあたりのGoogle Colabでの動作がよくわからない方には以下の記事がおすすめです。

      キャンバスに上記のPNGファイルをロードすると、以下のようなフローがロードされます。

      画像

      cute anime girl with massive fluffy fennec ears and a big fluffy tail blonde messy long hair blue eyes wearing a maid outfit with a long black gold leaf pattern dress and a white apron mouth open holding a fancy black forest cake with candles on top in the kitchen of an old dark Victorian mansion lit by candlelight with a bright window to the foggy forest and very expensive stuff everywhere
      黒い金箔模様のロングドレスと白いエプロンのメイド服を着て、口を開けたまま、ろうそくの明かりに照らされた古い暗いビクトリア様式の邸宅の厨房で、ろうそくの上にろうそくを立てた黒い森のケーキを持っているかわいいアニメの女の子

      生成できました!

      画像

      FLUX.1 [dev]のモデルサイズ、Google Colabでは L4 GPU環境(GPU RAM 22.5GB)でギリギリ動作するように設計されているようです。

      画像

      dev版で高品質の画像を生成するためには、50steps必要なので、BasicSchedulerのstepsを50に変更してください。

      画像
      画像

      顔の表現が変わって、ろうそくが5本に増えてますね…

      ネットワークを読み解く

      グラフからFLUX.1のネットワークを分析してみます。

      画像

      モデル→BasicScheduler→SIGMAS→[SamplerCustomAdvanced]
      RandomNoize→[SamplerCustomAdvanced]
      KSamplerSelect→[SamplerCustomAdvanced]
      EmptySD3LatentImage(1024×1024)→[SamplerCustomAdvanced]
      DualCLIPLoader→[CLIP]→FluxGuidance→(Conditioning)→[BasicGUider]→(Guider)→[SamplerCustomAdvanced]

      [SamplerCustomAdvanced]→VAE Decode→Image

      画像

      Stable Diffusion 3の構成によく似ています。
      DualCLIP、EmptySD3LatentImageはStable Diffusion 3の部品と共通で、FluxGuidanceというノードがComfyUIによって新たに開発されています。これが従来のCFGにあたるプロンプトへの忠実度を示す値(現在は3.5)になるようです。ネガティブプロンプトやImage2Image、ControlNetはこのConditioningに与える形で提供されるのでしょうか。
      ComfyUIの開発者を取り込んだ状況や、Kolorsの最近のコミュニティでの開発状況から予想するに、早い段階でControlNet等が提供される可能性もありえます。この分野はオープンソースへのモデル提供という貢献がプラスに働くコミュニティでサイクルさせていく戦略なのでしょう。

      C2PAなどの対応はなし

      オープンモデルを自前で立てたGoogle Colab上で動かしているので当然といえば当然ですが、C2PAの埋込情報はないようです。

      画像

      有料APIでの対応がどのように提供されるのか興味深いところではあります。

      3. FLUX.1[dev]による画像生成

      実際にFLUX.1[dev]で画像生成してみました。以下に使用したプロンプトと生成された画像を貼付します。

      ヘリコプターから飛び降りる女性

      A cinematic image capturing a Japanese woman with long black hair, performing a dramatic dive from a helicopter into the vast open sky. The background features a breathtaking view of the sky filled with soaring birds, accentuating a sense of freedom and exhilaration. The woman's expression is focused and fearless, her hair flowing dramatically behind her as she dives. The helicopter is visible in the upper part of the frame, adding a touch of adventure and scale to the scene. The lighting is dynamic, highlighting the action and the expansive atmosphere.
      画像
      画像

      ダッシュする髭マッチョ男性

      A cinematic image depicting a rugged Japanese man with a beard, sprinting through the bustling streets of Shibuya, Tokyo. He is portrayed as muscular and intense, with his strong physique evident even through his clothing. The scene captures him mid-dash, with the iconic Shibuya crossing in the background blurred by the motion. Neon lights and the vibrant city life add to the dynamic and energetic atmosphere of the image. The lighting is urban and dramatic, emphasizing the man's determined expression and the fast-paced action of the scene.
      画像

      ドラゴンと勇者

      A cinematic fantasy image inspired by RPG themes, featuring a heroic scene with a dragon, a warrior, a wizard, a martial artist, and a cleric. Set in a mystical landscape, the dragon looms large in the background, spewing fire into the sky. The warrior, clad in armor, stands boldly in the foreground with a sword raised. Beside him, a wizard prepares a spell, glowing with magical energy. The martial artist, in dynamic pose, is ready to strike, and the cleric, with a staff in hand, invokes a protective spell. The scene is bathed in the ethereal light of magic and fire, creating a dramatic and epic atmosphere.
      画像

      ゾンビと逃げるカップル

      A cinematic image depicting a male and female couple frantically running from a massive horde of zombies. The scene is set in a chaotic urban environment with the army in the background, engaged in a fierce battle to contain the zombie outbreak. The couple appears desperate and terrified, dodging between abandoned cars and debris. Soldiers can be seen in the periphery, firing at the advancing zombies, providing a grim backdrop. The atmosphere is tense and suspenseful, with dark, ominous lighting amplifying the sense of impending danger.
      画像

      足の生成テスト

      A cinematic image of a Japanese woman casually displaying the soles of her feet, seated on a park bench. The scene captures her in a relaxed pose, perhaps during a leisurely afternoon in a tranquil urban park. The focus is on her bare feet, crossed elegantly as she enjoys a book or the peaceful surroundings. The background is softly blurred, emphasizing her and the detail of her feet. The lighting is warm and natural, highlighting the simplicity and quiet mood of the moment.
      画像

      軍隊の上陸作戦

      A cinematic image depicting a military landing at a beachfront during a defensive operation. The scene captures the intensity of the moment with troops disembarking from landing craft under the cover of smoke and gunfire. The ocean is rough, reflecting the turmoil of battle, with waves crashing against the shore. Soldiers in full gear advance onto the beach, facing resistance from defensive positions in the distance. The sky is overcast, adding a dramatic and somber tone to the scene, emphasizing the gravity of the military engagement.
      画像

      複数の女性がプールで遊ぶ

      A cinematic image featuring multiple Japanese women in swimsuits, enjoying a playful moment in a pool, surrounded by splashing water that creates a fantastical atmosphere. The scene captures them laughing and splashing water at each other, with the sun casting a shimmering glow on the droplets, creating a sparkling effect. The background shows a beautifully designed pool area that enhances the dreamlike quality of the image. The overall mood is joyful and ethereal, with soft, diffused lighting that adds a magical touch to the setting.
      画像

      イラスト: 魔法使いが爆発魔法を唱える

      A cinematic image inspired by anime, depicting a dramatic scene of magical alchemy leading to an explosion. The setting is a dark, mystic chamber filled with ancient symbols and glowing artifacts. In the center, a character performs a complex magical ritual, hands raised as they channel energy into a vibrant, swirling mass of light that culminates in a sudden, intense explosion. The explosion sends colorful magical energies radiating outward, casting vivid shadows and illuminating the room with a spectrum of light. The atmosphere is tense and charged with the power of unleashed magic.
      画像

      イラスト: 異世界転生したプログラマ

      A cinematic image blending realistic and anime styles, featuring a programmer who has been reincarnated into a fantastical other world. The scene shows the programmer sitting at a magical, glowing workstation filled with ancient scrolls and futuristic screens, coding to manipulate the laws of this new world. Around him, elements of a traditional fantasy setting—enchanted forests, distant castles, and mythical creatures—merge with digital effects to symbolize his unique role in this realm. The lighting is dynamic, highlighting the contrast between the old world's mystique and the new digital influence he brings.
      画像

      Animagine XL 3.1のプロンプトでLuC4を生成してみる

      AICUのキャラクターである「LuC4」をAnimagine XL 3.1用公式プロンプトで生成してみます。

      1boy, solo, upper body, front view, gentle smile, gentle eyes, (streaked hair), red short hair with light highlight, hoodie, jeans, newest

      特にアニメ要素は指定していないのですが、非常にいい感じのLuC4くんが生成されました。

      画像
      画像
      画像

      1生成あたり平均129秒といったところです。これは大きい方のCLIPを使いLowVRAMモードで起動しているのでもっと高速化することもできるかもしれません。

      4. 所感と疑問: 過学習?何故かアニメに強い

      12B、ファイルサイズで22GB。

      まず 触ってみた所感として、FLUX.1 [dev]はさすが12B、ファイルサイズで22GBという巨大なサイズです。言語理解力が高く、高品質の画像を生成するモデルではありますが、扱いやすいサイズとは言い難い。Google Colab環境のL4で快適動作するサイズのギリギリ上限として[dev]をリリースされたのは見事です。

      商用利用は可能なのか?その品質は

      商用利用可能ではありませんので、ホビーストが Text to Imageでの一発出しを楽しむレベルつまり、Midjourneyとしては十分な品質を持っているという印象があります。しかし商用ライセンスとしてはまだウェイティングリスト状態ですし、出力される画像はMidJourneyにNijiJourneyが混ざったような総花的な感覚を受けます。

      人物の表現にも偏りや、実在感の不足を感じます。例えば最近のComfyUI環境で使われている「Kolors」はフォトリアル系人物に強い中国系企業によるモデルです。英語と中国語、文字レンダリング、指、そして東アジア各国の人物表現の分離がしっかりできています。

      https://note.com/yas_bizdev/n/nc160fe614725

      https://note.com/yas_bizdev/n/n701bed443641

      ComfyUIコミュニティとの協働は評価できる

      上記の通り、BFLははComfyUIコミュニティとの協働を行っているようです。
      ネガティブプロンプトやImage to Image、ControlNetはまだありませんが、KolorsでのComfyUIが公式からリリースされたように(※2024/8/6追記)、今後、オープンソースコミュニティと協働によって開発が進むのかもしれません。今後新しいワークフローがどこからリリースされるのか注目です。

      https://comfyanonymous.github.io/ComfyUI_examples/flux

      [dev]と[pro]の互換性は?

      [dev]で鍛えたナレッジが[pro]で活かせるのかどうか、プロユーザーは調査していきたいところではあります。蒸留された[dev]と商用API経由の[pro]がシードなどを介して互換性高く利用できるのであれば理想的ですが、特性がまるで異なるようであると、ビジュアル産業の用途には使いづらいと考えます。
      余談ですが、APIモデルのライセンス提供やAPIプロバイダを介した提供などは、今後も各社が頑張っていくところだと予測します。例えばStability AIもFireworks.AI経由で高速なAPIを提供していますし、オープンモデルの商用ライセンスも提供しています。

      https://stability.ai/license

      オウンホストできる[dev]とAPI利用のみになる[pro]に互換性があるのであれば、ビジュアルエフェクトに関わるエンジニアにとって、パイプライン、ワークフローは組みやすくなります。しかし双方が全く異なるアーキテクチャーや特性をもっていると、別のシステムとして扱わなければなりません。

      APIはドキュメントがあるが招待制

      AICUでは [pro]を評価すべく https://api.bfl.ml/  において登録を行いましたが、招待制とのことで利用はできませんでした。

      画像

      API化は演算環境のアウトソーシング化や品質の維持に貢献できますが、一方ではAPI提供企業によるブラックボックス化が進みやすい、透明性を下げる点もあります。
      Stable Diffusionに例えて見回すと、Stable Diffusion 3 Medium や Stability AI が提供するAPIは過去のStable Diffusion 1.xや Stable Diffusion XL (SDXL)に比べてはるかに高速・高機能で高品質です。ですが市場にはまだたくさんのSD1.5やSDXLのモデルで画像生成サービスを提供している企業があるようです。市場の形成という意味では、画像生成AIをサービスしているプレイヤーがきちんと「最新のAPIを使っています」とか「商用ライセンスを買っています!」という企業が増えて欲しいところですし、消費者も目が肥えてきているので、選んで使っていきたいところです。例えばパープレはエンドユーザからの集金と、外部モデルの選択可能性の仕組みを上手くサービスとして構築しているように見えます。

      今後も「とりあえず出せればいい用途」は限りなく無料化していく一方で、きちんと商業ライセンスが確立するサービスには圧倒的な画質と速度、価格と、C2PAなどの来歴データ提供などを含めたトータルな安心・安全までが整備された高品質APIに需要が向くと観測します。

      ▼「Stable Diffusion」の革命から2年、画像生成AIはAPIとコミュニティの時代へ ~倫理問題の「当たり前化」のその先に

      https://forest.watch.impress.co.jp/docs/serial/aistream/1612897.html

      追加学習しづらい

      サイズが大きいということで、追加学習やファインチューニングが難しいという想像はできます。現在のリリースラインナップでは、コンシューマーレベルのGPUで扱えるサイズは[schnell]ということになるかと思います。こちらについて、評価する機会があればいずれ見てみたいと思います。

      何故かアニメに強い

      特にアニメや漫画に寄せたプロンプトの指定をしていなくてもいい感じのアニメ風の画像が出てきます。

      AICUのコラボクリエイター犬沢某さん @InsBow の作品。

      過学習の過学習をしている可能性

      過学習とは、特定の学習元に最適化されたため汎化性能が下がってしまう例です。例えば「cyberpunk」というプロンプトに対してゲーム「Cyberpunk 2077」のアートが生成されてしまうような例です。これはMidJourney v6でも言われていることですが、それをベンチマークにすることで「過学習の過学習」をしてしまう可能性が感じられます。

      具体的にはモデルの性質として、何も指定していないのにアニメ顔が出る点です。Danbooruタグと呼ばれる「1girl」という表現や、Animagine XL 3.1のプロンプトである「latest」などに反応している点からも、他のモデルの蒸留をして、さらに過学習をしている可能性があります。

      過学習は特性として慣れれば扱いやすいかもしれませんが、一方では特定の画風や作者に対してのあらぬ嫌疑をかけられる可能性があります。

      倫理的なキュレーションはされていない可能性

      過学習と並んで、倫理的なキュレーションがされていない可能性を感じます。OpenAIや Stability AIといったAI基盤モデルの先駆者たちはデータセットの素性や倫理的な精査選別を行っています。このような作業を「curation」(キュレーション)、それを行う人を「キュレーター」といいます。
      例えばOpenAIは「アライメント」や「キュレーション」に多大なコストを払っており、人間によって倫理的な調教を行っています。

      https://note.com/o_ob/n/n68bd7db03162

      画像生成モデルにおけるキュレーションの状態をテストすることは非常に簡単です。「NSFW」や裸体、子供や人種差別、大統領などを生成させればすぐに分かりますが、AICU mediaの紙面ではふさわしくないので、割愛します。

      念の為「miku」だけSeed=39で生成してみます。

      画像

      みっくみくです。念の為、Google画像検索をしてみましたが、一致する画像はありませんでした。

      画像

      学習元のデータセットやオプトアウトといった手続きがないと新たな炎上や訴訟になる可能性があることは否定できません。
      ※いずれにしても生成側に責任があることは変わりません。

      性能評価におけるベンチマーク対象が恣意的

      いまいちどBFL提供の性能評価を確認してみます。

      画像

      まず評価対象のトップにある「SD3 Ultra」ですが、ちょっと恣意的かもしれません。まず「SD3 Ultra」という名前のモデルは存在しません。Stability AIで「Ultra」と呼ばれているモデルは「Stable Image Ultra」であって「Stable Diffusion 3」でも「SD3 Ultra」でもありません。

      Made from the most advanced models, including Stable Diffusion 3, Ultra offers the best of the Stable Diffusion ecosystem.
      Stable Diffusion 3 を含む最も高度なモデルから作成された Ultraは、Stable Diffusionエコシステムの最高峰です。

      Ultraが最高峰であるとすると、Stable Diffusion 3 シリーズで公開されているモデルの最高モデルは「Stable Diffusion 3 Large」でパラメーター数は8B、つまり推定80億パラメータ。「Stable Diffusion 3 Medium」は2B、20億パラメータです。「Ultra」はこれらの Stable Diffusion 3を含んだAPIサービスとなります。

      https://stability.ai/news/stable-diffusion-3

      単に最大パラメータサイズを売りにすると、120億vs80億で、「FLUX.1のほうが強そう」ですが、「同じパラメータ数のサービスとして評価すると、FLUX.1が劣後する可能性」すらあります。LLMを使った言語系サービスに例えれば「必要な課題への必要な回答」を「高い精度」で「低い費用」で利用できるためのモデルを考えてリリースする必要があり、必ずしも「辞書の大きさ」つまりパラメータ数が多いだけではなく「その最適化」、それ以外の変数やそもそも課題設定なども、求める性能を得るためには同じくらい重要です。これらを最適化するための機械学習の手法、ハイパーパラメータの最適化なども多くの技術があります。

      このような課題や品質ををどう捉えているか、といった視点でもう一度リリースを見直してみると、Visual Quality, Prompt Following, Size/Aspect Variability, Typography, Output Diversity…といったレーダーチャートで表現をしています。Stable Diffusion 3 Ultraと比較して、「画質」はほぼ同等です。
      その他の要素では「出力の多様性」、「サイズ・アスペクト比変動性」、「タイポグラフィ(文字)」は差が大きいようです。
      多様性については評価手法が確立しているとはいい難いです。AICUではStability AI APIのCoreAPIが提供している17スタイルの評価を上位モデルと比較して1800枚程度の同一プロンプト、同一シードの画像で互換性評価を実施していますが、前述の通り『過学習の影響』は使い手が判断するしかないのが現状です。ファインチューニング手法が確立するのを待つしかないでしょうか。

      タイポグラフィ

      文字を打つ能力はStable Diffusion 3 Ultraよりは劣後するという表現になっており、[pro],[dev],[Schnell]で大きく差がつく要素になっていますが、実際には[dev]でもアルファベットはしっかりかけるようです。

      画像

      日本語や漢字は苦手なようですが、今後はこの手の文字、特に日本語・中国語・韓国語(CJK)などの東アジア言語が主戦場になるのかもしれませんね。…といったところで実験していたら✂が出てきました。先にUnicodeでの絵文字の実装を狙っているのかもしれません。

      画像

      以上、FLUX.1 [dev]の実力についてのハンズオンレビューでした。

      次は動画…[SOTA]が登場!?

      画像

      次はすべての人のための Text-to-Video「SOTA」へ

      本日「FLUX.1」 Text to Imageモデル・スイートをリリースしました。強力なクリエイティブ機能を備えたこれらのモデルは、競争力のあるジェネレーティブ Text-to-Videoシステムの強力な基盤となります。私たちのビデオモデルは、高精細でかつてないスピードでの正確な作成と編集を可能にします。私たちは、ジェネレーティブ・メディアの未来を開拓し続けることを約束します。

      今後の画像生成AIにおける新しい常識がアップデートされるのでしょうか。期待して見守りたいと思います。

      この記事に「いいね!」と思ったら、いいねとフォロー、おすすめをお願いします!

      https://note.com/aicu/ X(Twitter)@AICUai

      ✨️本記事は Yas@BizDev支援のエンジニア さんの寄稿をベースにAICU AIDX Labおよび編集部にて大幅に加筆・検証したものです。ご寄稿いただきありがとうございました。
      ✨️初稿から評価面を大幅に加筆しています(2024年8月6日)

      メンバーシップ向けボーナス・コンテンツ

      Google Colabで動くノートブックを公開しています。

      この記事の続きはこちらから https://note.com/aicu/n/n750140124c01

      Originally published at https://note.com on Aug 5, 2024.