ComfyUIのインストール【AIイラスト生成ツール】

ComfyUIインストール AIイラスト

今回は、AIイラストが生成できる ComfyUI というツールのセットアップ手順を書き残しておきます。

- PR -

準備:gitのセットアップ

ComfyUI の使用に当たり、git と言うバージョン管理ツールが必須級で必要となるため、まずはこれをサクッとインストールします。

gitの入手

git の入手は公式サイトから可能。本体をダウンロードしインストールする。

まずは下記サイトにアクセス。

Git - Downloading Package

私の環境に合ったものは Windows 64bit なので、これのポータブル版をダウンロード。(動作環境・用途に合ったものを選択)

gitのダウンロード
gitのダウンロード

gitのインストール

本体は圧縮されているので都合の良い適当な位置で解凍・配置する。

ダウンロードされたファイルは自己解凍形式の圧縮ファイルになってたのでそのまま実行。

gitの解凍
gitの解凍

展開先を聞かれるので指定。(どこでもよい)

gitの解凍先指定
gitの解凍先指定

指定した位置にフォルダが作成される。

解凍後
解凍後

作成されたフォルダの中に “bin” フォルダがあるので右クリックのメニューからパスをコピーしておく。

binのパスをコピー
binのパスをコピー

gitのパス設定

続いてはパスの設定。パスの設定を行うことでgit関連のコマンドを呼び出しやすくする。

タスクバーのウィンドウズアイコンを右クリックしメニューからシステム設定を開く。

システムの設定を開く
システムの設定を開く

システムの詳細設定を開く。

システムの詳細設定を開く
システムの詳細設定を開く

環境変数を開く。

環境変数を開く
環境変数を開く

システム環境変数の “Path” をダブルクリック。(選択状態で編集でもよい)

Pathの編集
Pathの編集

新規を押すと新たなパスを追加できるので、先ほどコピーしたパスを貼り付けOK。

gitのパスを追加
gitのパスを追加

gitの起動確認

gitコマンドを実行してみて正しくパス設定が出来ているかを確認。

スタートメニューで “cmd” とタイプし、コマンドプロンプトを起動。

コマンドプロンプトの起動
コマンドプロンプトの起動

下記のコマンドを叩き、バージョン情報が返ればOK。

git -v

gitを実行しバージョンを表示
gitを実行しバージョンを表示
– PR –

ComfyUIのセットアップ

本命、ComfyUI をセットアップする。
本体は公式サイトや github からダウンロードできる。

ComfyUI | Generate video, images, audio with AI
The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.
Releases · comfyanonymous/ComfyUI
The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. - comfyanonymous/ComfyU...

ComfyUIの入手

ポータブル版がほしいのでgithubから最新のバージョンをダウンロード。

ComfyUIのダウンロード
ComfyUIのダウンロード

ComfyUIのインストール

7-Zip形式(.7z)で圧縮されているのでどうにかして解凍し、好きな位置に展開・配置する(どこでもよい)

ComfyUIの解凍
ComfyUIの解凍

ComfyUIのアップデート

ComfyUI のフォルダの中(ComfyUI_windows_portable\update)にアップデート用バッチ(update_comfyui_and_python_dependencies.bat)があるので実行し ComfyUI を最新化する。

ComfyUIの更新は頻繁にされるようなので、利用前にアップデートバッチを実行すると良さそう。

ComfyUIのアップデート
ComfyUIのアップデート

ComfyUIの起動

ComfyUI フォルダ(ComfyUI_windows_portable)から起動バッチ(run_nvidia_gpu.bat)を実行する。

ちなみに起動バッチは2種類あるので動作環境に合わせ選択。
Nvidia系GPU → run_nvidia_gpu.bat
それ以外は → run_cpu.bat (CPUエンジン?)

ComfyUIの起動
ComfyUIの起動

バッチ実行後、コマンドプロンプトが立ち上がり、暫く待つと ComfyUI のワークフローがブラウザに表示される。また、このコマンドプロンプトを終了してしまうと ComfyUI (のプロセス)が終了してしまうので注意。

ComfyUIの画面
ComfyUIの画面

ComfyUIの停止(終了)

コマンドプロンプトで Ctrl+c を押すと終了するか聞かれるので y とタイプし Enter で停止する。(ぶっちゃけコマンドプロンプトを “x” で終了させても問題ないかも…?)

ComfyUIの停止
ComfyUIの停止

これでインストールは一旦完了。
但し、初期状態だとイラスト生成に必要なモデル等が無いため動かすことが出来ない。なので以降でイラスト生成に最低限必要なコンポーネント類を追加で突っ込んでいく。

カスタムノードとモデルのインストール

ということで、カスタムノードとモデルを追加インストールする。

カスタムノード ComfyUI Manager のインストール

まずカスタムノードの ComfyUI Manager をインストールする。
ComfyUI Manager は、ComfuUIで利用するカスタムノードやモデルを管理してくれる機能があるため必須級のカスタムノードとなる。
ComfyUI Manager は github で管理されているリポジトリをローカル環境に clone する事でインストールができる。

