HuggingFace ブログ : What’s new in Diffusers? 🎨 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 11/14/2022
* 本ページは、HuggingFace Blog の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- What’s new in Diffusers? 🎨 (Authors : Omar Sanseviero : 09/12/2022)
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace ブログ : What’s new in Diffusers? 🎨
(訳注: 09/12/2022 から) 1ヶ月半前に diffusers をリリースしました、モダリティに渡る拡散モデルのためのモジュール式ツールボックスを提供するライブラリです。その数週間後には、誰でも試せるフリーなデモと共に高品質なテキスト-to-画像モデルである、Stable Diffusion に対するサポートをリリースしました。大量の GPU を燃焼する (= burn) ことは別にして、この 3 週間の間にチームはライブラリに (コミュニティが楽しめるような) 1 つか 2 つの新しい機能を追加することを決定しました!このブログ記事は diffusers version 0.3 の新機能の高度な概要を与えます!Remember to give a ⭐ to the GitHub repository.
画像 to 画像パイプライン
最もリクエストが多かった機能の一つは画像 to 画像生成を持つことでした。このパイプラインは画像とプロンプトを入力することを可能にし、そしてそれはそれに基づいた画像を生成します!
公式 Colab ノートブック に基づくコードを見てみましょう。
from diffusers import StableDiffusionImg2ImgPipeline
pipe = StableDiffusionImg2ImgPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,
use_auth_token=True
)
# Download an initial image
# ...
init_image = preprocess(init_img)
prompt = "A fantasy landscape, trending on artstation"
images = pipe(prompt=prompt, init_image=init_image, strength=0.75, guidance_scale=7.5, generator=generator)["sample"]
Don’t have time for code? No worries, we also created a Space demo where you can try it out directly
Textual Inversion
Textual Inversion は Stable Diffusion モデルをわずか 3-5 サンプルの貴方自身の画像上でパーソナライズさせます。このツールにより、モデルをコンセプト上で訓練してからコンセプトをコミュニティの他の人と共有できます!
わずか数日で、コミュニティは 200 以上のコンセプトを共有しました!Check them out!
- Organization with the concepts.
- Navigator Colab : コミュニティにより作成された 150 以上のコンセプトを視覚的にブラウザして使用できます。
- 訓練 Colab : Stable Diffusion に新しいコンセプトを教えてそれをコミュニティの他の人と共有します。
- 推論 Colab : 学習されたコンセプトを使用してえ Stable Diffusion を実行します。
実験的インペインティング・パイプライン
インペインティングは画像を提供し、画像の領域を選択し (or マスクを提供し)、そしてマスクを置き換えるために Stable Diffusion を使用することを可能にします。ここに例があります。
You can try out a minimal Colab notebook or check out the code below. A demo is coming soon!
from diffusers import StableDiffusionInpaintPipeline
pipe = StableDiffusionInpaintPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,
use_auth_token=True
).to(device)
images = pipe(
prompt=["a cat sitting on a bench"] * 3,
init_image=init_image,
mask_image=mask_image,
strength=0.75,
guidance_scale=7.5,
generator=None
).images
Please note this is experimental, so there is room for improvement.
より小さい GPU のための最適化
幾つかの改良の後、拡散モデルは遥かに少ない VRAM で動作できるようになりました。🔥 例えば、Stable Diffusion は 3.2GB だけしか使いません!これは 10% のスピードの犠牲で正確に同じ結果を生成します。ここにこれらの最適化を使う方法があります。
from diffusers import StableDiffusionPipeline
pipe = StableDiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
revision="fp16",
torch_dtype=torch.float16,
use_auth_token=True
)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing()
This is super exciting as this will reduce even more the barrier to use these models!
実験的 ONNX エクスポータとパイプライン
新しい実験的パイプラインは ONNX をサポートする任意のハードウェア上で Stable Diffusion をユーザが実行することを可能にします。ここにそれを使用する方法の例があります (onnx revision が使用されていることに注意してください)。
from diffusers import StableDiffusionOnnxPipeline
pipe = StableDiffusionOnnxPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
revision="onnx",
provider="CPUExecutionProvider",
use_auth_token=True,
)
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
代わりに、SD チェックポイントを exporter スクリプトで ONNX に直接変換することもできます。
python scripts/convert_stable_diffusion_checkpoint_to_onnx.py --model_path="CompVis/stable-diffusion-v1-4" --output_path="./stable_diffusion_onnx"
新しいドキュメント
これまでの機能のすべては非常にクールです。オープンソース・ライブラリの保守者として、誰にとってもライブラリを試すことをできるだけ簡単にするため、私たちは質の高いドキュメント化の重要性について知っています。
💅 このため、ドキュメント化の作業を大急ぎで行い、ドキュメント の最初のリリースを行なうことに非常に興奮しています。これは最初のバージョンですので、追加を計画している多くのことがあります (and contributions are always welcome!)。
ドキュメントの幾つかのハイライト :
- 最適化 のためのテクニック
- 訓練概要
- contributing ガイド
- スケジューラ 用の詳細な API
- パイプライン 用の詳細な API docs
コミュニティ
そして私たちが上記のすべてを行った一方で、コミュニティも活動を続けていました!ここにそこで何が成されたかの (完全ではありませんが) 幾つかのハイライトがあります。
Stable Diffusion 動画
潜在空間を探索してテキストプロンプト間でモーフィング (変形) することにより、Stable Diffusion で 🔥 動画を作成します。以下が可能です :
- 同じプロンプトの異なるバージョンを重い描く (= dream)
- 異なるプロンプト間のモーフィング
Stable Diffusion 動画 ツールは pip でインストール可能で、Colab ノートブックと Gradio ノートブックが付属し、使用は超簡単です!
ここにサンプルがあります :
from stable_diffusion_videos import walk
video_path = walk(['a cat', 'a dog'], [42, 1337], num_steps=3, make_video=True)
Diffusers Interpret
Diffusers interpret は diffusers の上に構築された說明可能性ツールです。以下のようなクールな機能を持ちます :
- 拡散過程のすべての画像を見ます。
- プロンプトの各トークンが生成にどのように影響するかを分析します。
- 画像の一部を理解したい場合、指定された境界ボックス內を分析します。
(Image from the tool repository)
# pass pipeline to the explainer class
explainer = StableDiffusionPipelineExplainer(pipe)
# generate an image with `explainer`
prompt = "Corgi with the Eiffel Tower"
output = explainer(
prompt,
num_inference_steps=15
)
output.normalized_token_attributions # (token, attribution_percentage)
#[('corgi', 40),
# ('with', 5),
# ('the', 5),
# ('eiffel', 25),
# ('tower', 25)]
日本語 Stable Diffusion
名前がすべてを物語っています!JSD の目標は文化、アイデンティティとユニークな表現についての情報も取り込んだモデルを訓練することでした。それは日本語キャプションを持つ 1 億の画像で訓練されました。モデルがどのように訓練されたかについて モデルカード で更に読むことができます。
Waifu Diffusion
Waifu Diffusion は高品質なアニメ画像生成のために微調整された SD モデルです。
(Image from the tool repository)
Cross Attention Control
Cross Attention Control は、拡散モデルのアテンションマップを変更することによりプロンプトの細かい制御を可能にします。行なうことができる幾つかのクールなことは :
- プロンプトのターゲットを置き換える (e.g. 猫を犬で置き換える)
- プロンプトの単語の重要性を増減する (e.g.「岩」に与えられた注目度を下げたい場合)
- 簡単にスタイルを注入する。
And much more! Check out the repo.
以上