🚀 Kandinsky 2.1
Kandinsky 2.1は、Dall - E 2と潜在拡散のベストプラクティスを継承し、新しいアイデアを導入しています。このモデルは、テキストと画像のエンコーダーとしてCLIPモデルを使用し、CLIPモダリティの潜在空間間の拡散画像プライオ(マッピング)を利用しています。このアプローチにより、モデルの視覚的な性能が向上し、画像の合成やテキストによる画像操作に新たな可能性が開かれます。
Kandinskyモデルは、Arseniy Shakhmatov、Anton Razzhigaev、Aleksandr Nikolich、Igor Pavlov、Andrey Kuznetsov、Denis Dimitrovによって作成されました。
🚀 クイックスタート
Kandinsky 2.1はdiffusersで利用可能です!
pip install diffusers transformers accelerate
✨ 主な機能
Kandinsky 2.1は、Dall - E 2や潜在拡散の良い点を取り入れつつ、独自のアイデアを持ち、CLIPモデルを用いた画像生成や操作に高い性能を発揮します。
📦 インストール
Kandinsky 2.1を使用するには、以下のコマンドで必要なライブラリをインストールします。
pip install diffusers transformers accelerate
💻 使用例
基本的な使用法
テキストガイド付きのインペイント生成
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image
import torch
import numpy as np
pipe = AutoPipelineForInpainting.from_pretrained("kandinsky-community/kandinsky-2-1-inpaint", torch_dtype=torch.float16)
pipe.enable_model_cpu_offload()
prompt = "a hat"
negative_prompt = "low quality, bad quality"
original_image = load_image(
"https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main" "/kandinsky/cat.png"
)
mask = np.zeros((768, 768), dtype=np.float32)
mask[:250, 250:-250] = 1
image = pipe(prompt=prompt, image=original_image, mask_image=mask).images[0]
image.save("cat_with_hat.png")

⚠️ 重要提示
以下のプルリクエストhttps://github.com/huggingface/diffusers/pull/4207 で、Kandinskyのインペイントパイプラインに破壊的変更が導入されました。以前は黒いピクセルがマスクされた領域を表すマスク形式を受け入れていましたが、これはdiffusersの他のすべてのパイプラインと不一致です。Kandinskyではマスク形式を変更し、現在は白いピクセルを使用するようになりました。
以下のようにインペイントコードをアップグレードしてください。Kandinsky Inpaintを本番環境で使用している場合は、マスクを変更する必要があります。
import PIL.ImageOps
mask = PIL.ImageOps.invert(mask)
mask = 1 - mask
📚 ドキュメント
概要
Kandinsky 2.1は、unCLIPと潜在拡散に基づくテキスト条件付き拡散モデルで、トランスフォーマーベースの画像プライオモデル、UNet拡散モデル、デコーダーで構成されています。
モデルのアーキテクチャは以下の図に示されています。左のチャートは画像プライオモデルのトレーニングプロセス、中央の図はテキストから画像への生成プロセス、右の図は画像補間を表しています。
具体的には、画像プライオモデルは、事前学習されたmCLIPモデルで生成されたCLIPのテキストと画像の埋め込みを使用してトレーニングされました。トレーニングされた画像プライオモデルは、入力テキストプロンプトのmCLIP画像埋め込みを生成するために使用されます。入力テキストプロンプトとそのmCLIP画像埋め込みの両方が拡散プロセスで使用されます。MoVQGANモデルは、潜在表現を実際の画像にデコードするモデルの最終ブロックとして機能します。
詳細
モデルの画像プライオトレーニングは、LAION Improved Aestheticsデータセットで行われ、その後LAION HighResデータでファインチューニングが行われました。
主要なText2Image拡散モデルは、LAION HighResデータセットの1億7000万のテキスト - 画像ペアを基にトレーニングされました(重要な条件は、少なくとも768x768の解像度の画像が存在することでした)。1億7000万ペアを使用したのは、Kandinsky 2.0のUNet拡散ブロックを保持したため、最初からトレーニングする必要がなかったからです。さらに、ファインチューニングの段階で、オープンソースから個別に収集された200万の非常に高品質な高解像度画像と説明のデータセット(COYO、アニメ、landmarks_russiaなど)が使用されました。
評価
Kandinsky 2.1の性能は、COCO_30kデータセットでゼロショットモードで定量的に測定されています。以下の表はFIDを示しています。
COCO_30kにおける生成モデルのFIDメトリック値
|
FID (30k) |
eDiff - I (2022) |
6.95 |
Image (2022) |
7.27 |
Kandinsky 2.1 (2023) |
8.21 |
Stable Diffusion 2.1 (2022) |
8.59 |
GigaGAN, 512x512 (2023) |
9.09 |
DALL - E 2 (2022) |
10.39 |
GLIDE (2022) |
12.24 |
Kandinsky 1.0 (2022) |
15.40 |
DALL - E (2021) |
17.89 |
Kandinsky 2.0 (2022) |
20.00 |
GLIGEN (2022) |
21.04 |
詳細な情報については、近日公開予定の技術レポートを参照してください。
📄 ライセンス
このプロジェクトはApache - 2.0ライセンスの下で提供されています。
BibTex
このリポジトリがあなたの研究に役立った場合は、以下のように引用してください。
@misc{kandinsky 2.1,
title = {kandinsky 2.1},
author = {Arseniy Shakhmatov, Anton Razzhigaev, Aleksandr Nikolich, Vladimir Arkhipkin, Igor Pavlov, Andrey Kuznetsov, Denis Dimitrov},
year = {2023},
howpublished = {},
}