はじめに
前回は、OllamaとComfyUIを連携し、日本語の指示から英語の画像生成プロンプトを作成して、画像を生成するところまで成功した。
今回はさらに高品質な画像・動画生成を目指し、Apple Siliconに最適化されたMLX系の実行環境を検討する。
静止画はKrea 2 TurboやFLUX系、動画はWan 2.2などを候補としている。
その第一歩として、MFLUXを導入し、Krea 2 Turboをローカルで実行する。
この記事では、導入環境、Hugging Face認証、発生したエラー、モデルの保存先、ComfyUIとの違いを整理する。
なお、執筆時点ではMFLUXによるKrea 2 Turboの画像生成完了は未確認である。
1. 使用環境
| 項目 | 構成 |
|---|---|
| コンピュータ | Mac Studio |
| チップ | Apple Silicon M5系 |
| ユニファイドメモリ | 64GB |
| 内蔵SSD | 512GB |
| 外付けSSD | Hanye 2TB、USB4 |
| LLM | Ollama |
| LLMモデル | Qwen3系 Abliterated 27B、Q8_0 |
| 画像生成環境 | ComfyUI、MFLUX |
| Python環境 | uv |
| モデル配布元 | Hugging Face |
内蔵SSDは512GBしかないため、AIモデルはできるだけ外付けSSDに集約する方針とした。
Ollamaのモデルはすでに外付けSSDへ移動済みである。
2. なぜMFLUXなのか
これまで画像生成にはComfyUIを使用していた。
ComfyUIは非常に柔軟で、画像生成、LoRA、ControlNet、動画生成などの処理をノードで組み合わせられる。
一方、Apple SiliconにはAppleが開発したMLXという機械学習フレームワークがある。
MLXはApple Siliconのユニファイドメモリを活用でき、対応モデルでは効率的な推論が期待できる。
MFLUXは、このMLXを利用してFLUX系などの画像生成モデルを実行するためのツールである。
ただし、MLXだから必ずComfyUIより高速になるわけではない。モデル、量子化、実装、メモリ使用量によって性能は変わる。
今回は両方を残して比較する。
| 環境 | 主な用途 |
|---|---|
| Ollama | LLM、プロンプト生成 |
| ComfyUI | 画像・動画生成ワークフロー |
| MFLUX | Apple Silicon向け画像生成 |
| MLX | Apple Silicon向け機械学習基盤 |
OllamaもApple SiliconのGPUを利用できるため、Ollamaを削除する必要はない。
3. MFLUXの導入
今回の環境では、Pythonパッケージ管理ツール uv を使用してMFLUXを導入した。
新規環境で導入する場合の基本コマンドは次のとおり。
brew install uv
uv tool install mflux
すでにインストール済みの場合は再インストール不要。
実際に確認できた実行ファイルは次の場所にある。
/Users/tetsuyanoguchi/.local/bin/mflux-generate-krea2
MFLUX本体は以下に配置されていた。
/Users/tetsuyanoguchi/.local/share/uv/tools/mflux/
つまり、MFLUXのプログラム本体と画像生成モデルは別々に管理される。
4. 外付けSSDの構成
AI関連データは外付けSSD Hanye2T に集約する。
現在確認できているパスは次のとおり。
/Volumes/Hanye2T/AI/
├── ollama/
│ └── models/
└── mflux/
ComfyUIも利用しており、そのモデル管理には次のディレクトリがある。
models/
├── checkpoints/
├── diffusion_models/
├── loras/
├── text_encoders/
├── vae/
├── controlnet/
├── clip/
└── ...
このほかにもComfyUIが自動作成した多数のフォルダが存在する。
主な役割は以下のとおり。
| ディレクトリ | 用途 |
|---|---|
| checkpoints | 統合チェックポイント |
| diffusion_models | 拡散モデル本体 |
| loras | LoRA |
| text_encoders | テキストエンコーダ |
| vae | VAE |
| controlnet | 画像生成の条件制御 |
ComfyUIのモデル配置とMFLUXのモデル配置は別である。
MFLUXはHugging Faceのモデルキャッシュを利用できるため、ComfyUIの loras フォルダへモデルを入れるだけではMFLUXで使用できるとは限らない。
また、MFLUX用のファイルが必ずComfyUIと同じ形式で使用できるわけでもない。
5. Krea 2 Turboの生成テスト
MFLUXにはKrea 2 Turbo用の生成コマンドがある。
今回実行したコマンドは以下。
mflux-generate-krea2 \
--prompt "a beautiful Japanese woman sitting in a quiet cafe, soft natural light, cinematic" \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 8 \
-q 8
設定内容は以下のとおり。
| オプション | 意味 |
|---|---|
| --prompt | 画像生成指示 |
| --width | 横幅1024px |
| --height | 高さ1024px |
| --seed | 乱数シード42 |
| --steps | 推論ステップ8 |
| -q 8 | 8bit量子化指定 |
実行すると、まずHugging Faceからモデルの取得が始まった。
Downloading model from HuggingFace:
krea/Krea-2-Turbo...
Fetching 8 files: 0%
しかし、途中でエラーが発生した。
httpx.HTTPStatusError:
401 Unauthorized
huggingface_hub.errors.GatedRepoError:
Cannot access gated repo
これは画像生成処理そのもののエラーではなく、モデルの取得に必要なアクセス権または認証に関するエラーである。
6. Hugging Faceの認証
Krea 2 Turboのモデルページは以下。
Hugging Faceにログインし、必要に応じてモデルの利用条件に同意してアクセス権を取得する。
認証用トークンは次のページで作成する。
今回は mflux という名前のトークンを作成した。
最初は次のコマンドを使用した。
huggingface-cli login
しかし、次の警告が表示された。
Warning:
'huggingface-cli login' is deprecated.
Use 'hf auth login' instead.
さらに、最初の認証では次のエラーが発生した。
401 Client Error: Unauthorized
Invalid user token.
そこで新しい認証コマンドを使用した。
hf auth login
トークンを入力すると、次の確認が表示される。
Add token as git credential? (Y/n)
今回は y を入力した。
その結果、認証に成功した。
Token is valid (permission: fineGrained).
The token mflux has been saved to
/Users/tetsuyanoguchi/.cache/huggingface/stored_tokens
Your token has been saved in your configured
git credential helpers (osxkeychain).
Login successful.
The current active token is: mflux
これでHugging Faceへのログインは成功した。
ただし、Hugging Faceへのログイン成功と、個別モデルへのアクセス許可は別の問題である。
7. モデルファイルのダウンロード
Hugging FaceのWebページからモデルファイルをダウンロードした。
その後、取得したファイルをComfyUIの loras フォルダに配置した。
ただし、MFLUXが必要とするモデル一式が揃っているか、またそのファイルをMFLUXが直接利用できるかは、現時点で未確認である。
Hugging Faceには通常、以下のようなキャッシュ保存先がある。
~/.cache/huggingface/hub/
今回、次のパスを調べた。
du -sh ~/.cache/huggingface/hub/models--krea--Krea-2-Turbo
この場所では対象モデルを確認できなかった。
Webブラウザによるダウンロードと、Hugging Faceライブラリによるキャッシュ取得は別の経路なので、保存先が異なる場合がある。
なお、キャッシュが存在しないことだけで、Webからのダウンロードが失敗したとは判断できない。
8. モデル保存先を外付けSSDにする方法
モデルは数GBから数十GB以上になることがある。
内蔵SSDの容量を節約するため、将来的にはHugging Faceのキャッシュも外付けSSDへ移動する予定である。
設定方法の一例は以下。
export HF_HOME=/Volumes/Hanye2T/AI/mflux/huggingface
これは現在のシェルと、そのシェルから起動したプロセスに対して有効になる。
永続化する場合は、設定を ~/.zshrc などに追加する方法がある。
ただし、設定変更だけでは既存のモデルは自動的に移動されない。
また、MFLUXがどの環境変数やモデルパスを使用するかは、実行方法とバージョンに応じて確認する必要がある。
今回は画像生成を先に成功させるため、保存先の移動は後回しにした。
9. ターミナルのプロンプト表示名を変更
作業中、ターミナルに表示されるユーザー名が長く、気になった。
macOSの実際のユーザー名を変更すると、ホームディレクトリやアプリの設定に影響する可能性がある。
そこで、ユーザー名自体は変更せず、zshのプロンプト表示だけを変更することにした。
~/.zshrc に以下を追加する。
PROMPT='%F{cyan}tezzy%f %F{yellow}%~%f %# '
設定を読み込む。
source ~/.zshrc
これにより、表示を例えば次のようにできる。
tezzy ~ %
実際のユーザー名やホームディレクトリは変更されない。
10. 今回の結果
| 作業 | 結果 |
|---|---|
| Mac Studioの環境構築 | 完了 |
| Ollamaの導入 | 完了 |
| ComfyUIの導入 | 完了 |
| OllamaとComfyUIの連携 | 成功(前回) |
| MFLUXのインストール | 完了 |
| Krea 2 Turbo生成コマンドの実行 | 実施 |
| 初回モデル取得 | 401エラー |
| Hugging Face認証 | 成功 |
| Webからのモデルファイル取得 | 実施 |
| ComfyUIのlorasフォルダへの配置 | 実施 |
| MFLUX用モデル一式の配置確認 | 未確認 |
| MFLUXでの画像生成成功 | 未確認 |
| MFLUXモデルの外付けSSD移行 | 未実施 |
11. 次の作業
まずはKrea 2 Turboによる画像生成を成功させる。
確認用のプロンプトは、これまでのテストと比較しやすいように白い猫とする。
mflux-generate-krea2 \
--prompt "A white cat sitting on a beach at sunset, photorealistic" \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 8 \
-q 8
実行時にはモデルの取得や読み込みに時間がかかる場合がある。
成功後は以下を進める。
- MFLUXの画像生成時間とメモリ使用量を測定する。
- ComfyUIとの画質・速度を比較する。
- MFLUXのモデル保存先を外付けSSDに整理する。
- Krea 2、FLUX系モデルの比較を進める。
- Wan 2.2による動画生成を検証する。
- Ollamaによる日本語プロンプト生成と統合する。
12. まとめ
今回、Mac StudioにMFLUXを導入し、Krea 2 Turboを実行するための環境構築を進めた。
Hugging Faceの認証では401エラーに遭遇したが、新しい認証コマンド hf auth login を使ってログインに成功した。
画像生成モデルは非常に大きく、ダウンロード先、キャッシュ、実行環境ごとのモデル形式を理解しておく必要がある。
特に、ComfyUIとMFLUXは別の実行環境なので、モデルの保存場所を混同しないことが重要だ。
今後はApple Siliconの性能をどこまで引き出せるか、画像生成の速度と画質を比較していきたい。
13. Krea 2 Turboの画像生成に成功!
Hugging Faceの認証を完了し、MFLUXでKrea 2 Turboを再実行した。
mflux-generate-krea2 \
--prompt "A white cat sitting on a beach at sunset, photorealistic" \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 8 \
-q 8
結果は成功!
Fetching 8 files: 100%
Download complete: 30.3GB
Reconstruction complete: 35.7GB
100%|██████████| 8/8 [00:29<00:00, 3.71s/it]
Image saved successfully at: image.png
Metadata embedded successfully at: image.png
Peak MLX memory: 29.72 GB
生成画像はターミナルから直接開ける。
open image.png
白猫の画像は非常にきれいに生成された。
実測結果
| 項目 | 結果 |
|---|---|
| 実行環境 | MFLUX / MLX |
| モデル | Krea 2 Turbo |
| 量子化 | Q8 |
| 解像度 | 1024×1024 |
| ステップ | 8 |
| 初回画像生成 | 約29秒 |
| 2回目 | 約26秒 |
| ピークMLXメモリ | 29.72GB |
初回はモデルのダウンロードに約6分23秒かかった。
しかし、一度ダウンロードすれば、次回以降はキャッシュから読み込める。
Mac Studioの64GBユニファイドメモリでも、Krea 2 TurboのQ8モデルを実行できた。
14. Hugging Faceのモデルを外付けSSDへ移動
内蔵SSDは512GBしかない。
Hugging Faceのキャッシュを調べたところ、42GB使用していた。
du -sh ~/.cache/huggingface
結果:
42G /Users/tetsuyanoguchi/.cache/huggingface
内訳を調べる。
du -h -d 2 ~/.cache/huggingface | sort -h | tail -20
大部分は以下に保存されていた。
~/.cache/huggingface/hub/blobs
そこで、外付けSSDに移動することにした。
14.1 移動先を作成
mkdir -p /Volumes/Hanye2T/AI/mflux/huggingface
14.2 キャッシュをコピー
rsync -a --progress \
~/.cache/huggingface/ \
/Volumes/Hanye2T/AI/mflux/huggingface/
コピー後、容量を比較する。
du -sh \
~/.cache/huggingface \
/Volumes/Hanye2T/AI/mflux/huggingface
結果:
42G /Users/tetsuyanoguchi/.cache/huggingface
42G /Volumes/Hanye2T/AI/mflux/huggingface
14.3 保存先を変更
Hugging Faceのキャッシュ保存先は HF_HOME で指定できる。
export HF_HOME=/Volumes/Hanye2T/AI/mflux/huggingface
設定を確認する。
echo $HF_HOME
結果:
/Volumes/Hanye2T/AI/mflux/huggingface
設定を永続化する。
echo 'export HF_HOME=/Volumes/Hanye2T/AI/mflux/huggingface' >> ~/.zshrc
これで新しく開くzshでも外付けSSDを参照する。
14.4 動作確認
同じKrea 2 Turboの画像生成を実行した。
100%|██████████| 8/8 [00:26<00:00, 3.33s/it]
Image saved successfully at: image.png
Peak MLX memory: 29.72 GB
再ダウンロードなしで画像生成に成功した。
14.5 内蔵SSDのキャッシュを整理
元のキャッシュを一時的に名前変更する。
mv ~/.cache/huggingface ~/.cache/huggingface_backup
この状態で再度画像生成し、外付けSSDから正常に読み込めることを確認した。
バックアップの容量を確認する。
du -sh ~/.cache/huggingface_backup
問題がないことを確認してから削除した。
rm -r ~/.cache/huggingface_backup
このコマンドは元のキャッシュを削除するため、外付けSSDでの動作確認が完了している場合に限って実行する。
これで内蔵SSDの約42GBを解放できた。
15. OllamaとMFLUXを連携する
次の目標は、日本語を入力するだけで画像を生成すること。
これまでの画像生成では、英語のプロンプトを直接入力していた。
そこで、既存のOllamaを利用して日本語から英語プロンプトを自動生成する。
構成は次のとおり。
日本語入力
↓
Python
↓
Ollama API
↓
Qwen3 27B
↓
英語プロンプト生成
↓
MFLUX
↓
Krea 2 Turbo
↓
画像生成
↓
macOSのプレビューで表示
使用するLLMは次のとおり。
huihui_ai/Qwen3.8-abliterated:27b-q8_0
ollama list で確認する。
ollama list
結果:
NAME SIZE
huihui_ai/Qwen3.8-abliterated:27b-q8_0 29 GB
16. 日本語画像生成用Pythonスクリプト
スクリプト名は以下。
japanese_krea.py
保存場所:
/Volumes/Hanye2T/AI/mflux/japanese_krea.py
PythonからOllamaのHTTP APIを呼び出し、英語プロンプトを取得する。
MODEL = "huihui_ai/Qwen3.8-abliterated:27b-q8_0"
OLLAMA_URL = "http://127.0.0.1:11434/api/generate"
HF_HOME = "/Volumes/Hanye2T/AI/mflux/huggingface"
Ollamaには以下のJSONを送信する。
payload = {
"model": MODEL,
"stream": False,
"think": False,
"prompt": (
"You are an expert prompt writer for photorealistic image generation. "
"Convert the Japanese request into one vivid, accurate English image prompt. "
"Preserve all subjects, actions, relationships, and important details. "
"Do not invent people, objects, or story elements. "
"Output ONLY the English prompt, without quotes or explanation.\n\n"
f"Japanese request: {japanese}"
),
"options": {"temperature": 0.3},
}
取得した英語プロンプトをMFLUXに渡す。
command = [
"mflux-generate-krea2",
"--prompt", english,
"--width", "1024",
"--height", "1024",
"--seed", "42",
"--steps", "8",
"-q", "8",
]
MFLUXの処理が完了したら、画像を自動的に開く。
subprocess.run(["open", str(output)], check=False)
実行方法:
cd /Volumes/Hanye2T/AI/mflux
python3 japanese_krea.py
これで日本語を入力できる。
17. 日本語プロンプトの誤変換問題
実際に次の日本語を入力した。
太った白猫が後ろ足をだして座りタバコを吸っている
しかし、Ollamaから返ってきた英語プロンプトは次のようになった。
A photorealistic close-up of a man sitting with his
legs stretched out in front of him, casually smoking
a cigarette, natural lighting, detailed skin texture,
relaxed posture.
なんと、白猫が男性になってしまった!
画像生成AIの問題ではなく、LLMによるプロンプト変換の段階で、被写体が変わっていた。
対策
日本語から英語に変換する際のルールを強化することにした。
- 被写体の種類を変更しない。
- 色、体型、姿勢、動作を保持する。
- 元の日本語に存在しない人物や物体を勝手に追加しない。
- 写実的な表現は追加しても、元の意味を変更しない。
- 英語プロンプトだけを返す。
期待する英語プロンプトは次のようなものだ。
A fat white cat is sitting with its hind legs stretched
out in front of it, smoking a cigarette.
これにより、画像生成の前段階で起きる意味の変化を抑える。
ただし、LLMの出力なので誤訳が完全になくなるわけではない。
18. 生成前の確認を廃止
最初のPythonスクリプトでは、英語プロンプト生成後に次の確認を表示していた。
この内容で画像を生成しますか? [Y/n]:
しかし、毎回確認するのは面倒だ。
そこで、確認処理を削除した。
修正版では、日本語を入力してEnterを押すだけで、そのまま画像生成を開始する。
処理の流れは以下。
日本語入力
↓ Enter
Ollamaで英語プロンプト生成
↓
英語プロンプトを表示
↓
MFLUXで画像生成
↓
画像を自動表示
操作を減らすことで、自然な日本語による画像生成を繰り返しやすくなった。

