HuggingFace Diffusers 0.12 : Get Started : クイックツアー

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

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 02/04/2023 (v0.12.1)

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

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

 

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

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

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

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

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

 

HuggingFace Diffusers 0.12 : Get Started : クイックツアー

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

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

pip install --upgrade diffusers accelerate transformers
  • accelerate は推論と訓練のためにモデルロードをスピードアップします。
  • transformersStable Diffusion のような最もポピュラーな拡散モデルを実行するために必要です。

 

DiffusionPipeline

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

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

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

  • テキスト誘導画像-to-画像変換 – テキストプロンプトによりガイドされた画像を適応させます
    img2img

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

  • テキスト誘導深度-to-画像変換 – 深度推定を通して構造を保持しながら、テキストプロンプトでガイドされた画像の一部を適応させます。
    depth2image

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

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

Stable Diffusion については、モデルを実行する前にその ライセンス を注意深く読んでください。これは、モデルの改良された画像生成機能と (それで生成できるかもしれない) 潜在的に有害なコンテンツによります。例えば runwayml/stable-diffusion-v1-5 のような選択した stable diffusion モデルに進み、ライセンスを読んでください。

You can load the model as follows:

from diffusers import DiffusionPipeline

pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

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

pipeline.to("cuda")

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

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

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

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

image.save("image_of_squirrel_painting.png")

Note : 次によって重みをダウンロードしてローカルでパイプラインを使用することもできます :

git lfs install
git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

それからセーブされた重みをパイプラインにロードします。

pipeline = DiffusionPipeline.from_pretrained("./stable-diffusion-v1-5")

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

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 で動作しますが、別のスケジューラを使用することは非常に簡単です。例えば、代わりに EulerDiscreteScheduler スケジューラを使用したい場合、次のようにそれを使用できるでしょう :

from diffusers import EulerDiscreteScheduler

pipeline = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

# change scheduler to Euler
pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

For more in-detail information on how to change between schedulers, please refer to the Using Schedulers guide.

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

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

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

最後に、生成画像を一般に配布するときには慎重に考えてください 🤗

 

以上