SDXLで高品質な画像を生成する
StableDiffusionの最新モデルであるSDXLを使用して高品質な画像を生成する方法を解説します。
SDXLについて
SDXLはstability.aiが開発した最新の画像生成モデルです。
SDXLはStableDiffusion 1.5に比べて3倍のパラメータのUNetバックボーンを使用するとともに、潜在空間の解像度を64x64から128x128に、生成画像の解像度を512x512から1024x1024に拡大しています。
SDXLはSD1.5に比べて主観品質が大幅に向上しています。
SDXLはbaseモデルとrefinerモデルの2モデル構成ですが、baseモデルだけでも使用可能です。本記事では、baseモデルのみを使用します。
StableDiffusionWebUIからSDXLを使用する
2023/07/27のStableDiffusionWebUIのmasterでSDXLに対応済みです。StableDiffusionWebUI自体の使い方は過去のBLOGを参照してください。SDXLを使用するため、git pullすることで最新版にします。
sd_xl_base_1.0.safetensorsをダウンロードしてmodels/Stable-diffusionに配置します。容量は6.7GBで、StableDiffusion1.5の4.1GBよりも大きくなっています。
WebUIのモデルリストからSDXLを選択し、生成解像度を1024に設定、SettingsにVAEを設定していた場合はNoneに設定します。
プロンプトには「cosplay girl in tokyo, hatsune miku」を使用しました。
生成した画像は下記になります。非常に高品質です。
比較用にStableDiffusion1.5で同じプロンプトで生成した画像は下記となります。
ただし、RTX3080を使用した場合、StableDiffusion 1.5では3秒程度で生成できる画像が、SDXLでは30秒程度必要です。
なお、StableDifffusionWebUIのdevブランチでは、refinerモデル対応も進んでいます。もう少ししたらrefinerモデルも後処理に使用できるかと思います。
Koyha’s UIでLoRAを作成する
Kohya’s UIは2023/08/21にdev2ブランチにSDXL対応がマージされています。Kohya’s UI自体の使用方法は過去のBLOGを参照してください。
Kohya’s UIでSDXLのLoRAを作る方法のチュートリアルは下記の動画になります。
SDXL対応版を使用するため、gitでdev2ブランチに切り替え、venvフォルダを削除した後、setup.batを再実行します。なお、venvフォルダを削除してsetup.batを再実行しない場合、「AttributeError: module ‘tensorflow’ has no attribute ‘io’」というエラーが発生することがあります。
モデルタイプはCustomを設定し、SDXLのsafetensorを指定し、SDXL Modelにチェックを入れます。
学習元の画像と、出力先フォルダを指定、Epochsを5に変更し、学習を行います。
学習時間は11枚の画像を5Epochで1時間程度です。StableDiffusion1.5だと6分程度なため、学習時間は長くなっています。作成したLoRAのファイルサイズは56MBです。StableDiffusion1.5だと9.3MB程度なため、こちらも大きくなっています。学習時、VRAMは9.8GB使用します。
作成したLoRAをStableDiffusionWebUIのmodels/Loraフォルダにコピーして推論します。
Promptには学習に使用したフォルダ名を入れます。今回は、「unitychan <lora:sdxl:1>」を使用しました。
非常に高品質なUnity Chanが生成できました。
(© Unity Technologies Japan/UCL)
まとめ
SDXLを使用して高品質な画像が生成できることを確認しました。また、SDXL向けのLoRAを作成し、特定の絵柄の高品質な画像が生成できることを確認しました。
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。