Shaleen123 commited on
Commit
aef55fe
1 Parent(s): 5af2b61

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -25,7 +25,6 @@
25
  *.safetensors filter=lfs diff=lfs merge=lfs -text
26
  saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
  *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
  *.tflite filter=lfs diff=lfs merge=lfs -text
30
  *.tgz filter=lfs diff=lfs merge=lfs -text
31
  *.wasm filter=lfs diff=lfs merge=lfs -text
 
25
  *.safetensors filter=lfs diff=lfs merge=lfs -text
26
  saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
  *.tar.* filter=lfs diff=lfs merge=lfs -text
 
28
  *.tflite filter=lfs diff=lfs merge=lfs -text
29
  *.tgz filter=lfs diff=lfs merge=lfs -text
30
  *.wasm filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,3 +1,172 @@
1
- ---
2
- license: apache-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ prior:
4
+ - kandinsky-community/kandinsky-2-2-prior
5
+ tags:
6
+ - text-to-image
7
+ - kandinsky
8
+ inference: false
9
+ ---
10
+
11
+ # Kandinsky 2.2
12
+
13
+ Kandinsky inherits best practices from Dall-E 2 and Latent diffusion while introducing some new ideas.
14
+
15
+ It uses the CLIP model as a text and image encoder, and diffusion image prior (mapping) between latent spaces of CLIP modalities. This approach increases the visual performance of the model and unveils new horizons in blending images and text-guided image manipulation.
16
+
17
+ The Kandinsky model is created by [Arseniy Shakhmatov](https://github.com/cene555), [Anton Razzhigaev](https://github.com/razzant), [Aleksandr Nikolich](https://github.com/AlexWortega), [Igor Pavlov](https://github.com/boomb0om), [Andrey Kuznetsov](https://github.com/kuznetsoffandrey) and [Denis Dimitrov](https://github.com/denndimitrov)
18
+
19
+ ## Usage
20
+
21
+ Kandinsky 2.2 is available in diffusers!
22
+
23
+ ```python
24
+ pip install diffusers transformers accelerate
25
+ ```
26
+ ### Text to image
27
+
28
+ ```python
29
+ from diffusers import AutoPipelineForText2Image
30
+ import torch
31
+
32
+ pipe = AutoPipelineForText2Image.from_pretrained("kandinsky-community/kandinsky-2-2-decoder", torch_dtype=torch.float16)
33
+ pipe = pipe.to("cuda")
34
+
35
+ prompt = "portrait of a young women, blue eyes, cinematic"
36
+ negative_prompt = "low quality, bad quality"
37
+
38
+ image = pipe(prompt=prompt, negative_prompt=negative_prompt, prior_guidance_scale =1.0, height=768, width=768).images[0]
39
+ image.save("portrait.png")
40
+ ```
41
+
42
+ ![img](https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinskyv22/%20blue%20eyes.png)
43
+
44
+
45
+ ### Text Guided Image-to-Image Generation
46
+
47
+ ```python
48
+ from PIL import Image
49
+ import requests
50
+ from io import BytesIO
51
+
52
+ url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
53
+ response = requests.get(url)
54
+ original_image = Image.open(BytesIO(response.content)).convert("RGB")
55
+ original_image = original_image.resize((768, 512))
56
+ ```
57
+ ![img](https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg)
58
+
59
+ ```python
60
+ from diffusers import AutoPipelineForImage2Image
61
+ import torch
62
+
63
+ pipe = AutoPipelineForImage2Image.from_pretrained("kandinsky-community/kandinsky-2-2-decoder", torch_dtype=torch.float16)
64
+ pipe.enable_model_cpu_offload()
65
+
66
+ prompt = "A fantasy landscape, Cinematic lighting"
67
+ negative_prompt = "low quality, bad quality"
68
+
69
+ image = pipe(prompt=prompt, image=original_image, strength=0.3, height=768, width=768).images[0]
70
+
71
+ out.images[0].save("fantasy_land.png")
72
+ ```
73
+
74
+ ![img](https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinskyv22/fantasy_land.png)
75
+
76
+
77
+ ### Interpolate
78
+
79
+ ```python
80
+ from diffusers import KandinskyV22PriorPipeline, KandinskyV22Pipeline
81
+ from diffusers.utils import load_image
82
+ import PIL
83
+
84
+ import torch
85
+
86
+ pipe_prior = KandinskyV22PriorPipeline.from_pretrained(
87
+ "kandinsky-community/kandinsky-2-2-prior", torch_dtype=torch.float16
88
+ )
89
+ pipe_prior.to("cuda")
90
+
91
+ img1 = load_image(
92
+ "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main" "/kandinsky/cat.png"
93
+ )
94
+
95
+ img2 = load_image(
96
+ "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main" "/kandinsky/starry_night.jpeg"
97
+ )
98
+
99
+ # add all the conditions we want to interpolate, can be either text or image
100
+ images_texts = ["a cat", img1, img2]
101
+
102
+ # specify the weights for each condition in images_texts
103
+ weights = [0.3, 0.3, 0.4]
104
+
105
+ # We can leave the prompt empty
106
+ prompt = ""
107
+ prior_out = pipe_prior.interpolate(images_texts, weights)
108
+
109
+ pipe = KandinskyV22Pipeline.from_pretrained("kandinsky-community/kandinsky-2-2-decoder", torch_dtype=torch.float16)
110
+ pipe.to("cuda")
111
+
112
+ image = pipe(**prior_out, height=768, width=768).images[0]
113
+
114
+ image.save("starry_cat.png")
115
+ ```
116
+ ![img](https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinskyv22/starry_cat2.2.png)
117
+
118
+
119
+ ## Model Architecture
120
+
121
+ ### Overview
122
+ Kandinsky 2.2 is a text-conditional diffusion model based on unCLIP and latent diffusion, composed of a transformer-based image prior model, a unet diffusion model, and a decoder.
123
+
124
+ The model architectures are illustrated in the figure below - the chart on the left describes the process to train the image prior model, the figure in the center is the text-to-image generation process, and the figure on the right is image interpolation.
125
+
126
+ <p float="left">
127
+ <img src="https://raw.githubusercontent.com/ai-forever/Kandinsky-2/main/content/kandinsky21.png"/>
128
+ </p>
129
+
130
+ Specifically, the image prior model was trained on CLIP text and image embeddings generated with a pre-trained [CLIP-ViT-G model](https://huggingface.co/laion/CLIP-ViT-g-14-laion2B-s12B-b42K). The trained image prior model is then used to generate CLIP image embeddings for input text prompts. Both the input text prompts and its CLIP image embeddings are used in the diffusion process. A [MoVQGAN](https://openreview.net/forum?id=Qb-AoSw4Jnm) model acts as the final block of the model, which decodes the latent representation into an actual image.
131
+
132
+
133
+ ### Details
134
+ The image prior training of the model was performed on the [LAION Improved Aesthetics dataset](https://huggingface.co/datasets/bhargavsdesai/laion_improved_aesthetics_6.5plus_with_images), and then fine-tuning was performed on the [LAION HighRes data](https://huggingface.co/datasets/laion/laion-high-resolution).
135
+
136
+ The main Text2Image diffusion model was trained on [LAION HighRes dataset](https://huggingface.co/datasets/laion/laion-high-resolution) and then fine-tuned with a dataset of 2M very high-quality high-resolution images with descriptions (COYO, anime, landmarks_russia, and a number of others) was used separately collected from open sources.
137
+
138
+ The main change in Kandinsky 2.2 is the replacement of CLIP-ViT-G. Its image encoder significantly increases the model's capability to generate more aesthetic pictures and better understand text, thus enhancing its overall performance.
139
+
140
+ Due to the switch CLIP model, the image prior model was retrained, and the Text2Image diffusion model was fine-tuned for 2000 iterations. Kandinsky 2.2 was trained on data of various resolutions, from 512 x 512 to 1536 x 1536, and also as different aspect ratios. As a result, Kandinsky 2.2 can generate 1024 x 1024 outputs with any aspect ratio.
141
+
142
+
143
+ ### Evaluation
144
+ We quantitatively measure the performance of Kandinsky 2.1 on the COCO_30k dataset, in zero-shot mode. The table below presents FID.
145
+
146
+ FID metric values ​​for generative models on COCO_30k
147
+ | | FID (30k)|
148
+ |:------|----:|
149
+ | eDiff-I (2022) | 6.95 |
150
+ | Image (2022) | 7.27 |
151
+ | Kandinsky 2.1 (2023) | 8.21|
152
+ | Stable Diffusion 2.1 (2022) | 8.59 |
153
+ | GigaGAN, 512x512 (2023) | 9.09 |
154
+ | DALL-E 2 (2022) | 10.39 |
155
+ | GLIDE (2022) | 12.24 |
156
+ | Kandinsky 1.0 (2022) | 15.40 |
157
+ | DALL-E (2021) | 17.89 |
158
+ | Kandinsky 2.0 (2022) | 20.00 |
159
+ | GLIGEN (2022) | 21.04 |
160
+
161
+ For more information, please refer to the upcoming technical report.
162
+
163
+ ## BibTex
164
+ If you find this repository useful in your research, please cite:
165
+ ```
166
+ @misc{kandinsky 2.2,
167
+ title = {kandinsky 2.2},
168
+ author = {Arseniy Shakhmatov, Anton Razzhigaev, Aleksandr Nikolich, Vladimir Arkhipkin, Igor Pavlov, Andrey Kuznetsov, Denis Dimitrov},
169
+ year = {2023},
170
+ howpublished = {},
171
+ }
172
+ ```
model_index.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "KandinskyV22Pipeline",
3
+ "_diffusers_version": "0.17.0.dev0",
4
+ "scheduler": [
5
+ "diffusers",
6
+ "DDPMScheduler"
7
+ ],
8
+ "unet": [
9
+ "diffusers",
10
+ "UNet2DConditionModel"
11
+ ],
12
+ "movq": [
13
+ "diffusers",
14
+ "VQModel"
15
+ ]
16
+ }
movq/config.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "VQModel",
3
+ "_diffusers_version": "0.17.0.dev0",
4
+ "act_fn": "silu",
5
+ "block_out_channels": [
6
+ 128,
7
+ 256,
8
+ 256,
9
+ 512
10
+ ],
11
+ "down_block_types": [
12
+ "DownEncoderBlock2D",
13
+ "DownEncoderBlock2D",
14
+ "DownEncoderBlock2D",
15
+ "AttnDownEncoderBlock2D"
16
+ ],
17
+ "in_channels": 3,
18
+ "latent_channels": 4,
19
+ "layers_per_block": 2,
20
+ "norm_num_groups": 32,
21
+ "norm_type": "spatial",
22
+ "num_vq_embeddings": 16384,
23
+ "out_channels": 3,
24
+ "sample_size": 32,
25
+ "scaling_factor": 0.18215,
26
+ "up_block_types": [
27
+ "AttnUpDecoderBlock2D",
28
+ "UpDecoderBlock2D",
29
+ "UpDecoderBlock2D",
30
+ "UpDecoderBlock2D"
31
+ ],
32
+ "vq_embed_dim": 4
33
+ }
movq/diffusion_pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:772e09739d742ddee6807add2d3c2fd2a32db53896b5d07a92c729d8c879ce59
3
+ size 271492131
movq/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:43a5860fea195a7116f2471396c5cc9535fade9b63c4857d8a192ffd924b7002
3
+ size 271380364
scheduler/scheduler_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "DDPMScheduler",
3
+ "_diffusers_version": "0.17.0.dev0",
4
+ "num_train_timesteps": 1000,
5
+ "beta_schedule": "linear",
6
+ "beta_start": 0.00085,
7
+ "beta_end":0.012,
8
+ "clip_sample" : true,
9
+ "set_alpha_to_one" : false,
10
+ "steps_offset" : 1,
11
+ "prediction_type" : "epsilon",
12
+ "thresholding" : false
13
+ }
unet/config.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "UNet2DConditionModel",
3
+ "_diffusers_version": "0.17.0.dev0",
4
+ "act_fn": "silu",
5
+ "addition_embed_type": "image",
6
+ "addition_embed_type_num_heads": 64,
7
+ "attention_head_dim": 64,
8
+ "block_out_channels": [
9
+ 384,
10
+ 768,
11
+ 1152,
12
+ 1536
13
+ ],
14
+ "center_input_sample": false,
15
+ "class_embed_type": null,
16
+ "class_embeddings_concat": false,
17
+ "conv_in_kernel": 3,
18
+ "conv_out_kernel": 3,
19
+ "cross_attention_dim": 768,
20
+ "cross_attention_norm": null,
21
+ "down_block_types": [
22
+ "ResnetDownsampleBlock2D",
23
+ "SimpleCrossAttnDownBlock2D",
24
+ "SimpleCrossAttnDownBlock2D",
25
+ "SimpleCrossAttnDownBlock2D"
26
+ ],
27
+ "downsample_padding": 1,
28
+ "dual_cross_attention": false,
29
+ "encoder_hid_dim": 1280,
30
+ "encoder_hid_dim_type": "image_proj",
31
+ "flip_sin_to_cos": true,
32
+ "freq_shift": 0,
33
+ "in_channels": 4,
34
+ "layers_per_block": 3,
35
+ "mid_block_only_cross_attention": null,
36
+ "mid_block_scale_factor": 1,
37
+ "mid_block_type": "UNetMidBlock2DSimpleCrossAttn",
38
+ "norm_eps": 1e-05,
39
+ "norm_num_groups": 32,
40
+ "num_class_embeds": null,
41
+ "only_cross_attention": false,
42
+ "out_channels": 8,
43
+ "projection_class_embeddings_input_dim": null,
44
+ "resnet_out_scale_factor": 1.0,
45
+ "resnet_skip_time_act": false,
46
+ "resnet_time_scale_shift": "scale_shift",
47
+ "sample_size": 64,
48
+ "time_cond_proj_dim": null,
49
+ "time_embedding_act_fn": null,
50
+ "time_embedding_dim": null,
51
+ "time_embedding_type": "positional",
52
+ "timestep_post_act": null,
53
+ "up_block_types": [
54
+ "SimpleCrossAttnUpBlock2D",
55
+ "SimpleCrossAttnUpBlock2D",
56
+ "SimpleCrossAttnUpBlock2D",
57
+ "ResnetUpsampleBlock2D"
58
+ ],
59
+ "upcast_attention": false,
60
+ "use_linear_projection": false
61
+ }
unet/diffusion_pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:939ba7f0768b3414c82f148a0ae16b1ac63154c987cb7f017b5ac4648f3ed09a
3
+ size 5012502249
unet/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a36ce337f3908ab08c19c00e956a36027fee7b6e83f49dd1f36b010550e0441c
3
+ size 5012309584