BiliSakura commited on
Commit
b897fe7
·
verified ·
1 Parent(s): b48ae4d

Upload folder using huggingface_hub

Browse files
Files changed (42) hide show
  1. .gitattributes +4 -0
  2. CAFM-JiT-H-16-256/demo.png +3 -0
  3. CAFM-JiT-H-16-256/generator/config.json +18 -0
  4. CAFM-JiT-H-16-256/generator/diffusion_pytorch_model.safetensors +3 -0
  5. CAFM-JiT-H-16-256/generator/modeling_cafm_jit.py +573 -0
  6. CAFM-JiT-H-16-256/model_index.json +1017 -0
  7. CAFM-JiT-H-16-256/pipeline.py +251 -0
  8. CAFM-JiT-H-16-256/scheduler/__pycache__/scheduling_continuous_flow.cpython-312.pyc +0 -0
  9. CAFM-JiT-H-16-256/scheduler/scheduler_config.json +5 -0
  10. CAFM-JiT-H-16-256/scheduler/scheduling_continuous_flow.py +98 -0
  11. CAFM-SiT-XL-2-256/demo.png +3 -0
  12. CAFM-SiT-XL-2-256/generator/config.json +14 -0
  13. CAFM-SiT-XL-2-256/generator/diffusion_pytorch_model.safetensors +3 -0
  14. CAFM-SiT-XL-2-256/generator/modeling_cafm_sit.py +252 -0
  15. CAFM-SiT-XL-2-256/model_index.json +1021 -0
  16. CAFM-SiT-XL-2-256/pipeline.py +262 -0
  17. CAFM-SiT-XL-2-256/scheduler/__pycache__/scheduling_continuous_flow.cpython-312.pyc +0 -0
  18. CAFM-SiT-XL-2-256/scheduler/scheduler_config.json +5 -0
  19. CAFM-SiT-XL-2-256/scheduler/scheduling_continuous_flow.py +98 -0
  20. CAFM-SiT-XL-2-256/vae/config.json +38 -0
  21. CAFM-SiT-XL-2-256/vae/diffusion_pytorch_model.safetensors +3 -0
  22. CAFM-Z-Image-T2I/demo.png +3 -0
  23. CAFM-Z-Image-T2I/model_index.json +27 -0
  24. CAFM-Z-Image-T2I/pipeline.py +204 -0
  25. CAFM-Z-Image-T2I/scheduler/scheduler_config.json +7 -0
  26. CAFM-Z-Image-T2I/text_encoder/config.json +30 -0
  27. CAFM-Z-Image-T2I/text_encoder/generation_config.json +13 -0
  28. CAFM-Z-Image-T2I/text_encoder/model-00001-of-00003.safetensors +3 -0
  29. CAFM-Z-Image-T2I/text_encoder/model-00002-of-00003.safetensors +3 -0
  30. CAFM-Z-Image-T2I/text_encoder/model-00003-of-00003.safetensors +3 -0
  31. CAFM-Z-Image-T2I/text_encoder/model.safetensors.index.json +405 -0
  32. CAFM-Z-Image-T2I/tokenizer/merges.txt +0 -0
  33. CAFM-Z-Image-T2I/tokenizer/tokenizer.json +3 -0
  34. CAFM-Z-Image-T2I/tokenizer/tokenizer_config.json +239 -0
  35. CAFM-Z-Image-T2I/tokenizer/vocab.json +0 -0
  36. CAFM-Z-Image-T2I/transformer/config.json +32 -0
  37. CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model-00001-of-00002.safetensors +3 -0
  38. CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model-00002-of-00002.safetensors +3 -0
  39. CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model.safetensors.index.json +528 -0
  40. CAFM-Z-Image-T2I/vae/config.json +38 -0
  41. CAFM-Z-Image-T2I/vae/diffusion_pytorch_model.safetensors +3 -0
  42. README.md +99 -0
.gitattributes CHANGED
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ CAFM-JiT-H-16-256/demo.png filter=lfs diff=lfs merge=lfs -text
37
+ CAFM-SiT-XL-2-256/demo.png filter=lfs diff=lfs merge=lfs -text
38
+ CAFM-Z-Image-T2I/demo.png filter=lfs diff=lfs merge=lfs -text
39
+ CAFM-Z-Image-T2I/tokenizer/tokenizer.json filter=lfs diff=lfs merge=lfs -text
CAFM-JiT-H-16-256/demo.png ADDED

Git LFS Details

  • SHA256: b2c5093559f516e4b03a6b6a54d35749b32ad3bac1d722eb84984a6a42ef6b80
  • Pointer size: 131 Bytes
  • Size of remote file: 127 kB
