AIペイント導入~安定拡散(ハグフェイスAPI画像生成初体験)

序章

最近、様々な大御所がAIを使って生成した神絵をあちこちで見かけるようになったので、単純にネット上からデータを集めて展開し、AI絵の魅力を体験してみました。この記事では、huggingface API に基づいて colab 上に AI ペイントを構築します。

使用手順

1.Huggingface の元の環境アドレス

https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb#scrollTo=AAVZStIokTVv

2. colab GPU リソースを構成する

右上隅の[接続]
ここに画像の説明を挿入
。初期化が完了したら、ここをクリックして GPU リソースを割り当てます。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここで環境が初期化されます。!nvidia-smi を実行して、割り当てられた GPU 構成を表示します。通常、K80、T4、 P100、V100。幸運にも V100 マシンに割り当てられれば、画像の生成ははるかに高速になります。
ここに画像の説明を挿入

3. サードパーティのライブラリをインストールする

ディフューザー、scipy、ftfy、transformers などの関連する依存ライブラリをインストールし、アクセラレーションします。


ここに画像の説明を挿入

4. モデルをロードする

主流のモデルは次のとおりです。
CompVis/stable-diffusion-v1-4
runwayml/stable-diffusion-v1-5
stackingai/stable-diffusion-2-1-base
statusai/stable-diffusion-2-1
各モデルを読み込むことができます構成を変更することによって。生成された画像の複数のセットを比較すると、V2 バージョンの全体的な効果は V1 よりも優れており、生成された画像の品質も優れていますが、リソースの消費量は比較的高くなります。
ここに画像の説明を挿入
モデルロードcuda。
ここに画像の説明を挿入

5. 画像生成

プロンプトを変更して必要な画像を生成します
ここに画像の説明を挿入
ここに画像の説明を挿入

6. 複数の画像の生成

同じテキスト プロンプトに対して複数の画像を生成する場合は、同じテキストを複数回入力するだけです。テキストのリストをモデルに送信できます。複数の画像を表示するヘルパー関数を作成しましょう

from PIL import Image

def image_grid(imgs, rows, cols):
    assert len(imgs) == rows*cols

    w, h = imgs[0].size
    grid = Image.new('RGB', size=(cols*w, rows*h))
    grid_w, grid_h = grid.size
    
    for i, img in enumerate(imgs):
        grid.paste(img, box=(i%cols*w, i//cols*h))
    return grid
num_images = 3
prompt = ["a photograph of an astronaut riding a horse"] * num_images

images = pipe(prompt).images

grid = image_grid(images, rows=1, cols=3)
grid

ここに画像の説明を挿入

n*m 個の画像を生成することもできます。

num_cols = 3
num_rows = 2

prompt = ["a photograph of an astronaut riding a horse"] * num_cols

all_images = []
for i in range(num_rows):
  images = pipe(prompt).images
  all_images.extend(images)

grid = image_grid(all_images, rows=num_rows, cols=num_cols)
grid

ここに画像の説明を挿入

7. パラメータの設定

ランダムシード

上記のセルを複数回実行すると、毎回異なる画像が表示されます。決定的な出力が必要な場合は、ランダム シードをパイプラインに渡すことができます。同じシードを使用すると、毎回同じ画像結果が得られます。

import torch

generator = torch.Generator("cuda").manual_seed(1024)

image = pipe(prompt, generator=generator).images[0]

image

反復

推論ステップの数は、num_inference_steps パラメーターで変更できます。一般に、使用するステップが多いほど、結果は良くなります。最新モデルの 1 つである Stable Diffusion は、比較的少ないステップ数でうまく動作するため、デフォルト値の 50 が推奨されます。より迅速な結果が必要な場合は、より小さい数値を使用できます。

import torch

generator = torch.Generator("cuda").manual_seed(1024)

image = pipe(prompt, num_inference_steps=15, generator=generator).images[0]

image

生成される画像の高さと幅

生成される画像のサイズは、高さと幅によって制御されます。

import torch

image = pipe(prompt, height=512, width=512).images[0]

image

ガイダンス_スケール

条件付き信号 (この場合はテキスト) への準拠性とサンプル全体の品質を高める方法。簡単に言えば、分類子を使用しないガイダンスにより、より適切な一致キューの生成が強制されます。デフォルト値は 7.5 です。あまりに大きな数を使用すると、画像は良く見えますが、種類は減ります。

import torch

image = pipe(prompt, guidance_scale=7.5).images[0]

image

サンプル表示

東アフリカの風景、非常に詳細な、デジタルペインティング、コンセプトアート、シャープフォーカス、映画のような照明、ファンタジー、複雑な、エレガント、リアルな、フォトリアリスティック、図、滑らかな
ここに画像の説明を挿入

ファイナルファンタジー 3DS のレフィア、窓から少し悲しそうに見つめるレフィア、非常に詳細なデジタル絵画、8k 解像度の
ここに画像の説明を挿入
ヨーロッパとアメリカの美しさ、良い姿、とても美しい、魅力的、8k
ここに画像の説明を挿入
のかわいいミニメカ、ちび、ディズニースタイル、マンガスタイル、 UHD、HDR、4K、8K
ここに画像の説明を挿入
キュートで愛らしい漫画のふわふわの赤ちゃんレア、ファンタジー、夢のような、シュールレアリズム、超かわいい、artstation のトレンド、8k
ここに画像の説明を挿入
以上。

Acho que você gosta

Origin blog.csdn.net/qq_43188358/article/details/128756071
Recomendado
Clasificación