⚠️【重要】現在、検証を停止しています
FHDR-Uncensored-MFLUXで画像生成に不具合が発生しています
標準FLUX.1 devは正常に動作しますが、FHDRモデルでは紫色の画像が生成されるため、現在は利用を推奨しません。
はじめに
前回(第6回)は、Mac StudioにMFLUXを導入し、Krea 2 Turboでの画像生成に成功した。Ollamaによる日本語から英語プロンプトへの変換、LoRAの適用、Swift/AppKitを使った設定画面も作った。
しかし、LoRAで画風を変えても、欲しい品質や表現が安定して得られるとは限らなかった。そこで今回は、LoRAだけに頼らずモデル本体を変更する。
目標は次の3つ。
- Apple Siliconで高速に動く
- 写実的で高品質な画像を生成できる
- 表現上の制限が少なく、プロンプトへの忠実度を高められる
検討の結果、PocketAiHub/FHDR-Uncensored-MFLUX を試した。モデル名の Uncensored は配布側の位置づけであり、あらゆる画像が生成できることや品質を保証するものではない。この記事ではモデルの導入と動作検証を扱う。
1. 使用環境
| 項目 | 構成 |
|---|---|
| コンピュータ | Mac Studio(Apple Silicon M5系) |
| ユニファイドメモリ | 64GB |
| 内蔵SSD | 512GB |
| 外付けSSD | Hanye 2TB(USB4) |
| 画像生成 | MFLUX / MLX |
| 日本語処理 | Ollama + Qwen3系27Bモデル |
| Pythonツール管理 | uv |
MFLUXやOllamaの導入方法は第6回を参照。今回、既存のKrea 2 Turbo環境は削除しない。
2. モデルを選ぶ
当初は shauray/flux.1-dev-uncensored-q4 も候補だった。しかし、量子化方式がNF4のモデルを、そのままMLX/MFLUXの4bitモデルとして読み込めるわけではない。
Macでの運用を優先して、MFLUX向けに公開されている次のモデルを選んだ。
- PocketAiHub/FHDR-Uncensored-MFLUX(Hugging Face)
- FLUX.1 dev系
- MFLUX向けの4bit量子化モデル
- モデルデータ:約9.6GB(配布ページ記載値)
ここで重要なのは、「4bit」という数字だけで互換性を判断しないこと。NF4とMLXの量子化形式は同一ではない。
3. モデルキャッシュを外付けSSDに保存する
第6回でHugging Faceのキャッシュを外付けSSDに移しているため、今回も同じ保存先を利用する。
export HF_HOME=/Volumes/Hanye2T/AI/mflux/huggingface
確認する。
echo "$HF_HOME"
期待する表示:
/Volumes/Hanye2T/AI/mflux/huggingface
これをモデルを起動する前に設定する。新しいモデルは既存のKrea 2 Turboと別のキャッシュとして取得されるため、Kreaを消す必要はない。~/.zshrc に設定済みなら通常は再設定不要だが、念のため確認する。
4. まずはコマンドラインで動作確認
Pythonスクリプトを改造する前に、MFLUX単体で画像生成できるか確認した。
mflux-generate \
--model PocketAiHub/FHDR-Uncensored-MFLUX \
--base-model dev \
--prompt "A cinematic portrait of an adult woman in soft window light, detailed skin texture, 85mm lens" \
--width 1024 \
--height 1024 \
--steps 20 \
--guidance 4.0 \
--seed 42 \
--output flux_test.png
初回はモデルのダウンロードが発生する。ダウンロード時間は回線やキャッシュの状態によって変わる。
この単独テストでは画像生成に成功した。まず単体で成功させてからPythonに組み込むと、問題の切り分けが容易になる。
5. 日本語入力スクリプトへ組み込む
第6回の japanese_krea.py は、PythonからOllamaのAPIを呼び出して英語プロンプトを作り、MFLUXに渡す構成だった。
今回は既存のKrea用スクリプトを残し、FLUX用に別名のファイルを用意した。
japanese_krea.py # Krea 2 Turbo用(残す)
japanese_krea_nfsw.py # FLUX.1 dev用(新規)
nfsw は今回実際に使用したファイル名である。一般的な略記は NSFW だが、ここでは作業中の名前をそのまま記載する。
処理の流れは次のとおり。
日本語を入力
↓
Swift/AppKitの設定ダイアログ
↓
Ollama / Qwen3で英語へ変換
↓
MFLUX / FLUX.1 dev
↓
PNGを連番保存
↓
macOSで自動表示
実行例:
cd /Volumes/Hanye2T/dev/GitHub/japanese-krea
python3 japanese_krea_nfsw.py
実際の保存先は実行時のカレントディレクトリとし、flux_0001.png のような連番を付ける。
6. 紫一色の画像が出た!
FLUX用のPythonスクリプトで、40ステップの生成を実行した。ログ上はエラーなく終了し、PNGファイルも保存された。
100% | 40/40 [01:44, 2.61s/it]
Image saved successfully at: flux_0001.png
Peak MLX memory: 19.09 GB
ところが、開いた画像は薄い紫一色だった。
ログに Image saved successfully と出ても、意図した画像が生成できているとは限らない。
実行コマンドを確認すると、Python側に次のコードがあった。
"--guidance", str(lora_scale),
これはKrea用のLoRA強度に関する変数名をFLUX用スクリプトへ流用してしまったものだった。--guidance はLoRAの適用強度とは別のパラメータである。
そこで、まずは単体実行で成功した値に固定して再検証した。
"--guidance", "4.0",
修正後、正常な画像が生成された。今回の切り分けでは、Guidanceの指定が重要な確認箇所だった。ただし、薄紫一色の原因を一般的にこの1点へ断定できるわけではない。
7. 実測結果
| 項目 | Krea 2 Turbo | FHDR-Uncensored FLUX.1 dev |
|---|---|---|
| 実行環境 | MFLUX / MLX | MFLUX / MLX |
| 量子化 | Q8 | 4bit |
| 解像度 | 1024×1024 | 1024×1024 |
| ステップ数 | 8 | 40 |
| 生成時間 | 約26〜29秒 | 約104秒 |
| ピークMLXメモリ | 29.72GB | 19.09GB |
| 結果 | 画像生成成功 | Guidance修正後に成功 |
※ これは同一条件のベンチマークではない。モデルも量子化もステップ数も異なるため、単純に速度や画質の優劣を決める比較ではない。
今回のFLUXは40ステップで約1分44秒。Kreaの8ステップより時間はかかったが、FLUX側ではモデルと設定の違いを試せるようになった。
8. 高品質化に向けて
今回の経験で分かったのは、LoRAを増やせば必ず望む画像になるわけではない、ということだ。
- モデル本体:人物や肌、構図などの表現傾向に影響する
- プロンプト:被写体、年齢、衣服、照明などを明確に指定する
- Guidance:指示への追従と画像の仕上がりに影響する
- ステップ数:品質と処理時間のバランスに関わる
- シード:比較時に条件を揃えるのに役立つ
特に日本語入力では、Ollamaが元の指示を勝手に変えないようにすることが重要だ。以前は「白猫」が英訳の段階で「男性」になったこともあった。画像モデルだけでなく、日本語→英語変換の出力も確認する必要がある。
9. 今後の課題
次は、FLUX用の設定ダイアログからGuidanceを指定できるようにし、値を保存・復元できるようにしたい。また、同一プロンプト・同一解像度で、ステップ数やGuidanceを変えた比較を進める。
モデルがUncensoredを掲げていることと、出力品質が高いことは別の話だ。利用時には配布元のライセンスや公開先の規約、肖像権なども確認する。
10. まとめ
今回は、Krea 2 TurboのLoRA調整から一歩進み、Apple Silicon向けのFLUX.1 dev系モデルをMFLUXで動かした。
- Krea 2 Turboは削除せず、そのまま残した
- Hugging Faceキャッシュは外付けSSDを継続利用
- FLUX.1 dev系4bitモデルで1024×1024画像を生成
- 40ステップ、約104秒、ピークMLXメモリ19.09GBを計測
- 紫一色の出力を経験し、Guidance指定を修正して解消
- Ollamaによる日本語入力ワークフローをFLUXにも展開
高画質を目指すなら、LoRAだけでなくモデル本体と生成パラメータを見直すことが重要だと実感した。
前回:ローカルLLMを使う 第6回:Mac StudioにMFLUXを導入し、Krea 2 Turboの画像生成に挑戦する
モデル:PocketAiHub/FHDR-Uncensored-MFLUX
GitHub:japanese-krea(FLUX用スクリプトの公開状況はリポジトリで確認してください)