HuggingFace Diffusers 0.8 : リリースノート – Versatile Diffusion (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 02/02/2023 (v0.8.0 – 11/24/2022)
* 本ページは、HuggingFace Diffusers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく 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-画像変換拡散モデルを使用する手法です。それは以下が可能です :
- Stable Diffusion のようなテキスト-to-画像変換拡散モデルを使用したゼロショット画像-to-画像変換 (translation)。
- 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
以上