今回の記事ではアジア人女性の画像を学習したモデルであるBRA V7で画像生成する方法を紹介します。
Google Colabを使用して簡単に実装できますので、ぜひ最後までご覧ください。
今回の内容
・Stable Diffusionとは
・BRA V7とは
・BRA V7の実装方法
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 V7とは
BRA V7は2023年10月7日に公開された、BRAシリーズの最新モデルです。
Beautiful Realistic Asians(BRA)は、実写のアジア人、特に日本人の顔の画像をリアルに生成するAIモデルです。このモデルは「Stable Diffusion」という画像生成AIで使用可能で、リアリティのあるアジア人の顔、特に女性の顔を生成する能力に優れています。BRAはフォトリアル系のモデルとして、そのリアリティと精度で知られており、リアルなアジア人風の女性の顔を生成するトレーニングが施されています。
BRAは開発が続けられ、頻繁にアップデートされています。最新バージョンはv7で、その都度、性能とリアリティが向上していると報告されています。このAIモデルは、Stable Diffusionなどの画像生成AIで非常に人気があり、新しいバージョンがリリースされるたびに、AIコミュニティやユーザーはバージョン間の比較やおすすめのプロンプトといった情報が公開されています。
BRAの主な特徴は、アジア人、特に日本人の顔を高いリアリティと精度で生成できることです。そのため、エンターテイメント、アート、研究など、さまざまな分野で利用されています。それに伴い、BRAはその性能とアップデートの頻度によって、多くのクリエイターや研究者から注目されているAIモデルです。
BRA V7の実装
ここからはGoogle colabを使用して、RA V7による画像生成を実装していきましょう。
Google colabの使い方はこちら
まずはGPUを使用できるように設定をします。
「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更
Google Drive をマウントします。
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive
必要なライブラリをインストールします。
!pip install safetensors diffusers transformers omegaconf
モデルと出力結果を保存するフォルダを作成します。
フォルダ名は変更しても問題ありません。
import os
import requests
from diffusers import StableDiffusionPipeline
def create_folder(path):
if not os.path.exists(path):
os.makedirs(path)
base_folder = 'brav7'
create_folder(base_folder)
os.chdir(base_folder)
create_folder('model')
create_folder('out')
実行すると以下のようなフォルダ構成となります。
content
└── drive
└── MyDrive
└── brav7
├── model
└── out
モデルをダウンロードして、読み込みます。
model_url = 'https://civitai.com/api/download/models/177164'
model_file_path = './model/beautifulRealistic_v7.safetensors'
if not os.path.exists(model_file_path):
response = requests.get(model_url, allow_redirects=True)
with open(model_file_path, 'wb') as file:
file.write(response.content)
print("ファイルがダウンロードされました")
else:
print("ファイルはすでに存在します")
pipeline = StableDiffusionPipeline.from_single_file(
model_file_path
).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):
index = i + 100
image = pipeline(prompt, negative_prompt=n_prompt, num_inference_steps=30).images[0]
image.save(f"./out/{index}.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):
index = i + 200
image = pipeline(prompt, negative_prompt=n_prompt, num_inference_steps=30).images[0]
image.save(f"./out/{index}.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):
index = i + 300
image = pipeline(prompt, negative_prompt=n_prompt, num_inference_steps=30).images[0]
image.save(f"./out/{index}.png")
参考情報(BRA V5)
BRA V5で画像生成する方法も紹介しています。
まとめ
最後までご覧いただきありがとうございました。
今回の記事ではBRA V7で画像生成する方法を紹介しました。