CAFM-JiT-H-16-256/generator/config.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "CAFMJiTGenerator2DModel",
3
+ "_diffusers_version": "0.36.0",
4
+ "sample_size": 256,
5
+ "patch_size": 16,
6
+ "hidden_size": 1280,
7
+ "num_layers": 32,
8
+ "num_attention_heads": 16,
9
+ "bottleneck_dim": 256,
10
+ "in_context_len": 32,
11
+ "in_context_start": 10,
12
+ "attention_dropout": 0.0,
13
+ "dropout": 0.2,
14
+ "num_classes": 1000,
15
+ "in_channels": 3,
16
+ "mlp_ratio": 4.0,
17
+ "norm_eps": 1e-06
18
+ }
CAFM-JiT-H-16-256/generator/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0cc3e1ba8899d8a9fbfdcb0606cd1e41c68d5881994611cad7959209aadac592
3
+ size 3811413896
CAFM-JiT-H-16-256/generator/modeling_cafm_jit.py ADDED
@@ -0,0 +1,573 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2026 The HuggingFace Team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import math
16
+
17
+ import numpy as np
18
+ import torch
19
+ import torch.nn as nn
20
+ import torch.nn.functional as F
21
+
22
+ from diffusers.configuration_utils import ConfigMixin, register_to_config
23
+ from diffusers.models.modeling_outputs import Transformer2DModelOutput
24
+ from diffusers.models.modeling_utils import ModelMixin
25
+ from diffusers.models.normalization import RMSNorm
26
+ from diffusers.utils import logging
27
+
28
+ logger = logging.get_logger(__name__)
29
+
30
+
31
+
32
+ def broadcat(tensors, dim=-1):
33
+ num_tensors = len(tensors)
34
+ shape_lens = {len(t.shape) for t in tensors}
35
+ if len(shape_lens) != 1:
36
+ raise ValueError("tensors must all have the same number of dimensions")
37
+ shape_len = list(shape_lens)[0]
38
+ dim = (dim + shape_len) if dim < 0 else dim
39
+ dims = list(zip(*(list(t.shape) for t in tensors)))
40
+ expandable_dims = [(i, val) for i, val in enumerate(dims) if i != dim]
41
+
42
+ if not all(len(set(t[1])) <= 2 for t in expandable_dims):
43
+ raise ValueError("invalid dimensions for broadcastable concatenation")
44
+
45
+ max_dims = [(t[0], max(t[1])) for t in expandable_dims]
46
+ expanded_dims = [(t[0], (t[1],) * num_tensors) for t in max_dims]
47
+ expanded_dims.insert(dim, (dim, dims[dim]))
48
+ expandable_shapes = list(zip(*(t[1] for t in expanded_dims)))
49
+ tensors = [t[0].expand(*t[1]) for t in zip(tensors, expandable_shapes)]
50
+ return torch.cat(tensors, dim=dim)
51
+
52
+
53
+ def rotate_half(x):
54
+ x = x.view(*x.shape[:-1], x.shape[-1] // 2, 2)
55
+ x1, x2 = x.unbind(dim=-1)
56
+ x = torch.stack((-x2, x1), dim=-1)
57
+ return x.view(*x.shape[:-2], -1)
58
+
59
+
60
+ class JiTRotaryEmbedding(nn.Module):
61
+ def __init__(
62
+ self,
63
+ dim,
64
+ pt_seq_len=16,
65
+ ft_seq_len=None,
66
+ custom_freqs=None,
67
+ theta=10000,
68
+ num_cls_token=0,
69
+ ):
70
+ super().__init__()
71
+ self.dim = dim
72
+ self.pt_seq_len = pt_seq_len
73
+ self.theta = theta
74
+ self.num_cls_token = num_cls_token
75
+ self.custom_freqs = custom_freqs
76
+ if ft_seq_len is None:
77
+ ft_seq_len = pt_seq_len
78
+ self._cached_hw = None
79
+ cos, sin = self._build_freqs(ft_seq_len, ft_seq_len, device=torch.device("cpu"))
80
+ self.register_buffer("freqs_cos", cos, persistent=False)
81
+ self.register_buffer("freqs_sin", sin, persistent=False)
82
+ self._cached_hw = (ft_seq_len, ft_seq_len)
83
+
84
+ def _build_freqs(self, height, width, device):
85
+ if self.custom_freqs is not None:
86
+ freqs = self.custom_freqs.to(device=device, dtype=torch.float32)
87
+ else:
88
+ freqs = 1.0 / (
89
+ self.theta ** (torch.arange(0, self.dim, 2, device=device, dtype=torch.float32)[: (self.dim // 2)] / self.dim)
90
+ )
91
+
92
+ t_h = torch.arange(height, device=device, dtype=torch.float32) / height * self.pt_seq_len
93
+ t_w = torch.arange(width, device=device, dtype=torch.float32) / width * self.pt_seq_len
94
+ freqs_h = torch.einsum("..., f -> ... f", t_h, freqs).repeat_interleave(2, dim=-1)
95
+ freqs_w = torch.einsum("..., f -> ... f", t_w, freqs).repeat_interleave(2, dim=-1)
96
+ freqs_2d = broadcat((freqs_h[:, None, :], freqs_w[None, :, :]), dim=-1)
97
+ freqs_flat = freqs_2d.view(-1, freqs_2d.shape[-1])
98
+ cos_img = freqs_flat.cos()
99
+ sin_img = freqs_flat.sin()
100
+ if self.num_cls_token > 0:
101
+ _, dim_freq = cos_img.shape
102
+ cos_pad = torch.ones(self.num_cls_token, dim_freq, dtype=cos_img.dtype, device=device)
103
+ sin_pad = torch.zeros(self.num_cls_token, dim_freq, dtype=sin_img.dtype, device=device)
104
+ cos_img = torch.cat([cos_pad, cos_img], dim=0)
105
+ sin_img = torch.cat([sin_pad, sin_img], dim=0)
106
+ return cos_img, sin_img
107
+
108
+ def forward(self, t, height=None, width=None):
109
+ # Applied on (batch, seq_len, heads, head_dim) tensors from attention.
110
+ seq_len = t.shape[1]
111
+ if height is None or width is None:
112
+ image_tokens = seq_len - self.num_cls_token
113
+ size = int(image_tokens**0.5)
114
+ if size * size != image_tokens:
115
+ raise ValueError(
116
+ f"Cannot infer square token grid from sequence length {seq_len} with {self.num_cls_token} class tokens."
117
+ )
118
+ height = size
119
+ width = size
120
+ if self._cached_hw != (height, width) or self.freqs_cos.device != t.device:
121
+ self.freqs_cos, self.freqs_sin = self._build_freqs(height, width, device=t.device)
122
+ self._cached_hw = (height, width)
123
+ freqs_cos = self.freqs_cos[:seq_len].to(t.dtype)
124
+ freqs_sin = self.freqs_sin[:seq_len].to(t.dtype)
125
+
126
+ return t * freqs_cos[:, None, :] + rotate_half(t) * freqs_sin[:, None, :]
127
+
128
+
129
+ def modulate(x, shift, scale):
130
+ return x * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)
131
+
132
+
133
+ class JiTPatchEmbed(nn.Module):
134
+ """Image to Patch Embedding with Bottleneck"""
135
+
136
+ def __init__(self, img_size=224, patch_size=16, in_chans=3, pca_dim=768, embed_dim=768, bias=True):
137
+ super().__init__()
138
+ img_size = (img_size, img_size)
139
+ patch_size = (patch_size, patch_size)
140
+ self.img_size = img_size
141
+ self.patch_size = patch_size
142
+ self.num_patches = (img_size[1] // patch_size[1]) * (img_size[0] // patch_size[0])
143
+
144
+ self.proj1 = nn.Conv2d(in_chans, pca_dim, kernel_size=patch_size, stride=patch_size, bias=False)
145
+ self.proj2 = nn.Conv2d(pca_dim, embed_dim, kernel_size=1, stride=1, bias=bias)
146
+
147
+ def forward(self, x):
148
+ x = self.proj2(self.proj1(x)).flatten(2).transpose(1, 2)
149
+ return x
150
+
151
+
152
+ class JiTTimestepEmbedder(nn.Module):
153
+ """
154
+ Embeds scalar timesteps into vector representations.
155
+ """
156
+
157
+ def __init__(self, hidden_size, frequency_embedding_size=256):
158
+ super().__init__()
159
+ self.mlp = nn.Sequential(
160
+ nn.Linear(frequency_embedding_size, hidden_size, bias=True),
161
+ nn.SiLU(),
162
+ nn.Linear(hidden_size, hidden_size, bias=True),
163
+ )
164
+ self.frequency_embedding_size = frequency_embedding_size
165
+
166
+ @staticmethod
167
+ def timestep_embedding(t, dim, max_period=10000):
168
+ """
169
+ Create sinusoidal timestep embeddings.
170
+ """
171
+ half = dim // 2
172
+ freqs = torch.exp(
173
+ -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half
174
+ ).to(device=t.device)
175
+ args = t[:, None].float() * freqs[None]
176
+ embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)
177
+ if dim % 2:
178
+ embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)
179
+ return embedding
180
+
181
+ def forward(self, t, dtype=None):
182
+ t_freq = self.timestep_embedding(t, self.frequency_embedding_size)
183
+ if dtype is not None:
184
+ t_freq = t_freq.to(dtype=dtype)
185
+ t_emb = self.mlp(t_freq)
186
+ return t_emb
187
+
188
+
189
+ class JiTLabelEmbedder(nn.Module):
190
+ """
191
+ Embeds class labels into vector representations.
192
+ """
193
+
194
+ def __init__(self, num_classes, hidden_size):
195
+ super().__init__()
196
+ self.embedding_table = nn.Embedding(num_classes + 1, hidden_size)
197
+ self.num_classes = num_classes
198
+
199
+ def forward(self, labels):
200
+ embeddings = self.embedding_table(labels)
201
+ return embeddings
202
+
203
+
204
+ class JiTAttention(nn.Module):
205
+ def __init__(self, dim, num_heads=8, qkv_bias=True, qk_norm=True, attn_drop=0.0, proj_drop=0.0, eps=1e-6):
206
+ super().__init__()
207
+ self.num_heads = num_heads
208
+ head_dim = dim // num_heads
209
+
210
+ self.q_norm = RMSNorm(head_dim, eps=eps) if qk_norm else nn.Identity()
211
+ self.k_norm = RMSNorm(head_dim, eps=eps) if qk_norm else nn.Identity()
212
+
213
+ self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)
214
+ self.attn_drop = attn_drop
215
+ self.proj = nn.Linear(dim, dim)
216
+ self.proj_drop = nn.Dropout(proj_drop)
217
+
218
+ def forward(self, x, rope=None, grid_height=None, grid_width=None):
219
+ B, N, C = x.shape
220
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
221
+ q, k, v = qkv[0], qkv[1], qkv[2]
222
+
223
+ q = self.q_norm(q)
224
+ k = self.k_norm(k)
225
+
226
+ if rope is not None:
227
+ q = q.transpose(1, 2)
228
+ k = k.transpose(1, 2)
229
+ q = rope(q, height=grid_height, width=grid_width)
230
+ k = rope(k, height=grid_height, width=grid_width)
231
+ q = q.transpose(1, 2)
232
+ k = k.transpose(1, 2)
233
+
234
+ dropout_p = self.attn_drop if self.training else 0.0
235
+ x = F.scaled_dot_product_attention(q, k, v, dropout_p=dropout_p)
236
+ x = x.transpose(1, 2).reshape(B, N, C)
237
+ x = self.proj(x)
238
+ x = self.proj_drop(x)
239
+ return x
240
+
241
+
242
+ class JiTSwiGLUFFN(nn.Module):
243
+ def __init__(self, dim: int, hidden_dim: int, drop=0.0, bias=True) -> None:
244
+ super().__init__()
245
+ hidden_dim = int(hidden_dim * 2 / 3)
246
+ self.w12 = nn.Linear(dim, 2 * hidden_dim, bias=bias)
247
+ self.w3 = nn.Linear(hidden_dim, dim, bias=bias)
248
+ self.ffn_dropout = nn.Dropout(drop)
249
+
250
+ def forward(self, x):
251
+ x12 = self.w12(x)
252
+ x1, x2 = x12.chunk(2, dim=-1)
253
+ hidden = F.silu(x1) * x2
254
+ return self.w3(self.ffn_dropout(hidden))
255
+
256
+
257
+ class JiTBlock(nn.Module):
258
+ def __init__(self, hidden_size, num_heads, mlp_ratio=4.0, attn_drop=0.0, proj_drop=0.0, eps=1e-6):
259
+ super().__init__()
260
+ self.norm1 = RMSNorm(hidden_size, eps=eps)
261
+ self.attn = JiTAttention(
262
+ hidden_size,
263
+ num_heads=num_heads,
264
+ qkv_bias=True,
265
+ qk_norm=True,
266
+ attn_drop=attn_drop,
267
+ proj_drop=proj_drop,
268
+ eps=eps,
269
+ )
270
+ self.norm2 = RMSNorm(hidden_size, eps=eps)
271
+ mlp_hidden_dim = int(hidden_size * mlp_ratio)
272
+ self.mlp = JiTSwiGLUFFN(hidden_size, mlp_hidden_dim, drop=proj_drop)
273
+
274
+ self.act = nn.SiLU()
275
+ self.adaLN_modulation = nn.Linear(hidden_size, 6 * hidden_size, bias=True)
276
+
277
+ def forward(self, x, c, feat_rope=None, grid_height=None, grid_width=None):
278
+ # Apply activation
279
+ c = self.act(c)
280
+
281
+ shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.adaLN_modulation(c).chunk(6, dim=-1)
282
+
283
+ # Attention block
284
+ norm_x = self.norm1(x)
285
+ modulated_x = modulate(norm_x, shift_msa, scale_msa)
286
+ attn_out = self.attn(modulated_x, rope=feat_rope, grid_height=grid_height, grid_width=grid_width)
287
+ x = x + gate_msa.unsqueeze(1) * attn_out
288
+
289
+ # MLP block
290
+ norm_x = self.norm2(x)
291
+ modulated_x = modulate(norm_x, shift_mlp, scale_mlp)
292
+ mlp_out = self.mlp(modulated_x)
293
+ x = x + gate_mlp.unsqueeze(1) * mlp_out
294
+
295
+ return x
296
+
297
+
298
+ def get_2d_sincos_pos_embed(embed_dim, grid_size, cls_token=False, extra_tokens=0):
299
+ grid_h = np.arange(grid_size, dtype=np.float32)
300
+ grid_w = np.arange(grid_size, dtype=np.float32)
301
+ grid = np.meshgrid(grid_w, grid_h)
302
+ grid = np.stack(grid, axis=0)
303
+ grid = grid.reshape([2, 1, grid_size, grid_size])
304
+ pos_embed = get_2d_sincos_pos_embed_from_grid(embed_dim, grid)
305
+ if cls_token and extra_tokens > 0:
306
+ pos_embed = np.concatenate([np.zeros([extra_tokens, embed_dim]), pos_embed], axis=0)
307
+ return pos_embed
308
+
309
+
310
+ def get_2d_sincos_pos_embed_from_grid(embed_dim, grid):
311
+ if embed_dim % 2 != 0:
312
+ raise ValueError(f"embed_dim must be divisible by 2, but got {embed_dim}")
313
+
314
+ emb_h = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[0])
315
+ emb_w = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[1])
316
+ emb = np.concatenate([emb_h, emb_w], axis=1)
317
+ return emb
318
+
319
+
320
+ def get_1d_sincos_pos_embed_from_grid(embed_dim, pos):
321
+ if embed_dim % 2 != 0:
322
+ raise ValueError(f"embed_dim must be divisible by 2, but got {embed_dim}")
323
+
324
+ omega = np.arange(embed_dim // 2, dtype=np.float64)
325
+ omega /= embed_dim / 2.0
326
+ omega = 1.0 / 10000**omega
327
+
328
+ pos = pos.reshape(-1)
329
+ out = np.einsum("m,d->md", pos, omega)
330
+
331
+ emb_sin = np.sin(out)
332
+ emb_cos = np.cos(out)
333
+
334
+ emb = np.concatenate([emb_sin, emb_cos], axis=1)
335
+ return emb
336
+
337
+
338
+ class JiTTransformer2DModel(ModelMixin, ConfigMixin):
339
+ r"""
340
+ A 2D Transformer for pixel-space class-conditional generation with JiT
341
+ ([Back to Basics: Let Denoising Generative Models Denoise](https://arxiv.org/abs/2511.13720)).
342
+
343
+ Parameters:
344
+ sample_size (`int`, defaults to `256`):
345
+ Input image resolution (height and width).
346
+ patch_size (`int`, defaults to `16`):
347
+ Patch size for the bottleneck patch embedder.
348
+ in_channels (`int`, defaults to `3`):
349
+ Number of input image channels.
350
+ hidden_size (`int`, defaults to `768`):
351
+ Transformer hidden dimension.
352
+ num_layers (`int`, defaults to `12`):
353
+ Number of JiT transformer blocks.
354
+ num_attention_heads (`int`, defaults to `12`):
355
+ Number of attention heads per block.
356
+ mlp_ratio (`float`, defaults to `4.0`):
357
+ MLP hidden dimension multiplier.
358
+ attention_dropout (`float`, defaults to `0.0`):
359
+ Attention dropout in the middle quarter of blocks.
360
+ dropout (`float`, defaults to `0.0`):
361
+ Projection dropout in the middle quarter of blocks.
362
+ num_classes (`int`, defaults to `1000`):
363
+ Number of class labels (null label uses index `num_classes` for CFG).
364
+ bottleneck_dim (`int`, defaults to `128`):
365
+ PCA bottleneck dimension in the patch embedder.
366
+ in_context_len (`int`, defaults to `32`):
367
+ Number of in-context class tokens prepended mid-network.
368
+ in_context_start (`int`, defaults to `4`):
369
+ Block index at which in-context tokens are inserted.
370
+ norm_eps (`float`, defaults to `1e-6`):
371
+ Epsilon for RMSNorm layers.
372
+ """
373
+
374
+ _supports_gradient_checkpointing = True
375
+ _skip_layerwise_casting_patterns = ["pos_embed", "norm"]
376
+
377
+ @register_to_config
378
+ def __init__(
379
+ self,
380
+ sample_size: int = 256,
381
+ patch_size: int = 16,
382
+ in_channels: int = 3,
383
+ hidden_size: int = 768,
384
+ num_layers: int = 12,
385
+ num_attention_heads: int = 12,
386
+ mlp_ratio: float = 4.0,
387
+ attention_dropout: float = 0.0,
388
+ dropout: float = 0.0,
389
+ num_classes: int = 1000,
390
+ bottleneck_dim: int = 128,
391
+ in_context_len: int = 32,
392
+ in_context_start: int = 4,
393
+ norm_eps: float = 1e-6,
394
+ ):
395
+ super().__init__()
396
+ self.sample_size = sample_size
397
+ self.patch_size = patch_size
398
+ self.in_channels = in_channels
399
+ self.out_channels = in_channels
400
+ self.hidden_size = hidden_size
401
+ self.num_layers = num_layers
402
+ self.num_attention_heads = num_attention_heads
403
+ self.in_context_len = in_context_len
404
+ self.in_context_start = in_context_start
405
+ self.norm_eps = norm_eps
406
+ self.gradient_checkpointing = False
407
+
408
+ # Time and Class Embedding
409
+ self.t_embedder = JiTTimestepEmbedder(hidden_size)
410
+ self.y_embedder = JiTLabelEmbedder(num_classes, hidden_size)
411
+
412
+ # Patch Embedding
413
+ self.x_embedder = JiTPatchEmbed(
414
+ img_size=sample_size,
415
+ patch_size=patch_size,
416
+ in_chans=in_channels,
417
+ pca_dim=bottleneck_dim,
418
+ embed_dim=hidden_size,
419
+ bias=True,
420
+ )
421
+
422
+ # Positional Embedding (Fixed Sin-Cos)
423
+ num_patches = self.x_embedder.num_patches
424
+ pos_embed = get_2d_sincos_pos_embed(hidden_size, int(num_patches**0.5))
425
+ self.register_buffer("pos_embed", torch.from_numpy(pos_embed).float().unsqueeze(0), persistent=True)
426
+
427
+ # In-context Embedding
428
+ if self.in_context_len > 0:
429
+ self.in_context_posemb = nn.Parameter(torch.zeros(1, self.in_context_len, hidden_size))
430
+
431
+ # RoPE
432
+ half_head_dim = hidden_size // num_attention_heads // 2
433
+ hw_seq_len = sample_size // patch_size
434
+ self.feat_rope = JiTRotaryEmbedding(dim=half_head_dim, pt_seq_len=hw_seq_len, num_cls_token=0)
435
+ self.feat_rope_incontext = JiTRotaryEmbedding(
436
+ dim=half_head_dim, pt_seq_len=hw_seq_len, num_cls_token=self.in_context_len
437
+ )
438
+
439
+ # Blocks
440
+ self.blocks = nn.ModuleList(
441
+ [
442
+ JiTBlock(
443
+ hidden_size,
444
+ num_attention_heads,
445
+ mlp_ratio=mlp_ratio,
446
+ attn_drop=attention_dropout if (num_layers // 4 * 3 > i >= num_layers // 4) else 0.0,
447
+ proj_drop=dropout if (num_layers // 4 * 3 > i >= num_layers // 4) else 0.0,
448
+ eps=norm_eps,
449
+ )
450
+ for i in range(num_layers)
451
+ ]
452
+ )
453
+
454
+ # Final Layer
455
+ self.norm_final = RMSNorm(hidden_size, eps=norm_eps)
456
+ self.linear_final = nn.Linear(hidden_size, patch_size * patch_size * self.out_channels, bias=True)
457
+ self.act_final = nn.SiLU()
458
+ self.adaLN_modulation_final = nn.Linear(hidden_size, 2 * hidden_size, bias=True)
459
+
460
+ def _get_patch_grid(self, hidden_states):
461
+ height, width = hidden_states.shape[-2:]
462
+ if height % self.patch_size != 0 or width % self.patch_size != 0:
463
+ raise ValueError(
464
+ f"Input size {(height, width)} must be divisible by patch_size={self.patch_size}."
465
+ )
466
+ return height // self.patch_size, width // self.patch_size
467
+
468
+ def _interpolate_pos_encoding(self, tokens, grid_height, grid_width):
469
+ num_tokens = grid_height * grid_width
470
+ if self.pos_embed.shape[1] == num_tokens:
471
+ return self.pos_embed.to(device=tokens.device, dtype=tokens.dtype)
472
+ base_size = int(self.pos_embed.shape[1] ** 0.5)
473
+ pos_embed = self.pos_embed.reshape(1, base_size, base_size, self.hidden_size).permute(0, 3, 1, 2)
474
+ pos_embed = F.interpolate(pos_embed, size=(grid_height, grid_width), mode="bicubic", align_corners=False)
475
+ pos_embed = pos_embed.permute(0, 2, 3, 1).reshape(1, num_tokens, self.hidden_size)
476
+ return pos_embed.to(device=tokens.device, dtype=tokens.dtype)
477
+
478
+ def forward(
479
+ self,
480
+ hidden_states: torch.Tensor,
481
+ timestep: torch.LongTensor,
482
+ class_labels: torch.LongTensor,
483
+ interpolate_pos_encoding: bool = True,
484
+ return_dict: bool = True,
485
+ ):
486
+
487
+ t_emb = self.t_embedder(timestep, dtype=hidden_states.dtype)
488
+ y_emb = self.y_embedder(class_labels)
489
+
490
+ # Ensure embeddings match hidden_states dtype
491
+ y_emb = y_emb.to(dtype=hidden_states.dtype)
492
+
493
+ c = t_emb + y_emb
494
+
495
+ # Patch Embed
496
+ grid_height, grid_width = self._get_patch_grid(hidden_states)
497
+ x = self.x_embedder(hidden_states)
498
+ if interpolate_pos_encoding:
499
+ pos_embed = self._interpolate_pos_encoding(x, grid_height, grid_width)
500
+ else:
501
+ expected_tokens = grid_height * grid_width
502
+ if self.pos_embed.shape[1] != expected_tokens:
503
+ raise ValueError(
504
+ f"pos_embed token count {self.pos_embed.shape[1]} does not match input token count {expected_tokens}. "
505
+ "Enable interpolate_pos_encoding for dynamic resolutions."
506
+ )
507
+ pos_embed = self.pos_embed.to(device=x.device, dtype=x.dtype)
508
+ x = x + pos_embed
509
+
510
+ # Blocks
511
+ for i, block in enumerate(self.blocks):
512
+ if self.in_context_len > 0 and i == self.in_context_start:
513
+ in_context_tokens = y_emb.unsqueeze(1).repeat(1, self.in_context_len, 1)
514
+ in_context_tokens = in_context_tokens + self.in_context_posemb.to(in_context_tokens.dtype)
515
+ x = torch.cat([in_context_tokens, x], dim=1)
516
+
517
+ rope = self.feat_rope if i < self.in_context_start else self.feat_rope_incontext
518
+
519
+ if self.training and self.gradient_checkpointing:
520
+ def custom_forward(current_x, current_c):
521
+ return block(
522
+ current_x,
523
+ current_c,
524
+ feat_rope=rope,
525
+ grid_height=grid_height,
526
+ grid_width=grid_width,
527
+ )
528
+
529
+ x = torch.utils.checkpoint.checkpoint(
530
+ custom_forward,
531
+ x,
532
+ c,
533
+ use_reentrant=False,
534
+ )
535
+ else:
536
+ x = block(x, c, feat_rope=rope, grid_height=grid_height, grid_width=grid_width)
537
+
538
+ # Slice off in-context tokens
539
+ if self.in_context_len > 0:
540
+ x = x[:, self.in_context_len :]
541
+
542
+ # Final Layer
543
+ c = self.act_final(c)
544
+ shift, scale = self.adaLN_modulation_final(c).chunk(2, dim=1)
545
+
546
+ x = modulate(self.norm_final(x), shift, scale)
547
+ x = self.linear_final(x)
548
+
549
+ # Unpatchify
550
+ x = x.reshape(shape=(x.shape[0], grid_height, grid_width, self.patch_size, self.patch_size, self.out_channels))
551
+ x = torch.einsum("nhwpqc->nchpwq", x)
552
+ output = x.reshape(
553
+ shape=(x.shape[0], self.out_channels, grid_height * self.patch_size, grid_width * self.patch_size)
554
+ )
555
+
556
+ if not return_dict:
557
+ return (output,)
558
+
559
+ return Transformer2DModelOutput(sample=output)
560
+
561
+
562
+ class CAFMJiTGenerator2DModel(JiTTransformer2DModel):
563
+ """JiT backbone with continuous adversarial flow velocity head."""
564
+
565
+ def forward(self, x: torch.Tensor, y: torch.Tensor, t: torch.Tensor) -> torch.Tensor:
566
+ x_pred = super().forward(
567
+ hidden_states=x,
568
+ timestep=1.0 - t,
569
+ class_labels=y,
570
+ return_dict=True,
571
+ ).sample
572
+ t_batch = t.view(-1, 1, 1, 1).clamp_min(0.05)
573
+ return (x - x_pred) / t_batch
CAFM-JiT-H-16-256/model_index.json ADDED
@@ -0,0 +1,1017 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": [
3
+ "pipeline",
4
+ "CAFMJiTPipeline"
5
+ ],
6
+ "_diffusers_version": "0.36.0",
7
+ "id2label": {
8
+ "0": "tench, Tinca tinca",
9
+ "1": "goldfish, Carassius auratus",
10
+ "2": "great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias",
11
+ "3": "tiger shark, Galeocerdo cuvieri",
12
+ "4": "hammerhead, hammerhead shark",
13
+ "5": "electric ray, crampfish, numbfish, torpedo",
14
+ "6": "stingray",
15
+ "7": "cock",
16
+ "8": "hen",
17
+ "9": "ostrich, Struthio camelus",
18
+ "10": "brambling, Fringilla montifringilla",
19
+ "11": "goldfinch, Carduelis carduelis",
20
+ "12": "house finch, linnet, Carpodacus mexicanus",
21
+ "13": "junco, snowbird",
22
+ "14": "indigo bunting, indigo finch, indigo bird, Passerina cyanea",
23
+ "15": "robin, American robin, Turdus migratorius",
24
+ "16": "bulbul",
25
+ "17": "jay",
26
+ "18": "magpie",
27
+ "19": "chickadee",
28
+ "20": "water ouzel, dipper",
29
+ "21": "kite",
30
+ "22": "bald eagle, American eagle, Haliaeetus leucocephalus",
31
+ "23": "vulture",
32
+ "24": "great grey owl, great gray owl, Strix nebulosa",
33
+ "25": "European fire salamander, Salamandra salamandra",
34
+ "26": "common newt, Triturus vulgaris",
35
+ "27": "eft",
36
+ "28": "spotted salamander, Ambystoma maculatum",
37
+ "29": "axolotl, mud puppy, Ambystoma mexicanum",
38
+ "30": "bullfrog, Rana catesbeiana",
39
+ "31": "tree frog, tree-frog",
40
+ "32": "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui",
41
+ "33": "loggerhead, loggerhead turtle, Caretta caretta",
42
+ "34": "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea",
43
+ "35": "mud turtle",
44
+ "36": "terrapin",
45
+ "37": "box turtle, box tortoise",
46
+ "38": "banded gecko",
47
+ "39": "common iguana, iguana, Iguana iguana",
48
+ "40": "American chameleon, anole, Anolis carolinensis",
49
+ "41": "whiptail, whiptail lizard",
50
+ "42": "agama",
51
+ "43": "frilled lizard, Chlamydosaurus kingi",
52
+ "44": "alligator lizard",
53
+ "45": "Gila monster, Heloderma suspectum",
54
+ "46": "green lizard, Lacerta viridis",
55
+ "47": "African chameleon, Chamaeleo chamaeleon",
56
+ "48": "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis",
57
+ "49": "African crocodile, Nile crocodile, Crocodylus niloticus",
58
+ "50": "American alligator, Alligator mississipiensis",
59
+ "51": "triceratops",
60
+ "52": "thunder snake, worm snake, Carphophis amoenus",
61
+ "53": "ringneck snake, ring-necked snake, ring snake",
62
+ "54": "hognose snake, puff adder, sand viper",
63
+ "55": "green snake, grass snake",
64
+ "56": "king snake, kingsnake",
65
+ "57": "garter snake, grass snake",
66
+ "58": "water snake",
67
+ "59": "vine snake",
68
+ "60": "night snake, Hypsiglena torquata",
69
+ "61": "boa constrictor, Constrictor constrictor",
70
+ "62": "rock python, rock snake, Python sebae",
71
+ "63": "Indian cobra, Naja naja",
72
+ "64": "green mamba",
73
+ "65": "sea snake",
74
+ "66": "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus",
75
+ "67": "diamondback, diamondback rattlesnake, Crotalus adamanteus",
76
+ "68": "sidewinder, horned rattlesnake, Crotalus cerastes",
77
+ "69": "trilobite",
78
+ "70": "harvestman, daddy longlegs, Phalangium opilio",
79
+ "71": "scorpion",
80
+ "72": "black and gold garden spider, Argiope aurantia",
81
+ "73": "barn spider, Araneus cavaticus",
82
+ "74": "garden spider, Aranea diademata",
83
+ "75": "black widow, Latrodectus mactans",
84
+ "76": "tarantula",
85
+ "77": "wolf spider, hunting spider",
86
+ "78": "tick",
87
+ "79": "centipede",
88
+ "80": "black grouse",
89
+ "81": "ptarmigan",
90
+ "82": "ruffed grouse, partridge, Bonasa umbellus",
91
+ "83": "prairie chicken, prairie grouse, prairie fowl",
92
+ "84": "peacock",
93
+ "85": "quail",
94
+ "86": "partridge",
95
+ "87": "African grey, African gray, Psittacus erithacus",
96
+ "88": "macaw",
97
+ "89": "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita",
98
+ "90": "lorikeet",
99
+ "91": "coucal",
100
+ "92": "bee eater",
101
+ "93": "hornbill",
102
+ "94": "hummingbird",
103
+ "95": "jacamar",
104
+ "96": "toucan",
105
+ "97": "drake",
106
+ "98": "red-breasted merganser, Mergus serrator",
107
+ "99": "goose",
108
+ "100": "black swan, Cygnus atratus",
109
+ "101": "tusker",
110
+ "102": "echidna, spiny anteater, anteater",
111
+ "103": "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus",
112
+ "104": "wallaby, brush kangaroo",
113
+ "105": "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus",
114
+ "106": "wombat",
115
+ "107": "jellyfish",
116
+ "108": "sea anemone, anemone",
117
+ "109": "brain coral",
118
+ "110": "flatworm, platyhelminth",
119
+ "111": "nematode, nematode worm, roundworm",
120
+ "112": "conch",
121
+ "113": "snail",
122
+ "114": "slug",
123
+ "115": "sea slug, nudibranch",
124
+ "116": "chiton, coat-of-mail shell, sea cradle, polyplacophore",
125
+ "117": "chambered nautilus, pearly nautilus, nautilus",
126
+ "118": "Dungeness crab, Cancer magister",
127
+ "119": "rock crab, Cancer irroratus",
128
+ "120": "fiddler crab",
129
+ "121": "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica",
130
+ "122": "American lobster, Northern lobster, Maine lobster, Homarus americanus",
131
+ "123": "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish",
132
+ "124": "crayfish, crawfish, crawdad, crawdaddy",
133
+ "125": "hermit crab",
134
+ "126": "isopod",
135
+ "127": "white stork, Ciconia ciconia",
136
+ "128": "black stork, Ciconia nigra",
137
+ "129": "spoonbill",
138
+ "130": "flamingo",
139
+ "131": "little blue heron, Egretta caerulea",
140
+ "132": "American egret, great white heron, Egretta albus",
141
+ "133": "bittern",
142
+ "134": "crane",
143
+ "135": "limpkin, Aramus pictus",
144
+ "136": "European gallinule, Porphyrio porphyrio",
145
+ "137": "American coot, marsh hen, mud hen, water hen, Fulica americana",
146
+ "138": "bustard",
147
+ "139": "ruddy turnstone, Arenaria interpres",
148
+ "140": "red-backed sandpiper, dunlin, Erolia alpina",
149
+ "141": "redshank, Tringa totanus",
150
+ "142": "dowitcher",
151
+ "143": "oystercatcher, oyster catcher",
152
+ "144": "pelican",
153
+ "145": "king penguin, Aptenodytes patagonica",
154
+ "146": "albatross, mollymawk",
155
+ "147": "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus",
156
+ "148": "killer whale, killer, orca, grampus, sea wolf, Orcinus orca",
157
+ "149": "dugong, Dugong dugon",
158
+ "150": "sea lion",
159
+ "151": "Chihuahua",
160
+ "152": "Japanese spaniel",
161
+ "153": "Maltese dog, Maltese terrier, Maltese",
162
+ "154": "Pekinese, Pekingese, Peke",
163
+ "155": "Shih-Tzu",
164
+ "156": "Blenheim spaniel",
165
+ "157": "papillon",
166
+ "158": "toy terrier",
167
+ "159": "Rhodesian ridgeback",
168
+ "160": "Afghan hound, Afghan",
169
+ "161": "basset, basset hound",
170
+ "162": "beagle",
171
+ "163": "bloodhound, sleuthhound",
172
+ "164": "bluetick",
173
+ "165": "black-and-tan coonhound",
174
+ "166": "Walker hound, Walker foxhound",
175
+ "167": "English foxhound",
176
+ "168": "redbone",
177
+ "169": "borzoi, Russian wolfhound",
178
+ "170": "Irish wolfhound",
179
+ "171": "Italian greyhound",
180
+ "172": "whippet",
181
+ "173": "Ibizan hound, Ibizan Podenco",
182
+ "174": "Norwegian elkhound, elkhound",
183
+ "175": "otterhound, otter hound",
184
+ "176": "Saluki, gazelle hound",
185
+ "177": "Scottish deerhound, deerhound",
186
+ "178": "Weimaraner",
187
+ "179": "Staffordshire bullterrier, Staffordshire bull terrier",
188
+ "180": "American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier",
189
+ "181": "Bedlington terrier",
190
+ "182": "Border terrier",
191
+ "183": "Kerry blue terrier",
192
+ "184": "Irish terrier",
193
+ "185": "Norfolk terrier",
194
+ "186": "Norwich terrier",
195
+ "187": "Yorkshire terrier",
196
+ "188": "wire-haired fox terrier",
197
+ "189": "Lakeland terrier",
198
+ "190": "Sealyham terrier, Sealyham",
199
+ "191": "Airedale, Airedale terrier",
200
+ "192": "cairn, cairn terrier",
201
+ "193": "Australian terrier",
202
+ "194": "Dandie Dinmont, Dandie Dinmont terrier",
203
+ "195": "Boston bull, Boston terrier",
204
+ "196": "miniature schnauzer",
205
+ "197": "giant schnauzer",
206
+ "198": "standard schnauzer",
207
+ "199": "Scotch terrier, Scottish terrier, Scottie",
208
+ "200": "Tibetan terrier, chrysanthemum dog",
209
+ "201": "silky terrier, Sydney silky",
210
+ "202": "soft-coated wheaten terrier",
211
+ "203": "West Highland white terrier",
212
+ "204": "Lhasa, Lhasa apso",
213
+ "205": "flat-coated retriever",
214
+ "206": "curly-coated retriever",
215
+ "207": "golden retriever",
216
+ "208": "Labrador retriever",
217
+ "209": "Chesapeake Bay retriever",
218
+ "210": "German short-haired pointer",
219
+ "211": "vizsla, Hungarian pointer",
220
+ "212": "English setter",
221
+ "213": "Irish setter, red setter",
222
+ "214": "Gordon setter",
223
+ "215": "Brittany spaniel",
224
+ "216": "clumber, clumber spaniel",
225
+ "217": "English springer, English springer spaniel",
226
+ "218": "Welsh springer spaniel",
227
+ "219": "cocker spaniel, English cocker spaniel, cocker",
228
+ "220": "Sussex spaniel",
229
+ "221": "Irish water spaniel",
230
+ "222": "kuvasz",
231
+ "223": "schipperke",
232
+ "224": "groenendael",
233
+ "225": "malinois",
234
+ "226": "briard",
235
+ "227": "kelpie",
236
+ "228": "komondor",
237
+ "229": "Old English sheepdog, bobtail",
238
+ "230": "Shetland sheepdog, Shetland sheep dog, Shetland",
239
+ "231": "collie",
240
+ "232": "Border collie",
241
+ "233": "Bouvier des Flandres, Bouviers des Flandres",
242
+ "234": "Rottweiler",
243
+ "235": "German shepherd, German shepherd dog, German police dog, alsatian",
244
+ "236": "Doberman, Doberman pinscher",
245
+ "237": "miniature pinscher",
246
+ "238": "Greater Swiss Mountain dog",
247
+ "239": "Bernese mountain dog",
248
+ "240": "Appenzeller",
249
+ "241": "EntleBucher",
250
+ "242": "boxer",
251
+ "243": "bull mastiff",
252
+ "244": "Tibetan mastiff",
253
+ "245": "French bulldog",
254
+ "246": "Great Dane",
255
+ "247": "Saint Bernard, St Bernard",
256
+ "248": "Eskimo dog, husky",
257
+ "249": "malamute, malemute, Alaskan malamute",
258
+ "250": "Siberian husky",
259
+ "251": "dalmatian, coach dog, carriage dog",
260
+ "252": "affenpinscher, monkey pinscher, monkey dog",
261
+ "253": "basenji",
262
+ "254": "pug, pug-dog",
263
+ "255": "Leonberg",
264
+ "256": "Newfoundland, Newfoundland dog",
265
+ "257": "Great Pyrenees",
266
+ "258": "Samoyed, Samoyede",
267
+ "259": "Pomeranian",
268
+ "260": "chow, chow chow",
269
+ "261": "keeshond",
270
+ "262": "Brabancon griffon",
271
+ "263": "Pembroke, Pembroke Welsh corgi",
272
+ "264": "Cardigan, Cardigan Welsh corgi",
273
+ "265": "toy poodle",
274
+ "266": "miniature poodle",
275
+ "267": "standard poodle",
276
+ "268": "Mexican hairless",
277
+ "269": "timber wolf, grey wolf, gray wolf, Canis lupus",
278
+ "270": "white wolf, Arctic wolf, Canis lupus tundrarum",
279
+ "271": "red wolf, maned wolf, Canis rufus, Canis niger",
280
+ "272": "coyote, prairie wolf, brush wolf, Canis latrans",
281
+ "273": "dingo, warrigal, warragal, Canis dingo",
282
+ "274": "dhole, Cuon alpinus",
283
+ "275": "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus",
284
+ "276": "hyena, hyaena",
285
+ "277": "red fox, Vulpes vulpes",
286
+ "278": "kit fox, Vulpes macrotis",
287
+ "279": "Arctic fox, white fox, Alopex lagopus",
288
+ "280": "grey fox, gray fox, Urocyon cinereoargenteus",
289
+ "281": "tabby, tabby cat",
290
+ "282": "tiger cat",
291
+ "283": "Persian cat",
292
+ "284": "Siamese cat, Siamese",
293
+ "285": "Egyptian cat",
294
+ "286": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor",
295
+ "287": "lynx, catamount",
296
+ "288": "leopard, Panthera pardus",
297
+ "289": "snow leopard, ounce, Panthera uncia",
298
+ "290": "jaguar, panther, Panthera onca, Felis onca",
299
+ "291": "lion, king of beasts, Panthera leo",
300
+ "292": "tiger, Panthera tigris",
301
+ "293": "cheetah, chetah, Acinonyx jubatus",
302
+ "294": "brown bear, bruin, Ursus arctos",
303
+ "295": "American black bear, black bear, Ursus americanus, Euarctos americanus",
304
+ "296": "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus",
305
+ "297": "sloth bear, Melursus ursinus, Ursus ursinus",
306
+ "298": "mongoose",
307
+ "299": "meerkat, mierkat",
308
+ "300": "tiger beetle",
309
+ "301": "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle",
310
+ "302": "ground beetle, carabid beetle",
311
+ "303": "long-horned beetle, longicorn, longicorn beetle",
312
+ "304": "leaf beetle, chrysomelid",
313
+ "305": "dung beetle",
314
+ "306": "rhinoceros beetle",
315
+ "307": "weevil",
316
+ "308": "fly",
317
+ "309": "bee",
318
+ "310": "ant, emmet, pismire",
319
+ "311": "grasshopper, hopper",
320
+ "312": "cricket",
321
+ "313": "walking stick, walkingstick, stick insect",
322
+ "314": "cockroach, roach",
323
+ "315": "mantis, mantid",
324
+ "316": "cicada, cicala",
325
+ "317": "leafhopper",
326
+ "318": "lacewing, lacewing fly",
327
+ "319": "dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
328
+ "320": "damselfly",
329
+ "321": "admiral",
330
+ "322": "ringlet, ringlet butterfly",
331
+ "323": "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus",
332
+ "324": "cabbage butterfly",
333
+ "325": "sulphur butterfly, sulfur butterfly",
334
+ "326": "lycaenid, lycaenid butterfly",
335
+ "327": "starfish, sea star",
336
+ "328": "sea urchin",
337
+ "329": "sea cucumber, holothurian",
338
+ "330": "wood rabbit, cottontail, cottontail rabbit",
339
+ "331": "hare",
340
+ "332": "Angora, Angora rabbit",
341
+ "333": "hamster",
342
+ "334": "porcupine, hedgehog",
343
+ "335": "fox squirrel, eastern fox squirrel, Sciurus niger",
344
+ "336": "marmot",
345
+ "337": "beaver",
346
+ "338": "guinea pig, Cavia cobaya",
347
+ "339": "sorrel",
348
+ "340": "zebra",
349
+ "341": "hog, pig, grunter, squealer, Sus scrofa",
350
+ "342": "wild boar, boar, Sus scrofa",
351
+ "343": "warthog",
352
+ "344": "hippopotamus, hippo, river horse, Hippopotamus amphibius",
353
+ "345": "ox",
354
+ "346": "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis",
355
+ "347": "bison",
356
+ "348": "ram, tup",
357
+ "349": "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis",
358
+ "350": "ibex, Capra ibex",
359
+ "351": "hartebeest",
360
+ "352": "impala, Aepyceros melampus",
361
+ "353": "gazelle",
362
+ "354": "Arabian camel, dromedary, Camelus dromedarius",
363
+ "355": "llama",
364
+ "356": "weasel",
365
+ "357": "mink",
366
+ "358": "polecat, fitch, foulmart, foumart, Mustela putorius",
367
+ "359": "black-footed ferret, ferret, Mustela nigripes",
368
+ "360": "otter",
369
+ "361": "skunk, polecat, wood pussy",
370
+ "362": "badger",
371
+ "363": "armadillo",
372
+ "364": "three-toed sloth, ai, Bradypus tridactylus",
373
+ "365": "orangutan, orang, orangutang, Pongo pygmaeus",
374
+ "366": "gorilla, Gorilla gorilla",
375
+ "367": "chimpanzee, chimp, Pan troglodytes",
376
+ "368": "gibbon, Hylobates lar",
377
+ "369": "siamang, Hylobates syndactylus, Symphalangus syndactylus",
378
+ "370": "guenon, guenon monkey",
379
+ "371": "patas, hussar monkey, Erythrocebus patas",
380
+ "372": "baboon",
381
+ "373": "macaque",
382
+ "374": "langur",
383
+ "375": "colobus, colobus monkey",
384
+ "376": "proboscis monkey, Nasalis larvatus",
385
+ "377": "marmoset",
386
+ "378": "capuchin, ringtail, Cebus capucinus",
387
+ "379": "howler monkey, howler",
388
+ "380": "titi, titi monkey",
389
+ "381": "spider monkey, Ateles geoffroyi",
390
+ "382": "squirrel monkey, Saimiri sciureus",
391
+ "383": "Madagascar cat, ring-tailed lemur, Lemur catta",
392
+ "384": "indri, indris, Indri indri, Indri brevicaudatus",
393
+ "385": "Indian elephant, Elephas maximus",
394
+ "386": "African elephant, Loxodonta africana",
395
+ "387": "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens",
396
+ "388": "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca",
397
+ "389": "barracouta, snoek",
398
+ "390": "eel",
399
+ "391": "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch",
400
+ "392": "rock beauty, Holocanthus tricolor",
401
+ "393": "anemone fish",
402
+ "394": "sturgeon",
403
+ "395": "gar, garfish, garpike, billfish, Lepisosteus osseus",
404
+ "396": "lionfish",
405
+ "397": "puffer, pufferfish, blowfish, globefish",
406
+ "398": "abacus",
407
+ "399": "abaya",
408
+ "400": "academic gown, academic robe, judge robe",
409
+ "401": "accordion, piano accordion, squeeze box",
410
+ "402": "acoustic guitar",
411
+ "403": "aircraft carrier, carrier, flattop, attack aircraft carrier",
412
+ "404": "airliner",
413
+ "405": "airship, dirigible",
414
+ "406": "altar",
415
+ "407": "ambulance",
416
+ "408": "amphibian, amphibious vehicle",
417
+ "409": "analog clock",
418
+ "410": "apiary, bee house",
419
+ "411": "apron",
420
+ "412": "ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin",
421
+ "413": "assault rifle, assault gun",
422
+ "414": "backpack, back pack, knapsack, packsack, rucksack, haversack",
423
+ "415": "bakery, bakeshop, bakehouse",
424
+ "416": "balance beam, beam",
425
+ "417": "balloon",
426
+ "418": "ballpoint, ballpoint pen, ballpen, Biro",
427
+ "419": "Band Aid",
428
+ "420": "banjo",
429
+ "421": "bannister, banister, balustrade, balusters, handrail",
430
+ "422": "barbell",
431
+ "423": "barber chair",
432
+ "424": "barbershop",
433
+ "425": "barn",
434
+ "426": "barometer",
435
+ "427": "barrel, cask",
436
+ "428": "barrow, garden cart, lawn cart, wheelbarrow",
437
+ "429": "baseball",
438
+ "430": "basketball",
439
+ "431": "bassinet",
440
+ "432": "bassoon",
441
+ "433": "bathing cap, swimming cap",
442
+ "434": "bath towel",
443
+ "435": "bathtub, bathing tub, bath, tub",
444
+ "436": "beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon",
445
+ "437": "beacon, lighthouse, beacon light, pharos",
446
+ "438": "beaker",
447
+ "439": "bearskin, busby, shako",
448
+ "440": "beer bottle",
449
+ "441": "beer glass",
450
+ "442": "bell cote, bell cot",
451
+ "443": "bib",
452
+ "444": "bicycle-built-for-two, tandem bicycle, tandem",
453
+ "445": "bikini, two-piece",
454
+ "446": "binder, ring-binder",
455
+ "447": "binoculars, field glasses, opera glasses",
456
+ "448": "birdhouse",
457
+ "449": "boathouse",
458
+ "450": "bobsled, bobsleigh, bob",
459
+ "451": "bolo tie, bolo, bola tie, bola",
460
+ "452": "bonnet, poke bonnet",
461
+ "453": "bookcase",
462
+ "454": "bookshop, bookstore, bookstall",
463
+ "455": "bottlecap",
464
+ "456": "bow",
465
+ "457": "bow tie, bow-tie, bowtie",
466
+ "458": "brass, memorial tablet, plaque",
467
+ "459": "brassiere, bra, bandeau",
468
+ "460": "breakwater, groin, groyne, mole, bulwark, seawall, jetty",
469
+ "461": "breastplate, aegis, egis",
470
+ "462": "broom",
471
+ "463": "bucket, pail",
472
+ "464": "buckle",
473
+ "465": "bulletproof vest",
474
+ "466": "bullet train, bullet",
475
+ "467": "butcher shop, meat market",
476
+ "468": "cab, hack, taxi, taxicab",
477
+ "469": "caldron, cauldron",
478
+ "470": "candle, taper, wax light",
479
+ "471": "cannon",
480
+ "472": "canoe",
481
+ "473": "can opener, tin opener",
482
+ "474": "cardigan",
483
+ "475": "car mirror",
484
+ "476": "carousel, carrousel, merry-go-round, roundabout, whirligig",
485
+ "477": "carpenters kit, tool kit",
486
+ "478": "carton",
487
+ "479": "car wheel",
488
+ "480": "cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM",
489
+ "481": "cassette",
490
+ "482": "cassette player",
491
+ "483": "castle",
492
+ "484": "catamaran",
493
+ "485": "CD player",
494
+ "486": "cello, violoncello",
495
+ "487": "cellular telephone, cellular phone, cellphone, cell, mobile phone",
496
+ "488": "chain",
497
+ "489": "chainlink fence",
498
+ "490": "chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour",
499
+ "491": "chain saw, chainsaw",
500
+ "492": "chest",
501
+ "493": "chiffonier, commode",
502
+ "494": "chime, bell, gong",
503
+ "495": "china cabinet, china closet",
504
+ "496": "Christmas stocking",
505
+ "497": "church, church building",
506
+ "498": "cinema, movie theater, movie theatre, movie house, picture palace",
507
+ "499": "cleaver, meat cleaver, chopper",
508
+ "500": "cliff dwelling",
509
+ "501": "cloak",
510
+ "502": "clog, geta, patten, sabot",
511
+ "503": "cocktail shaker",
512
+ "504": "coffee mug",
513
+ "505": "coffeepot",
514
+ "506": "coil, spiral, volute, whorl, helix",
515
+ "507": "combination lock",
516
+ "508": "computer keyboard, keypad",
517
+ "509": "confectionery, confectionary, candy store",
518
+ "510": "container ship, containership, container vessel",
519
+ "511": "convertible",
520
+ "512": "corkscrew, bottle screw",
521
+ "513": "cornet, horn, trumpet, trump",
522
+ "514": "cowboy boot",
523
+ "515": "cowboy hat, ten-gallon hat",
524
+ "516": "cradle",
525
+ "517": "crane",
526
+ "518": "crash helmet",
527
+ "519": "crate",
528
+ "520": "crib, cot",
529
+ "521": "Crock Pot",
530
+ "522": "croquet ball",
531
+ "523": "crutch",
532
+ "524": "cuirass",
533
+ "525": "dam, dike, dyke",
534
+ "526": "desk",
535
+ "527": "desktop computer",
536
+ "528": "dial telephone, dial phone",
537
+ "529": "diaper, nappy, napkin",
538
+ "530": "digital clock",
539
+ "531": "digital watch",
540
+ "532": "dining table, board",
541
+ "533": "dishrag, dishcloth",
542
+ "534": "dishwasher, dish washer, dishwashing machine",
543
+ "535": "disk brake, disc brake",
544
+ "536": "dock, dockage, docking facility",
545
+ "537": "dogsled, dog sled, dog sleigh",
546
+ "538": "dome",
547
+ "539": "doormat, welcome mat",
548
+ "540": "drilling platform, offshore rig",
549
+ "541": "drum, membranophone, tympan",
550
+ "542": "drumstick",
551
+ "543": "dumbbell",
552
+ "544": "Dutch oven",
553
+ "545": "electric fan, blower",
554
+ "546": "electric guitar",
555
+ "547": "electric locomotive",
556
+ "548": "entertainment center",
557
+ "549": "envelope",
558
+ "550": "espresso maker",
559
+ "551": "face powder",
560
+ "552": "feather boa, boa",
561
+ "553": "file, file cabinet, filing cabinet",
562
+ "554": "fireboat",
563
+ "555": "fire engine, fire truck",
564
+ "556": "fire screen, fireguard",
565
+ "557": "flagpole, flagstaff",
566
+ "558": "flute, transverse flute",
567
+ "559": "folding chair",
568
+ "560": "football helmet",
569
+ "561": "forklift",
570
+ "562": "fountain",
571
+ "563": "fountain pen",
572
+ "564": "four-poster",
573
+ "565": "freight car",
574
+ "566": "French horn, horn",
575
+ "567": "frying pan, frypan, skillet",
576
+ "568": "fur coat",
577
+ "569": "garbage truck, dustcart",
578
+ "570": "gasmask, respirator, gas helmet",
579
+ "571": "gas pump, gasoline pump, petrol pump, island dispenser",
580
+ "572": "goblet",
581
+ "573": "go-kart",
582
+ "574": "golf ball",
583
+ "575": "golfcart, golf cart",
584
+ "576": "gondola",
585
+ "577": "gong, tam-tam",
586
+ "578": "gown",
587
+ "579": "grand piano, grand",
588
+ "580": "greenhouse, nursery, glasshouse",
589
+ "581": "grille, radiator grille",
590
+ "582": "grocery store, grocery, food market, market",
591
+ "583": "guillotine",
592
+ "584": "hair slide",
593
+ "585": "hair spray",
594
+ "586": "half track",
595
+ "587": "hammer",
596
+ "588": "hamper",
597
+ "589": "hand blower, blow dryer, blow drier, hair dryer, hair drier",
598
+ "590": "hand-held computer, hand-held microcomputer",
599
+ "591": "handkerchief, hankie, hanky, hankey",
600
+ "592": "hard disc, hard disk, fixed disk",
601
+ "593": "harmonica, mouth organ, harp, mouth harp",
602
+ "594": "harp",
603
+ "595": "harvester, reaper",
604
+ "596": "hatchet",
605
+ "597": "holster",
606
+ "598": "home theater, home theatre",
607
+ "599": "honeycomb",
608
+ "600": "hook, claw",
609
+ "601": "hoopskirt, crinoline",
610
+ "602": "horizontal bar, high bar",
611
+ "603": "horse cart, horse-cart",
612
+ "604": "hourglass",
613
+ "605": "iPod",
614
+ "606": "iron, smoothing iron",
615
+ "607": "jack-o-lantern",
616
+ "608": "jean, blue jean, denim",
617
+ "609": "jeep, landrover",
618
+ "610": "jersey, T-shirt, tee shirt",
619
+ "611": "jigsaw puzzle",
620
+ "612": "jinrikisha, ricksha, rickshaw",
621
+ "613": "joystick",
622
+ "614": "kimono",
623
+ "615": "knee pad",
624
+ "616": "knot",
625
+ "617": "lab coat, laboratory coat",
626
+ "618": "ladle",
627
+ "619": "lampshade, lamp shade",
628
+ "620": "laptop, laptop computer",
629
+ "621": "lawn mower, mower",
630
+ "622": "lens cap, lens cover",
631
+ "623": "letter opener, paper knife, paperknife",
632
+ "624": "library",
633
+ "625": "lifeboat",
634
+ "626": "lighter, light, igniter, ignitor",
635
+ "627": "limousine, limo",
636
+ "628": "liner, ocean liner",
637
+ "629": "lipstick, lip rouge",
638
+ "630": "Loafer",
639
+ "631": "lotion",
640
+ "632": "loudspeaker, speaker, speaker unit, loudspeaker system, speaker system",
641
+ "633": "loupe, jewelers loupe",
642
+ "634": "lumbermill, sawmill",
643
+ "635": "magnetic compass",
644
+ "636": "mailbag, postbag",
645
+ "637": "mailbox, letter box",
646
+ "638": "maillot",
647
+ "639": "maillot, tank suit",
648
+ "640": "manhole cover",
649
+ "641": "maraca",
650
+ "642": "marimba, xylophone",
651
+ "643": "mask",
652
+ "644": "matchstick",
653
+ "645": "maypole",
654
+ "646": "maze, labyrinth",
655
+ "647": "measuring cup",
656
+ "648": "medicine chest, medicine cabinet",
657
+ "649": "megalith, megalithic structure",
658
+ "650": "microphone, mike",
659
+ "651": "microwave, microwave oven",
660
+ "652": "military uniform",
661
+ "653": "milk can",
662
+ "654": "minibus",
663
+ "655": "miniskirt, mini",
664
+ "656": "minivan",
665
+ "657": "missile",
666
+ "658": "mitten",
667
+ "659": "mixing bowl",
668
+ "660": "mobile home, manufactured home",
669
+ "661": "Model T",
670
+ "662": "modem",
671
+ "663": "monastery",
672
+ "664": "monitor",
673
+ "665": "moped",
674
+ "666": "mortar",
675
+ "667": "mortarboard",
676
+ "668": "mosque",
677
+ "669": "mosquito net",
678
+ "670": "motor scooter, scooter",
679
+ "671": "mountain bike, all-terrain bike, off-roader",
680
+ "672": "mountain tent",
681
+ "673": "mouse, computer mouse",
682
+ "674": "mousetrap",
683
+ "675": "moving van",
684
+ "676": "muzzle",
685
+ "677": "nail",
686
+ "678": "neck brace",
687
+ "679": "necklace",
688
+ "680": "nipple",
689
+ "681": "notebook, notebook computer",
690
+ "682": "obelisk",
691
+ "683": "oboe, hautboy, hautbois",
692
+ "684": "ocarina, sweet potato",
693
+ "685": "odometer, hodometer, mileometer, milometer",
694
+ "686": "oil filter",
695
+ "687": "organ, pipe organ",
696
+ "688": "oscilloscope, scope, cathode-ray oscilloscope, CRO",
697
+ "689": "overskirt",
698
+ "690": "oxcart",
699
+ "691": "oxygen mask",
700
+ "692": "packet",
701
+ "693": "paddle, boat paddle",
702
+ "694": "paddlewheel, paddle wheel",
703
+ "695": "padlock",
704
+ "696": "paintbrush",
705
+ "697": "pajama, pyjama, pjs, jammies",
706
+ "698": "palace",
707
+ "699": "panpipe, pandean pipe, syrinx",
708
+ "700": "paper towel",
709
+ "701": "parachute, chute",
710
+ "702": "parallel bars, bars",
711
+ "703": "park bench",
712
+ "704": "parking meter",
713
+ "705": "passenger car, coach, carriage",
714
+ "706": "patio, terrace",
715
+ "707": "pay-phone, pay-station",
716
+ "708": "pedestal, plinth, footstall",
717
+ "709": "pencil box, pencil case",
718
+ "710": "pencil sharpener",
719
+ "711": "perfume, essence",
720
+ "712": "Petri dish",
721
+ "713": "photocopier",
722
+ "714": "pick, plectrum, plectron",
723
+ "715": "pickelhaube",
724
+ "716": "picket fence, paling",
725
+ "717": "pickup, pickup truck",
726
+ "718": "pier",
727
+ "719": "piggy bank, penny bank",
728
+ "720": "pill bottle",
729
+ "721": "pillow",
730
+ "722": "ping-pong ball",
731
+ "723": "pinwheel",
732
+ "724": "pirate, pirate ship",
733
+ "725": "pitcher, ewer",
734
+ "726": "plane, carpenters plane, woodworking plane",
735
+ "727": "planetarium",
736
+ "728": "plastic bag",
737
+ "729": "plate rack",
738
+ "730": "plow, plough",
739
+ "731": "plunger, plumbers helper",
740
+ "732": "Polaroid camera, Polaroid Land camera",
741
+ "733": "pole",
742
+ "734": "police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria",
743
+ "735": "poncho",
744
+ "736": "pool table, billiard table, snooker table",
745
+ "737": "pop bottle, soda bottle",
746
+ "738": "pot, flowerpot",
747
+ "739": "potters wheel",
748
+ "740": "power drill",
749
+ "741": "prayer rug, prayer mat",
750
+ "742": "printer",
751
+ "743": "prison, prison house",
752
+ "744": "projectile, missile",
753
+ "745": "projector",
754
+ "746": "puck, hockey puck",
755
+ "747": "punching bag, punch bag, punching ball, punchball",
756
+ "748": "purse",
757
+ "749": "quill, quill pen",
758
+ "750": "quilt, comforter, comfort, puff",
759
+ "751": "racer, race car, racing car",
760
+ "752": "racket, racquet",
761
+ "753": "radiator",
762
+ "754": "radio, wireless",
763
+ "755": "radio telescope, radio reflector",
764
+ "756": "rain barrel",
765
+ "757": "recreational vehicle, RV, R.V.",
766
+ "758": "reel",
767
+ "759": "reflex camera",
768
+ "760": "refrigerator, icebox",
769
+ "761": "remote control, remote",
770
+ "762": "restaurant, eating house, eating place, eatery",
771
+ "763": "revolver, six-gun, six-shooter",
772
+ "764": "rifle",
773
+ "765": "rocking chair, rocker",
774
+ "766": "rotisserie",
775
+ "767": "rubber eraser, rubber, pencil eraser",
776
+ "768": "rugby ball",
777
+ "769": "rule, ruler",
778
+ "770": "running shoe",
779
+ "771": "safe",
780
+ "772": "safety pin",
781
+ "773": "saltshaker, salt shaker",
782
+ "774": "sandal",
783
+ "775": "sarong",
784
+ "776": "sax, saxophone",
785
+ "777": "scabbard",
786
+ "778": "scale, weighing machine",
787
+ "779": "school bus",
788
+ "780": "schooner",
789
+ "781": "scoreboard",
790
+ "782": "screen, CRT screen",
791
+ "783": "screw",
792
+ "784": "screwdriver",
793
+ "785": "seat belt, seatbelt",
794
+ "786": "sewing machine",
795
+ "787": "shield, buckler",
796
+ "788": "shoe shop, shoe-shop, shoe store",
797
+ "789": "shoji",
798
+ "790": "shopping basket",
799
+ "791": "shopping cart",
800
+ "792": "shovel",
801
+ "793": "shower cap",
802
+ "794": "shower curtain",
803
+ "795": "ski",
804
+ "796": "ski mask",
805
+ "797": "sleeping bag",
806
+ "798": "slide rule, slipstick",
807
+ "799": "sliding door",
808
+ "800": "slot, one-armed bandit",
809
+ "801": "snorkel",
810
+ "802": "snowmobile",
811
+ "803": "snowplow, snowplough",
812
+ "804": "soap dispenser",
813
+ "805": "soccer ball",
814
+ "806": "sock",
815
+ "807": "solar dish, solar collector, solar furnace",
816
+ "808": "sombrero",
817
+ "809": "soup bowl",
818
+ "810": "space bar",
819
+ "811": "space heater",
820
+ "812": "space shuttle",
821
+ "813": "spatula",
822
+ "814": "speedboat",
823
+ "815": "spider web, spiders web",
824
+ "816": "spindle",
825
+ "817": "sports car, sport car",
826
+ "818": "spotlight, spot",
827
+ "819": "stage",
828
+ "820": "steam locomotive",
829
+ "821": "steel arch bridge",
830
+ "822": "steel drum",
831
+ "823": "stethoscope",
832
+ "824": "stole",
833
+ "825": "stone wall",
834
+ "826": "stopwatch, stop watch",
835
+ "827": "stove",
836
+ "828": "strainer",
837
+ "829": "streetcar, tram, tramcar, trolley, trolley car",
838
+ "830": "stretcher",
839
+ "831": "studio couch, day bed",
840
+ "832": "stupa, tope",
841
+ "833": "submarine, pigboat, sub, U-boat",
842
+ "834": "suit, suit of clothes",
843
+ "835": "sundial",
844
+ "836": "sunglass",
845
+ "837": "sunglasses, dark glasses, shades",
846
+ "838": "sunscreen, sunblock, sun blocker",
847
+ "839": "suspension bridge",
848
+ "840": "swab, swob, mop",
849
+ "841": "sweatshirt",
850
+ "842": "swimming trunks, bathing trunks",
851
+ "843": "swing",
852
+ "844": "switch, electric switch, electrical switch",
853
+ "845": "syringe",
854
+ "846": "table lamp",
855
+ "847": "tank, army tank, armored combat vehicle, armoured combat vehicle",
856
+ "848": "tape player",
857
+ "849": "teapot",
858
+ "850": "teddy, teddy bear",
859
+ "851": "television, television system",
860
+ "852": "tennis ball",
861
+ "853": "thatch, thatched roof",
862
+ "854": "theater curtain, theatre curtain",
863
+ "855": "thimble",
864
+ "856": "thresher, thrasher, threshing machine",
865
+ "857": "throne",
866
+ "858": "tile roof",
867
+ "859": "toaster",
868
+ "860": "tobacco shop, tobacconist shop, tobacconist",
869
+ "861": "toilet seat",
870
+ "862": "torch",
871
+ "863": "totem pole",
872
+ "864": "tow truck, tow car, wrecker",
873
+ "865": "toyshop",
874
+ "866": "tractor",
875
+ "867": "trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi",
876
+ "868": "tray",
877
+ "869": "trench coat",
878
+ "870": "tricycle, trike, velocipede",
879
+ "871": "trimaran",
880
+ "872": "tripod",
881
+ "873": "triumphal arch",
882
+ "874": "trolleybus, trolley coach, trackless trolley",
883
+ "875": "trombone",
884
+ "876": "tub, vat",
885
+ "877": "turnstile",
886
+ "878": "typewriter keyboard",
887
+ "879": "umbrella",
888
+ "880": "unicycle, monocycle",
889
+ "881": "upright, upright piano",
890
+ "882": "vacuum, vacuum cleaner",
891
+ "883": "vase",
892
+ "884": "vault",
893
+ "885": "velvet",
894
+ "886": "vending machine",
895
+ "887": "vestment",
896
+ "888": "viaduct",
897
+ "889": "violin, fiddle",
898
+ "890": "volleyball",
899
+ "891": "waffle iron",
900
+ "892": "wall clock",
901
+ "893": "wallet, billfold, notecase, pocketbook",
902
+ "894": "wardrobe, closet, press",
903
+ "895": "warplane, military plane",
904
+ "896": "washbasin, handbasin, washbowl, lavabo, wash-hand basin",
905
+ "897": "washer, automatic washer, washing machine",
906
+ "898": "water bottle",
907
+ "899": "water jug",
908
+ "900": "water tower",
909
+ "901": "whiskey jug",
910
+ "902": "whistle",
911
+ "903": "wig",
912
+ "904": "window screen",
913
+ "905": "window shade",
914
+ "906": "Windsor tie",
915
+ "907": "wine bottle",
916
+ "908": "wing",
917
+ "909": "wok",
918
+ "910": "wooden spoon",
919
+ "911": "wool, woolen, woollen",
920
+ "912": "worm fence, snake fence, snake-rail fence, Virginia fence",
921
+ "913": "wreck",
922
+ "914": "yawl",
923
+ "915": "yurt",
924
+ "916": "web site, website, internet site, site",
925
+ "917": "comic book",
926
+ "918": "crossword puzzle, crossword",
927
+ "919": "street sign",
928
+ "920": "traffic light, traffic signal, stoplight",
929
+ "921": "book jacket, dust cover, dust jacket, dust wrapper",
930
+ "922": "menu",
931
+ "923": "plate",
932
+ "924": "guacamole",
933
+ "925": "consomme",
934
+ "926": "hot pot, hotpot",
935
+ "927": "trifle",
936
+ "928": "ice cream, icecream",
937
+ "929": "ice lolly, lolly, lollipop, popsicle",
938
+ "930": "French loaf",
939
+ "931": "bagel, beigel",
940
+ "932": "pretzel",
941
+ "933": "cheeseburger",
942
+ "934": "hotdog, hot dog, red hot",
943
+ "935": "mashed potato",
944
+ "936": "head cabbage",
945
+ "937": "broccoli",
946
+ "938": "cauliflower",
947
+ "939": "zucchini, courgette",
948
+ "940": "spaghetti squash",
949
+ "941": "acorn squash",
950
+ "942": "butternut squash",
951
+ "943": "cucumber, cuke",
952
+ "944": "artichoke, globe artichoke",
953
+ "945": "bell pepper",
954
+ "946": "cardoon",
955
+ "947": "mushroom",
956
+ "948": "Granny Smith",
957
+ "949": "strawberry",
958
+ "950": "orange",
959
+ "951": "lemon",
960
+ "952": "fig",
961
+ "953": "pineapple, ananas",
962
+ "954": "banana",
963
+ "955": "jackfruit, jak, jack",
964
+ "956": "custard apple",
965
+ "957": "pomegranate",
966
+ "958": "hay",
967
+ "959": "carbonara",
968
+ "960": "chocolate sauce, chocolate syrup",
969
+ "961": "dough",
970
+ "962": "meat loaf, meatloaf",
971
+ "963": "pizza, pizza pie",
972
+ "964": "potpie",
973
+ "965": "burrito",
974
+ "966": "red wine",
975
+ "967": "espresso",
976
+ "968": "cup",
977
+ "969": "eggnog",
978
+ "970": "alp",
979
+ "971": "bubble",
980
+ "972": "cliff, drop, drop-off",
981
+ "973": "coral reef",
982
+ "974": "geyser",
983
+ "975": "lakeside, lakeshore",
984
+ "976": "promontory, headland, head, foreland",
985
+ "977": "sandbar, sand bar",
986
+ "978": "seashore, coast, seacoast, sea-coast",
987
+ "979": "valley, vale",
988
+ "980": "volcano",
989
+ "981": "ballplayer, baseball player",
990
+ "982": "groom, bridegroom",
991
+ "983": "scuba diver",
992
+ "984": "rapeseed",
993
+ "985": "daisy",
994
+ "986": "yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
995
+ "987": "corn",
996
+ "988": "acorn",
997
+ "989": "hip, rose hip, rosehip",
998
+ "990": "buckeye, horse chestnut, conker",
999
+ "991": "coral fungus",
1000
+ "992": "agaric",
1001
+ "993": "gyromitra",
1002
+ "994": "stinkhorn, carrion fungus",
1003
+ "995": "earthstar",
1004
+ "996": "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa",
1005
+ "997": "bolete",
1006
+ "998": "ear, spike, capitulum",
1007
+ "999": "toilet tissue, toilet paper, bathroom tissue"
1008
+ },
1009
+ "generator": [
1010
+ "modeling_cafm_jit",
1011
+ "CAFMJiTGenerator2DModel"
1012
+ ],
1013
+ "scheduler": [
1014
+ "scheduling_continuous_flow",
1015
+ "ContinuousFlowMatchScheduler"
1016
+ ]
1017
+ }
CAFM-JiT-H-16-256/pipeline.py ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Hub custom pipeline: CAFMJiTPipeline.
2
+
3
+ Load with native Hugging Face diffusers and trust_remote_code=True.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import importlib.util
9
+ import json
10
+ from pathlib import Path
11
+ from typing import Dict, List, Optional, Tuple, Union
12
+
13
+ import torch
14
+ from diffusers.pipelines.pipeline_utils import DiffusionPipeline, ImagePipelineOutput
15
+ from diffusers.utils.torch_utils import randn_tensor
16
+
17
+
18
+ class CAFMJiTPipeline(DiffusionPipeline):
19
+ model_cpu_offload_seq = "generator"
20
+
21
+ @staticmethod
22
+ def _coerce_scheduler(scheduler, generator):
23
+ if scheduler is not None and not isinstance(scheduler, (list, tuple)):
24
+ return scheduler
25
+ variant_path = getattr(generator.config, "_name_or_path", None)
26
+ if variant_path:
27
+ scheduler_dir = Path(variant_path).resolve().parent / "scheduler"
28
+ module_path = scheduler_dir / "scheduling_continuous_flow.py"
29
+ config_path = scheduler_dir / "scheduler_config.json"
30
+ if module_path.is_file() and config_path.is_file():
31
+ spec = importlib.util.spec_from_file_location("scheduling_continuous_flow", module_path)
32
+ if spec is not None and spec.loader is not None:
33
+ module = importlib.util.module_from_spec(spec)
34
+ spec.loader.exec_module(module)
35
+ return module.ContinuousFlowMatchScheduler.from_pretrained(str(scheduler_dir))
36
+ raise ValueError("CAFMJiTPipeline could not load ContinuousFlowMatchScheduler from the variant folder.")
37
+
38
+ def __init__(
39
+ self,
40
+ generator,
41
+ scheduler=None,
42
+ id2label: Optional[Dict[Union[int, str], str]] = None,
43
+ ) -> None:
44
+ super().__init__()
45
+ scheduler = self._coerce_scheduler(scheduler, generator)
46
+ self.register_modules(generator=generator, scheduler=scheduler)
47
+ self._id2label = self._normalize_id2label(id2label)
48
+ self.labels = self._build_label2id(self._id2label)
49
+ self._labels_loaded_from_model_index = bool(self._id2label)
50
+
51
+ @staticmethod
52
+ def _normalize_id2label(id2label: Optional[Dict[Union[int, str], str]]) -> Dict[int, str]:
53
+ if not id2label:
54
+ return {}
55
+ return {int(key): value for key, value in id2label.items()}
56
+
57
+ @staticmethod
58
+ def _read_id2label_from_model_index(variant_path: Optional[str]) -> Dict[int, str]:
59
+ if not variant_path:
60
+ return {}
61
+ model_index_path = Path(variant_path).resolve() / "model_index.json"
62
+ if not model_index_path.exists():
63
+ return {}
64
+ raw = json.loads(model_index_path.read_text(encoding="utf-8"))
65
+ id2label = raw.get("id2label")
66
+ if not isinstance(id2label, dict):
67
+ return {}
68
+ return {int(key): value for key, value in id2label.items()}
69
+
70
+ @staticmethod
71
+ def _build_label2id(id2label: Dict[int, str]) -> Dict[str, int]:
72
+ label2id: Dict[str, int] = {}
73
+ for class_id, value in id2label.items():
74
+ for synonym in value.split(","):
75
+ synonym = synonym.strip()
76
+ if synonym:
77
+ label2id[synonym] = int(class_id)
78
+ return dict(sorted(label2id.items()))
79
+
80
+ @property
81
+ def id2label(self) -> Dict[int, str]:
82
+ self._ensure_labels_loaded()
83
+ return self._id2label
84
+
85
+ def _ensure_labels_loaded(self) -> None:
86
+ if self._labels_loaded_from_model_index:
87
+ return
88
+ loaded = self._read_id2label_from_model_index(getattr(self.config, "_name_or_path", None))
89
+ if loaded:
90
+ self._id2label = loaded
91
+ self.labels = self._build_label2id(self._id2label)
92
+ self._labels_loaded_from_model_index = True
93
+
94
+ def get_label_ids(self, label: Union[str, List[str]]) -> List[int]:
95
+ self._ensure_labels_loaded()
96
+ labels = [label] if isinstance(label, str) else label
97
+ if not self.labels:
98
+ raise ValueError("No id2label mapping is available in this checkpoint.")
99
+ missing = [item for item in labels if item not in self.labels]
100
+ if missing:
101
+ preview = ", ".join(list(self.labels.keys())[:8])
102
+ raise ValueError(f"Unknown English label(s): {missing}. Example valid labels: {preview}, ...")
103
+ return [self.labels[item] for item in labels]
104
+
105
+ def _normalize_class_labels(
106
+ self,
107
+ class_labels: Union[int, str, List[Union[int, str]], torch.LongTensor],
108
+ device: torch.device,
109
+ ) -> torch.LongTensor:
110
+ if torch.is_tensor(class_labels):
111
+ return class_labels.to(device=device, dtype=torch.long).reshape(-1)
112
+ if isinstance(class_labels, int):
113
+ class_label_ids = [class_labels]
114
+ elif isinstance(class_labels, str):
115
+ class_label_ids = self.get_label_ids(class_labels)
116
+ elif class_labels and isinstance(class_labels[0], str):
117
+ class_label_ids = self.get_label_ids(class_labels)
118
+ else:
119
+ class_label_ids = list(class_labels)
120
+ return torch.tensor(class_label_ids, device=device, dtype=torch.long).reshape(-1)
121
+
122
+ def _default_image_size(self) -> int:
123
+ return int(self.generator.config.sample_size)
124
+
125
+ def check_inputs(
126
+ self,
127
+ height: int,
128
+ width: int,
129
+ num_inference_steps: int,
130
+ output_type: str,
131
+ sampler: str,
132
+ ) -> None:
133
+ if num_inference_steps < 1:
134
+ raise ValueError("`num_inference_steps` must be >= 1.")
135
+ if output_type not in {"pil", "np", "pt"}:
136
+ raise ValueError("output_type must be one of: 'pil', 'np', 'pt'.")
137
+ if sampler not in {"euler", "heun"}:
138
+ raise ValueError("sampler must be one of: 'euler', 'heun'.")
139
+
140
+ def prepare_latents(
141
+ self,
142
+ batch_size: int,
143
+ height: int,
144
+ width: int,
145
+ dtype: torch.dtype,
146
+ device: torch.device,
147
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]],
148
+ latents: Optional[torch.Tensor] = None,
149
+ noise_scale: float = 1.0,
150
+ ) -> torch.Tensor:
151
+ if latents is not None:
152
+ return latents.to(device=device, dtype=dtype)
153
+ return (
154
+ randn_tensor(
155
+ (batch_size, self.generator.config.in_channels, height, width),
156
+ generator=generator,
157
+ device=device,
158
+ dtype=dtype,
159
+ )
160
+ * noise_scale
161
+ )
162
+
163
+ def postprocess_pixels(self, pixels: torch.Tensor, output_type: str = "pil"):
164
+ images_pt = ((pixels.float().clamp(-1, 1) + 1.0) / 2.0).cpu()
165
+ if output_type == "pt":
166
+ return images_pt
167
+ if output_type == "np":
168
+ return images_pt.permute(0, 2, 3, 1).numpy()
169
+ return self.numpy_to_pil(images_pt.permute(0, 2, 3, 1).numpy())
170
+
171
+ def _run_denoising_loop(
172
+ self,
173
+ latents: torch.Tensor,
174
+ class_labels_tensor: torch.Tensor,
175
+ batch_size: int,
176
+ device: torch.device,
177
+ num_inference_steps: int,
178
+ sampler: str,
179
+ ) -> torch.Tensor:
180
+ self.scheduler.set_timesteps(num_inference_steps, device=device, solver=sampler)
181
+ timesteps = self.scheduler.timesteps
182
+ self.generator.eval()
183
+ for t_src, t_tgt in self.progress_bar(list(zip(timesteps[:-1], timesteps[1:]))):
184
+ t_src_batch = t_src.expand(batch_size)
185
+ t_tgt_batch = t_tgt.expand(batch_size)
186
+ outputs = self.generator(latents, class_labels_tensor, t_src_batch)
187
+ if sampler == "heun":
188
+ latents_next = self.scheduler.step(
189
+ outputs, t_src, t_tgt, latents, prediction_type="v"
190
+ ).prev_sample
191
+ outputs_next = self.generator(latents_next, class_labels_tensor, t_tgt_batch)
192
+ latents = self.scheduler.step(
193
+ outputs,
194
+ t_src,
195
+ t_tgt,
196
+ latents,
197
+ model_output_next=outputs_next,
198
+ prediction_type="v",
199
+ ).prev_sample
200
+ else:
201
+ latents = self.scheduler.step(
202
+ outputs, t_src, t_tgt, latents, prediction_type="v"
203
+ ).prev_sample
204
+ return latents
205
+
206
+ @torch.inference_mode()
207
+ def __call__(
208
+ self,
209
+ class_labels: Union[int, str, List[Union[int, str]], torch.LongTensor],
210
+ height: Optional[int] = None,
211
+ width: Optional[int] = None,
212
+ num_inference_steps: int = 100,
213
+ sampler: str = "heun",
214
+ noise_scale: float = 1.0,
215
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
216
+ latents: Optional[torch.Tensor] = None,
217
+ output_type: str = "pil",
218
+ return_dict: bool = True,
219
+ ) -> Union[ImagePipelineOutput, Tuple]:
220
+ default_size = self._default_image_size()
221
+ height = int(height or default_size)
222
+ width = int(width or default_size)
223
+ self.check_inputs(height, width, num_inference_steps, output_type, sampler)
224
+
225
+ device = getattr(self, "_execution_device", None) or next(self.generator.parameters()).device
226
+ dtype = next(self.generator.parameters()).dtype
227
+ class_labels_tensor = self._normalize_class_labels(class_labels, device=device)
228
+ batch_size = class_labels_tensor.shape[0]
229
+ latents = self.prepare_latents(
230
+ batch_size=batch_size,
231
+ height=height,
232
+ width=width,
233
+ dtype=dtype,
234
+ device=device,
235
+ generator=generator,
236
+ latents=latents,
237
+ noise_scale=noise_scale,
238
+ )
239
+ latents = self._run_denoising_loop(
240
+ latents,
241
+ class_labels_tensor,
242
+ batch_size,
243
+ device,
244
+ num_inference_steps,
245
+ sampler,
246
+ )
247
+ image = self.postprocess_pixels(latents, output_type=output_type)
248
+ self.maybe_free_model_hooks()
249
+ if not return_dict:
250
+ return (image,)
251
+ return ImagePipelineOutput(images=image)
CAFM-JiT-H-16-256/scheduler/__pycache__/scheduling_continuous_flow.cpython-312.pyc ADDED
Binary file (5.38 kB). View file
 
