今回の記事ではアジア人女性の画像を学習したモデルであるBRA V5で画像生成する方法を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。
今回の内容
・Stable Diffusionとは
・BRA V5とは
・BRA V5の実装方法
Stable Diffusionとは
Stable Diffusionは、2022年にリリースされた深層学習に基づく革新的なテキストから画像への生成モデルです。これは、スタートアップ企業のStability AIと多くの学術研究者、非営利組織の共同作業により開発されました。このモデルは、テキストの説明に基づいて詳細な画像を生成する主要な用途を持つ一方で、画像の補完(inpainting)、画像の拡張(outpainting)、テキストプロンプトによってガイドされた画像から画像への変換(image-to-image translations)などの他のタスクにも適用可能です。
Stable Diffusionの特性とアーキテクチャ
Stable Diffusionは「潜在拡散モデル」(latent diffusion model)という深層生成型ニューラルネットワークの一種で、そのソースコードとモデルの重みは公開されています。8GB以上のVRAMを持つ一般的なGPU搭載ハードウェアで動作します。これは以前のモデルがクラウドサービスを介してのみアクセス可能だったのとは異なる特性です。
Stable Diffusionのアーキテクチャは三つの主要な部分から構成されています: 変分オートエンコーダ(VAE)、U-Net、そしてオプショナルなテキストエンコーダです。変分オートエンコーダ(VAE): VAEエンコーダは画像をピクセル空間からより小さな次元の潜在空間に圧縮します。これにより、画像の基本的なセマンティックな意味を捉えます。U-Net: U-NetブロックはResNetバックボーンで構成され、前方拡散からの出力をノイズ除去して潜在表現を得ます。テキストエンコーダ: テキストに条件付けするために、CLIP ViT-L/14テキストエンコーダが使用されてテキストプロンプトをエンベディング空間に変換します。
Stable Diffusionの開発
Stable Diffusionの開発は、Stability AIが資金提供し、形成しました。その技術的なライセンスは、ミュンヘンのルートヴィヒ・マクシミリアン大学のCompVisグループによってリリースされました。開発は、RunwayのPatrick EsserとCompVisのRobin Rombachが率い、これらの研究者はStable Diffusionで使用される潜在拡散モデルのアーキテクチャを以前に発明した人々の中にいます。
Stable Diffusionの訓練は、LAION-5Bという公開データセットから取得された画像とキャプションのペアに対して訓練されました。このデータセットは、ウェブからスクレイプしたCommon Crawlデータから派生したもので、50億組の画像-テキストペアが言語に基づいて分類され、解像度、ウォーターマークの含有可能性の予測、および「美的」スコア(例えば、主観的な視覚的品質)の予測によって別々のデータセットに分けられました。
関連情報
https://huggingface.co/blog/stable_diffusion
https://huggingface.co/spaces/stabilityai/stable-diffusion
BRA V5とは
BRA(Beautiful Realistic Asians)V5は、AI画像生成の分野で注目を浴びるモデルの一つであり、Stable Diffusionという技術を利用しています。このモデルの特徴は、アジア人、特に日本人の女性を描くことに優れている点にあります。その結果、非常にリアルなイラストを生成することが可能となっています。
BRA V5は2023年5月6日に公開され、その後も定期的にアップデートが行われ、モデルの進化が続けられています。しかし、全ての面で前バージョンからの改善が見られるわけではありません。具体的には、手や足の描写については、一部のユーザーからV4版の方が優れていたとの意見も報告されています。
それでも、BRA V5は美しい日本人女性を描くのに適したモデルであり、ユーザーの好みに合わせてイラストを生成する能力を持っています。これにより、利用者は自分だけの作品を創出することが可能となります。このモデルはCivitaiからダウンロードできます。
BRA V5の実装
ここからはGoogle colabを使用して、RA V5による画像生成を実装していきましょう。
Google colabの使い方はこちら
まずはGPUを使用できるように設定をします。
「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更
必要なライブラリをインストールします。
!pip install safetensors diffusers transformers omegaconf
モデルをダウンロードします。
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_single_file("https://huggingface.co/BanKaiPls/AsianModel/blob/main/BRAV5finalfp16.safetensors").to("cuda")
画像生成例①
まずは「Best quality,Masterpiece,1 girl,japanese,cute face,skirt,detailed face,outdoor」というプロンプトを与えて画像生成してみます。
#プロンプト
prompt = "Best quality,Masterpiece,1 girl,japanese,cute face,skirt,detailed face,outdoor,"
#ネガティブプロンプト
n_prompt = "(worst quality:1.4), watermark, text"
#生成枚数
num_images = 3
#画像を生成
for i in range(num_images):
#推論を実行
image = pipe(prompt, negative_prompt=n_prompt, height=768, width=512).images[0]
image.save(f"{i}.png")
画像生成例②
#プロンプト
prompt = "Best quality,Masterpiece,1 girl,japanese,cute face,skirt,detailed face,bangs,beach"
#ネガティブプロンプト
n_prompt = "(worst quality:1.4), watermark, text"
#生成枚数
num_images = 3
#画像を生成
for i in range(num_images):
#推論を実行
image = pipe(prompt, negative_prompt=n_prompt, height=768, width=512).images[0]
image.save(f"{i}.png")
画像生成例③
#プロンプト
prompt = "Best quality,Masterpiece,1 girl,japanese,cute face,skirt,outdoor"
#ネガティブプロンプト
n_prompt = "(worst quality:1.4), watermark, text"
#生成枚数
num_images = 3
#画像を生成
for i in range(num_images):
#推論を実行
image = pipe(prompt, negative_prompt=n_prompt, height=768, width=512).images[0]
image.save(f"{i}.png")
まとめ
最後までご覧いただきありがとうございました。
今回の記事ではBRA V5で画像生成する方法を紹介しました。