ローカルのビジョンモデルで、ComfyUIの画像からプロンプトを自動生成する

Ollamaでビジョン言語モデルをローカルで動かし、各スケッチを記述させてプロンプトを書かせ、SDXLまたはFluxと深度ControlNetで新しい画像を生成します。一晩で何千ものバリエーションを、すべてオフラインで。

Anton Tenitsky2026年10月13日約11分で読めます動画版は下にあります

このガイドはAIで英語から翻訳したもので、誤りを含む可能性があります。英語の原文を読む。

ローカルのビジョンモデルが書いたプロンプトで、鉛筆のスケッチから生成した、舞台上の金色のローブの踊り手

画像を大量に生成するとき、時間がかかるのはプロンプトを書く作業です。このワークフローは、それを見ることのできるAIに任せます。ビジョン言語モデルが各スケッチを見て記述し、新しいプロンプトを書きます。そのうえで、SDXLまたはFluxが、深度ControlNetを通してスケッチに沿った新しい画像を生成します。

すべて自分のコンピューターで、オフラインで動きます。寝る前に10枚や50枚のスケッチを渡せば、朝には数千枚の画像ができています。

ポイント

  • Ollamaが言語モデルをローカルで動かし、ComfyUIはノードパックを通してそれと話します。
  • モデル: 約4.7GBが最適です。LLaVA Q4が最良のプロンプトをくれました。
  • 重要な設定: Fluxではkeep-aliveを0、max tokensはFluxなら512、SDXLなら77、そしてseedのランダム化。
  • その後: プロンプトとスケッチの深度マップが、SDXLまたはFluxに渡されます。

LLM、MLLM、VLMを簡単に

最初のChatGPTはテキストしか受け取りませんでした。大規模言語モデル(LLM)です。ChatGPT、Gemini、Grokは今では、画像や音声なども受け取るマルチモーダルモデル(MLLM)になっています。ビジョン言語モデル(VLM)は画像とテキストを扱うタイプで、ここで必要なのは、画像を見てそれについて書けるものです。

私が知らなかったこと:LLMもVLMも、インターネット接続なしで自分のコンピューターで動かせます。

1. Ollamaをインストールする

Ollamaは、言語モデルをローカルで動かします。インストーラー(約700MB。モデル自体はもっと大きい)をダウンロードして実行し、求められたら、表示されるコマンドをコマンドプロンプトに貼り付けてセットアップを完了させます。終わると、システムトレイにOllamaのアイコンが表示されます。設定することは何もなく、ComfyUIと並んで動いていればよいだけです。

Ollamaのダウンロードページ
ComfyUIがローカルの言語モデルを使うには、Ollamaが動いている必要があります。

2. ノードパックをインストールする

ComfyUIのCustom Nodes Managerで「VLM」を検索すると、多くのパックが表示されます。その多くは、ComfyUIがPython 3.11から3.12に移行して以降更新されておらず、動きません。私が使った、動作する2つはこちらです。

両方をインストールして、ComfyUIを再起動します。

VLM関連のノードパックを一覧表示したComfyUIのCustom Nodes Manager
多くのVLMパックが表示されますが、現在のComfyUIで動くとは限りません。

3. モデルを選ぶ

まずOllama Text Describerノードを追加します。モデル一覧には名前とサイズが表示されます。モデルはプリインストールされておらず、初めて選ぶと、システムドライブのユーザーフォルダにダウンロードされます。そのフォルダは、Ollamaの設定(トレイのアイコンをクリック)で変更できます。

知っておくべき不便が2つあります。

  • ダウンロードしたモデルは、読みやすい名前で残りません。どれをすでに持っているか分からなくなるので、メモを取っておいてください。
  • テキストモデルは見ることができません。 LLMはテキストしか出力しないので、画像の記述にはビジョンモデルが必要です。

試した範囲では、次のとおりです。

モデルサイズ 結果
約350MB(0.5Bパラメータ) ほぼ使い物にならない。GPT-3より劣る
約1GB まずまずだが、今ひとつ
約4.7GB 品質とサイズの最良のバランス
5GB超 試していません。画像モデルと並べるとVRAMを使いすぎます

4. 画像を記述してプロンプトを書く

画像には、Ollama Image Describerノードを使います。画像を受け取り、指示に従ってテキストを出力し、それがプロンプトになります。テキストのプレビューノードを接続して、読めるようにします。

Ollama Image Describerノードに読み込まれた、座る女性の鉛筆のスケッチと、その横に生成された記述
スケッチが入り、書かれたプロンプトが出てきます。