CAFM-JiT-H-16-256/scheduler/scheduler_config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "ContinuousFlowMatchScheduler",
3
+ "_diffusers_version": "0.36.0",
4
+ "solver": "heun"
5
+ }
CAFM-JiT-H-16-256/scheduler/scheduling_continuous_flow.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from typing import List, Optional, Tuple, Union
5
+
6
+ import torch
7
+ from diffusers.configuration_utils import ConfigMixin, register_to_config
8
+ from diffusers.schedulers.scheduling_utils import SchedulerMixin
9
+ from diffusers.utils import BaseOutput
10
+
11
+
12
+ @dataclass
13
+ class ContinuousFlowMatchSchedulerOutput(BaseOutput):
14
+ prev_sample: torch.Tensor
15
+
16
+
17
+ class ContinuousFlowMatchScheduler(SchedulerMixin, ConfigMixin):
18
+ """Flow-matching scheduler for AFM with time in [1, 0]."""
19
+
20
+ order = 2
21
+
22
+ @register_to_config
23
+ def __init__(self, solver: str = "euler"):
24
+ if solver not in {"euler", "heun"}:
25
+ raise ValueError("solver must be one of: 'euler', 'heun'.")
26
+ self.timesteps: Optional[torch.Tensor] = None
27
+ self.num_inference_steps: Optional[int] = None
28
+ self._step_index: Optional[int] = None
29
+
30
+ @property
31
+ def init_noise_sigma(self) -> float:
32
+ return 1.0
33
+
34
+ def set_timesteps(
35
+ self,
36
+ num_inference_steps: int,
37
+ device: Union[str, torch.device, None] = None,
38
+ solver: Optional[str] = None,
39
+ ) -> None:
40
+ if num_inference_steps < 1:
41
+ raise ValueError("num_inference_steps must be >= 1.")
42
+ self.num_inference_steps = num_inference_steps
43
+ if solver == "heun":
44
+ grid_size = (num_inference_steps // 2) + 1
45
+ else:
46
+ grid_size = num_inference_steps + 1
47
+ self.timesteps = torch.linspace(1.0, 0.0, grid_size, device=device, dtype=torch.float32)
48
+ self._step_index = 0
49
+ if solver is not None:
50
+ self.register_to_config(solver=solver)
51
+
52
+ def scale_model_input(self, sample: torch.Tensor, timestep: Union[float, torch.Tensor]) -> torch.Tensor:
53
+ del timestep
54
+ return sample
55
+
56
+ def _resolve_step_index(self, timestep: Union[float, torch.Tensor, None]) -> int:
57
+ if self._step_index is not None:
58
+ return self._step_index
59
+ if self.timesteps is None:
60
+ raise ValueError("Call `set_timesteps` before `step`.")
61
+ if timestep is None:
62
+ return 0
63
+ t_value = float(timestep) if not isinstance(timestep, torch.Tensor) else float(timestep.flatten()[0])
64
+ matches = (self.timesteps - t_value).abs() < 1e-6
65
+ if matches.any():
66
+ return int(matches.nonzero(as_tuple=False)[0].item())
67
+ return 0
68
+
69
+ def step(
70
+ self,
71
+ model_output: torch.Tensor,
72
+ timestep_src: Union[float, torch.Tensor],
73
+ timestep_tgt: Union[float, torch.Tensor],
74
+ sample: torch.Tensor,
75
+ model_output_next: Optional[torch.Tensor] = None,
76
+ prediction_type: str = "v",
77
+ return_dict: bool = True,
78
+ ) -> Union[ContinuousFlowMatchSchedulerOutput, Tuple[torch.Tensor]]:
79
+ if prediction_type == "x":
80
+ prev_sample = model_output
81
+ else:
82
+ t_src = torch.as_tensor(timestep_src, device=sample.device, dtype=sample.dtype)
83
+ t_tgt = torch.as_tensor(timestep_tgt, device=sample.device, dtype=sample.dtype)
84
+ while t_src.ndim < sample.ndim:
85
+ t_src = t_src.unsqueeze(-1)
86
+ t_tgt = t_tgt.unsqueeze(-1)
87
+ dt = t_src - t_tgt
88
+ if self.config.solver == "heun" and model_output_next is not None:
89
+ prev_sample = sample - dt * 0.5 * (model_output + model_output_next)
90
+ else:
91
+ prev_sample = sample - dt * model_output
92
+
93
+ step_index = self._resolve_step_index(timestep_src)
94
+ self._step_index = step_index + 1
95
+
96
+ if not return_dict:
97
+ return (prev_sample,)
98
+ return ContinuousFlowMatchSchedulerOutput(prev_sample=prev_sample)
CAFM-SiT-XL-2-256/demo.png ADDED

Git LFS Details

  • SHA256: ff6c822446213432301303aa1126f3f86c8d438e4f89e25a9d18050d39c4fdca
  • Pointer size: 131 Bytes
  • Size of remote file: 115 kB
CAFM-SiT-XL-2-256/generator/config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "CAFMSiTGenerator2DModel",
3
+ "_diffusers_version": "0.36.0",
4
+ "input_size": 32,
5
+ "patch_size": 2,
6
+ "in_channels": 4,
7
+ "hidden_size": 1152,
8
+ "depth": 28,
9
+ "num_heads": 16,
10
+ "mlp_ratio": 4.0,
11
+ "learn_sigma": true,
12
+ "class_dropout_prob": 0.0,
13
+ "num_classes": 1001
14
+ }
CAFM-SiT-XL-2-256/generator/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b3530d2a4ddbca7256d97a6aa1207dd1f058d29578465b1141e04eab0db390ed
3
+ size 2700547760
CAFM-SiT-XL-2-256/generator/modeling_cafm_sit.py ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2026 The HuggingFace Team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import math
16
+ from dataclasses import dataclass
17
+ from typing import Optional
18
+
19
+ import numpy as np
20
+ import torch
21
+ import torch.nn as nn
22
+ from timm.models.vision_transformer import Attention, Mlp, PatchEmbed
23
+
24
+ from diffusers.configuration_utils import ConfigMixin, register_to_config
25
+ from diffusers.models.modeling_utils import ModelMixin
26
+ from diffusers.utils import BaseOutput
27
+
28
+
29
+ def modulate(x: torch.Tensor, shift: torch.Tensor, scale: torch.Tensor) -> torch.Tensor:
30
+ return x * (1 + scale.unsqueeze(1)) + shift.unsqueeze(1)
31
+
32
+
33
+ @dataclass
34
+ class SiTTransformer2DModelOutput(BaseOutput):
35
+ sample: torch.Tensor
36
+
37
+
38
+ class TimestepEmbedder(nn.Module):
39
+ def __init__(self, hidden_size: int, frequency_embedding_size: int = 256):
40
+ super().__init__()
41
+ self.mlp = nn.Sequential(
42
+ nn.Linear(frequency_embedding_size, hidden_size, bias=True),
43
+ nn.SiLU(),
44
+ nn.Linear(hidden_size, hidden_size, bias=True),
45
+ )
46
+ self.frequency_embedding_size = frequency_embedding_size
47
+
48
+ @staticmethod
49
+ def timestep_embedding(t: torch.Tensor, dim: int, max_period: int = 10000) -> torch.Tensor:
50
+ half = dim // 2
51
+ freqs = torch.exp(-math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half).to(
52
+ device=t.device
53
+ )
54
+ args = t[:, None].float() * freqs[None]
55
+ embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)
56
+ if dim % 2:
57
+ embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)
58
+ return embedding
59
+
60
+ def forward(self, t: torch.Tensor) -> torch.Tensor:
61
+ emb = self.timestep_embedding(t.float(), self.frequency_embedding_size)
62
+ weight_dtype = self.mlp[0].weight.dtype
63
+ return self.mlp(emb.to(dtype=weight_dtype))
64
+
65
+
66
+ class LabelEmbedder(nn.Module):
67
+ def __init__(self, num_classes: int, hidden_size: int, dropout_prob: float):
68
+ super().__init__()
69
+ use_cfg_embedding = dropout_prob > 0
70
+ self.embedding_table = nn.Embedding(num_classes + use_cfg_embedding, hidden_size)
71
+ self.num_classes = num_classes
72
+ self.dropout_prob = dropout_prob
73
+
74
+ def token_drop(self, labels: torch.Tensor, force_drop_ids: Optional[torch.Tensor] = None) -> torch.Tensor:
75
+ if force_drop_ids is None:
76
+ drop_ids = torch.rand(labels.shape[0], device=labels.device) < self.dropout_prob
77
+ else:
78
+ drop_ids = force_drop_ids == 1
79
+ labels = torch.where(drop_ids, self.num_classes, labels)
80
+ return labels
81
+
82
+ def forward(
83
+ self,
84
+ labels: torch.Tensor,
85
+ train: bool,
86
+ force_drop_ids: Optional[torch.Tensor] = None,
87
+ ) -> torch.Tensor:
88
+ use_dropout = self.dropout_prob > 0
89
+ if (train and use_dropout) or (force_drop_ids is not None):
90
+ labels = self.token_drop(labels, force_drop_ids)
91
+ return self.embedding_table(labels)
92
+
93
+
94
+ class SiTBlock(nn.Module):
95
+ def __init__(self, hidden_size: int, num_heads: int, mlp_ratio: float = 4.0, **block_kwargs):
96
+ super().__init__()
97
+ self.norm1 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6)
98
+ self.attn = Attention(hidden_size, num_heads=num_heads, qkv_bias=True, **block_kwargs)
99
+ self.norm2 = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6)
100
+ mlp_hidden_dim = int(hidden_size * mlp_ratio)
101
+ approx_gelu = lambda: nn.GELU(approximate="tanh")
102
+ self.mlp = Mlp(in_features=hidden_size, hidden_features=mlp_hidden_dim, act_layer=approx_gelu, drop=0)
103
+ self.adaLN_modulation = nn.Sequential(nn.SiLU(), nn.Linear(hidden_size, 6 * hidden_size, bias=True))
104
+
105
+ def forward(self, x: torch.Tensor, c: torch.Tensor) -> torch.Tensor:
106
+ shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.adaLN_modulation(c).chunk(6, dim=1)
107
+ x = x + gate_msa.unsqueeze(1) * self.attn(modulate(self.norm1(x), shift_msa, scale_msa))
108
+ x = x + gate_mlp.unsqueeze(1) * self.mlp(modulate(self.norm2(x), shift_mlp, scale_mlp))
109
+ return x
110
+
111
+
112
+ class FinalLayer(nn.Module):
113
+ def __init__(self, hidden_size: int, patch_size: int, out_channels: int):
114
+ super().__init__()
115
+ self.norm_final = nn.LayerNorm(hidden_size, elementwise_affine=False, eps=1e-6)
116
+ self.linear = nn.Linear(hidden_size, patch_size * patch_size * out_channels, bias=True)
117
+ self.adaLN_modulation = nn.Sequential(nn.SiLU(), nn.Linear(hidden_size, 2 * hidden_size, bias=True))
118
+
119
+ def forward(self, x: torch.Tensor, c: torch.Tensor) -> torch.Tensor:
120
+ shift, scale = self.adaLN_modulation(c).chunk(2, dim=1)
121
+ x = modulate(self.norm_final(x), shift, scale)
122
+ return self.linear(x)
123
+
124
+
125
+ class SiTTransformer2DModel(ModelMixin, ConfigMixin):
126
+ @register_to_config
127
+ def __init__(
128
+ self,
129
+ input_size: int = 32,
130
+ patch_size: int = 2,
131
+ in_channels: int = 4,
132
+ hidden_size: int = 1152,
133
+ depth: int = 28,
134
+ num_heads: int = 16,
135
+ mlp_ratio: float = 4.0,
136
+ class_dropout_prob: float = 0.1,
137
+ num_classes: int = 1000,
138
+ learn_sigma: bool = True,
139
+ ):
140
+ super().__init__()
141
+ self.learn_sigma = learn_sigma
142
+ self.in_channels = in_channels
143
+ self.out_channels = in_channels * 2 if learn_sigma else in_channels
144
+ self.patch_size = patch_size
145
+ self.num_classes = num_classes
146
+
147
+ self.x_embedder = PatchEmbed(input_size, patch_size, in_channels, hidden_size, bias=True)
148
+ self.t_embedder = TimestepEmbedder(hidden_size)
149
+ self.y_embedder = LabelEmbedder(num_classes, hidden_size, class_dropout_prob)
150
+ num_patches = self.x_embedder.num_patches
151
+ self.pos_embed = nn.Parameter(torch.zeros(1, num_patches, hidden_size), requires_grad=False)
152
+
153
+ self.blocks = nn.ModuleList([SiTBlock(hidden_size, num_heads, mlp_ratio=mlp_ratio) for _ in range(depth)])
154
+ self.final_layer = FinalLayer(hidden_size, patch_size, self.out_channels)
155
+ self.initialize_weights()
156
+
157
+ def initialize_weights(self) -> None:
158
+ def _basic_init(module: nn.Module):
159
+ if isinstance(module, nn.Linear):
160
+ torch.nn.init.xavier_uniform_(module.weight)
161
+ if module.bias is not None:
162
+ nn.init.constant_(module.bias, 0)
163
+
164
+ self.apply(_basic_init)
165
+ pos_embed = get_2d_sincos_pos_embed(self.pos_embed.shape[-1], int(self.x_embedder.num_patches**0.5))
166
+ self.pos_embed.data.copy_(torch.from_numpy(pos_embed).float().unsqueeze(0))
167
+
168
+ w = self.x_embedder.proj.weight.data
169
+ nn.init.xavier_uniform_(w.view([w.shape[0], -1]))
170
+ nn.init.constant_(self.x_embedder.proj.bias, 0)
171
+ nn.init.normal_(self.y_embedder.embedding_table.weight, std=0.02)
172
+ nn.init.normal_(self.t_embedder.mlp[0].weight, std=0.02)
173
+ nn.init.normal_(self.t_embedder.mlp[2].weight, std=0.02)
174
+ for block in self.blocks:
175
+ nn.init.constant_(block.adaLN_modulation[-1].weight, 0)
176
+ nn.init.constant_(block.adaLN_modulation[-1].bias, 0)
177
+ nn.init.constant_(self.final_layer.adaLN_modulation[-1].weight, 0)
178
+ nn.init.constant_(self.final_layer.adaLN_modulation[-1].bias, 0)
179
+ nn.init.constant_(self.final_layer.linear.weight, 0)
180
+ nn.init.constant_(self.final_layer.linear.bias, 0)
181
+
182
+ def unpatchify(self, x: torch.Tensor) -> torch.Tensor:
183
+ c = self.out_channels
184
+ p = self.x_embedder.patch_size[0]
185
+ h = w = int(x.shape[1] ** 0.5)
186
+ x = x.reshape(shape=(x.shape[0], h, w, p, p, c))
187
+ x = torch.einsum("nhwpqc->nchpwq", x)
188
+ return x.reshape(shape=(x.shape[0], c, h * p, h * p))
189
+
190
+ def forward(
191
+ self,
192
+ hidden_states: torch.Tensor,
193
+ timestep: torch.Tensor,
194
+ class_labels: torch.Tensor,
195
+ force_drop_ids: Optional[torch.Tensor] = None,
196
+ return_dict: bool = True,
197
+ ) -> SiTTransformer2DModelOutput:
198
+ x = self.x_embedder(hidden_states) + self.pos_embed
199
+ t = self.t_embedder(timestep)
200
+ y = self.y_embedder(class_labels, self.training, force_drop_ids=force_drop_ids)
201
+ c = t + y
202
+ for block in self.blocks:
203
+ x = block(x, c)
204
+ x = self.final_layer(x, c)
205
+ x = self.unpatchify(x)
206
+ if self.learn_sigma:
207
+ x, _ = x.chunk(2, dim=1)
208
+ if not return_dict:
209
+ return (x,)
210
+ return SiTTransformer2DModelOutput(sample=x)
211
+
212
+
213
+ def get_2d_sincos_pos_embed(embed_dim: int, grid_size: int, cls_token: bool = False, extra_tokens: int = 0):
214
+ grid_h = np.arange(grid_size, dtype=np.float32)
215
+ grid_w = np.arange(grid_size, dtype=np.float32)
216
+ grid = np.meshgrid(grid_w, grid_h)
217
+ grid = np.stack(grid, axis=0).reshape([2, 1, grid_size, grid_size])
218
+ pos_embed = get_2d_sincos_pos_embed_from_grid(embed_dim, grid)
219
+ if cls_token and extra_tokens > 0:
220
+ pos_embed = np.concatenate([np.zeros([extra_tokens, embed_dim]), pos_embed], axis=0)
221
+ return pos_embed
222
+
223
+
224
+ def get_2d_sincos_pos_embed_from_grid(embed_dim: int, grid: np.ndarray):
225
+ assert embed_dim % 2 == 0
226
+ emb_h = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[0])
227
+ emb_w = get_1d_sincos_pos_embed_from_grid(embed_dim // 2, grid[1])
228
+ return np.concatenate([emb_h, emb_w], axis=1)
229
+
230
+
231
+ def get_1d_sincos_pos_embed_from_grid(embed_dim: int, pos: np.ndarray):
232
+ assert embed_dim % 2 == 0
233
+ omega = np.arange(embed_dim // 2, dtype=np.float64)
234
+ omega /= embed_dim / 2.0
235
+ omega = 1.0 / 10000**omega
236
+ pos = pos.reshape(-1)
237
+ out = np.einsum("m,d->md", pos, omega)
238
+ emb_sin = np.sin(out)
239
+ emb_cos = np.cos(out)
240
+ return np.concatenate([emb_sin, emb_cos], axis=1)
241
+
242
+
243
+ class CAFMSiTGenerator2DModel(SiTTransformer2DModel):
244
+ """SiT backbone with continuous adversarial flow velocity head."""
245
+
246
+ def forward(self, x: torch.Tensor, y: torch.Tensor, t: torch.Tensor) -> torch.Tensor:
247
+ return -super().forward(
248
+ hidden_states=x,
249
+ timestep=1.0 - t,
250
+ class_labels=y,
251
+ return_dict=True,
252
+ ).sample
CAFM-SiT-XL-2-256/model_index.json ADDED
@@ -0,0 +1,1021 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": [
3
+ "pipeline",
4
+ "CAFMSiTPipeline"
5
+ ],
6
+ "_diffusers_version": "0.36.0",
7
+ "id2label": {
8
+ "0": "tench, Tinca tinca",
9
+ "1": "goldfish, Carassius auratus",
10
+ "2": "great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias",
11
+ "3": "tiger shark, Galeocerdo cuvieri",
12
+ "4": "hammerhead, hammerhead shark",
13
+ "5": "electric ray, crampfish, numbfish, torpedo",
14
+ "6": "stingray",
15
+ "7": "cock",
16
+ "8": "hen",
17
+ "9": "ostrich, Struthio camelus",
18
+ "10": "brambling, Fringilla montifringilla",
19
+ "11": "goldfinch, Carduelis carduelis",
20
+ "12": "house finch, linnet, Carpodacus mexicanus",
21
+ "13": "junco, snowbird",
22
+ "14": "indigo bunting, indigo finch, indigo bird, Passerina cyanea",
23
+ "15": "robin, American robin, Turdus migratorius",
24
+ "16": "bulbul",
25
+ "17": "jay",
26
+ "18": "magpie",
27
+ "19": "chickadee",
28
+ "20": "water ouzel, dipper",
29
+ "21": "kite",
30
+ "22": "bald eagle, American eagle, Haliaeetus leucocephalus",
31
+ "23": "vulture",
32
+ "24": "great grey owl, great gray owl, Strix nebulosa",
33
+ "25": "European fire salamander, Salamandra salamandra",
34
+ "26": "common newt, Triturus vulgaris",
35
+ "27": "eft",
36
+ "28": "spotted salamander, Ambystoma maculatum",
37
+ "29": "axolotl, mud puppy, Ambystoma mexicanum",
38
+ "30": "bullfrog, Rana catesbeiana",
39
+ "31": "tree frog, tree-frog",
40
+ "32": "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui",
41
+ "33": "loggerhead, loggerhead turtle, Caretta caretta",
42
+ "34": "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea",
43
+ "35": "mud turtle",
44
+ "36": "terrapin",
45
+ "37": "box turtle, box tortoise",
46
+ "38": "banded gecko",
47
+ "39": "common iguana, iguana, Iguana iguana",
48
+ "40": "American chameleon, anole, Anolis carolinensis",
49
+ "41": "whiptail, whiptail lizard",
50
+ "42": "agama",
51
+ "43": "frilled lizard, Chlamydosaurus kingi",
52
+ "44": "alligator lizard",
53
+ "45": "Gila monster, Heloderma suspectum",
54
+ "46": "green lizard, Lacerta viridis",
55
+ "47": "African chameleon, Chamaeleo chamaeleon",
56
+ "48": "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis",
57
+ "49": "African crocodile, Nile crocodile, Crocodylus niloticus",
58
+ "50": "American alligator, Alligator mississipiensis",
59
+ "51": "triceratops",
60
+ "52": "thunder snake, worm snake, Carphophis amoenus",
61
+ "53": "ringneck snake, ring-necked snake, ring snake",
62
+ "54": "hognose snake, puff adder, sand viper",
63
+ "55": "green snake, grass snake",
64
+ "56": "king snake, kingsnake",
65
+ "57": "garter snake, grass snake",
66
+ "58": "water snake",
67
+ "59": "vine snake",
68
+ "60": "night snake, Hypsiglena torquata",
69
+ "61": "boa constrictor, Constrictor constrictor",
70
+ "62": "rock python, rock snake, Python sebae",
71
+ "63": "Indian cobra, Naja naja",
72
+ "64": "green mamba",
73
+ "65": "sea snake",
74
+ "66": "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus",
75
+ "67": "diamondback, diamondback rattlesnake, Crotalus adamanteus",
76
+ "68": "sidewinder, horned rattlesnake, Crotalus cerastes",
77
+ "69": "trilobite",
78
+ "70": "harvestman, daddy longlegs, Phalangium opilio",
79
+ "71": "scorpion",
80
+ "72": "black and gold garden spider, Argiope aurantia",
81
+ "73": "barn spider, Araneus cavaticus",
82
+ "74": "garden spider, Aranea diademata",
83
+ "75": "black widow, Latrodectus mactans",
84
+ "76": "tarantula",
85
+ "77": "wolf spider, hunting spider",
86
+ "78": "tick",
87
+ "79": "centipede",
88
+ "80": "black grouse",
89
+ "81": "ptarmigan",
90
+ "82": "ruffed grouse, partridge, Bonasa umbellus",
91
+ "83": "prairie chicken, prairie grouse, prairie fowl",
92
+ "84": "peacock",
93
+ "85": "quail",
94
+ "86": "partridge",
95
+ "87": "African grey, African gray, Psittacus erithacus",
96
+ "88": "macaw",
97
+ "89": "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita",
98
+ "90": "lorikeet",
99
+ "91": "coucal",
100
+ "92": "bee eater",
101
+ "93": "hornbill",
102
+ "94": "hummingbird",
103
+ "95": "jacamar",
104
+ "96": "toucan",
105
+ "97": "drake",
106
+ "98": "red-breasted merganser, Mergus serrator",
107
+ "99": "goose",
108
+ "100": "black swan, Cygnus atratus",
109
+ "101": "tusker",
110
+ "102": "echidna, spiny anteater, anteater",
111
+ "103": "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus",
112
+ "104": "wallaby, brush kangaroo",
113
+ "105": "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus",
114
+ "106": "wombat",
115
+ "107": "jellyfish",
116
+ "108": "sea anemone, anemone",
117
+ "109": "brain coral",
118
+ "110": "flatworm, platyhelminth",
119
+ "111": "nematode, nematode worm, roundworm",
120
+ "112": "conch",
121
+ "113": "snail",
122
+ "114": "slug",
123
+ "115": "sea slug, nudibranch",
124
+ "116": "chiton, coat-of-mail shell, sea cradle, polyplacophore",
125
+ "117": "chambered nautilus, pearly nautilus, nautilus",
126
+ "118": "Dungeness crab, Cancer magister",
127
+ "119": "rock crab, Cancer irroratus",
128
+ "120": "fiddler crab",
129
+ "121": "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica",
130
+ "122": "American lobster, Northern lobster, Maine lobster, Homarus americanus",
131
+ "123": "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish",
132
+ "124": "crayfish, crawfish, crawdad, crawdaddy",
133
+ "125": "hermit crab",
134
+ "126": "isopod",
135
+ "127": "white stork, Ciconia ciconia",
136
+ "128": "black stork, Ciconia nigra",
137
+ "129": "spoonbill",
138
+ "130": "flamingo",
139
+ "131": "little blue heron, Egretta caerulea",
140
+ "132": "American egret, great white heron, Egretta albus",
141
+ "133": "bittern",
142
+ "134": "crane",
143
+ "135": "limpkin, Aramus pictus",
144
+ "136": "European gallinule, Porphyrio porphyrio",
145
+ "137": "American coot, marsh hen, mud hen, water hen, Fulica americana",
146
+ "138": "bustard",
147
+ "139": "ruddy turnstone, Arenaria interpres",
148
+ "140": "red-backed sandpiper, dunlin, Erolia alpina",
149
+ "141": "redshank, Tringa totanus",
150
+ "142": "dowitcher",
151
+ "143": "oystercatcher, oyster catcher",
152
+ "144": "pelican",
153
+ "145": "king penguin, Aptenodytes patagonica",
154
+ "146": "albatross, mollymawk",
155
+ "147": "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus",
156
+ "148": "killer whale, killer, orca, grampus, sea wolf, Orcinus orca",
157
+ "149": "dugong, Dugong dugon",
158
+ "150": "sea lion",
159
+ "151": "Chihuahua",
160
+ "152": "Japanese spaniel",
161
+ "153": "Maltese dog, Maltese terrier, Maltese",
162
+ "154": "Pekinese, Pekingese, Peke",
163
+ "155": "Shih-Tzu",
164
+ "156": "Blenheim spaniel",
165
+ "157": "papillon",
166
+ "158": "toy terrier",
167
+ "159": "Rhodesian ridgeback",
168
+ "160": "Afghan hound, Afghan",
169
+ "161": "basset, basset hound",
170
+ "162": "beagle",
171
+ "163": "bloodhound, sleuthhound",
172
+ "164": "bluetick",
173
+ "165": "black-and-tan coonhound",
174
+ "166": "Walker hound, Walker foxhound",
175
+ "167": "English foxhound",
176
+ "168": "redbone",
177
+ "169": "borzoi, Russian wolfhound",
178
+ "170": "Irish wolfhound",
179
+ "171": "Italian greyhound",
180
+ "172": "whippet",
181
+ "173": "Ibizan hound, Ibizan Podenco",
182
+ "174": "Norwegian elkhound, elkhound",
183
+ "175": "otterhound, otter hound",
184
+ "176": "Saluki, gazelle hound",
185
+ "177": "Scottish deerhound, deerhound",
186
+ "178": "Weimaraner",
187
+ "179": "Staffordshire bullterrier, Staffordshire bull terrier",
188
+ "180": "American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier",
189
+ "181": "Bedlington terrier",
190
+ "182": "Border terrier",
191
+ "183": "Kerry blue terrier",
192
+ "184": "Irish terrier",
193
+ "185": "Norfolk terrier",
194
+ "186": "Norwich terrier",
195
+ "187": "Yorkshire terrier",
196
+ "188": "wire-haired fox terrier",
197
+ "189": "Lakeland terrier",
198
+ "190": "Sealyham terrier, Sealyham",
199
+ "191": "Airedale, Airedale terrier",
200
+ "192": "cairn, cairn terrier",
201
+ "193": "Australian terrier",
202
+ "194": "Dandie Dinmont, Dandie Dinmont terrier",
203
+ "195": "Boston bull, Boston terrier",
204
+ "196": "miniature schnauzer",
205
+ "197": "giant schnauzer",
206
+ "198": "standard schnauzer",
207
+ "199": "Scotch terrier, Scottish terrier, Scottie",
208
+ "200": "Tibetan terrier, chrysanthemum dog",
209
+ "201": "silky terrier, Sydney silky",
210
+ "202": "soft-coated wheaten terrier",
211
+ "203": "West Highland white terrier",
212
+ "204": "Lhasa, Lhasa apso",
213
+ "205": "flat-coated retriever",
214
+ "206": "curly-coated retriever",
215
+ "207": "golden retriever",
216
+ "208": "Labrador retriever",
217
+ "209": "Chesapeake Bay retriever",
218
+ "210": "German short-haired pointer",
219
+ "211": "vizsla, Hungarian pointer",
220
+ "212": "English setter",
221
+ "213": "Irish setter, red setter",
222
+ "214": "Gordon setter",
223
+ "215": "Brittany spaniel",
224
+ "216": "clumber, clumber spaniel",
225
+ "217": "English springer, English springer spaniel",
226
+ "218": "Welsh springer spaniel",
227
+ "219": "cocker spaniel, English cocker spaniel, cocker",
228
+ "220": "Sussex spaniel",
229
+ "221": "Irish water spaniel",
230
+ "222": "kuvasz",
231
+ "223": "schipperke",
232
+ "224": "groenendael",
233
+ "225": "malinois",
234
+ "226": "briard",
235
+ "227": "kelpie",
236
+ "228": "komondor",
237
+ "229": "Old English sheepdog, bobtail",
238
+ "230": "Shetland sheepdog, Shetland sheep dog, Shetland",
239
+ "231": "collie",
240
+ "232": "Border collie",
241
+ "233": "Bouvier des Flandres, Bouviers des Flandres",
242
+ "234": "Rottweiler",
243
+ "235": "German shepherd, German shepherd dog, German police dog, alsatian",
244
+ "236": "Doberman, Doberman pinscher",
245
+ "237": "miniature pinscher",
246
+ "238": "Greater Swiss Mountain dog",
247
+ "239": "Bernese mountain dog",
248
+ "240": "Appenzeller",
249
+ "241": "EntleBucher",
250
+ "242": "boxer",
251
+ "243": "bull mastiff",
252
+ "244": "Tibetan mastiff",
253
+ "245": "French bulldog",
254
+ "246": "Great Dane",
255
+ "247": "Saint Bernard, St Bernard",
256
+ "248": "Eskimo dog, husky",
257
+ "249": "malamute, malemute, Alaskan malamute",
258
+ "250": "Siberian husky",
259
+ "251": "dalmatian, coach dog, carriage dog",
260
+ "252": "affenpinscher, monkey pinscher, monkey dog",
261
+ "253": "basenji",
262
+ "254": "pug, pug-dog",
263
+ "255": "Leonberg",
264
+ "256": "Newfoundland, Newfoundland dog",
265
+ "257": "Great Pyrenees",
266
+ "258": "Samoyed, Samoyede",
267
+ "259": "Pomeranian",
268
+ "260": "chow, chow chow",
269
+ "261": "keeshond",
270
+ "262": "Brabancon griffon",
271
+ "263": "Pembroke, Pembroke Welsh corgi",
272
+ "264": "Cardigan, Cardigan Welsh corgi",
273
+ "265": "toy poodle",
274
+ "266": "miniature poodle",
275
+ "267": "standard poodle",
276
+ "268": "Mexican hairless",
277
+ "269": "timber wolf, grey wolf, gray wolf, Canis lupus",
278
+ "270": "white wolf, Arctic wolf, Canis lupus tundrarum",
279
+ "271": "red wolf, maned wolf, Canis rufus, Canis niger",
280
+ "272": "coyote, prairie wolf, brush wolf, Canis latrans",
281
+ "273": "dingo, warrigal, warragal, Canis dingo",
282
+ "274": "dhole, Cuon alpinus",
283
+ "275": "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus",
284
+ "276": "hyena, hyaena",
285
+ "277": "red fox, Vulpes vulpes",
286
+ "278": "kit fox, Vulpes macrotis",
287
+ "279": "Arctic fox, white fox, Alopex lagopus",
288
+ "280": "grey fox, gray fox, Urocyon cinereoargenteus",
289
+ "281": "tabby, tabby cat",
290
+ "282": "tiger cat",
291
+ "283": "Persian cat",
292
+ "284": "Siamese cat, Siamese",
293
+ "285": "Egyptian cat",
294
+ "286": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor",
295
+ "287": "lynx, catamount",
296
+ "288": "leopard, Panthera pardus",
297
+ "289": "snow leopard, ounce, Panthera uncia",
298
+ "290": "jaguar, panther, Panthera onca, Felis onca",
299
+ "291": "lion, king of beasts, Panthera leo",
300
+ "292": "tiger, Panthera tigris",
301
+ "293": "cheetah, chetah, Acinonyx jubatus",
302
+ "294": "brown bear, bruin, Ursus arctos",
303
+ "295": "American black bear, black bear, Ursus americanus, Euarctos americanus",
304
+ "296": "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus",
305
+ "297": "sloth bear, Melursus ursinus, Ursus ursinus",
306
+ "298": "mongoose",
307
+ "299": "meerkat, mierkat",
308
+ "300": "tiger beetle",
309
+ "301": "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle",
310
+ "302": "ground beetle, carabid beetle",
311
+ "303": "long-horned beetle, longicorn, longicorn beetle",
312
+ "304": "leaf beetle, chrysomelid",
313
+ "305": "dung beetle",
314
+ "306": "rhinoceros beetle",
315
+ "307": "weevil",
316
+ "308": "fly",
317
+ "309": "bee",
318
+ "310": "ant, emmet, pismire",
319
+ "311": "grasshopper, hopper",
320
+ "312": "cricket",
321
+ "313": "walking stick, walkingstick, stick insect",
322
+ "314": "cockroach, roach",
323
+ "315": "mantis, mantid",
324
+ "316": "cicada, cicala",
325
+ "317": "leafhopper",
326
+ "318": "lacewing, lacewing fly",
327
+ "319": "dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
328
+ "320": "damselfly",
329
+ "321": "admiral",
330
+ "322": "ringlet, ringlet butterfly",
331
+ "323": "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus",
332
+ "324": "cabbage butterfly",
333
+ "325": "sulphur butterfly, sulfur butterfly",
334
+ "326": "lycaenid, lycaenid butterfly",
335
+ "327": "starfish, sea star",
336
+ "328": "sea urchin",
337
+ "329": "sea cucumber, holothurian",
338
+ "330": "wood rabbit, cottontail, cottontail rabbit",
339
+ "331": "hare",
340
+ "332": "Angora, Angora rabbit",
341
+ "333": "hamster",
342
+ "334": "porcupine, hedgehog",
343
+ "335": "fox squirrel, eastern fox squirrel, Sciurus niger",
344
+ "336": "marmot",
345
+ "337": "beaver",
346
+ "338": "guinea pig, Cavia cobaya",
347
+ "339": "sorrel",
348
+ "340": "zebra",
349
+ "341": "hog, pig, grunter, squealer, Sus scrofa",
350
+ "342": "wild boar, boar, Sus scrofa",
351
+ "343": "warthog",
352
+ "344": "hippopotamus, hippo, river horse, Hippopotamus amphibius",
353
+ "345": "ox",
354
+ "346": "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis",
355
+ "347": "bison",
356
+ "348": "ram, tup",
357
+ "349": "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis",
358
+ "350": "ibex, Capra ibex",
359
+ "351": "hartebeest",
360
+ "352": "impala, Aepyceros melampus",
361
+ "353": "gazelle",
362
+ "354": "Arabian camel, dromedary, Camelus dromedarius",
363
+ "355": "llama",
364
+ "356": "weasel",
365
+ "357": "mink",
366
+ "358": "polecat, fitch, foulmart, foumart, Mustela putorius",
367
+ "359": "black-footed ferret, ferret, Mustela nigripes",
368
+ "360": "otter",
369
+ "361": "skunk, polecat, wood pussy",
370
+ "362": "badger",
371
+ "363": "armadillo",
372
+ "364": "three-toed sloth, ai, Bradypus tridactylus",
373
+ "365": "orangutan, orang, orangutang, Pongo pygmaeus",
374
+ "366": "gorilla, Gorilla gorilla",
375
+ "367": "chimpanzee, chimp, Pan troglodytes",
376
+ "368": "gibbon, Hylobates lar",
377
+ "369": "siamang, Hylobates syndactylus, Symphalangus syndactylus",
378
+ "370": "guenon, guenon monkey",
379
+ "371": "patas, hussar monkey, Erythrocebus patas",
380
+ "372": "baboon",
381
+ "373": "macaque",
382
+ "374": "langur",
383
+ "375": "colobus, colobus monkey",
384
+ "376": "proboscis monkey, Nasalis larvatus",
385
+ "377": "marmoset",
386
+ "378": "capuchin, ringtail, Cebus capucinus",
387
+ "379": "howler monkey, howler",
388
+ "380": "titi, titi monkey",
389
+ "381": "spider monkey, Ateles geoffroyi",
390
+ "382": "squirrel monkey, Saimiri sciureus",
391
+ "383": "Madagascar cat, ring-tailed lemur, Lemur catta",
392
+ "384": "indri, indris, Indri indri, Indri brevicaudatus",
393
+ "385": "Indian elephant, Elephas maximus",
394
+ "386": "African elephant, Loxodonta africana",
395
+ "387": "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens",
396
+ "388": "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca",
397
+ "389": "barracouta, snoek",
398
+ "390": "eel",
399
+ "391": "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch",
400
+ "392": "rock beauty, Holocanthus tricolor",
401
+ "393": "anemone fish",
402
+ "394": "sturgeon",
403
+ "395": "gar, garfish, garpike, billfish, Lepisosteus osseus",
404
+ "396": "lionfish",
405
+ "397": "puffer, pufferfish, blowfish, globefish",
406
+ "398": "abacus",
407
+ "399": "abaya",
408
+ "400": "academic gown, academic robe, judge robe",
409
+ "401": "accordion, piano accordion, squeeze box",
410
+ "402": "acoustic guitar",
411
+ "403": "aircraft carrier, carrier, flattop, attack aircraft carrier",
412
+ "404": "airliner",
413
+ "405": "airship, dirigible",
414
+ "406": "altar",
415
+ "407": "ambulance",
416
+ "408": "amphibian, amphibious vehicle",
417
+ "409": "analog clock",
418
+ "410": "apiary, bee house",
419
+ "411": "apron",
420
+ "412": "ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin",
421
+ "413": "assault rifle, assault gun",
422
+ "414": "backpack, back pack, knapsack, packsack, rucksack, haversack",
423
+ "415": "bakery, bakeshop, bakehouse",
424
+ "416": "balance beam, beam",
425
+ "417": "balloon",
426
+ "418": "ballpoint, ballpoint pen, ballpen, Biro",
427
+ "419": "Band Aid",
428
+ "420": "banjo",
429
+ "421": "bannister, banister, balustrade, balusters, handrail",
430
+ "422": "barbell",
431
+ "423": "barber chair",
432
+ "424": "barbershop",
433
+ "425": "barn",
434
+ "426": "barometer",
435
+ "427": "barrel, cask",
436
+ "428": "barrow, garden cart, lawn cart, wheelbarrow",
437
+ "429": "baseball",
438
+ "430": "basketball",
439
+ "431": "bassinet",
440
+ "432": "bassoon",
441
+ "433": "bathing cap, swimming cap",
442
+ "434": "bath towel",
443
+ "435": "bathtub, bathing tub, bath, tub",
444
+ "436": "beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon",
445
+ "437": "beacon, lighthouse, beacon light, pharos",
446
+ "438": "beaker",
447
+ "439": "bearskin, busby, shako",
448
+ "440": "beer bottle",
449
+ "441": "beer glass",
450
+ "442": "bell cote, bell cot",
451
+ "443": "bib",
452
+ "444": "bicycle-built-for-two, tandem bicycle, tandem",
453
+ "445": "bikini, two-piece",
454
+ "446": "binder, ring-binder",
455
+ "447": "binoculars, field glasses, opera glasses",
456
+ "448": "birdhouse",
457
+ "449": "boathouse",
458
+ "450": "bobsled, bobsleigh, bob",
459
+ "451": "bolo tie, bolo, bola tie, bola",
460
+ "452": "bonnet, poke bonnet",
461
+ "453": "bookcase",
462
+ "454": "bookshop, bookstore, bookstall",
463
+ "455": "bottlecap",
464
+ "456": "bow",
465
+ "457": "bow tie, bow-tie, bowtie",
466
+ "458": "brass, memorial tablet, plaque",
467
+ "459": "brassiere, bra, bandeau",
468
+ "460": "breakwater, groin, groyne, mole, bulwark, seawall, jetty",
469
+ "461": "breastplate, aegis, egis",
470
+ "462": "broom",
471
+ "463": "bucket, pail",
472
+ "464": "buckle",
473
+ "465": "bulletproof vest",
474
+ "466": "bullet train, bullet",
475
+ "467": "butcher shop, meat market",
476
+ "468": "cab, hack, taxi, taxicab",
477
+ "469": "caldron, cauldron",
478
+ "470": "candle, taper, wax light",
479
+ "471": "cannon",
480
+ "472": "canoe",
481
+ "473": "can opener, tin opener",
482
+ "474": "cardigan",
483
+ "475": "car mirror",
484
+ "476": "carousel, carrousel, merry-go-round, roundabout, whirligig",
485
+ "477": "carpenters kit, tool kit",
486
+ "478": "carton",
487
+ "479": "car wheel",
488
+ "480": "cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM",
489
+ "481": "cassette",
490
+ "482": "cassette player",
491
+ "483": "castle",
492
+ "484": "catamaran",
493
+ "485": "CD player",
494
+ "486": "cello, violoncello",
495
+ "487": "cellular telephone, cellular phone, cellphone, cell, mobile phone",
496
+ "488": "chain",
497
+ "489": "chainlink fence",
498
+ "490": "chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour",
499
+ "491": "chain saw, chainsaw",
500
+ "492": "chest",
501
+ "493": "chiffonier, commode",
502
+ "494": "chime, bell, gong",
503
+ "495": "china cabinet, china closet",
504
+ "496": "Christmas stocking",
505
+ "497": "church, church building",
506
+ "498": "cinema, movie theater, movie theatre, movie house, picture palace",
507
+ "499": "cleaver, meat cleaver, chopper",
508
+ "500": "cliff dwelling",
509
+ "501": "cloak",
510
+ "502": "clog, geta, patten, sabot",
511
+ "503": "cocktail shaker",
512
+ "504": "coffee mug",
513
+ "505": "coffeepot",
514
+ "506": "coil, spiral, volute, whorl, helix",
515
+ "507": "combination lock",
516
+ "508": "computer keyboard, keypad",
517
+ "509": "confectionery, confectionary, candy store",
518
+ "510": "container ship, containership, container vessel",
519
+ "511": "convertible",
520
+ "512": "corkscrew, bottle screw",
521
+ "513": "cornet, horn, trumpet, trump",
522
+ "514": "cowboy boot",
523
+ "515": "cowboy hat, ten-gallon hat",
524
+ "516": "cradle",
525
+ "517": "crane",
526
+ "518": "crash helmet",
527
+ "519": "crate",
528
+ "520": "crib, cot",
529
+ "521": "Crock Pot",
530
+ "522": "croquet ball",
531
+ "523": "crutch",
532
+ "524": "cuirass",
533
+ "525": "dam, dike, dyke",
534
+ "526": "desk",
535
+ "527": "desktop computer",
536
+ "528": "dial telephone, dial phone",
537
+ "529": "diaper, nappy, napkin",
538
+ "530": "digital clock",
539
+ "531": "digital watch",
540
+ "532": "dining table, board",
541
+ "533": "dishrag, dishcloth",
542
+ "534": "dishwasher, dish washer, dishwashing machine",
543
+ "535": "disk brake, disc brake",
544
+ "536": "dock, dockage, docking facility",
545
+ "537": "dogsled, dog sled, dog sleigh",
546
+ "538": "dome",
547
+ "539": "doormat, welcome mat",
548
+ "540": "drilling platform, offshore rig",
549
+ "541": "drum, membranophone, tympan",
550
+ "542": "drumstick",
551
+ "543": "dumbbell",
552
+ "544": "Dutch oven",
553
+ "545": "electric fan, blower",
554
+ "546": "electric guitar",
555
+ "547": "electric locomotive",
556
+ "548": "entertainment center",
557
+ "549": "envelope",
558
+ "550": "espresso maker",
559
+ "551": "face powder",
560
+ "552": "feather boa, boa",
561
+ "553": "file, file cabinet, filing cabinet",
562
+ "554": "fireboat",
563
+ "555": "fire engine, fire truck",
564
+ "556": "fire screen, fireguard",
565
+ "557": "flagpole, flagstaff",
566
+ "558": "flute, transverse flute",
567
+ "559": "folding chair",
568
+ "560": "football helmet",
569
+ "561": "forklift",
570
+ "562": "fountain",
571
+ "563": "fountain pen",
572
+ "564": "four-poster",
573
+ "565": "freight car",
574
+ "566": "French horn, horn",
575
+ "567": "frying pan, frypan, skillet",
576
+ "568": "fur coat",
577
+ "569": "garbage truck, dustcart",
578
+ "570": "gasmask, respirator, gas helmet",
579
+ "571": "gas pump, gasoline pump, petrol pump, island dispenser",
580
+ "572": "goblet",
581
+ "573": "go-kart",
582
+ "574": "golf ball",
583
+ "575": "golfcart, golf cart",
584
+ "576": "gondola",
585
+ "577": "gong, tam-tam",
586
+ "578": "gown",
587
+ "579": "grand piano, grand",
588
+ "580": "greenhouse, nursery, glasshouse",
589
+ "581": "grille, radiator grille",
590
+ "582": "grocery store, grocery, food market, market",
591
+ "583": "guillotine",
592
+ "584": "hair slide",
593
+ "585": "hair spray",
594
+ "586": "half track",
595
+ "587": "hammer",
596
+ "588": "hamper",
597
+ "589": "hand blower, blow dryer, blow drier, hair dryer, hair drier",
598
+ "590": "hand-held computer, hand-held microcomputer",
599
+ "591": "handkerchief, hankie, hanky, hankey",
600
+ "592": "hard disc, hard disk, fixed disk",
601
+ "593": "harmonica, mouth organ, harp, mouth harp",
602
+ "594": "harp",
603
+ "595": "harvester, reaper",
604
+ "596": "hatchet",
605
+ "597": "holster",
606
+ "598": "home theater, home theatre",
607
+ "599": "honeycomb",
608
+ "600": "hook, claw",
609
+ "601": "hoopskirt, crinoline",
610
+ "602": "horizontal bar, high bar",
611
+ "603": "horse cart, horse-cart",
612
+ "604": "hourglass",
613
+ "605": "iPod",
614
+ "606": "iron, smoothing iron",
615
+ "607": "jack-o-lantern",
616
+ "608": "jean, blue jean, denim",
617
+ "609": "jeep, landrover",
618
+ "610": "jersey, T-shirt, tee shirt",
619
+ "611": "jigsaw puzzle",
620
+ "612": "jinrikisha, ricksha, rickshaw",
621
+ "613": "joystick",
622
+ "614": "kimono",
623
+ "615": "knee pad",
624
+ "616": "knot",
625
+ "617": "lab coat, laboratory coat",
626
+ "618": "ladle",
627
+ "619": "lampshade, lamp shade",
628
+ "620": "laptop, laptop computer",
629
+ "621": "lawn mower, mower",
630
+ "622": "lens cap, lens cover",
631
+ "623": "letter opener, paper knife, paperknife",
632
+ "624": "library",
633
+ "625": "lifeboat",
634
+ "626": "lighter, light, igniter, ignitor",
635
+ "627": "limousine, limo",
636
+ "628": "liner, ocean liner",
637
+ "629": "lipstick, lip rouge",
638
+ "630": "Loafer",
639
+ "631": "lotion",
640
+ "632": "loudspeaker, speaker, speaker unit, loudspeaker system, speaker system",
641
+ "633": "loupe, jewelers loupe",
642
+ "634": "lumbermill, sawmill",
643
+ "635": "magnetic compass",
644
+ "636": "mailbag, postbag",
645
+ "637": "mailbox, letter box",
646
+ "638": "maillot",
647
+ "639": "maillot, tank suit",
648
+ "640": "manhole cover",
649
+ "641": "maraca",
650
+ "642": "marimba, xylophone",
651
+ "643": "mask",
652
+ "644": "matchstick",
653
+ "645": "maypole",
654
+ "646": "maze, labyrinth",
655
+ "647": "measuring cup",
656
+ "648": "medicine chest, medicine cabinet",
657
+ "649": "megalith, megalithic structure",
658
+ "650": "microphone, mike",
659
+ "651": "microwave, microwave oven",
660
+ "652": "military uniform",
661
+ "653": "milk can",
662
+ "654": "minibus",
663
+ "655": "miniskirt, mini",
664
+ "656": "minivan",
665
+ "657": "missile",
666
+ "658": "mitten",
667
+ "659": "mixing bowl",
668
+ "660": "mobile home, manufactured home",
669
+ "661": "Model T",
670
+ "662": "modem",
671
+ "663": "monastery",
672
+ "664": "monitor",
673
+ "665": "moped",
674
+ "666": "mortar",
675
+ "667": "mortarboard",
676
+ "668": "mosque",
677
+ "669": "mosquito net",
678
+ "670": "motor scooter, scooter",
679
+ "671": "mountain bike, all-terrain bike, off-roader",
680
+ "672": "mountain tent",
681
+ "673": "mouse, computer mouse",
682
+ "674": "mousetrap",
683
+ "675": "moving van",
684
+ "676": "muzzle",
685
+ "677": "nail",
686
+ "678": "neck brace",
687
+ "679": "necklace",
688
+ "680": "nipple",
689
+ "681": "notebook, notebook computer",
690
+ "682": "obelisk",
691
+ "683": "oboe, hautboy, hautbois",
692
+ "684": "ocarina, sweet potato",
693
+ "685": "odometer, hodometer, mileometer, milometer",
694
+ "686": "oil filter",
695
+ "687": "organ, pipe organ",
696
+ "688": "oscilloscope, scope, cathode-ray oscilloscope, CRO",
697
+ "689": "overskirt",
698
+ "690": "oxcart",
699
+ "691": "oxygen mask",
700
+ "692": "packet",
701
+ "693": "paddle, boat paddle",
702
+ "694": "paddlewheel, paddle wheel",
703
+ "695": "padlock",
704
+ "696": "paintbrush",
705
+ "697": "pajama, pyjama, pjs, jammies",
706
+ "698": "palace",
707
+ "699": "panpipe, pandean pipe, syrinx",
708
+ "700": "paper towel",
709
+ "701": "parachute, chute",
710
+ "702": "parallel bars, bars",
711
+ "703": "park bench",
712
+ "704": "parking meter",
713
+ "705": "passenger car, coach, carriage",
714
+ "706": "patio, terrace",
715
+ "707": "pay-phone, pay-station",
716
+ "708": "pedestal, plinth, footstall",
717
+ "709": "pencil box, pencil case",
718
+ "710": "pencil sharpener",
719
+ "711": "perfume, essence",
720
+ "712": "Petri dish",
721
+ "713": "photocopier",
722
+ "714": "pick, plectrum, plectron",
723
+ "715": "pickelhaube",
724
+ "716": "picket fence, paling",
725
+ "717": "pickup, pickup truck",
726
+ "718": "pier",
727
+ "719": "piggy bank, penny bank",
728
+ "720": "pill bottle",
729
+ "721": "pillow",
730
+ "722": "ping-pong ball",
731
+ "723": "pinwheel",
732
+ "724": "pirate, pirate ship",
733
+ "725": "pitcher, ewer",
734
+ "726": "plane, carpenters plane, woodworking plane",
735
+ "727": "planetarium",
736
+ "728": "plastic bag",
737
+ "729": "plate rack",
738
+ "730": "plow, plough",
739
+ "731": "plunger, plumbers helper",
740
+ "732": "Polaroid camera, Polaroid Land camera",
741
+ "733": "pole",
742
+ "734": "police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria",
743
+ "735": "poncho",
744
+ "736": "pool table, billiard table, snooker table",
745
+ "737": "pop bottle, soda bottle",
746
+ "738": "pot, flowerpot",
747
+ "739": "potters wheel",
748
+ "740": "power drill",
749
+ "741": "prayer rug, prayer mat",
750
+ "742": "printer",
751
+ "743": "prison, prison house",
752
+ "744": "projectile, missile",
753
+ "745": "projector",
754
+ "746": "puck, hockey puck",
755
+ "747": "punching bag, punch bag, punching ball, punchball",
756
+ "748": "purse",
757
+ "749": "quill, quill pen",
758
+ "750": "quilt, comforter, comfort, puff",
759
+ "751": "racer, race car, racing car",
760
+ "752": "racket, racquet",
761
+ "753": "radiator",
762
+ "754": "radio, wireless",
763
+ "755": "radio telescope, radio reflector",
764
+ "756": "rain barrel",
765
+ "757": "recreational vehicle, RV, R.V.",
766
+ "758": "reel",
767
+ "759": "reflex camera",
768
+ "760": "refrigerator, icebox",
769
+ "761": "remote control, remote",
770
+ "762": "restaurant, eating house, eating place, eatery",
771
+ "763": "revolver, six-gun, six-shooter",
772
+ "764": "rifle",
773
+ "765": "rocking chair, rocker",
774
+ "766": "rotisserie",
775
+ "767": "rubber eraser, rubber, pencil eraser",
776
+ "768": "rugby ball",
777
+ "769": "rule, ruler",
778
+ "770": "running shoe",
779
+ "771": "safe",
780
+ "772": "safety pin",
781
+ "773": "saltshaker, salt shaker",
782
+ "774": "sandal",
783
+ "775": "sarong",
784
+ "776": "sax, saxophone",
785
+ "777": "scabbard",
786
+ "778": "scale, weighing machine",
787
+ "779": "school bus",
788
+ "780": "schooner",
789
+ "781": "scoreboard",
790
+ "782": "screen, CRT screen",
791
+ "783": "screw",
792
+ "784": "screwdriver",
793
+ "785": "seat belt, seatbelt",
794
+ "786": "sewing machine",
795
+ "787": "shield, buckler",
796
+ "788": "shoe shop, shoe-shop, shoe store",
797
+ "789": "shoji",
798
+ "790": "shopping basket",
799
+ "791": "shopping cart",
800
+ "792": "shovel",
801
+ "793": "shower cap",
802
+ "794": "shower curtain",
803
+ "795": "ski",
804
+ "796": "ski mask",
805
+ "797": "sleeping bag",
806
+ "798": "slide rule, slipstick",
807
+ "799": "sliding door",
808
+ "800": "slot, one-armed bandit",
809
+ "801": "snorkel",
810
+ "802": "snowmobile",
811
+ "803": "snowplow, snowplough",
812
+ "804": "soap dispenser",
813
+ "805": "soccer ball",
814
+ "806": "sock",
815
+ "807": "solar dish, solar collector, solar furnace",
816
+ "808": "sombrero",
817
+ "809": "soup bowl",
818
+ "810": "space bar",
819
+ "811": "space heater",
820
+ "812": "space shuttle",
821
+ "813": "spatula",
822
+ "814": "speedboat",
823
+ "815": "spider web, spiders web",
824
+ "816": "spindle",
825
+ "817": "sports car, sport car",
826
+ "818": "spotlight, spot",
827
+ "819": "stage",
828
+ "820": "steam locomotive",
829
+ "821": "steel arch bridge",
830
+ "822": "steel drum",
831
+ "823": "stethoscope",
832
+ "824": "stole",
833
+ "825": "stone wall",
834
+ "826": "stopwatch, stop watch",
835
+ "827": "stove",
836
+ "828": "strainer",
837
+ "829": "streetcar, tram, tramcar, trolley, trolley car",
838
+ "830": "stretcher",
839
+ "831": "studio couch, day bed",
840
+ "832": "stupa, tope",
841
+ "833": "submarine, pigboat, sub, U-boat",
842
+ "834": "suit, suit of clothes",
843
+ "835": "sundial",
844
+ "836": "sunglass",
845
+ "837": "sunglasses, dark glasses, shades",
846
+ "838": "sunscreen, sunblock, sun blocker",
847
+ "839": "suspension bridge",
848
+ "840": "swab, swob, mop",
849
+ "841": "sweatshirt",
850
+ "842": "swimming trunks, bathing trunks",
851
+ "843": "swing",
852
+ "844": "switch, electric switch, electrical switch",
853
+ "845": "syringe",
854
+ "846": "table lamp",
855
+ "847": "tank, army tank, armored combat vehicle, armoured combat vehicle",
856
+ "848": "tape player",
857
+ "849": "teapot",
858
+ "850": "teddy, teddy bear",
859
+ "851": "television, television system",
860
+ "852": "tennis ball",
861
+ "853": "thatch, thatched roof",
862
+ "854": "theater curtain, theatre curtain",
863
+ "855": "thimble",
864
+ "856": "thresher, thrasher, threshing machine",
865
+ "857": "throne",
866
+ "858": "tile roof",
867
+ "859": "toaster",
868
+ "860": "tobacco shop, tobacconist shop, tobacconist",
869
+ "861": "toilet seat",
870
+ "862": "torch",
871
+ "863": "totem pole",
872
+ "864": "tow truck, tow car, wrecker",
873
+ "865": "toyshop",
874
+ "866": "tractor",
875
+ "867": "trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi",
876
+ "868": "tray",
877
+ "869": "trench coat",
878
+ "870": "tricycle, trike, velocipede",
879
+ "871": "trimaran",
880
+ "872": "tripod",
881
+ "873": "triumphal arch",
882
+ "874": "trolleybus, trolley coach, trackless trolley",
883
+ "875": "trombone",
884
+ "876": "tub, vat",
885
+ "877": "turnstile",
886
+ "878": "typewriter keyboard",
887
+ "879": "umbrella",
888
+ "880": "unicycle, monocycle",
889
+ "881": "upright, upright piano",
890
+ "882": "vacuum, vacuum cleaner",
891
+ "883": "vase",
892
+ "884": "vault",
893
+ "885": "velvet",
894
+ "886": "vending machine",
895
+ "887": "vestment",
896
+ "888": "viaduct",
897
+ "889": "violin, fiddle",
898
+ "890": "volleyball",
899
+ "891": "waffle iron",
900
+ "892": "wall clock",
901
+ "893": "wallet, billfold, notecase, pocketbook",
902
+ "894": "wardrobe, closet, press",
903
+ "895": "warplane, military plane",
904
+ "896": "washbasin, handbasin, washbowl, lavabo, wash-hand basin",
905
+ "897": "washer, automatic washer, washing machine",
906
+ "898": "water bottle",
907
+ "899": "water jug",
908
+ "900": "water tower",
909
+ "901": "whiskey jug",
910
+ "902": "whistle",
911
+ "903": "wig",
912
+ "904": "window screen",
913
+ "905": "window shade",
914
+ "906": "Windsor tie",
915
+ "907": "wine bottle",
916
+ "908": "wing",
917
+ "909": "wok",
918
+ "910": "wooden spoon",
919
+ "911": "wool, woolen, woollen",
920
+ "912": "worm fence, snake fence, snake-rail fence, Virginia fence",
921
+ "913": "wreck",
922
+ "914": "yawl",
923
+ "915": "yurt",
924
+ "916": "web site, website, internet site, site",
925
+ "917": "comic book",
926
+ "918": "crossword puzzle, crossword",
927
+ "919": "street sign",
928
+ "920": "traffic light, traffic signal, stoplight",
929
+ "921": "book jacket, dust cover, dust jacket, dust wrapper",
930
+ "922": "menu",
931
+ "923": "plate",
932
+ "924": "guacamole",
933
+ "925": "consomme",
934
+ "926": "hot pot, hotpot",
935
+ "927": "trifle",
936
+ "928": "ice cream, icecream",
937
+ "929": "ice lolly, lolly, lollipop, popsicle",
938
+ "930": "French loaf",
939
+ "931": "bagel, beigel",
940
+ "932": "pretzel",
941
+ "933": "cheeseburger",
942
+ "934": "hotdog, hot dog, red hot",
943
+ "935": "mashed potato",
944
+ "936": "head cabbage",
945
+ "937": "broccoli",
946
+ "938": "cauliflower",
947
+ "939": "zucchini, courgette",
948
+ "940": "spaghetti squash",
949
+ "941": "acorn squash",
950
+ "942": "butternut squash",
951
+ "943": "cucumber, cuke",
952
+ "944": "artichoke, globe artichoke",
953
+ "945": "bell pepper",
954
+ "946": "cardoon",
955
+ "947": "mushroom",
956
+ "948": "Granny Smith",
957
+ "949": "strawberry",
958
+ "950": "orange",
959
+ "951": "lemon",
960
+ "952": "fig",
961
+ "953": "pineapple, ananas",
962
+ "954": "banana",
963
+ "955": "jackfruit, jak, jack",
964
+ "956": "custard apple",
965
+ "957": "pomegranate",
966
+ "958": "hay",
967
+ "959": "carbonara",
968
+ "960": "chocolate sauce, chocolate syrup",
969
+ "961": "dough",
970
+ "962": "meat loaf, meatloaf",
971
+ "963": "pizza, pizza pie",
972
+ "964": "potpie",
973
+ "965": "burrito",
974
+ "966": "red wine",
975
+ "967": "espresso",
976
+ "968": "cup",
977
+ "969": "eggnog",
978
+ "970": "alp",
979
+ "971": "bubble",
980
+ "972": "cliff, drop, drop-off",
981
+ "973": "coral reef",
982
+ "974": "geyser",
983
+ "975": "lakeside, lakeshore",
984
+ "976": "promontory, headland, head, foreland",
985
+ "977": "sandbar, sand bar",
986
+ "978": "seashore, coast, seacoast, sea-coast",
987
+ "979": "valley, vale",
988
+ "980": "volcano",
989
+ "981": "ballplayer, baseball player",
990
+ "982": "groom, bridegroom",
991
+ "983": "scuba diver",
992
+ "984": "rapeseed",
993
+ "985": "daisy",
994
+ "986": "yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
995
+ "987": "corn",
996
+ "988": "acorn",
997
+ "989": "hip, rose hip, rosehip",
998
+ "990": "buckeye, horse chestnut, conker",
999
+ "991": "coral fungus",
1000
+ "992": "agaric",
1001
+ "993": "gyromitra",
1002
+ "994": "stinkhorn, carrion fungus",
1003
+ "995": "earthstar",
1004
+ "996": "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa",
1005
+ "997": "bolete",
1006
+ "998": "ear, spike, capitulum",
1007
+ "999": "toilet tissue, toilet paper, bathroom tissue"
1008
+ },
1009
+ "generator": [
1010
+ "modeling_cafm_sit",
1011
+ "CAFMSiTGenerator2DModel"
1012
+ ],
1013
+ "vae": [
1014
+ "diffusers",
1015
+ "AutoencoderKL"
1016
+ ],
1017
+ "scheduler": [
1018
+ "scheduling_continuous_flow",
1019
+ "ContinuousFlowMatchScheduler"
1020
+ ]
1021
+ }
CAFM-SiT-XL-2-256/pipeline.py ADDED
@@ -0,0 +1,262 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Hub custom pipeline: CAFMSiTPipeline.
2
+
3
+ Load with native Hugging Face diffusers and trust_remote_code=True.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import importlib.util
9
+ import json
10
+ from pathlib import Path
11
+ from typing import Dict, List, Optional, Tuple, Union
12
+
13
+ import torch
14
+ from diffusers.image_processor import VaeImageProcessor
15
+ from diffusers.pipelines.pipeline_utils import DiffusionPipeline, ImagePipelineOutput
16
+ from diffusers.utils.torch_utils import randn_tensor
17
+
18
+
19
+ class CAFMSiTPipeline(DiffusionPipeline):
20
+ model_cpu_offload_seq = "generator->vae"
21
+
22
+ @staticmethod
23
+ def _coerce_scheduler(scheduler, generator):
24
+ if scheduler is not None and not isinstance(scheduler, (list, tuple)):
25
+ return scheduler
26
+ variant_path = getattr(generator.config, "_name_or_path", None)
27
+ if variant_path:
28
+ scheduler_dir = Path(variant_path).resolve().parent / "scheduler"
29
+ module_path = scheduler_dir / "scheduling_continuous_flow.py"
30
+ config_path = scheduler_dir / "scheduler_config.json"
31
+ if module_path.is_file() and config_path.is_file():
32
+ spec = importlib.util.spec_from_file_location("scheduling_continuous_flow", module_path)
33
+ if spec is not None and spec.loader is not None:
34
+ module = importlib.util.module_from_spec(spec)
35
+ spec.loader.exec_module(module)
36
+ return module.ContinuousFlowMatchScheduler.from_pretrained(str(scheduler_dir))
37
+ raise ValueError("CAFMSiTPipeline could not load ContinuousFlowMatchScheduler from the variant folder.")
38
+
39
+ def __init__(
40
+ self,
41
+ generator,
42
+ vae,
43
+ scheduler=None,
44
+ id2label: Optional[Dict[Union[int, str], str]] = None,
45
+ ) -> None:
46
+ super().__init__()
47
+ scheduler = self._coerce_scheduler(scheduler, generator)
48
+ self.register_modules(generator=generator, vae=vae, scheduler=scheduler)
49
+ self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor)
50
+ self._id2label = self._normalize_id2label(id2label)
51
+ self.labels = self._build_label2id(self._id2label)
52
+ self._labels_loaded_from_model_index = bool(self._id2label)
53
+
54
+ @staticmethod
55
+ def _normalize_id2label(id2label: Optional[Dict[Union[int, str], str]]) -> Dict[int, str]:
56
+ if not id2label:
57
+ return {}
58
+ return {int(key): value for key, value in id2label.items()}
59
+
60
+ @staticmethod
61
+ def _read_id2label_from_model_index(variant_path: Optional[str]) -> Dict[int, str]:
62
+ if not variant_path:
63
+ return {}
64
+ model_index_path = Path(variant_path).resolve() / "model_index.json"
65
+ if not model_index_path.exists():
66
+ return {}
67
+ raw = json.loads(model_index_path.read_text(encoding="utf-8"))
68
+ id2label = raw.get("id2label")
69
+ if not isinstance(id2label, dict):
70
+ return {}
71
+ return {int(key): value for key, value in id2label.items()}
72
+
73
+ @staticmethod
74
+ def _build_label2id(id2label: Dict[int, str]) -> Dict[str, int]:
75
+ label2id: Dict[str, int] = {}
76
+ for class_id, value in id2label.items():
77
+ for synonym in value.split(","):
78
+ synonym = synonym.strip()
79
+ if synonym:
80
+ label2id[synonym] = int(class_id)
81
+ return dict(sorted(label2id.items()))
82
+
83
+ @property
84
+ def vae_scale_factor(self) -> int:
85
+ block_out_channels = getattr(self.vae.config, "block_out_channels", None)
86
+ if block_out_channels:
87
+ return int(2 ** (len(block_out_channels) - 1))
88
+ return 8
89
+
90
+ @property
91
+ def id2label(self) -> Dict[int, str]:
92
+ self._ensure_labels_loaded()
93
+ return self._id2label
94
+
95
+ def _ensure_labels_loaded(self) -> None:
96
+ if self._labels_loaded_from_model_index:
97
+ return
98
+ loaded = self._read_id2label_from_model_index(getattr(self.config, "_name_or_path", None))
99
+ if loaded:
100
+ self._id2label = loaded
101
+ self.labels = self._build_label2id(self._id2label)
102
+ self._labels_loaded_from_model_index = True
103
+
104
+ def get_label_ids(self, label: Union[str, List[str]]) -> List[int]:
105
+ self._ensure_labels_loaded()
106
+ labels = [label] if isinstance(label, str) else label
107
+ if not self.labels:
108
+ raise ValueError("No id2label mapping is available in this checkpoint.")
109
+ missing = [item for item in labels if item not in self.labels]
110
+ if missing:
111
+ preview = ", ".join(list(self.labels.keys())[:8])
112
+ raise ValueError(f"Unknown English label(s): {missing}. Example valid labels: {preview}, ...")
113
+ return [self.labels[item] for item in labels]
114
+
115
+ def _normalize_class_labels(
116
+ self,
117
+ class_labels: Union[int, str, List[Union[int, str]], torch.LongTensor],
118
+ device: torch.device,
119
+ ) -> torch.LongTensor:
120
+ if torch.is_tensor(class_labels):
121
+ return class_labels.to(device=device, dtype=torch.long).reshape(-1)
122
+ if isinstance(class_labels, int):
123
+ class_label_ids = [class_labels]
124
+ elif isinstance(class_labels, str):
125
+ class_label_ids = self.get_label_ids(class_labels)
126
+ elif class_labels and isinstance(class_labels[0], str):
127
+ class_label_ids = self.get_label_ids(class_labels)
128
+ else:
129
+ class_label_ids = list(class_labels)
130
+ return torch.tensor(class_label_ids, device=device, dtype=torch.long).reshape(-1)
131
+
132
+ def _default_image_size(self) -> int:
133
+ return int(self.generator.config.input_size) * self.vae_scale_factor
134
+
135
+ def check_inputs(
136
+ self,
137
+ height: int,
138
+ width: int,
139
+ num_inference_steps: int,
140
+ output_type: str,
141
+ sampler: str,
142
+ ) -> None:
143
+ if num_inference_steps < 1:
144
+ raise ValueError("`num_inference_steps` must be >= 1.")
145
+ if output_type not in {"pil", "np", "pt", "latent"}:
146
+ raise ValueError("output_type must be one of: 'pil', 'np', 'pt', 'latent'.")
147
+ if sampler not in {"euler", "heun"}:
148
+ raise ValueError("sampler must be one of: 'euler', 'heun'.")
149
+ if height % self.vae_scale_factor != 0 or width % self.vae_scale_factor != 0:
150
+ raise ValueError(
151
+ f"`height` and `width` must be divisible by {self.vae_scale_factor}, got ({height}, {width})."
152
+ )
153
+
154
+ def prepare_latents(
155
+ self,
156
+ batch_size: int,
157
+ height: int,
158
+ width: int,
159
+ dtype: torch.dtype,
160
+ device: torch.device,
161
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]],
162
+ latents: Optional[torch.Tensor] = None,
163
+ ) -> torch.Tensor:
164
+ if latents is not None:
165
+ return latents.to(device=device, dtype=dtype)
166
+ latent_height = height // self.vae_scale_factor
167
+ latent_width = width // self.vae_scale_factor
168
+ return randn_tensor(
169
+ (batch_size, self.generator.config.in_channels, latent_height, latent_width),
170
+ generator=generator,
171
+ device=device,
172
+ dtype=dtype,
173
+ )
174
+
175
+ def decode_latents(self, latents: torch.Tensor, output_type: str = "pil"):
176
+ if output_type == "latent":
177
+ return latents
178
+ scaling_factor = getattr(self.vae.config, "scaling_factor", 0.18215)
179
+ image = self.vae.decode(latents / scaling_factor).sample
180
+ if output_type == "pt":
181
+ return image
182
+ return self.image_processor.postprocess(image, output_type=output_type)
183
+
184
+ def _run_denoising_loop(
185
+ self,
186
+ latents: torch.Tensor,
187
+ class_labels_tensor: torch.Tensor,
188
+ batch_size: int,
189
+ device: torch.device,
190
+ num_inference_steps: int,
191
+ sampler: str,
192
+ ) -> torch.Tensor:
193
+ self.scheduler.set_timesteps(num_inference_steps, device=device, solver=sampler)
194
+ timesteps = self.scheduler.timesteps
195
+ self.generator.eval()
196
+ for t_src, t_tgt in self.progress_bar(list(zip(timesteps[:-1], timesteps[1:]))):
197
+ t_src_batch = t_src.expand(batch_size)
198
+ t_tgt_batch = t_tgt.expand(batch_size)
199
+ outputs = self.generator(latents, class_labels_tensor, t_src_batch)
200
+ if sampler == "heun":
201
+ latents_next = self.scheduler.step(
202
+ outputs, t_src, t_tgt, latents, prediction_type="v"
203
+ ).prev_sample
204
+ outputs_next = self.generator(latents_next, class_labels_tensor, t_tgt_batch)
205
+ latents = self.scheduler.step(
206
+ outputs,
207
+ t_src,
208
+ t_tgt,
209
+ latents,
210
+ model_output_next=outputs_next,
211
+ prediction_type="v",
212
+ ).prev_sample
213
+ else:
214
+ latents = self.scheduler.step(
215
+ outputs, t_src, t_tgt, latents, prediction_type="v"
216
+ ).prev_sample
217
+ return latents
218
+
219
+ @torch.inference_mode()
220
+ def __call__(
221
+ self,
222
+ class_labels: Union[int, str, List[Union[int, str]], torch.LongTensor],
223
+ height: Optional[int] = None,
224
+ width: Optional[int] = None,
225
+ num_inference_steps: int = 250,
226
+ sampler: str = "heun",
227
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
228
+ latents: Optional[torch.Tensor] = None,
229
+ output_type: str = "pil",
230
+ return_dict: bool = True,
231
+ ) -> Union[ImagePipelineOutput, Tuple]:
232
+ default_size = self._default_image_size()
233
+ height = int(height or default_size)
234
+ width = int(width or default_size)
235
+ self.check_inputs(height, width, num_inference_steps, output_type, sampler)
236
+
237
+ device = getattr(self, "_execution_device", None) or next(self.generator.parameters()).device
238
+ dtype = next(self.generator.parameters()).dtype
239
+ class_labels_tensor = self._normalize_class_labels(class_labels, device=device)
240
+ batch_size = class_labels_tensor.shape[0]
241
+ latents = self.prepare_latents(
242
+ batch_size=batch_size,
243
+ height=height,
244
+ width=width,
245
+ dtype=dtype,
246
+ device=device,
247
+ generator=generator,
248
+ latents=latents,
249
+ )
250
+ latents = self._run_denoising_loop(
251
+ latents,
252
+ class_labels_tensor,
253
+ batch_size,
254
+ device,
255
+ num_inference_steps,
256
+ sampler,
257
+ )
258
+ image = self.decode_latents(latents, output_type=output_type)
259
+ self.maybe_free_model_hooks()
260
+ if not return_dict:
261
+ return (image,)
262
+ return ImagePipelineOutput(images=image)
CAFM-SiT-XL-2-256/scheduler/__pycache__/scheduling_continuous_flow.cpython-312.pyc ADDED
Binary file (5.38 kB). View file
 
