HuggingFace Diffusers 0.8 : リリースノート – Versatile Diffusion

HuggingFace Diffusers 0.8 : リリースノート – Versatile Diffusion (翻訳/解説)

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

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

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

 

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

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

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

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

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

 

HuggingFace Diffusers 0.8 : Versatile Diffusion – テキスト, 画像 & バリエーション All in One Diffusion モデル

🙆‍♀️ New Models

VersatileDiffusion

SHI-Labs により公開された VersatileDiffusion は統一された (unified) マルチフロー・マルチモーダル拡散モデルで、text2image, 画像バリエーション, dual-guided (text+image) 画像生成, image2text のような複数のタスクを遂行することができます。

  • [Versatile Diffusion] Add versatile diffusion model by @patrickvonplaten @anton-l #1283
    Make sure to install transformers from “main”:

    pip install git+https://github.com/huggingface/transformers
    

Then you can run:

from diffusers import VersatileDiffusionPipeline
import torch
import requests
from io import BytesIO
from PIL import Image

pipe = VersatileDiffusionPipeline.from_pretrained("shi-labs/versatile-diffusion", torch_dtype=torch.float16)
pipe = pipe.to("cuda")

# initial image
url = "https://huggingface.co/datasets/diffusers/images/resolve/main/benz.jpg"
response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

# prompt
prompt = "a red car"

# text to image
image = pipe.text_to_image(prompt).images[0]

# image variation
image = pipe.image_variation(image).images[0]

# image variation
image = pipe.dual_guided(prompt, image).images[0]

More in-depth details can be found on:

 

AltDiffusion

AltDiffusion は多言語対応の潜在的拡散モデルで、9 つの異なる言語に対してテキスト-to-画像生成をサポートしています : 英語、中国語、スペイン語、フランス語、日本語、韓国語、アラビア語、ロシア語そしてイタリア語です。

  • Add AltDiffusion by @patrickvonplaten @patil-suraj #1299

 

Stable Diffusion Image Variations

@justinpinkney による StableDiffusionImageVariationPipeline は入力として画像を取り、その画像のバリエーションを生成する stable diffusion です。それはテキストの代わりに CLIP 画像埋め込みで条件付けされています。

  • StableDiffusionImageVariationPipeline by @patil-suraj #1365

 

Safe Latent Diffusion

ml-research@TUDarmstadt グループにより公開された Safe Latent Diffusion (SLD) は迷惑な (unsolicited) コンテンツが拡散モデルから生成されることを防ぐための実用的で洗練された新しいアプローチです。One of the authors of the research contributed their implementation to diffusers.

  • Add Safe Stable Diffusion Pipeline by @manuelbrack #1244

 

VQ-Diffusion with classifier-free sampling

vq diffusion classifier free sampling by @williamberman #1294

 

LDM 超解像度

LDM 超解像度 は CompVis により公開された潜在的 4x 超解像度拡散モデルです。

  • Add LDM Super Resolution pipeline by @duongna21 #1116

 

CycleDiffusion

CycleDiffusion は画像-to-画像編集のためにテキスト-to-画像変換拡散モデルを使用する手法です。それは以下が可能です :

  1. Stable Diffusion のようなテキスト-to-画像変換拡散モデルを使用したゼロショット画像-to-画像変換 (translation)。

  2. 2 つの関連するドメインで訓練された拡散モデルを使用した従来の非対称 (unpaired) 画像-to-画像変換。
  • Add CycleDiffusion pipeline using Stable Diffusion by @ChenWu98 #888

 

CLIPSeg + StableDiffusionInpainting

セグメンテーションを使用してマスクを自動生成するために CLIPSeg を使用してから Stable Diffusion インペインティングを適用します。

 

K-Diffusion wrapper

K-Diffusion はコミュニティ・パイプラインで、diffusers モデルで K-diffusion の任意のサンプラーを使用可能にします。

  • [Community Pipelines] K-Diffusion Pipeline by @patrickvonplaten #1360

 

🌀New SOTA Scheduler

DPMSolverMultistepScheduler は DPM-Solver++ の 🧨 diffusers 実装で、論文の著者の一人により contribute された最先端のスケジューラです。このスケジューラは僅か 20 ステップでも素晴らしい品質を実現できます。それはデフォルトの Stable Diffusion スケジューラの取り替え可能な代替ですので、実質的に半分の生成時間のためにそれを使用できます。それは非常に上手く動作するので Stable Diffusion デモ Spaces のために採用しました : https://huggingface.co/spaces/stabilityai/stable-diffusion, https://huggingface.co/spaces/runwayml/stable-diffusion-v1-5.

You can use it like this:

from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler

repo_id = "runwayml/stable-diffusion-v1-5"
scheduler = DPMSolverMultistepScheduler.from_pretrained(repo_id, subfolder="scheduler")
stable_diffusion = DiffusionPipeline.from_pretrained(repo_id, scheduler=scheduler)

 

🌐 Better スケジューラ API

上記の例はまた新しい API を使用してスケジューラをロードする方法を実演しています、これはモデルのロードと首尾一貫していて従って、より自然で直感的です。

上で示されたように from_pretrained を使用してスケジューラをロードするか、既存のスケジューラ configuration からインスタンス化することもできます。これは以前にロードされたパイプラインのスケジューラを置き換える方法です :

from diffusers import DiffusionPipeline, EulerDiscreteScheduler

pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipeline.scheduler = DDIMScheduler.from_config(pipeline.scheduler.config)

Read more about these changes in the documentation. See also the community pipeline that allows using any of the K-diffusion samplers with diffusers, as mentioned above!

 

🎉 Performance

私たちはパフォーマンス最適化とメモリ削減テクニックを 🧨 diffusers に組み込む作業を執拗に (relentlessly) 行っています。このリリースで最も特筆すべき組み込みの 2 つはこれらです :

  • xFormers がインストールされている場合、デフォルトでメモリ効率的なアテンションを有効にします。
  • 可能な場合、batched-matmul を使用する。

 

🎁 Quality of Life improvements

  • Fix/Enable all schedulers for in-painting
  • Easier loading of local pipelines
  • cpu offloading: mutli GPU support

 

以上