自分のスケッチの1枚を読み込み、LLaVA Q4(4ビット量子化のLLaVA)を使いました。試したモデルの中で最良のプロンプトでした。ノードには指示欄が2つあります。本当に効くのは2番目でした。私のは、おおよそ次のような内容です。この人物をこの状況で写真画像生成するためのプロンプトを作成すること、そして、一部のモデルがあちこちに付ける引用符を使わないこと。

引用符なしで、被写体のフォトリアルな画像生成用プロンプトを頼む指示欄
実際に効く指示。「引用符なし」を含みます。

「思考型」モデルは避けてください。プロンプトの代わりに推論(「どう答えるか考えている…」)を書き出してしまい、画像モデルに渡しても役に立ちません。

5. 重要な設定

keep alive、max tokens、seedを含むOllama Image Describerの設定
keep-alive、max tokens、seedが、正しく設定すべき3つです。

Keep-alive。 -1はモデルをメモリに読み込んだままにし、0はプロンプトごとにアンロードします。私は通常0を使います。SDXLでVRAMが16〜24GBあるなら、読み込んだままにして1枚あたり数秒を節約できます。Fluxでは、24GBでも毎回アンロードする必要がありました。そうしないと、5GBのビジョンモデルがメモリを占有しすぎて、画像のレンダリングが止まりました。

Maximum tokens。 画像モデルに合わせます。Fluxは512ですが、SDXLは77だけで、これはテキストエンコーダーのウィンドウの大きさです。

Seed。 記述モデルのseedは自動では変わらないので、毎回同じプロンプトになってしまいます。rgthreeのSeedノードを追加して実行のたびにランダム化する設定にし、記述モデルに接続してください。これで、実行のたびに新しいプロンプトが書かれます。指示の中の設定(「特定の場所で」「このシナリオで」)と組み合わせると、各スケッチから、さまざまなアイデアが次々と生まれます。

repeat penaltyとtemperatureは、デフォルトのままにしました。十分に良いです。

6. 完全なワークフロー:スケッチから画像へ、自動で

私のPatreonにある完全版は、すべてをまとめます。

  1. Load Image Batchが、実行のたびにフォルダから次のスケッチを取り出します。
  2. Ollama Image Describerが、そのための新しいプロンプトを書きます。私のスケッチは、さまざまなポーズの別々の女性だったので、同じ指示から、それぞれに別のプロンプトが生まれました。
  3. プロンプトは、画像モデルのポジティブプロンプトに渡されます。
  4. Depth Anythingがスケッチを深度マップに変え、Apply ControlNetがそれを使ってポーズを保ちます。
  5. KSamplerが画像を生成します。SDXLではJuggernaut XL(約6GB)を使いました。

幅と高さは整数ノードで1回だけ設定し、リサイズ、深度マップ、キャンバスで再利用します。

スケッチの1枚から作られた、空中を跳ぶ女性の生成画像
別のスケッチ、別のプロンプトで、まったく違う画像になります。

Fluxでも同じワークフローで、SDXLの代わりにXLabs SamplerとFlux devを使います。Fluxはより創造的で、バリエーションも多くなりました。keep-aliveの設定を忘れないでください。

この方法の強みは規模です。10枚や50枚のスケッチを用意し、seedをランダム化して一晩動かせば、数千枚の異なる画像が得られ、そのどれもが、あなたの絵のどれかに沿っています。プロンプトを大量に供給する他の方法は、プロンプトリストと私のPrompt Cyclerノードをご覧ください。

動画版を見る (11:31)

上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。

よくある質問

Ollamaでは、どのビジョンモデルを使うべきですか?

私のテストでは、約4.7GBのモデルが最良のバランスでした。350MBの小さなものは、ほぼ使い物にならず、1GBのモデルは悪くないものの今ひとつでした。量子化したLLaVA(Q4)が、最良のプロンプトをくれました。

プロンプトは何トークンまで使えますか?

Fluxは最大512トークンですが、SDXLは77だけです。記述モデルの最大トークン数を、画像モデルに合わせてください。

記述の後、Fluxのレンダリングが止まるのはなぜですか?

ビジョンモデルがまだVRAMに残っているためです。keep-aliveを0にして、プロンプトを書くたびにアンロードされるようにします。Fluxでは、VRAM 24GBでも両方を読み込んだままにするには足りませんでした。

毎回同じプロンプトになるのはなぜですか?

記述モデルのseedは、自動では変わりません。seedのランダマイザーノードを接続すると、実行のたびに新しいseedになり、新しいアイデアが出ます。

Anton Tenitsky は コンピュータグラフィックスで15年以上の経験を持つ3Dアーティストで、Nickelodeon、Gameloft、Marvel Rivalsをはじめ多くのクライアントと仕事をしてきました。 プロフィールを見る

関連ガイド