CAFM-SiT-XL-2-256/scheduler/scheduler_config.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "ContinuousFlowMatchScheduler",
3
+ "_diffusers_version": "0.36.0",
4
+ "solver": "heun"
5
+ }
CAFM-SiT-XL-2-256/scheduler/scheduling_continuous_flow.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from typing import List, Optional, Tuple, Union
5
+
6
+ import torch
7
+ from diffusers.configuration_utils import ConfigMixin, register_to_config
8
+ from diffusers.schedulers.scheduling_utils import SchedulerMixin
9
+ from diffusers.utils import BaseOutput
10
+
11
+
12
+ @dataclass
13
+ class ContinuousFlowMatchSchedulerOutput(BaseOutput):
14
+ prev_sample: torch.Tensor
15
+
16
+
17
+ class ContinuousFlowMatchScheduler(SchedulerMixin, ConfigMixin):
18
+ """Flow-matching scheduler for AFM with time in [1, 0]."""
19
+
20
+ order = 2
21
+
22
+ @register_to_config
23
+ def __init__(self, solver: str = "euler"):
24
+ if solver not in {"euler", "heun"}:
25
+ raise ValueError("solver must be one of: 'euler', 'heun'.")
26
+ self.timesteps: Optional[torch.Tensor] = None
27
+ self.num_inference_steps: Optional[int] = None
28
+ self._step_index: Optional[int] = None
29
+
30
+ @property
31
+ def init_noise_sigma(self) -> float:
32
+ return 1.0
33
+
34
+ def set_timesteps(
35
+ self,
36
+ num_inference_steps: int,
37
+ device: Union[str, torch.device, None] = None,
38
+ solver: Optional[str] = None,
39
+ ) -> None:
40
+ if num_inference_steps < 1:
41
+ raise ValueError("num_inference_steps must be >= 1.")
42
+ self.num_inference_steps = num_inference_steps
43
+ if solver == "heun":
44
+ grid_size = (num_inference_steps // 2) + 1
45
+ else:
46
+ grid_size = num_inference_steps + 1
47
+ self.timesteps = torch.linspace(1.0, 0.0, grid_size, device=device, dtype=torch.float32)
48
+ self._step_index = 0
49
+ if solver is not None:
50
+ self.register_to_config(solver=solver)
51
+
52
+ def scale_model_input(self, sample: torch.Tensor, timestep: Union[float, torch.Tensor]) -> torch.Tensor:
53
+ del timestep
54
+ return sample
55
+
56
+ def _resolve_step_index(self, timestep: Union[float, torch.Tensor, None]) -> int:
57
+ if self._step_index is not None:
58
+ return self._step_index
59
+ if self.timesteps is None:
60
+ raise ValueError("Call `set_timesteps` before `step`.")
61
+ if timestep is None:
62
+ return 0
63
+ t_value = float(timestep) if not isinstance(timestep, torch.Tensor) else float(timestep.flatten()[0])
64
+ matches = (self.timesteps - t_value).abs() < 1e-6
65
+ if matches.any():
66
+ return int(matches.nonzero(as_tuple=False)[0].item())
67
+ return 0
68
+
69
+ def step(
70
+ self,
71
+ model_output: torch.Tensor,
72
+ timestep_src: Union[float, torch.Tensor],
73
+ timestep_tgt: Union[float, torch.Tensor],
74
+ sample: torch.Tensor,
75
+ model_output_next: Optional[torch.Tensor] = None,
76
+ prediction_type: str = "v",
77
+ return_dict: bool = True,
78
+ ) -> Union[ContinuousFlowMatchSchedulerOutput, Tuple[torch.Tensor]]:
79
+ if prediction_type == "x":
80
+ prev_sample = model_output
81
+ else:
82
+ t_src = torch.as_tensor(timestep_src, device=sample.device, dtype=sample.dtype)
83
+ t_tgt = torch.as_tensor(timestep_tgt, device=sample.device, dtype=sample.dtype)
84
+ while t_src.ndim < sample.ndim:
85
+ t_src = t_src.unsqueeze(-1)
86
+ t_tgt = t_tgt.unsqueeze(-1)
87
+ dt = t_src - t_tgt
88
+ if self.config.solver == "heun" and model_output_next is not None:
89
+ prev_sample = sample - dt * 0.5 * (model_output + model_output_next)
90
+ else:
91
+ prev_sample = sample - dt * model_output
92
+
93
+ step_index = self._resolve_step_index(timestep_src)
94
+ self._step_index = step_index + 1
95
+
96
+ if not return_dict:
97
+ return (prev_sample,)
98
+ return ContinuousFlowMatchSchedulerOutput(prev_sample=prev_sample)
CAFM-SiT-XL-2-256/vae/config.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKL",
3
+ "_diffusers_version": "0.36.0",
4
+ "_name_or_path": "stabilityai/sd-vae-ft-mse",
5
+ "act_fn": "silu",
6
+ "block_out_channels": [
7
+ 128,
8
+ 256,
9
+ 512,
10
+ 512
11
+ ],
12
+ "down_block_types": [
13
+ "DownEncoderBlock2D",
14
+ "DownEncoderBlock2D",
15
+ "DownEncoderBlock2D",
16
+ "DownEncoderBlock2D"
17
+ ],
18
+ "force_upcast": true,
19
+ "in_channels": 3,
20
+ "latent_channels": 4,
21
+ "latents_mean": null,
22
+ "latents_std": null,
23
+ "layers_per_block": 2,
24
+ "mid_block_add_attention": true,
25
+ "norm_num_groups": 32,
26
+ "out_channels": 3,
27
+ "sample_size": 256,
28
+ "scaling_factor": 0.18215,
29
+ "shift_factor": null,
30
+ "up_block_types": [
31
+ "UpDecoderBlock2D",
32
+ "UpDecoderBlock2D",
33
+ "UpDecoderBlock2D",
34
+ "UpDecoderBlock2D"
35
+ ],
36
+ "use_post_quant_conv": true,
37
+ "use_quant_conv": true
38
+ }
CAFM-SiT-XL-2-256/vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2aa1f43011b553a4cba7f37456465cdbd48aab7b54b9348b890e8058ea7683ec
3
+ size 334643268
CAFM-Z-Image-T2I/demo.png ADDED