19. 今回の成果
| 項目 | 結果 |
|---|---|
| Krea 2 Turbo | 画像生成成功 |
| MFLUX / MLX | 動作確認済み |
| 1024×1024画像生成 | 約26〜29秒 |
| ピークMLXメモリ | 29.72GB |
| Hugging Face認証 | 成功 |
| モデル保存先 | 外付けSSDへ移行完了 |
| 内蔵SSD | 約42GB解放 |
| Ollama連携 | 日本語入力スクリプト作成 |
| 日本語の誤変換 | 問題を発見し、指示文を修正 |
| 生成前の確認 | 廃止 |
| 修正版の生成結果 | 今後さらに検証 |
20. 今後の展開
これでMac Studio上に、LLMと画像生成AIを組み合わせる環境ができた。
今後は、画像生成の品質を高めるだけでなく、動画生成にも挑戦したい。
候補は以下。
- Krea 2 Turboによる高品質静止画生成
- FLUX系モデルとの画質比較
- LoRAによる表現の拡張
- Wan 2.2による動画生成
- Ollamaによるプロンプトの高度化
- 静止画から動画への変換
最終的には、日本語の自然な指示だけで、画像から動画までローカル環境で生成できる仕組みを目指す。
Mac Studioの64GBユニファイドメモリで、どこまで実現できるか楽しみだ。
前回:ローカルLLMを使う 第5回:OllamaとComfyUIを連携し、日本語から画像を自動生成する
21. Krea 2 TurboでLoRAを使う
静止画生成が成功したので、次はLoRA(Low-Rank Adaptation)による画風の変更を試した。
外付けSSDを確認したところ、LoRAファイルは合計10個あった。
/Volumes/Hanye2T/AI/ComfyDesktop/Models/loras/krea2_darkbrush.safetensors
/Volumes/Hanye2T/AI/mflux/loras/vintagetarot.safetensors
/Volumes/Hanye2T/AI/mflux/loras/rainywindow.safetensors
/Volumes/Hanye2T/AI/mflux/loras/neondrip.safetensors
/Volumes/Hanye2T/AI/mflux/loras/sunsetblur.safetensors
/Volumes/Hanye2T/AI/mflux/loras/retroanime.safetensors
/Volumes/Hanye2T/AI/mflux/loras/dotmatrix.safetensors
/Volumes/Hanye2T/AI/mflux/loras/darkbrush.safetensors
/Volumes/Hanye2T/AI/mflux/loras/softwatercolor.safetensors
/Volumes/Hanye2T/AI/mflux/loras/kidsdrawing.safetensors
ComfyUI側に1個、MFLUX側に9個。別のディレクトリに置いたままでも、MFLUXにはLoRAの絶対パスを渡せる。
21.1 LoRAを直接指定する
mflux-generate-krea2 \
--prompt "A white cat sitting on a chair" \
--lora-paths /Volumes/Hanye2T/AI/ComfyDesktop/Models/loras/krea2_darkbrush.safetensors \
--width 1024 \
--height 1024 \
--steps 8 \
-q 8
実際のログ:
Loading 1 LoRA file(s)...
Applying LoRA: krea2_darkbrush.safetensors (scale=1.0)
Applied to 264 layers (528/528 keys matched)
All LoRA weights applied successfully
LoRA weights baked successfully
100%|██████████| 8/8 [00:32<00:00, 4.09s/it]
Image saved successfully at: image_5.png
Peak MLX memory: 44.63 GB
528/528キーが一致し、LoRAの読み込みと適用に成功した。 ただし、キーが一致することと、期待した画風になることは別問題である。
最初は違いが分かりにくかったが、画風を強めて再生成すると、水彩画のような仕上がりになった。
21.2 LoRAの強度を指定する
mflux-generate-krea2 \
--prompt "A white cat sitting on a chair, dark expressive brush painting" \
--lora-paths /Volumes/Hanye2T/AI/ComfyDesktop/Models/loras/krea2_darkbrush.safetensors \
--lora-scales 1.5 \
--width 1024 \
--height 1024 \
--seed 42 \
--steps 8 \
-q 8
--lora-scales で適用強度を指定できる。ただし、画風を厳密に比較するには、プロンプト・seed・ステップ数を同一にしてLoRAの有無だけを変える必要がある。
LoRA使用時のピークMLXメモリは今回44.63GBとなり、LoRAなしで測定した29.72GBより大きかった。64GB環境ではメモリ使用量にも注意する。
22. 日本語入力をもっと使いやすくする
これまでの japanese_krea.py は、ターミナルの input() で日本語を受け付けていた。
ところが、スクリプト実行中の入力欄では、日本語をBackspaceで消すとカーソルが半文字分ずれたようになり、編集しにくかった。通常のシェルのコマンド入力では問題がなかった。
そこで、Pythonのターミナル入力をやめ、macOSのGUIダイアログで日本語を入力する方式に変更した。
初期案ではAppleScriptの display dialog を使ったが、LoRAをラジオボタンで選ぶ機能なども必要になったため、最終的にはPythonからSwift/AppKitの画面を呼び出す構成にした。
23. 日本語・LoRA・シード・強度を1つの画面に統合
改良版スクリプトの設定画面には、次の項目をまとめた。
| 項目 | 操作 |
|---|---|
| 日本語プロンプト | 複数行テキスト入力 |
| LoRA | ラジオボタンで1つ選択。「LoRAなし」も選べる |
| シード | 数値入力。初期値42 |
| LoRA強度 | 数値入力。初期値1.0 |
| 画像生成 | 画面内のボタンで実行 |
| キャンセル | 生成せず終了 |
LoRA一覧は固定文字列ではなく、次の2つのフォルダにある .safetensors ファイルから取得する。
LORA_DIR = Path("/Volumes/Hanye2T/AI/mflux/loras")
EXTRA_LORA_DIR = Path("/Volumes/Hanye2T/AI/ComfyDesktop/Models/loras")
これならLoRAを追加しても、スクリプト内の選択肢を手作業で書き換える必要がない。
実装ではPythonがSwiftコードを一時ファイルに書き出し、/usr/bin/swift で実行する。画面にはmacOS標準のAppKitを使用する。
result = subprocess.run(
["/usr/bin/swift", str(script)],
input=json.dumps(payload, ensure_ascii=False),
text=True,
capture_output=True,
check=False,
)
GUIの設定結果はJSONとしてPython側へ返す。
24. 前回の設定を記憶する
画像を何度も生成する際、毎回プロンプトやLoRAを設定し直すのは面倒だ。
そこで、以下を自動保存するようにした。
- 前回の日本語プロンプト
- 前回選択したLoRAのファイルパス
- 前回のシード
- 前回のLoRA強度
保存先:
/Volumes/Hanye2T/AI/mflux/krea_settings.json
保存データの例:
{
"prompt": "太った白猫が後ろ足を出して座り、タバコを吸っている",
"seed": 42,
"scale": 1.5,
"lora": "/Volumes/Hanye2T/AI/ComfyDesktop/Models/loras/krea2_darkbrush.safetensors"
}
次回起動時には、このJSONを読み込み、前回の文章と設定を入力画面に復元する。
日本語プロンプトは別途 last_prompt.txt にも保存する。
25. 画像ファイルを自動連番にする
MFLUXが出力した画像をそのまま使うと、ファイル名が重複したり、以前の画像と区別しにくかったりする。
そこで、生成後のファイルを次のように連番保存する処理を追加した。
krea_0001.png
krea_0002.png
krea_0003.png
...
空いている番号を探す関数は次のとおり。
def next_output_path():
i = 1
while (OUTPUT_DIR / f"krea_{i:04d}.png").exists():
i += 1
return OUTPUT_DIR / f"krea_{i:04d}.png"
生成前後のPNGファイルの更新状態を比較し、今回生成された画像を検出してリネームする方式にした。処理後は次のコマンドに相当する動作で自動表示する。
subprocess.run(["open", str(destination)], check=False)
画像の保存先も外付けSSDの /Volumes/Hanye2T/AI/mflux/ としている。
26. 日本語から画像生成までの処理
最終的な流れは次のとおり。
python3 japanese_krea.py
↓
macOS設定ダイアログ
├─ 日本語プロンプト(前回入力を復元)
├─ LoRA(ラジオボタン)
├─ シード
└─ LoRA強度
↓
設定をJSONで保存
↓
Ollama / Qwen3で英語へ変換
↓
MFLUX / Krea 2 Turbo
└─ 必要に応じてLoRAを適用
↓
PNGを連番保存
↓
画像を自動表示
実行方法は従来どおり。
cd /Volumes/Hanye2T/AI/mflux
python3 japanese_krea.py
このスクリプトはPython標準ライブラリを中心に構成し、Ollama APIにはHTTPでアクセスする。GUIにはmacOSのSwift/AppKitを利用するため、macOS専用の実装である。
なお、LoRAを使わない場合はLoRA関連オプションをMFLUXに渡さない。
27. まとめと次の課題
今回、Krea 2 TurboのLoRA適用が実際に成功し、画像の画風も変化することを確認できた。
また、japanese_krea.py は単純なターミナル入力から、GUIで一括設定できる画像生成ツールへ進化した。
| 改良内容 | 状況 |
|---|---|
| Krea 2 TurboへのLoRA適用 | 実測ログで成功を確認 |
| LoRA強度の指定 | CLIで確認 |
| 日本語入力のGUI化 | スクリプトへ実装 |
| LoRAのラジオボタン選択 | スクリプトへ実装 |
| シードの入力 | スクリプトへ実装 |
| 前回設定の保存と復元 | スクリプトへ実装 |
| PNGの自動連番保存 | スクリプトへ実装 |
| 生成画像の自動表示 | スクリプトへ実装 |
GUI統合版はMac Studioでの利用を進めているが、個々の機能の長期的な安定性や、全LoRAの互換性を保証するものではない。
次の目標は、Wanによる短い動画生成である。静止画を先に作り、それを動かす方式を試したい。Wan 2.2 TI2V-5B自体は基本的に無音の動画を生成するため、音声については別途合成する方式も検討する。
Pythonスクリプトのダウンロード
Mac Studio上で動作する、日本語対応のKrea 2 Turbo画像生成スクリプトをGitHubで公開しました。
主な機能
- 日本語入力からOllamaで英語プロンプトに変換
- LoRAをラジオボタンで選択
- シード値とLoRA強度を指定
- 前回の設定を自動保存
- 生成画像を連番で保存し、自動表示
japanese_krea.py をGitHubからダウンロード
実行方法
cd /Volumes/Hanye2T/AI/mflux
python3 japanese_krea.py
※ MFLUX、Ollama、Krea 2 Turboなどの事前セットアップが必要です。保存先やモデル名は各自の環境に合わせて変更してください。