HuggingFace Diffusers 0.3 : Getting Started : クイックツアー

HuggingFace Diffusers 0.3 : Getting Started : クイックツアー (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 09/27/2022 (v0.3.0)

* 本ページは、HuggingFace Diffusers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

 

HuggingFace Diffusers 0.3 : Getting Started : クイックツアー

Get up and running with 🧨 Diffusers quickly! 貴方が開発者であれ日常的なユーザであれ、このクイックツアーは貴方が始めることを手助けして、推論のために DiffusionPipeline を使用する方法を紹介します。

始める前に、すべての必要なライブラリがインストールされていることを確認してください :

pip install --upgrade diffusers

 

DiffusionPipeline

DiffusionPipeline は推論のために事前訓練済みの拡散システムを使用する最も簡単な方法です。様々なモダリティに渡る多くのタスクに対して DiffusionPipeline をそのままで利用できます。幾つかのサポートされるタスクについて下のテーブルを見てください :

  • (タスク) 条件なし画像生成 – ガウスノイズから画像を生成する
    (パイプライン) unconditional_image_generation

  • テキスト Guided 画像生成 – テキストプロンプトが与えられたとき画像を生成する
    conditional_image_generation

  • テキスト Guided 画像-to-画像変換 – 元画像とテキストプロンプトが与えられたとき画像を生成する
    img2img

  • テキスト Guided 画像インペインティング – 画像、マスクとテキストプロンプトが与えられたとき、画像のマスクされた部分を埋める。
    inpaint

拡散パイプラインが様々なタスクに対してどのように機能するかの詳細な情報については、Using Diffusers セクションを見てください。

例として、DiffusionPipeline のインスタンスを作成することから始めて、どのパイプライン・チェックポイントをダウンロードしたいかを指定します。任意の Diffusers のチェックポイント に対して DiffusionPipeline を使用できます。このガイドではしかし、Latent Diffusion によるテキスト-to-画像生成のために DiffusionPipeline を使用します。

from diffusers import DiffusionPipeline

generator = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")

DiffusionPipeline はモデリング、トークン化とスケジューリング・コンポーネントのすべてをダウンロードしてキャッシュします。モデルはおよそ 14 億のパラメータから構成されていますので、それを GPU で実行することを強く勧めます。ちょうど PyTorch でのように、generator オブジェクトを GPU に移動できます。

generator.to("cuda")

そして貴方のテキストプロンプトで generator を使用できます :

image = generator("An image of a squirrel in Picasso style").images[0]

出力はデフォルトでは PIL Image オブジェクトにラップされます。

単純に次を呼び出すことで画像をセーブできます :

image.save("image_of_squirrel_painting.png")

 
Stable Diffusion のようなより上位のモデルは実行する前に ライセンス の承諾を貴方に要求します。これはモデルの改良された画像生成能力と (それで生成できるかもしれない) 潜在的に有害なコンテンツによるものです。手短に言えば : 選択した stable diffusion モデル e.g. CompVis/stable-diffusion-v1-4 に進み、モデルへのアクセスを得るためにライセンスを読み通してアクセプトをクリックします。貴方は 🤗 Hugging Face ハブの登録ユーザである必要があり、コードを動作させるにはアクセストークンを使用する必要もあります。アクセストークンの詳細については、ドキュメントのこのセクション を参照してください。ライセンスを “click-accepted” したら、トークンをセーブできます :

AUTH_TOKEN = "<please-fill-with-your-token>"

そして前のように CompVis/stable-diffusion-v1-4 をロードできますが、貴方の AUTH_TOKEN を渡す必要だけがあります :

from diffusers import DiffusionPipeline

generator = DiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=AUTH_TOKEN)

貴方の認証トークンを渡さない場合、拡散システムは正常にダウンロードされないことが分かるでしょう。ユーザに認証トークンを渡すことを強制することは、ユーザがライセンスを実際に読んで承諾したことを検証できることを保証します、これはまたインターネット接続が必要であることも意味します。

Note : 認証トークンを渡すことを強制されることを望まない場合、次によって単純に重みをローカルにダウンロードすることができます :

git lfs install
git clone https://huggingface.co/CompVis/stable-diffusion-v1-4

それからローカルにセーブされた重みをパイプラインにロードします。この方法では、認証トークンを渡す必要はありません。”./stable-diffusion-v1-4″ がクローンされた stable-diffusion-v1-4 レポジトリへのローカルパスであるとすると、以下のようにパイプラインをロードすることもできます :

generator = DiffusionPipeline.from_pretrained("./stable-diffusion-v1-4")

そしてパイプラインの実行は上のコードと同一です、それは同じモデルアーキテクチャであるからです。

generator.to("cuda")
image = generator("An image of a squirrel in Picasso style").images[0]
image.save("image_of_squirrel_painting.png")

拡散システムはそれぞれが長所短所を持つ複数の異なる スケジューラ で利用できます。デフォルトでは、Stable Diffusion は PNDMScheduler で動作しますが、別のスケジューラを使用することは非常に簡単です。例えば、代わりに LMSDiscreteScheduler スケジューラを使用したい場合、次のようにそれを使用できるでしょう :

from diffusers import LMSDiscreteScheduler

scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear")

generator = StableDiffusionPipeline.from_pretrained(
    "CompVis/stable-diffusion-v1-4", scheduler=scheduler, use_auth_token=AUTH_TOKEN
)

Stability AI の Stable Diffusion モデルは印象的な画像生成モデルで、単にテキストから画像を生成する以上のことを行なうことができます。ドキュメントページ全体を、ここ では Stable Diffusion のためだけに使用しました。

より少ないメモリで、より速い推論スピード、Mac のような特定のハードウェアで、あるいは ONNX ランタイム で実行するために Stable Diffusion を最適化する方法を知りたいのであれば、最適化ページを見てください :

貴方の拡散モデルを微調整や訓練したい場合には、training セクション を見てください。

最後に、生成画像を一般に配布するときには慎重に考えてください。((訳注: 原文) Finally, please be considerate when distributing generated images publicly.) 🤗

 

以上