Git LFS Details

  • SHA256: 9c50dfb51f18e07a8591dcd521256855e754de3c5986ffe60f80a33eb7578457
  • Pointer size: 131 Bytes
  • Size of remote file: 342 kB
CAFM-Z-Image-T2I/model_index.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": [
3
+ "pipeline",
4
+ "CAFMZImagePipeline"
5
+ ],
6
+ "_diffusers_version": "0.38.0",
7
+ "transformer": [
8
+ "diffusers",
9
+ "ZImageTransformer2DModel"
10
+ ],
11
+ "vae": [
12
+ "diffusers",
13
+ "AutoencoderKL"
14
+ ],
15
+ "text_encoder": [
16
+ "transformers",
17
+ "Qwen3ForCausalLM"
18
+ ],
19
+ "tokenizer": [
20
+ "transformers",
21
+ "Qwen2Tokenizer"
22
+ ],
23
+ "scheduler": [
24
+ "diffusers",
25
+ "FlowMatchEulerDiscreteScheduler"
26
+ ]
27
+ }
CAFM-Z-Image-T2I/pipeline.py ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Hub custom pipeline: CAFMZImagePipeline.
2
+
3
+ Continuous adversarial flow sampling for Tongyi-MAI/Z-Image T2I checkpoints.
4
+ Load with native Hugging Face diffusers and trust_remote_code=True.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import List, Optional, Tuple, Union
10
+
11
+ import torch
12
+ from diffusers.image_processor import VaeImageProcessor
13
+ from diffusers.pipelines.pipeline_utils import DiffusionPipeline
14
+ from diffusers.utils.torch_utils import randn_tensor
15
+ from einops import rearrange
16
+ from transformers import AutoTokenizer, PreTrainedModel
17
+
18
+
19
+ class CAFMZImagePipelineOutput:
20
+ def __init__(self, images):
21
+ self.images = images
22
+
23
+
24
+ class CAFMZImagePipeline(DiffusionPipeline):
25
+ model_cpu_offload_seq = "text_encoder->transformer->vae"
26
+ _optional_components = ["scheduler"]
27
+
28
+ def __init__(
29
+ self,
30
+ transformer,
31
+ vae,
32
+ text_encoder: PreTrainedModel,
33
+ tokenizer: AutoTokenizer,
34
+ scheduler=None,
35
+ timestep_shift: float = 1.0 / 3.0,
36
+ default_sampler: str = "euler",
37
+ ) -> None:
38
+ super().__init__()
39
+ modules = {
40
+ "transformer": transformer,
41
+ "vae": vae,
42
+ "text_encoder": text_encoder,
43
+ "tokenizer": tokenizer,
44
+ }
45
+ if scheduler is not None and not isinstance(scheduler, (list, tuple)):
46
+ modules["scheduler"] = scheduler
47
+ self.register_modules(**modules)
48
+ self.register_to_config(timestep_shift=float(timestep_shift))
49
+ self.vae_scale_factor = (
50
+ 2 ** (len(self.vae.config.block_out_channels) - 1) if hasattr(self.vae, "config") else 8
51
+ )
52
+ self.image_processor = VaeImageProcessor(vae_scale_factor=self.vae_scale_factor * 2)
53
+
54
+ @staticmethod
55
+ def shift_timesteps(timesteps: torch.Tensor, shift: float) -> torch.Tensor:
56
+ return (timesteps * shift) / (1 + (shift - 1) * timesteps)
57
+
58
+ def encode_prompt(
59
+ self,
60
+ prompt: Union[str, List[str]],
61
+ device: torch.device,
62
+ max_sequence_length: int = 512,
63
+ ) -> List[torch.Tensor]:
64
+ prompts = [prompt] if isinstance(prompt, str) else list(prompt)
65
+ formatted = []
66
+ for prompt_item in prompts:
67
+ messages = [{"role": "user", "content": prompt_item}]
68
+ formatted.append(
69
+ self.tokenizer.apply_chat_template(
70
+ messages,
71
+ tokenize=False,
72
+ add_generation_prompt=True,
73
+ enable_thinking=True,
74
+ )
75
+ )
76
+ text_inputs = self.tokenizer(
77
+ formatted,
78
+ padding="max_length",
79
+ max_length=max_sequence_length,
80
+ truncation=True,
81
+ return_tensors="pt",
82
+ )
83
+ text_input_ids = text_inputs.input_ids.to(device)
84
+ prompt_masks = text_inputs.attention_mask.to(device).bool()
85
+ prompt_embeds = self.text_encoder(
86
+ input_ids=text_input_ids,
87
+ attention_mask=prompt_masks,
88
+ output_hidden_states=True,
89
+ ).hidden_states[-2]
90
+ return [prompt_embeds[i][prompt_masks[i]] for i in range(len(prompt_embeds))]
91
+
92
+ def _latent_hw(self, height: int, width: int) -> tuple[int, int]:
93
+ height = 2 * (int(height) // (self.vae_scale_factor * 2))
94
+ width = 2 * (int(width) // (self.vae_scale_factor * 2))
95
+ return height, width
96
+
97
+ def prepare_noises(
98
+ self,
99
+ batch_size: int,
100
+ height: int,
101
+ width: int,
102
+ dtype: torch.dtype,
103
+ device: torch.device,
104
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
105
+ ) -> List[torch.Tensor]:
106
+ latent_height, latent_width = self._latent_hw(height, width)
107
+ in_channels = int(self.transformer.config.in_channels)
108
+ noises = []
109
+ for index in range(batch_size):
110
+ gen = generator[index] if isinstance(generator, list) else generator
111
+ noise = randn_tensor(
112
+ (in_channels, 1, latent_height, latent_width),
113
+ generator=gen,
114
+ device=device,
115
+ dtype=dtype,
116
+ )
117
+ noises.append(noise)
118
+ return noises
119
+
120
+ def decode_latents(self, latents: List[torch.Tensor], output_type: str = "pil"):
121
+ scale = self.vae.config.scaling_factor
122
+ shift = self.vae.config.shift_factor
123
+ device = getattr(self, "_execution_device", next(self.vae.parameters()).device)
124
+ vae_dtype = self.vae.dtype
125
+ images = []
126
+ for latent in latents:
127
+ latent = rearrange(latent, "c f h w -> f c h w").to(device=device, dtype=vae_dtype)
128
+ latent = latent / scale + shift
129
+ sample = self.vae.decode(latent).sample
130
+ images.append(sample.squeeze(0).float())
131
+ stacked = torch.stack(images, dim=0)
132
+ if output_type == "pt":
133
+ return stacked
134
+ if output_type == "np":
135
+ return self.image_processor.postprocess(stacked, output_type="np")
136
+ return self.image_processor.postprocess(stacked, output_type="pil")
137
+
138
+ def _run_denoising_loop(
139
+ self,
140
+ latents: List[torch.Tensor],
141
+ text_embeds: List[torch.Tensor],
142
+ num_inference_steps: int,
143
+ sampler: str,
144
+ ) -> List[torch.Tensor]:
145
+ device = latents[0].device
146
+ dtype = latents[0].dtype
147
+ timesteps = torch.linspace(0.0, 1.0, num_inference_steps + 1, device=device, dtype=dtype)
148
+ timesteps = self.shift_timesteps(timesteps, self.config.timestep_shift)
149
+
150
+ self.transformer.eval()
151
+ for t_src, t_tgt in self.progress_bar(list(zip(timesteps[:-1], timesteps[1:]))):
152
+ dt = t_tgt - t_src
153
+ t_src_batch = t_src.expand(len(latents)).to(dtype=dtype)
154
+ outputs = self.transformer(latents, t_src_batch, text_embeds, return_dict=True).sample
155
+ if sampler == "heun":
156
+ latents_next = [x_t + dt * velocity for x_t, velocity in zip(latents, outputs)]
157
+ t_tgt_batch = t_tgt.expand(len(latents)).to(dtype=dtype)
158
+ outputs_next = self.transformer(latents_next, t_tgt_batch, text_embeds, return_dict=True).sample
159
+ latents = [
160
+ x_t + dt * 0.5 * (velocity + velocity_next)
161
+ for x_t, velocity, velocity_next in zip(latents, outputs, outputs_next)
162
+ ]
163
+ else:
164
+ latents = [x_t + dt * velocity for x_t, velocity in zip(latents, outputs)]
165
+ return latents
166
+
167
+ @torch.inference_mode()
168
+ def __call__(
169
+ self,
170
+ prompt: Union[str, List[str]],
171
+ height: int = 512,
172
+ width: int = 512,
173
+ num_inference_steps: int = 25,
174
+ sampler: str = "euler",
175
+ generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None,
176
+ max_sequence_length: int = 512,
177
+ output_type: str = "pil",
178
+ return_dict: bool = True,
179
+ ) -> Union[CAFMZImagePipelineOutput, Tuple]:
180
+ if sampler not in {"euler", "heun"}:
181
+ raise ValueError("sampler must be one of: 'euler', 'heun'.")
182
+
183
+ vae_scale = self.vae_scale_factor * 2
184
+ if height % vae_scale != 0 or width % vae_scale != 0:
185
+ raise ValueError(f"height and width must be divisible by {vae_scale}, got ({height}, {width}).")
186
+
187
+ device = getattr(self, "_execution_device", None) or next(self.transformer.parameters()).device
188
+ dtype = getattr(self.transformer, "dtype", torch.float32)
189
+ prompts = [prompt] if isinstance(prompt, str) else list(prompt)
190
+ text_embeds = self.encode_prompt(prompts, device=device, max_sequence_length=max_sequence_length)
191
+ latents = self.prepare_noises(
192
+ batch_size=len(prompts),
193
+ height=height,
194
+ width=width,
195
+ dtype=dtype,
196
+ device=device,
197
+ generator=generator,
198
+ )
199
+ latents = self._run_denoising_loop(latents, text_embeds, num_inference_steps, sampler)
200
+ images = self.decode_latents(latents, output_type=output_type)
201
+ self.maybe_free_model_hooks()
202
+ if not return_dict:
203
+ return (images,)
204
+ return CAFMZImagePipelineOutput(images=images)
CAFM-Z-Image-T2I/scheduler/scheduler_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "FlowMatchEulerDiscreteScheduler",
3
+ "_diffusers_version": "0.37.0.dev0",
4
+ "num_train_timesteps": 1000,
5
+ "use_dynamic_shifting": false,
6
+ "shift": 6.0
7
+ }
CAFM-Z-Image-T2I/text_encoder/config.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3ForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 151643,
8
+ "eos_token_id": 151645,
9
+ "head_dim": 128,
10
+ "hidden_act": "silu",
11
+ "hidden_size": 2560,
12
+ "initializer_range": 0.02,
13
+ "intermediate_size": 9728,
14
+ "max_position_embeddings": 40960,
15
+ "max_window_layers": 36,
16
+ "model_type": "qwen3",
17
+ "num_attention_heads": 32,
18
+ "num_hidden_layers": 36,
19
+ "num_key_value_heads": 8,
20
+ "rms_norm_eps": 1e-06,
21
+ "rope_scaling": null,
22
+ "rope_theta": 1000000,
23
+ "sliding_window": null,
24
+ "tie_word_embeddings": true,
25
+ "torch_dtype": "bfloat16",
26
+ "transformers_version": "4.51.0",
27
+ "use_cache": true,
28
+ "use_sliding_window": false,
29
+ "vocab_size": 151936
30
+ }
CAFM-Z-Image-T2I/text_encoder/generation_config.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 151643,
3
+ "do_sample": true,
4
+ "eos_token_id": [
5
+ 151645,
6
+ 151643
7
+ ],
8
+ "pad_token_id": 151643,
9
+ "temperature": 0.6,
10
+ "top_k": 20,
11
+ "top_p": 0.95,
12
+ "transformers_version": "4.51.0"
13
+ }
CAFM-Z-Image-T2I/text_encoder/model-00001-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:328a91d3122359d5547f9d79521205bc0a46e1f79a792dfe650e99fc2d651223
3
+ size 3957900840
CAFM-Z-Image-T2I/text_encoder/model-00002-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6cd087b316306a68c562436b5492edbcf6e16c6dba3a1308279caa5a58e21ca5
3
+ size 3987450520
CAFM-Z-Image-T2I/text_encoder/model-00003-of-00003.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ca841ee75b9c61267c0c6148fd8d096d3d21b6d3e161256a9b878154f91fc52
3
+ size 99630640
CAFM-Z-Image-T2I/text_encoder/model.safetensors.index.json ADDED
@@ -0,0 +1,405 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 8044936192
4
+ },
5
+ "weight_map": {
6
+ "model.embed_tokens.weight": "model-00001-of-00003.safetensors",
7
+ "model.layers.0.input_layernorm.weight": "model-00001-of-00003.safetensors",
8
+ "model.layers.0.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
9
+ "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
10
+ "model.layers.0.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
11
+ "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
12
+ "model.layers.0.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
13
+ "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
14
+ "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
15
+ "model.layers.0.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
16
+ "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
17
+ "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
18
+ "model.layers.1.input_layernorm.weight": "model-00001-of-00003.safetensors",
19
+ "model.layers.1.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
20
+ "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
21
+ "model.layers.1.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
22
+ "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
23
+ "model.layers.1.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
24
+ "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
25
+ "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
26
+ "model.layers.1.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
27
+ "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
28
+ "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
29
+ "model.layers.10.input_layernorm.weight": "model-00001-of-00003.safetensors",
30
+ "model.layers.10.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
31
+ "model.layers.10.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
32
+ "model.layers.10.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
33
+ "model.layers.10.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
34
+ "model.layers.10.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
35
+ "model.layers.10.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
36
+ "model.layers.10.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
37
+ "model.layers.10.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
38
+ "model.layers.10.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
39
+ "model.layers.10.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
40
+ "model.layers.11.input_layernorm.weight": "model-00001-of-00003.safetensors",
41
+ "model.layers.11.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
42
+ "model.layers.11.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
43
+ "model.layers.11.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
44
+ "model.layers.11.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
45
+ "model.layers.11.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
46
+ "model.layers.11.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
47
+ "model.layers.11.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
48
+ "model.layers.11.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
49
+ "model.layers.11.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
50
+ "model.layers.11.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
51
+ "model.layers.12.input_layernorm.weight": "model-00001-of-00003.safetensors",
52
+ "model.layers.12.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
53
+ "model.layers.12.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
54
+ "model.layers.12.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
55
+ "model.layers.12.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
56
+ "model.layers.12.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
57
+ "model.layers.12.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
58
+ "model.layers.12.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
59
+ "model.layers.12.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
60
+ "model.layers.12.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
61
+ "model.layers.12.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
62
+ "model.layers.13.input_layernorm.weight": "model-00001-of-00003.safetensors",
63
+ "model.layers.13.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
64
+ "model.layers.13.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
65
+ "model.layers.13.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
66
+ "model.layers.13.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
67
+ "model.layers.13.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
68
+ "model.layers.13.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
69
+ "model.layers.13.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
70
+ "model.layers.13.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
71
+ "model.layers.13.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
72
+ "model.layers.13.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
73
+ "model.layers.14.input_layernorm.weight": "model-00001-of-00003.safetensors",
74
+ "model.layers.14.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
75
+ "model.layers.14.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
76
+ "model.layers.14.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
77
+ "model.layers.14.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
78
+ "model.layers.14.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
79
+ "model.layers.14.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
80
+ "model.layers.14.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
81
+ "model.layers.14.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
82
+ "model.layers.14.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
83
+ "model.layers.14.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
84
+ "model.layers.15.input_layernorm.weight": "model-00002-of-00003.safetensors",
85
+ "model.layers.15.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
86
+ "model.layers.15.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
87
+ "model.layers.15.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
88
+ "model.layers.15.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
89
+ "model.layers.15.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
90
+ "model.layers.15.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
91
+ "model.layers.15.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
92
+ "model.layers.15.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
93
+ "model.layers.15.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
94
+ "model.layers.15.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
95
+ "model.layers.16.input_layernorm.weight": "model-00002-of-00003.safetensors",
96
+ "model.layers.16.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
97
+ "model.layers.16.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
98
+ "model.layers.16.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
99
+ "model.layers.16.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
100
+ "model.layers.16.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
101
+ "model.layers.16.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
102
+ "model.layers.16.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
103
+ "model.layers.16.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
104
+ "model.layers.16.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
105
+ "model.layers.16.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
106
+ "model.layers.17.input_layernorm.weight": "model-00002-of-00003.safetensors",
107
+ "model.layers.17.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
108
+ "model.layers.17.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
109
+ "model.layers.17.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
110
+ "model.layers.17.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
111
+ "model.layers.17.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
112
+ "model.layers.17.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
113
+ "model.layers.17.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
114
+ "model.layers.17.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
115
+ "model.layers.17.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
116
+ "model.layers.17.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
117
+ "model.layers.18.input_layernorm.weight": "model-00002-of-00003.safetensors",
118
+ "model.layers.18.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
119
+ "model.layers.18.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
120
+ "model.layers.18.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
121
+ "model.layers.18.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
122
+ "model.layers.18.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
123
+ "model.layers.18.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
124
+ "model.layers.18.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
125
+ "model.layers.18.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
126
+ "model.layers.18.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
127
+ "model.layers.18.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
128
+ "model.layers.19.input_layernorm.weight": "model-00002-of-00003.safetensors",
129
+ "model.layers.19.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
130
+ "model.layers.19.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
131
+ "model.layers.19.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
132
+ "model.layers.19.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
133
+ "model.layers.19.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
134
+ "model.layers.19.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
135
+ "model.layers.19.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
136
+ "model.layers.19.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
137
+ "model.layers.19.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
138
+ "model.layers.19.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
139
+ "model.layers.2.input_layernorm.weight": "model-00001-of-00003.safetensors",
140
+ "model.layers.2.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
141
+ "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
142
+ "model.layers.2.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
143
+ "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
144
+ "model.layers.2.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
145
+ "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
146
+ "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
147
+ "model.layers.2.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
148
+ "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
149
+ "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
150
+ "model.layers.20.input_layernorm.weight": "model-00002-of-00003.safetensors",
151
+ "model.layers.20.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
152
+ "model.layers.20.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
153
+ "model.layers.20.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
154
+ "model.layers.20.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
155
+ "model.layers.20.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
156
+ "model.layers.20.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
157
+ "model.layers.20.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
158
+ "model.layers.20.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
159
+ "model.layers.20.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
160
+ "model.layers.20.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
161
+ "model.layers.21.input_layernorm.weight": "model-00002-of-00003.safetensors",
162
+ "model.layers.21.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
163
+ "model.layers.21.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
164
+ "model.layers.21.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
165
+ "model.layers.21.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
166
+ "model.layers.21.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
167
+ "model.layers.21.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
168
+ "model.layers.21.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
169
+ "model.layers.21.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
170
+ "model.layers.21.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
171
+ "model.layers.21.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
172
+ "model.layers.22.input_layernorm.weight": "model-00002-of-00003.safetensors",
173
+ "model.layers.22.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
174
+ "model.layers.22.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
175
+ "model.layers.22.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
176
+ "model.layers.22.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
177
+ "model.layers.22.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
178
+ "model.layers.22.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
179
+ "model.layers.22.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
180
+ "model.layers.22.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
181
+ "model.layers.22.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
182
+ "model.layers.22.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
183
+ "model.layers.23.input_layernorm.weight": "model-00002-of-00003.safetensors",
184
+ "model.layers.23.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
185
+ "model.layers.23.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
186
+ "model.layers.23.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
187
+ "model.layers.23.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
188
+ "model.layers.23.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
189
+ "model.layers.23.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
190
+ "model.layers.23.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
191
+ "model.layers.23.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
192
+ "model.layers.23.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
193
+ "model.layers.23.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
194
+ "model.layers.24.input_layernorm.weight": "model-00002-of-00003.safetensors",
195
+ "model.layers.24.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
196
+ "model.layers.24.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
197
+ "model.layers.24.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
198
+ "model.layers.24.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
199
+ "model.layers.24.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
200
+ "model.layers.24.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
201
+ "model.layers.24.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
202
+ "model.layers.24.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
203
+ "model.layers.24.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
204
+ "model.layers.24.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
205
+ "model.layers.25.input_layernorm.weight": "model-00002-of-00003.safetensors",
206
+ "model.layers.25.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
207
+ "model.layers.25.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
208
+ "model.layers.25.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
209
+ "model.layers.25.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
210
+ "model.layers.25.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
211
+ "model.layers.25.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
212
+ "model.layers.25.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
213
+ "model.layers.25.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
214
+ "model.layers.25.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
215
+ "model.layers.25.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
216
+ "model.layers.26.input_layernorm.weight": "model-00002-of-00003.safetensors",
217
+ "model.layers.26.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
218
+ "model.layers.26.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
219
+ "model.layers.26.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
220
+ "model.layers.26.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
221
+ "model.layers.26.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
222
+ "model.layers.26.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
223
+ "model.layers.26.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
224
+ "model.layers.26.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
225
+ "model.layers.26.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
226
+ "model.layers.26.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
227
+ "model.layers.27.input_layernorm.weight": "model-00002-of-00003.safetensors",
228
+ "model.layers.27.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
229
+ "model.layers.27.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
230
+ "model.layers.27.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
231
+ "model.layers.27.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
232
+ "model.layers.27.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
233
+ "model.layers.27.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
234
+ "model.layers.27.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
235
+ "model.layers.27.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
236
+ "model.layers.27.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
237
+ "model.layers.27.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
238
+ "model.layers.28.input_layernorm.weight": "model-00002-of-00003.safetensors",
239
+ "model.layers.28.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
240
+ "model.layers.28.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
241
+ "model.layers.28.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
242
+ "model.layers.28.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
243
+ "model.layers.28.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
244
+ "model.layers.28.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
245
+ "model.layers.28.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
246
+ "model.layers.28.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
247
+ "model.layers.28.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
248
+ "model.layers.28.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
249
+ "model.layers.29.input_layernorm.weight": "model-00002-of-00003.safetensors",
250
+ "model.layers.29.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
251
+ "model.layers.29.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
252
+ "model.layers.29.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
253
+ "model.layers.29.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
254
+ "model.layers.29.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
255
+ "model.layers.29.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
256
+ "model.layers.29.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
257
+ "model.layers.29.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
258
+ "model.layers.29.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
259
+ "model.layers.29.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
260
+ "model.layers.3.input_layernorm.weight": "model-00001-of-00003.safetensors",
261
+ "model.layers.3.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
262
+ "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
263
+ "model.layers.3.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
264
+ "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
265
+ "model.layers.3.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
266
+ "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
267
+ "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
268
+ "model.layers.3.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
269
+ "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
270
+ "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
271
+ "model.layers.30.input_layernorm.weight": "model-00002-of-00003.safetensors",
272
+ "model.layers.30.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
273
+ "model.layers.30.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
274
+ "model.layers.30.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
275
+ "model.layers.30.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
276
+ "model.layers.30.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
277
+ "model.layers.30.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
278
+ "model.layers.30.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
279
+ "model.layers.30.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
280
+ "model.layers.30.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
281
+ "model.layers.30.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
282
+ "model.layers.31.input_layernorm.weight": "model-00002-of-00003.safetensors",
283
+ "model.layers.31.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
284
+ "model.layers.31.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
285
+ "model.layers.31.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
286
+ "model.layers.31.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
287
+ "model.layers.31.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
288
+ "model.layers.31.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
289
+ "model.layers.31.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
290
+ "model.layers.31.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
291
+ "model.layers.31.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
292
+ "model.layers.31.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
293
+ "model.layers.32.input_layernorm.weight": "model-00002-of-00003.safetensors",
294
+ "model.layers.32.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
295
+ "model.layers.32.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
296
+ "model.layers.32.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
297
+ "model.layers.32.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
298
+ "model.layers.32.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
299
+ "model.layers.32.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
300
+ "model.layers.32.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
301
+ "model.layers.32.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
302
+ "model.layers.32.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
303
+ "model.layers.32.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
304
+ "model.layers.33.input_layernorm.weight": "model-00002-of-00003.safetensors",
305
+ "model.layers.33.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
306
+ "model.layers.33.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
307
+ "model.layers.33.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
308
+ "model.layers.33.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
309
+ "model.layers.33.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
310
+ "model.layers.33.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
311
+ "model.layers.33.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
312
+ "model.layers.33.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
313
+ "model.layers.33.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
314
+ "model.layers.33.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
315
+ "model.layers.34.input_layernorm.weight": "model-00002-of-00003.safetensors",
316
+ "model.layers.34.mlp.down_proj.weight": "model-00002-of-00003.safetensors",
317
+ "model.layers.34.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
318
+ "model.layers.34.mlp.up_proj.weight": "model-00002-of-00003.safetensors",
319
+ "model.layers.34.post_attention_layernorm.weight": "model-00002-of-00003.safetensors",
320
+ "model.layers.34.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
321
+ "model.layers.34.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
322
+ "model.layers.34.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
323
+ "model.layers.34.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
324
+ "model.layers.34.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
325
+ "model.layers.34.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
326
+ "model.layers.35.input_layernorm.weight": "model-00003-of-00003.safetensors",
327
+ "model.layers.35.mlp.down_proj.weight": "model-00003-of-00003.safetensors",
328
+ "model.layers.35.mlp.gate_proj.weight": "model-00002-of-00003.safetensors",
329
+ "model.layers.35.mlp.up_proj.weight": "model-00003-of-00003.safetensors",
330
+ "model.layers.35.post_attention_layernorm.weight": "model-00003-of-00003.safetensors",
331
+ "model.layers.35.self_attn.k_norm.weight": "model-00002-of-00003.safetensors",
332
+ "model.layers.35.self_attn.k_proj.weight": "model-00002-of-00003.safetensors",
333
+ "model.layers.35.self_attn.o_proj.weight": "model-00002-of-00003.safetensors",
334
+ "model.layers.35.self_attn.q_norm.weight": "model-00002-of-00003.safetensors",
335
+ "model.layers.35.self_attn.q_proj.weight": "model-00002-of-00003.safetensors",
336
+ "model.layers.35.self_attn.v_proj.weight": "model-00002-of-00003.safetensors",
337
+ "model.layers.4.input_layernorm.weight": "model-00001-of-00003.safetensors",
338
+ "model.layers.4.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
339
+ "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
340
+ "model.layers.4.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
341
+ "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
342
+ "model.layers.4.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
343
+ "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
344
+ "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
345
+ "model.layers.4.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
346
+ "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
347
+ "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
348
+ "model.layers.5.input_layernorm.weight": "model-00001-of-00003.safetensors",
349
+ "model.layers.5.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
350
+ "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
351
+ "model.layers.5.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
352
+ "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
353
+ "model.layers.5.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
354
+ "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
355
+ "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
356
+ "model.layers.5.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
357
+ "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
358
+ "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
359
+ "model.layers.6.input_layernorm.weight": "model-00001-of-00003.safetensors",
360
+ "model.layers.6.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
361
+ "model.layers.6.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
362
+ "model.layers.6.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
363
+ "model.layers.6.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
364
+ "model.layers.6.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
365
+ "model.layers.6.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
366
+ "model.layers.6.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
367
+ "model.layers.6.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
368
+ "model.layers.6.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
369
+ "model.layers.6.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
370
+ "model.layers.7.input_layernorm.weight": "model-00001-of-00003.safetensors",
371
+ "model.layers.7.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
372
+ "model.layers.7.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
373
+ "model.layers.7.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
374
+ "model.layers.7.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
375
+ "model.layers.7.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
376
+ "model.layers.7.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
377
+ "model.layers.7.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
378
+ "model.layers.7.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
379
+ "model.layers.7.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
380
+ "model.layers.7.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
381
+ "model.layers.8.input_layernorm.weight": "model-00001-of-00003.safetensors",
382
+ "model.layers.8.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
383
+ "model.layers.8.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
384
+ "model.layers.8.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
385
+ "model.layers.8.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
386
+ "model.layers.8.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
387
+ "model.layers.8.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
388
+ "model.layers.8.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
389
+ "model.layers.8.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
390
+ "model.layers.8.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
391
+ "model.layers.8.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
392
+ "model.layers.9.input_layernorm.weight": "model-00001-of-00003.safetensors",
393
+ "model.layers.9.mlp.down_proj.weight": "model-00001-of-00003.safetensors",
394
+ "model.layers.9.mlp.gate_proj.weight": "model-00001-of-00003.safetensors",
395
+ "model.layers.9.mlp.up_proj.weight": "model-00001-of-00003.safetensors",
396
+ "model.layers.9.post_attention_layernorm.weight": "model-00001-of-00003.safetensors",
397
+ "model.layers.9.self_attn.k_norm.weight": "model-00001-of-00003.safetensors",
398
+ "model.layers.9.self_attn.k_proj.weight": "model-00001-of-00003.safetensors",
399
+ "model.layers.9.self_attn.o_proj.weight": "model-00001-of-00003.safetensors",
400
+ "model.layers.9.self_attn.q_norm.weight": "model-00001-of-00003.safetensors",
401
+ "model.layers.9.self_attn.q_proj.weight": "model-00001-of-00003.safetensors",
402
+ "model.layers.9.self_attn.v_proj.weight": "model-00001-of-00003.safetensors",
403
+ "model.norm.weight": "model-00003-of-00003.safetensors"
404
+ }
405
+ }
CAFM-Z-Image-T2I/tokenizer/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
CAFM-Z-Image-T2I/tokenizer/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4
3
+ size 11422654
CAFM-Z-Image-T2I/tokenizer/tokenizer_config.json ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<tool_response>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": false
188
+ },
189
+ "151666": {
190
+ "content": "</tool_response>",
191
+ "lstrip": false,
192
+ "normalized": false,
193
+ "rstrip": false,
194
+ "single_word": false,
195
+ "special": false
196
+ },
197
+ "151667": {
198
+ "content": "<think>",
199
+ "lstrip": false,
200
+ "normalized": false,
201
+ "rstrip": false,
202
+ "single_word": false,
203
+ "special": false
204
+ },
205
+ "151668": {
206
+ "content": "</think>",
207
+ "lstrip": false,
208
+ "normalized": false,
209
+ "rstrip": false,
210
+ "single_word": false,
211
+ "special": false
212
+ }
213
+ },
214
+ "additional_special_tokens": [
215
+ "<|im_start|>",
216
+ "<|im_end|>",
217
+ "<|object_ref_start|>",
218
+ "<|object_ref_end|>",
219
+ "<|box_start|>",
220
+ "<|box_end|>",
221
+ "<|quad_start|>",
222
+ "<|quad_end|>",
223
+ "<|vision_start|>",
224
+ "<|vision_end|>",
225
+ "<|vision_pad|>",
226
+ "<|image_pad|>",
227
+ "<|video_pad|>"
228
+ ],
229
+ "bos_token": null,
230
+ "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if message.content is string %}\n {%- set content = message.content %}\n {%- else %}\n {%- set content = '' %}\n {%- endif %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content.strip('\\n') + '\\n</think>\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}",
231
+ "clean_up_tokenization_spaces": false,
232
+ "eos_token": "<|im_end|>",
233
+ "errors": "replace",
234
+ "model_max_length": 131072,
235
+ "pad_token": "<|endoftext|>",
236
+ "split_special_tokens": false,
237
+ "tokenizer_class": "Qwen2Tokenizer",
238
+ "unk_token": null
239
+ }
CAFM-Z-Image-T2I/tokenizer/vocab.json ADDED
The diff for this file is too large to render. See raw diff
 