エクスプローラーで ComfyUI_windows_portable\ComfyUI\custom_nodes フォルダを開き、右クリックから「ターミナルを開く」を選択。

custom_nodesでターミナルを開く
custom_nodesでターミナルを開く

ターミナル上で git clone コマンドを実行する。

git clone https://github.com/ltdrdata/ComfyUI-Manager

managerのインストール
managerのインストール

git clone の結果にエラーがなければ ComfyUI へのインストールは完了。

git clone の結果
git clone の結果
managerインストール後
managerインストール後

インストールした ComfyUI Manager を有効化するため ComfyUI を再起動する。(ComfyUI再起動後にブラウザ側のリロードを忘れずに)

起動後、”Manager” のボタンが追加されていればOK。

Manager の確認
Manager の確認

以降、新たな拡張機能の追加は Manager から行うことができる。(ただし、Managerに未登録の拡張機能などはManagerのとき同様に git clone でのインストールが手順となる)

Modelのインストール

続いては Manager のメニューから「Model Manager」を選択。

Model Manager を開く
Model Manager を開く

「sdxl」で検索し「sd_xl_base_1.0_0.9vae.safetensors」にチェックを入れ Install。(7GB弱のファイルがダウンロードされるので注意)

Modelのインストール
Modelのインストール

インストールが完了したら ComfyUI を再起動すると Model が利用可能となる。

– PR –

イラスト生成

Model まで準備が出来たので実際にイラスト生成をしてみる。

SDXLモデルを使ったイラスト生成

イラスト生成するためのシンプルなワークフローを作成した。

ComfyUIのワークフロー
ComfyUIのワークフロー

生成に使うプロンプトは下記。

Prompt+: best quality, ultra detailed, high resolution, 4k, 8k, extremely detailed CG, super fine illustration, Realistic, 1girl, cute face, Thin eyebrows, Clear skin, red hair, short bob, wavy hair, Blue eyes, Glossy lips, close-up portrait

Prompt-: nsfw, worst quality, bad quality, low quality, watermark

生成されたイラスト。

ComfyUI_temp_erxsr_00013_
生成された女性のイラスト

ワークフローの保存と形式

ComfyUI で作成したワークフローは Ctrl+s キーを押すと(もしくはメニューから)保存しておける。保存形式はJSONで、同様の情報が生成したイラスト(PNG等の画像ファイル)にも埋め込まれる仕様になっている。つまり生成したイラストを ComfuUI にドラッグ&ドロップすれば、そのイラストが生成された時のワークフローを再現することができる。これは色々と便利。

また、保存されたJSON形式のファイル内容をコピーした状態で、ComfyUI でペースト(Ctrl+v)することでもワークフローとして読み込むことができる。例えば、↑で生成したときのワークフローデータ↓をコピーし、ComfyUI 上でペーストすればワークフローが再現できる。

JSON
{
  "last_node_id": 10,
  "last_link_id": 9,
  "nodes": [
    {
      "id": 2,
      "type": "CheckpointLoaderSimple",
      "pos": [
        17623.00390625,
        1585.1480712890625
      ],
      "size": [
        315,
        98
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            9
          ],
          "slot_index": 0
        },
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            1,
            2
          ],
          "slot_index": 1
        },
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            7
          ],
          "slot_index": 2
        }
      ],
      "properties": {
        "Node name for S&R": "CheckpointLoaderSimple",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": [
        "SDXL\\sd_xl_base_1.0_0.9vae.safetensors"
      ]
    },
    {
      "id": 8,
      "type": "VAEDecode",
      "pos": [
        18675.01953125,
        1586.6004638671875
      ],
      "size": [
        210,
        46
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 6
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 7
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            8
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "VAEDecode",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": []
    },
    {
      "id": 9,
      "type": "PreviewImage",
      "pos": [
        18889.265625,
        1586.760498046875
      ],
      "size": [
        443.43865966796875,
        309.67230224609375
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 8
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "PreviewImage",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": []
    },
    {
      "id": 5,
      "type": "KSampler",
      "pos": [
        18355.78515625,
        1586.6934814453125
      ],
      "size": [
        315,
        262
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 9
        },
        {
          "name": "positive",
          "type": "CONDITIONING",
          "link": 3
        },
        {
          "name": "negative",
          "type": "CONDITIONING",
          "link": 4
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 5
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            6
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "KSampler",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": [
        103799754013350,
        "randomize",
        35,
        8,
        "dpmpp_3m_sde",
        "karras",
        1
      ]
    },
    {
      "id": 7,
      "type": "EmptyLatentImage",
      "pos": [
        18030.736328125,
        2057.83837890625
      ],
      "size": [
        315,
        106
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            5
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "EmptyLatentImage",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": [
        896,
        1152,
        1
      ]
    },
    {
      "id": 4,
      "type": "CLIPTextEncode",
      "pos": [
        17945.962890625,
        1821.0897216796875
      ],
      "size": [
        400,
        200
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 2
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            4
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPTextEncode",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": [
        "nsfw, worst quality, bad quality, low quality, watermark, "
      ]
    },
    {
      "id": 3,
      "type": "CLIPTextEncode",
      "pos": [
        17947.11328125,
        1585.9263916015625
      ],
      "size": [
        400,
        200
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 1
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            3
          ],
          "slot_index": 0
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPTextEncode",
        "cnr_id": "comfy-core",
        "ver": "0.3.15"
      },
      "widgets_values": [
        "best quality,  ultra detailed, high resolution, 4k, 8k, extremely detailed CG, super fine illustration, Realistic, \n\n1girl, cute face, Thin eyebrows, Clear skin, red hair, short bob, wavy hair, Blue eyes, Glossy lips, close-up portrait, "
      ]
    }
  ],
  "links": [
    [
      1,
      2,
      1,
      3,
      0,
      "CLIP"
    ],
    [
      2,
      2,
      1,
      4,
      0,
      "CLIP"
    ],
    [
      3,
      3,
      0,
      5,
      1,
      "CONDITIONING"
    ],
    [
      4,
      4,
      0,
      5,
      2,
      "CONDITIONING"
    ],
    [
      5,
      7,
      0,
      5,
      3,
      "LATENT"
    ],
    [
      6,
      5,
      0,
      8,
      0,
      "LATENT"
    ],
    [
      7,
      2,
      2,
      8,
      1,
      "VAE"
    ],
    [
      8,
      8,
      0,
      9,
      0,
      "IMAGE"
    ],
    [
      9,
      2,
      0,
      5,
      0,
      "MODEL"
    ]
  ],
  "groups": [],
  "config": {},
  "extra": {
    "ds": {
      "scale": 1.5845483859093314,
      "offset": [
        -17617.34655477108,
        -1390.8832411951546
      ]
    },
    "node_versions": {
      "comfy-core": "0.3.14"
    },
    "ue_links": []
  },
  "version": 0.4
}
Expand

