ComfyUIではCSVファイルを利用して、複数のプロンプトから画像を一括生成することができます。しかし、人物画像・風景画像・商品画像など、プロンプトによって適したアスペクト比が異なる場合、毎回手動で解像度を変更するのは大変です。
実はComfyUIでは、CSVの情報やプロンプト内容を利用して、生成する画像サイズを自動的に切り替える仕組みを作ることが可能です。この記事では、プロンプトごとに適切なアスペクト比へ変更する方法や、実用的なワークフロー構築方法を解説します。
ComfyUIでプロンプトごとに画像サイズを変える基本的な考え方
ComfyUI標準のワークフローでは、通常「Empty Latent Image」などのノードで幅(Width)と高さ(Height)を固定して画像を生成します。
そのため、CSVから複数プロンプトを読み込んでも、何もしなければすべて同じアスペクト比で生成されます。
プロンプトごとにサイズを変更したい場合は、CSV側にアスペクト比や幅・高さの情報を持たせ、その値を生成ノードへ渡す仕組みを作ります。
方法1:CSVに幅と高さの項目を追加する
最も安定する方法は、CSVファイルに画像サイズの列を追加する方法です。
例えば以下のようなCSVを作成します。
| prompt | width | height |
|---|---|---|
| portrait of a woman | 768 | 1024 |
| beautiful landscape | 1216 | 832 |
| product photo | 1024 | 1024 |
このようにしておけば、CSV読み込みノードからwidthとheightを取得し、Latent Imageノードへ渡すことでプロンプトごとに異なるサイズで生成できます。
人物なら縦長、風景なら横長、商品画像なら正方形というように、用途別に最適な比率を指定できます。
方法2:ComfyUIカスタムノードでCSVの値を利用する
ComfyUIでは標準機能だけでなく、カスタムノードを追加することでCSV制御を強化できます。
代表的な方法としては、CSV読み込み系ノードやワークフロー制御系ノードを利用し、CSV内の値を以下のように流します。
- CSVからプロンプトを読み込む
- CSVからwidthとheightを取得する
- 数値をLatent Imageノードへ入力する
- 生成処理を繰り返す
この構成にすると、CSVを編集するだけで生成条件を変更できるため、大量生成時に便利です。
方法3:プロンプト内容からアスペクト比を自動判定する方法
CSVにサイズ情報を入れず、プロンプトだけから自動判断したい場合は、キーワード判定を利用する方法があります。
例えば、以下のようなルールを設定できます。
| プロンプトのキーワード | 設定サイズ例 |
|---|---|
| portrait、person、character | 768×1024 |
| landscape、nature、city | 1216×832 |
| icon、logo、avatar | 1024×1024 |
ComfyUIの条件分岐ノードやスクリプト処理を組み合わせることで、入力された文章を解析して自動的にサイズを変更できます。
ただし、文章の意味を完全に理解して判断することは難しいため、大量生成ではCSVに明示的なサイズ指定を入れる方法の方が安定します。
方法4:PythonスクリプトでCSV生成を制御する
より高度な自動化をしたい場合は、Pythonスクリプトを使ってComfyUI APIへリクエストを送る方法があります。
例えばCSVに以下の情報を保存します。
- プロンプト
- ネガティブプロンプト
- 幅
- 高さ
- Steps数
- Sampler設定
スクリプト側でCSVを読み込み、各行ごとに異なる生成設定をComfyUIへ送信すれば、完全自動の画像生成システムを構築できます。
商品画像を大量作成する場合や、SNS用画像をまとめて作成する場合などでは、この方法が特に有効です。
SDXLやFLUX系モデルでのアスペクト比設定の注意点
最近のStable Diffusion系モデルでは、推奨される解像度がモデルごとに異なります。
例えばSDXLでは極端に小さいサイズや大きいサイズでは品質が低下する場合があります。そのため、単純に比率だけ変更するのではなく、モデル推奨サイズに合わせることが重要です。
例として、縦長画像を作る場合でも1024×1536のような比率を利用するなど、生成モデルに合わせたサイズ設定を行うと品質を維持しやすくなります。
まとめ
ComfyUIでCSVを使った一括画像生成を行う場合、プロンプトごとにアスペクト比を自動変更することは可能です。
最も簡単で安定する方法は、CSVにwidthとheightの列を追加し、その値を生成ノードへ渡す方法です。
さらに高度な環境では、カスタムノードやPythonスクリプトを利用することで、プロンプト内容の判定や完全自動化も実現できます。大量生成では、生成目的に合わせたアスペクト比管理を行うことで、効率と画像品質を両立できます。


コメント