CAFM-Z-Image-T2I/transformer/config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "ZImageTransformer2DModel",
3
+ "_diffusers_version": "0.37.0.dev0",
4
+ "all_f_patch_size": [
5
+ 1
6
+ ],
7
+ "all_patch_size": [
8
+ 2
9
+ ],
10
+ "axes_dims": [
11
+ 32,
12
+ 48,
13
+ 48
14
+ ],
15
+ "axes_lens": [
16
+ 1536,
17
+ 512,
18
+ 512
19
+ ],
20
+ "cap_feat_dim": 2560,
21
+ "dim": 3840,
22
+ "in_channels": 16,
23
+ "n_heads": 30,
24
+ "n_kv_heads": 30,
25
+ "n_layers": 30,
26
+ "n_refiner_layers": 2,
27
+ "norm_eps": 1e-05,
28
+ "qk_norm": true,
29
+ "rope_theta": 256.0,
30
+ "siglip_feat_dim": null,
31
+ "t_scale": 1000.0
32
+ }
CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model-00001-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ecd5df7768856215812af84d5cc785ba9d84c6d8c84e6939c7ccf30a2e0d2425
3
+ size 9973727144
CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model-00002-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e2d5fb75ca504b2d669a33af9380b68e0c1632ecddbfca85f82631958a4b81b1
3
+ size 2336146728
CAFM-Z-Image-T2I/transformer/diffusion_pytorch_model.safetensors.index.json ADDED
@@ -0,0 +1,528 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 12309817472
4
+ },
5
+ "weight_map": {
6
+ "all_final_layer.2-1.adaLN_modulation.1.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
7
+ "all_final_layer.2-1.adaLN_modulation.1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
8
+ "all_final_layer.2-1.linear.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
9
+ "all_final_layer.2-1.linear.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
10
+ "all_x_embedder.2-1.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
11
+ "all_x_embedder.2-1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
12
+ "cap_embedder.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
13
+ "cap_embedder.1.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
14
+ "cap_embedder.1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
15
+ "cap_pad_token": "diffusion_pytorch_model-00001-of-00002.safetensors",
16
+ "context_refiner.0.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
17
+ "context_refiner.0.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
18
+ "context_refiner.0.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
19
+ "context_refiner.0.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
20
+ "context_refiner.0.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
21
+ "context_refiner.0.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
22
+ "context_refiner.0.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
23
+ "context_refiner.0.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
24
+ "context_refiner.0.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
25
+ "context_refiner.0.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
26
+ "context_refiner.0.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
27
+ "context_refiner.0.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
28
+ "context_refiner.0.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
29
+ "context_refiner.1.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
30
+ "context_refiner.1.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
31
+ "context_refiner.1.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
32
+ "context_refiner.1.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
33
+ "context_refiner.1.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
34
+ "context_refiner.1.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
35
+ "context_refiner.1.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
36
+ "context_refiner.1.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
37
+ "context_refiner.1.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
38
+ "context_refiner.1.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
39
+ "context_refiner.1.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
40
+ "context_refiner.1.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
41
+ "context_refiner.1.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
42
+ "layers.0.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
43
+ "layers.0.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
44
+ "layers.0.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
45
+ "layers.0.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
46
+ "layers.0.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
47
+ "layers.0.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
48
+ "layers.0.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
49
+ "layers.0.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
50
+ "layers.0.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
51
+ "layers.0.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
52
+ "layers.0.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
53
+ "layers.0.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
54
+ "layers.0.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
55
+ "layers.0.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
56
+ "layers.0.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
57
+ "layers.1.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
58
+ "layers.1.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
59
+ "layers.1.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
60
+ "layers.1.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
61
+ "layers.1.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
62
+ "layers.1.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
63
+ "layers.1.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
64
+ "layers.1.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
65
+ "layers.1.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
66
+ "layers.1.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
67
+ "layers.1.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
68
+ "layers.1.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
69
+ "layers.1.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
70
+ "layers.1.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
71
+ "layers.1.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
72
+ "layers.10.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
73
+ "layers.10.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
74
+ "layers.10.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
75
+ "layers.10.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
76
+ "layers.10.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
77
+ "layers.10.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
78
+ "layers.10.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
79
+ "layers.10.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
80
+ "layers.10.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
81
+ "layers.10.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
82
+ "layers.10.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
83
+ "layers.10.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
84
+ "layers.10.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
85
+ "layers.10.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
86
+ "layers.10.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
87
+ "layers.11.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
88
+ "layers.11.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
89
+ "layers.11.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
90
+ "layers.11.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
91
+ "layers.11.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
92
+ "layers.11.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
93
+ "layers.11.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
94
+ "layers.11.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
95
+ "layers.11.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
96
+ "layers.11.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
97
+ "layers.11.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
98
+ "layers.11.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
99
+ "layers.11.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
100
+ "layers.11.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
101
+ "layers.11.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
102
+ "layers.12.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
103
+ "layers.12.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
104
+ "layers.12.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
105
+ "layers.12.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
106
+ "layers.12.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
107
+ "layers.12.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
108
+ "layers.12.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
109
+ "layers.12.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
110
+ "layers.12.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
111
+ "layers.12.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
112
+ "layers.12.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
113
+ "layers.12.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
114
+ "layers.12.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
115
+ "layers.12.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
116
+ "layers.12.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
117
+ "layers.13.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
118
+ "layers.13.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
119
+ "layers.13.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
120
+ "layers.13.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
121
+ "layers.13.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
122
+ "layers.13.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
123
+ "layers.13.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
124
+ "layers.13.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
125
+ "layers.13.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
126
+ "layers.13.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
127
+ "layers.13.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
128
+ "layers.13.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
129
+ "layers.13.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
130
+ "layers.13.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
131
+ "layers.13.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
132
+ "layers.14.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
133
+ "layers.14.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
134
+ "layers.14.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
135
+ "layers.14.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
136
+ "layers.14.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
137
+ "layers.14.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
138
+ "layers.14.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
139
+ "layers.14.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
140
+ "layers.14.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
141
+ "layers.14.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
142
+ "layers.14.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
143
+ "layers.14.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
144
+ "layers.14.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
145
+ "layers.14.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
146
+ "layers.14.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
147
+ "layers.15.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
148
+ "layers.15.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
149
+ "layers.15.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
150
+ "layers.15.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
151
+ "layers.15.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
152
+ "layers.15.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
153
+ "layers.15.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
154
+ "layers.15.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
155
+ "layers.15.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
156
+ "layers.15.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
157
+ "layers.15.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
158
+ "layers.15.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
159
+ "layers.15.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
160
+ "layers.15.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
161
+ "layers.15.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
162
+ "layers.16.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
163
+ "layers.16.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
164
+ "layers.16.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
165
+ "layers.16.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
166
+ "layers.16.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
167
+ "layers.16.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
168
+ "layers.16.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
169
+ "layers.16.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
170
+ "layers.16.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
171
+ "layers.16.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
172
+ "layers.16.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
173
+ "layers.16.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
174
+ "layers.16.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
175
+ "layers.16.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
176
+ "layers.16.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
177
+ "layers.17.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
178
+ "layers.17.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
179
+ "layers.17.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
180
+ "layers.17.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
181
+ "layers.17.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
182
+ "layers.17.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
183
+ "layers.17.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
184
+ "layers.17.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
185
+ "layers.17.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
186
+ "layers.17.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
187
+ "layers.17.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
188
+ "layers.17.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
189
+ "layers.17.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
190
+ "layers.17.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
191
+ "layers.17.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
192
+ "layers.18.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
193
+ "layers.18.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
194
+ "layers.18.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
195
+ "layers.18.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
196
+ "layers.18.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
197
+ "layers.18.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
198
+ "layers.18.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
199
+ "layers.18.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
200
+ "layers.18.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
201
+ "layers.18.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
202
+ "layers.18.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
203
+ "layers.18.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
204
+ "layers.18.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
205
+ "layers.18.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
206
+ "layers.18.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
207
+ "layers.19.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
208
+ "layers.19.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
209
+ "layers.19.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
210
+ "layers.19.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
211
+ "layers.19.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
212
+ "layers.19.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
213
+ "layers.19.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
214
+ "layers.19.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
215
+ "layers.19.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
216
+ "layers.19.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
217
+ "layers.19.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
218
+ "layers.19.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
219
+ "layers.19.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
220
+ "layers.19.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
221
+ "layers.19.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
222
+ "layers.2.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
223
+ "layers.2.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
224
+ "layers.2.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
225
+ "layers.2.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
226
+ "layers.2.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
227
+ "layers.2.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
228
+ "layers.2.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
229
+ "layers.2.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
230
+ "layers.2.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
231
+ "layers.2.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
232
+ "layers.2.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
233
+ "layers.2.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
234
+ "layers.2.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
235
+ "layers.2.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
236
+ "layers.2.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
237
+ "layers.20.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
238
+ "layers.20.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
239
+ "layers.20.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
240
+ "layers.20.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
241
+ "layers.20.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
242
+ "layers.20.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
243
+ "layers.20.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
244
+ "layers.20.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
245
+ "layers.20.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
246
+ "layers.20.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
247
+ "layers.20.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
248
+ "layers.20.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
249
+ "layers.20.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
250
+ "layers.20.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
251
+ "layers.20.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
252
+ "layers.21.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
253
+ "layers.21.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
254
+ "layers.21.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
255
+ "layers.21.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
256
+ "layers.21.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
257
+ "layers.21.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
258
+ "layers.21.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
259
+ "layers.21.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
260
+ "layers.21.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
261
+ "layers.21.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
262
+ "layers.21.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
263
+ "layers.21.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
264
+ "layers.21.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
265
+ "layers.21.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
266
+ "layers.21.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
267
+ "layers.22.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
268
+ "layers.22.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
269
+ "layers.22.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
270
+ "layers.22.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
271
+ "layers.22.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
272
+ "layers.22.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
273
+ "layers.22.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
274
+ "layers.22.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
275
+ "layers.22.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
276
+ "layers.22.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
277
+ "layers.22.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
278
+ "layers.22.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
279
+ "layers.22.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
280
+ "layers.22.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
281
+ "layers.22.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
282
+ "layers.23.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
283
+ "layers.23.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
284
+ "layers.23.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
285
+ "layers.23.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
286
+ "layers.23.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
287
+ "layers.23.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
288
+ "layers.23.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
289
+ "layers.23.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
290
+ "layers.23.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
291
+ "layers.23.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
292
+ "layers.23.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
293
+ "layers.23.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
294
+ "layers.23.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
295
+ "layers.23.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
296
+ "layers.23.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
297
+ "layers.24.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
298
+ "layers.24.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
299
+ "layers.24.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
300
+ "layers.24.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
301
+ "layers.24.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
302
+ "layers.24.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
303
+ "layers.24.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
304
+ "layers.24.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
305
+ "layers.24.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
306
+ "layers.24.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
307
+ "layers.24.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
308
+ "layers.24.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
309
+ "layers.24.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
310
+ "layers.24.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
311
+ "layers.24.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
312
+ "layers.25.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
313
+ "layers.25.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
314
+ "layers.25.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
315
+ "layers.25.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
316
+ "layers.25.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
317
+ "layers.25.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
318
+ "layers.25.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
319
+ "layers.25.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
320
+ "layers.25.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
321
+ "layers.25.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
322
+ "layers.25.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
323
+ "layers.25.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
324
+ "layers.25.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
325
+ "layers.25.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
326
+ "layers.25.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
327
+ "layers.26.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
328
+ "layers.26.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
329
+ "layers.26.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
330
+ "layers.26.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
331
+ "layers.26.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
332
+ "layers.26.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
333
+ "layers.26.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
334
+ "layers.26.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
335
+ "layers.26.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
336
+ "layers.26.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
337
+ "layers.26.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
338
+ "layers.26.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
339
+ "layers.26.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
340
+ "layers.26.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
341
+ "layers.26.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
342
+ "layers.27.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
343
+ "layers.27.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
344
+ "layers.27.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
345
+ "layers.27.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
346
+ "layers.27.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
347
+ "layers.27.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
348
+ "layers.27.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
349
+ "layers.27.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
350
+ "layers.27.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
351
+ "layers.27.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
352
+ "layers.27.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
353
+ "layers.27.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
354
+ "layers.27.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
355
+ "layers.27.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
356
+ "layers.27.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
357
+ "layers.28.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
358
+ "layers.28.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
359
+ "layers.28.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
360
+ "layers.28.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
361
+ "layers.28.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
362
+ "layers.28.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
363
+ "layers.28.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
364
+ "layers.28.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
365
+ "layers.28.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
366
+ "layers.28.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
367
+ "layers.28.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
368
+ "layers.28.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
369
+ "layers.28.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
370
+ "layers.28.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
371
+ "layers.28.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
372
+ "layers.29.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
373
+ "layers.29.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
374
+ "layers.29.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
375
+ "layers.29.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
376
+ "layers.29.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
377
+ "layers.29.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
378
+ "layers.29.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
379
+ "layers.29.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
380
+ "layers.29.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
381
+ "layers.29.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
382
+ "layers.29.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
383
+ "layers.29.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
384
+ "layers.29.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
385
+ "layers.29.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
386
+ "layers.29.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
387
+ "layers.3.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
388
+ "layers.3.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
389
+ "layers.3.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
390
+ "layers.3.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
391
+ "layers.3.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
392
+ "layers.3.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
393
+ "layers.3.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
394
+ "layers.3.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
395
+ "layers.3.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
396
+ "layers.3.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
397
+ "layers.3.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
398
+ "layers.3.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
399
+ "layers.3.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
400
+ "layers.3.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
401
+ "layers.3.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
402
+ "layers.4.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
403
+ "layers.4.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
404
+ "layers.4.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
405
+ "layers.4.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
406
+ "layers.4.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
407
+ "layers.4.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
408
+ "layers.4.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
409
+ "layers.4.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
410
+ "layers.4.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
411
+ "layers.4.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
412
+ "layers.4.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
413
+ "layers.4.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
414
+ "layers.4.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
415
+ "layers.4.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
416
+ "layers.4.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
417
+ "layers.5.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
418
+ "layers.5.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
419
+ "layers.5.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
420
+ "layers.5.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
421
+ "layers.5.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
422
+ "layers.5.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
423
+ "layers.5.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
424
+ "layers.5.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
425
+ "layers.5.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
426
+ "layers.5.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
427
+ "layers.5.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
428
+ "layers.5.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
429
+ "layers.5.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
430
+ "layers.5.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
431
+ "layers.5.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
432
+ "layers.6.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
433
+ "layers.6.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
434
+ "layers.6.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
435
+ "layers.6.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
436
+ "layers.6.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
437
+ "layers.6.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
438
+ "layers.6.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
439
+ "layers.6.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
440
+ "layers.6.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
441
+ "layers.6.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
442
+ "layers.6.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
443
+ "layers.6.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
444
+ "layers.6.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
445
+ "layers.6.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
446
+ "layers.6.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
447
+ "layers.7.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
448
+ "layers.7.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
449
+ "layers.7.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
450
+ "layers.7.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
451
+ "layers.7.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
452
+ "layers.7.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
453
+ "layers.7.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
454
+ "layers.7.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
455
+ "layers.7.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
456
+ "layers.7.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
457
+ "layers.7.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
458
+ "layers.7.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
459
+ "layers.7.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
460
+ "layers.7.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
461
+ "layers.7.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
462
+ "layers.8.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
463
+ "layers.8.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
464
+ "layers.8.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
465
+ "layers.8.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
466
+ "layers.8.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
467
+ "layers.8.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
468
+ "layers.8.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
469
+ "layers.8.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
470
+ "layers.8.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
471
+ "layers.8.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
472
+ "layers.8.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
473
+ "layers.8.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
474
+ "layers.8.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
475
+ "layers.8.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
476
+ "layers.8.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
477
+ "layers.9.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
478
+ "layers.9.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
479
+ "layers.9.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
480
+ "layers.9.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
481
+ "layers.9.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
482
+ "layers.9.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
483
+ "layers.9.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
484
+ "layers.9.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
485
+ "layers.9.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
486
+ "layers.9.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
487
+ "layers.9.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
488
+ "layers.9.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
489
+ "layers.9.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
490
+ "layers.9.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
491
+ "layers.9.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
492
+ "noise_refiner.0.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
493
+ "noise_refiner.0.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
494
+ "noise_refiner.0.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
495
+ "noise_refiner.0.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
496
+ "noise_refiner.0.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
497
+ "noise_refiner.0.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
498
+ "noise_refiner.0.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
499
+ "noise_refiner.0.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
500
+ "noise_refiner.0.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
501
+ "noise_refiner.0.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
502
+ "noise_refiner.0.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
503
+ "noise_refiner.0.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
504
+ "noise_refiner.0.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
505
+ "noise_refiner.0.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
506
+ "noise_refiner.0.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
507
+ "noise_refiner.1.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
508
+ "noise_refiner.1.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
509
+ "noise_refiner.1.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
510
+ "noise_refiner.1.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
511
+ "noise_refiner.1.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
512
+ "noise_refiner.1.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
513
+ "noise_refiner.1.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
514
+ "noise_refiner.1.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
515
+ "noise_refiner.1.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
516
+ "noise_refiner.1.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
517
+ "noise_refiner.1.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
518
+ "noise_refiner.1.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
519
+ "noise_refiner.1.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
520
+ "noise_refiner.1.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
521
+ "noise_refiner.1.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
522
+ "t_embedder.mlp.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
523
+ "t_embedder.mlp.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
524
+ "t_embedder.mlp.2.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
525
+ "t_embedder.mlp.2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
526
+ "x_pad_token": "diffusion_pytorch_model-00001-of-00002.safetensors"
527
+ }
528
+ }
CAFM-Z-Image-T2I/vae/config.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKL",
3
+ "_diffusers_version": "0.30.0.dev0",
4
+ "_name_or_path": "../checkpoints/flux-dev",
5
+ "act_fn": "silu",
6
+ "block_out_channels": [
7
+ 128,
8
+ 256,
9
+ 512,
10
+ 512
11
+ ],
12
+ "down_block_types": [
13
+ "DownEncoderBlock2D",
14
+ "DownEncoderBlock2D",
15
+ "DownEncoderBlock2D",
16
+ "DownEncoderBlock2D"
17
+ ],
18
+ "force_upcast": true,
19
+ "in_channels": 3,
20
+ "latent_channels": 16,
21
+ "latents_mean": null,
22
+ "latents_std": null,
23
+ "layers_per_block": 2,
24
+ "mid_block_add_attention": true,
25
+ "norm_num_groups": 32,
26
+ "out_channels": 3,
27
+ "sample_size": 1024,
28
+ "scaling_factor": 0.3611,
29
+ "shift_factor": 0.1159,
30
+ "up_block_types": [
31
+ "UpDecoderBlock2D",
32
+ "UpDecoderBlock2D",
33
+ "UpDecoderBlock2D",
34
+ "UpDecoderBlock2D"
35
+ ],
36
+ "use_post_quant_conv": false,
37
+ "use_quant_conv": false
38
+ }
CAFM-Z-Image-T2I/vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5b59a26851551b67ae1fe58d32e76486e1e812def4696a4bea97f16604d40a3
3
+ size 167666902
README.md ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ library_name: diffusers
4
+ pipeline_tag: text-to-image
5
+ tags:
6
+ - diffusers
7
+ - cafm
8
+ - continuous-adversarial-flow-models
9
+ - class-conditional
10
+ - imagenet
11
+ - text-to-image
12
+ - z-image
13
+ inference: true
14
+ widget:
15
+ - output:
16
+ url: CAFM-JiT-H-16-256/demo.png
17
+ language:
18
+ - en
19
+ ---
20
+
21
+ # BiliSakura/CAFM-diffusers
22
+
23
+ Self-contained [Continuous Adversarial Flow Models](https://arxiv.org/abs/2604.11521) checkpoints for Hugging Face diffusers.
24
+
25
+ Converted from `ByteDance-Seed/Adversarial-Flow-Models` using `libs/AFM-diffusers/scripts/convert_cafm_to_diffusers.py`.
26
+ Z-Image weights are bundled self-contained under `CAFM-Z-Image-T2I/`.
27
+
28
+ ## Demo
29
+
30
+ `CAFM-JiT-H-16-256` — class **207** (*golden retriever*), seed **0**, 100 NFE (Heun):
31
+
32
+ <p align="center">
33
+ <img src="CAFM-JiT-H-16-256/demo.png" alt="CAFM-JiT-H-16-256 demo (class 207, seed 0)" width="256"/>
34
+ </p>
35
+
36
+ Each variant folder includes `demo.png` generated with the same prompt settings.
37
+
38
+ ## Benchmark results (ImageNet 256×256)
39
+
40
+ | Model | Space | NFE | FID | Checkpoint |
41
+ | --- | --- | --- | --- | --- |
42
+ | CAFM JiT-H/16 | pixel | 100 | 1.80 | `CAFM-JiT-H-16-256/` |
43
+ | CAFM SiT-XL/2 | latent | 250 | 1.53 | `CAFM-SiT-XL-2-256/` |
44
+ | CAFM Z-Image | latent T2I | 25 | — | `CAFM-Z-Image-T2I/` |
45
+
46
+ ## Available checkpoints
47
+
48
+ | Variant | Backbone | Steps | Solver |
49
+ | --- | --- | ---: | --- |
50
+ | `CAFM-JiT-H-16-256/` | JIT | 100 | heun |
51
+ | `CAFM-SiT-XL-2-256/` | SIT | 250 | heun |
52
+ | `CAFM-Z-Image-T2I/` | Z-IMAGE | 25 | euler |
53
+
54
+ ## Inference
55
+
56
+ ### ImageNet class-conditional (JiT / SiT)
57
+
58
+ ```python
59
+ from pathlib import Path
60
+ import torch
61
+ from diffusers import DiffusionPipeline
62
+
63
+ model_dir = Path("./CAFM-SiT-XL-2-256")
64
+ pipe = DiffusionPipeline.from_pretrained(
65
+ str(model_dir),
66
+ local_files_only=True,
67
+ custom_pipeline=str(model_dir / "pipeline.py"),
68
+ trust_remote_code=True,
69
+ torch_dtype=torch.bfloat16,
70
+ ).to("cuda")
71
+
72
+ image = pipe(class_labels="golden retriever", num_inference_steps=250, sampler="heun").images[0]
73
+ ```
74
+
75
+ ### Text-to-image (Z-Image)
76
+
77
+ ```python
78
+ from pathlib import Path
79
+ import torch
80
+ from diffusers import DiffusionPipeline
81
+
82
+ model_dir = Path("./CAFM-Z-Image-T2I")
83
+ pipe = DiffusionPipeline.from_pretrained(
84
+ str(model_dir),
85
+ local_files_only=True,
86
+ custom_pipeline=str(model_dir / "pipeline.py"),
87
+ trust_remote_code=True,
88
+ torch_dtype=torch.bfloat16,
89
+ )
90
+ pipe.enable_model_cpu_offload() # recommended for single-GPU inference
91
+
92
+ image = pipe(
93
+ prompt="A golden retriever sitting in a sunny park, photo realistic.",
94
+ height=512,
95
+ width=512,
96
+ num_inference_steps=25,
97
+ sampler="euler",
98
+ ).images[0]
99
+ ```