他のモデルを使ったイラスト生成

生成するイラストのテイストは使用する Checkpoint(Model)で左右される。Checkpoint には得手不得手的な物があり、リアル、アニメ、3D、フィギュア、動物、背景や紳士向け等、生成したいイラスト合った Checkpoint を選択する必要がある。

例えば、先程イラスト生成に使用したプロンプト使い、先程とは異なる3種類の Checkpoint を使用すると下記のようになる。

Checkpointによる違い
Checkpointによる違い

モデルの入手

モデルを入手できる主要なサイトは下記。下記以外にも同様のサイトはあるので必要なら検索してみると良い。

CIVITAI
使いやすい探しやすい。各種モデルを入手できるほか、ComfyUIのワークフローやプロンプト付きのイラストが投稿・公開されているので参考になる。

Civitai: The Home of Open-Source Generative AI
Explore thousands of high-quality Stable Diffusion & Flux models, share your AI-generated art, and engage with a vibrant...

CIVITAI (GREEN)
CIVITAIと同様だが、こちらは紳士向けのコンテンツが含まれない。

Civitai: The Home of Open-Source Generative AI
Explore thousands of high-quality Stable Diffusion & Flux models, share your AI-generated art, and engage with a vibrant...

Hugging face
AI系のモデルや関連するライブラリなどが投稿されているサイト。CIVITA同様にモデルなどを入手できるがやや探しにくい。

Hugging Face – The AI community building the future.
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

さいごに

以上で ComfyUI のセットアップは完了。あとはノードの組み方やモデルの特徴だったりを覚えていく感じになるかと思う。

他にも色々と書き残しておきたい事が山とあるが、、、まぁ、気が向いたらということで。

用語について

用語の説明を書き残しますが、私の認識なので的を射ているかは怪しい…

Q
コンフィーユーアイ (ComfyUI)とは?
A

ノードベースのワークフローの作成機能を提供してくれるツール。AIイラストを生成するためには様々な手続き(処理)が必要だが、これらを目で見て理解しやすいワークフロータイプのUI上で組み立てる事ができる。つまり、これ単体でAIイラスト生成ができるわけではない。

Q
カスタムノード(Custom node)とは?
A

ComfyUIの様々な拡張機能。(マイクラで言うと”Mod”)

Q
モデル(Model)とは?
A

いわゆるAIに該当するもの。イラストを生成するための指示(プロンプト)の解釈やそれに基づいたイラストの生成(描画)等をしてくれる。(Checkpoint, VAE, Lora 等)

Q
チェックポイント(Checkpoint)とは?
A

Model の一種。もう少し書くと Stable Diffusion というモデルをベースに追加学習を施した Model のこと。この追加学習によってアニメ系のイラスト等が綺麗に出力できたりする。

Q
プロンプト(Prompt)とは?
A

AIに対する指示というか要求と言うか、そういったもの。イラスト生成においては生成したいイラストの特徴を単語化や文章化したもので、生成したい特徴に応じてつらつらと書き綴ることになる。具体的には「1girl, blue hair, green eyes(1人の女の子、青い髪、緑の目)」といった感じ。

コメント

タイトルとURLをコピーしました