Jacobellis Dan (dgj335) commited on
Commit
a3378d9
·
1 Parent(s): 5ad6859
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +49 -0
  2. README.ipynb +0 -0
  3. README.md +342 -0
  4. README_files/README_8_0.jpg +3 -0
  5. README_files/README_8_0.png +3 -0
  6. README_files/README_8_1.jpg +3 -0
  7. README_files/README_8_1.png +3 -0
  8. README_files/README_8_10.jpg +3 -0
  9. README_files/README_8_10.png +3 -0
  10. README_files/README_8_11.jpg +3 -0
  11. README_files/README_8_11.png +3 -0
  12. README_files/README_8_12.jpg +3 -0
  13. README_files/README_8_12.png +3 -0
  14. README_files/README_8_13.jpg +3 -0
  15. README_files/README_8_13.png +3 -0
  16. README_files/README_8_14.jpg +3 -0
  17. README_files/README_8_14.png +3 -0
  18. README_files/README_8_15.jpg +3 -0
  19. README_files/README_8_15.png +3 -0
  20. README_files/README_8_16.jpg +3 -0
  21. README_files/README_8_16.png +3 -0
  22. README_files/README_8_17.jpg +3 -0
  23. README_files/README_8_17.png +3 -0
  24. README_files/README_8_18.jpg +3 -0
  25. README_files/README_8_18.png +3 -0
  26. README_files/README_8_19.jpg +3 -0
  27. README_files/README_8_19.png +3 -0
  28. README_files/README_8_2.jpg +3 -0
  29. README_files/README_8_2.png +3 -0
  30. README_files/README_8_20.jpg +3 -0
  31. README_files/README_8_20.png +3 -0
  32. README_files/README_8_21.jpg +3 -0
  33. README_files/README_8_21.png +3 -0
  34. README_files/README_8_22.jpg +3 -0
  35. README_files/README_8_22.png +3 -0
  36. README_files/README_8_23.jpg +3 -0
  37. README_files/README_8_23.png +3 -0
  38. README_files/README_8_3.jpg +3 -0
  39. README_files/README_8_3.png +3 -0
  40. README_files/README_8_4.jpg +3 -0
  41. README_files/README_8_4.png +3 -0
  42. README_files/README_8_5.jpg +3 -0
  43. README_files/README_8_5.png +3 -0
  44. README_files/README_8_6.jpg +3 -0
  45. README_files/README_8_6.png +3 -0
  46. README_files/README_8_7.jpg +3 -0
  47. README_files/README_8_7.png +3 -0
  48. README_files/README_8_8.jpg +3 -0
  49. README_files/README_8_8.png +3 -0
  50. README_files/README_8_9.jpg +3 -0
.gitattributes CHANGED
@@ -33,3 +33,52 @@ 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
+ v0.0.1.pt filter=lfs diff=lfs merge=lfs -text
37
+ README_files/README_8_23.png filter=lfs diff=lfs merge=lfs -text
38
+ README_files/README_8_2.png filter=lfs diff=lfs merge=lfs -text
39
+ README_files/README_8_4.png filter=lfs diff=lfs merge=lfs -text
40
+ README_files/README_8_9.png filter=lfs diff=lfs merge=lfs -text
41
+ README_files/README_8_0.png filter=lfs diff=lfs merge=lfs -text
42
+ README_files/README_8_11.png filter=lfs diff=lfs merge=lfs -text
43
+ README_files/README_8_13.png filter=lfs diff=lfs merge=lfs -text
44
+ README_files/README_8_16.png filter=lfs diff=lfs merge=lfs -text
45
+ README_files/README_8_6.png filter=lfs diff=lfs merge=lfs -text
46
+ README_files/README_8_7.png filter=lfs diff=lfs merge=lfs -text
47
+ README_files/README_8_12.png filter=lfs diff=lfs merge=lfs -text
48
+ README_files/README_8_17.png filter=lfs diff=lfs merge=lfs -text
49
+ README_files/README_8_21.png filter=lfs diff=lfs merge=lfs -text
50
+ README_files/README_8_5.png filter=lfs diff=lfs merge=lfs -text
51
+ README_files/README_8_8.png filter=lfs diff=lfs merge=lfs -text
52
+ README_files/README_8_10.png filter=lfs diff=lfs merge=lfs -text
53
+ README_files/README_8_19.png filter=lfs diff=lfs merge=lfs -text
54
+ README_files/README_8_1.png filter=lfs diff=lfs merge=lfs -text
55
+ README_files/README_8_20.png filter=lfs diff=lfs merge=lfs -text
56
+ README_files/README_8_3.png filter=lfs diff=lfs merge=lfs -text
57
+ README_files/README_8_14.png filter=lfs diff=lfs merge=lfs -text
58
+ README_files/README_8_15.png filter=lfs diff=lfs merge=lfs -text
59
+ README_files/README_8_18.png filter=lfs diff=lfs merge=lfs -text
60
+ README_files/README_8_22.png filter=lfs diff=lfs merge=lfs -text
61
+ README_files/README_8_14.jpg filter=lfs diff=lfs merge=lfs -text
62
+ README_files/README_8_18.jpg filter=lfs diff=lfs merge=lfs -text
63
+ README_files/README_8_4.jpg filter=lfs diff=lfs merge=lfs -text
64
+ README_files/README_8_5.jpg filter=lfs diff=lfs merge=lfs -text
65
+ README_files/README_8_10.jpg filter=lfs diff=lfs merge=lfs -text
66
+ README_files/README_8_13.jpg filter=lfs diff=lfs merge=lfs -text
67
+ README_files/README_8_17.jpg filter=lfs diff=lfs merge=lfs -text
68
+ README_files/README_8_23.jpg filter=lfs diff=lfs merge=lfs -text
69
+ README_files/README_8_8.jpg filter=lfs diff=lfs merge=lfs -text
70
+ README_files/README_8_2.jpg filter=lfs diff=lfs merge=lfs -text
71
+ README_files/README_8_3.jpg filter=lfs diff=lfs merge=lfs -text
72
+ README_files/README_8_0.jpg filter=lfs diff=lfs merge=lfs -text
73
+ README_files/README_8_12.jpg filter=lfs diff=lfs merge=lfs -text
74
+ README_files/README_8_19.jpg filter=lfs diff=lfs merge=lfs -text
75
+ README_files/README_8_1.jpg filter=lfs diff=lfs merge=lfs -text
76
+ README_files/README_8_20.jpg filter=lfs diff=lfs merge=lfs -text
77
+ README_files/README_8_21.jpg filter=lfs diff=lfs merge=lfs -text
78
+ README_files/README_8_7.jpg filter=lfs diff=lfs merge=lfs -text
79
+ README_files/README_8_9.jpg filter=lfs diff=lfs merge=lfs -text
80
+ README_files/README_8_11.jpg filter=lfs diff=lfs merge=lfs -text
81
+ README_files/README_8_15.jpg filter=lfs diff=lfs merge=lfs -text
82
+ README_files/README_8_16.jpg filter=lfs diff=lfs merge=lfs -text
83
+ README_files/README_8_22.jpg filter=lfs diff=lfs merge=lfs -text
84
+ README_files/README_8_6.jpg filter=lfs diff=lfs merge=lfs -text
README.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
README.md ADDED
@@ -0,0 +1,342 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ```python
2
+ import torch
3
+ import numpy as np
4
+ from PIL import Image
5
+ from einops import repeat
6
+ from datasets import load_dataset, concatenate_datasets
7
+ from IPython.display import display, HTML
8
+ from torchvision.transforms import ToPILImage, PILToTensor, Compose
9
+ from torchvision.transforms import Resize, RandomCrop, CenterCrop, RandomHorizontalFlip, RandomVerticalFlip, RandomRotation
10
+ from vit_pytorch.mae import MAE
11
+ from vit_pytorch.simple_vit_with_register_tokens import SimpleViT
12
+ from einops.layers.torch import Rearrange
13
+ class Args: pass
14
+ ```
15
+
16
+
17
+ ```python
18
+ device = "cpu"
19
+ checkpoint = torch.load("mae_e8000.pt",map_location="cpu")
20
+ args = checkpoint['args']
21
+ args.crops_per_sample = 1
22
+
23
+ encoder = SimpleViT(
24
+ image_size = args.img_dim[1],
25
+ channels = args.img_dim[0],
26
+ patch_size = args.patch_size,
27
+ num_classes = args.num_classes,
28
+ dim = args.embed_dim,
29
+ depth = args.depth,
30
+ heads = args.heads,
31
+ mlp_dim = args.mlp_dim,
32
+ dim_head = args.embed_dim//args.heads,
33
+ ).to(device)
34
+
35
+ model = MAE(
36
+ encoder=encoder,
37
+ decoder_dim=args.embed_dim,
38
+ masking_ratio=args.masking_ratio,
39
+ decoder_depth=args.decoder_depth,
40
+ decoder_heads=args.heads,
41
+ decoder_dim_head=args.embed_dim//args.heads,
42
+ ).to(device)
43
+
44
+ model.load_state_dict(checkpoint['model_state_dict'])
45
+ ```
46
+
47
+
48
+
49
+
50
+ <All keys matched successfully>
51
+
52
+
53
+
54
+
55
+ ```python
56
+ dataset = load_dataset("danjacobellis/cell_synthetic_labels")
57
+ ```
58
+
59
+
60
+ ```python
61
+ transforms = Compose([
62
+ RandomCrop(896),
63
+ RandomRotation(22.5),
64
+ CenterCrop(672),
65
+ Resize(224, interpolation=Image.Resampling.LANCZOS),
66
+ RandomVerticalFlip(0.5),
67
+ RandomHorizontalFlip(0.5),
68
+ PILToTensor(),
69
+ ])
70
+
71
+ def collate_fn(batch):
72
+ batch_size = len(batch)*args.crops_per_sample
73
+ inputs = torch.zeros(
74
+ (batch_size, args.img_dim[0], args.img_dim[1], args.img_dim[2]),
75
+ dtype=torch.uint8
76
+ )
77
+ for i_sample, sample in enumerate(batch):
78
+ img = sample['image']
79
+ for i_crop in range(args.crops_per_sample):
80
+ ind = i_sample*args.crops_per_sample + i_crop
81
+ inputs[ind,:,:,:] = transforms(img)
82
+
83
+ return inputs
84
+ ```
85
+
86
+
87
+ ```python
88
+ data_loader_valid = torch.utils.data.DataLoader(
89
+ dataset['validation'],
90
+ batch_size=8,
91
+ shuffle=False,
92
+ num_workers=args.num_workers,
93
+ drop_last=False,
94
+ pin_memory=True,
95
+ collate_fn=collate_fn
96
+ )
97
+ ```
98
+
99
+
100
+ ```python
101
+ with torch.no_grad():
102
+ x = next(iter(data_loader_valid))
103
+ x = x.to(torch.float)
104
+ x = x / 255
105
+ x = x.to(device)
106
+
107
+ patches = model.to_patch(x)
108
+ batch, num_patches, *_ = patches.shape
109
+
110
+ tokens = model.patch_to_emb(patches)
111
+ tokens += model.encoder.pos_embedding.to(device, dtype=tokens.dtype)
112
+
113
+ num_masked = int(model.masking_ratio * num_patches)
114
+ rand_indices = torch.rand(batch, num_patches, device = device).argsort(dim = -1)
115
+ masked_indices, unmasked_indices = rand_indices[:, :num_masked], rand_indices[:, num_masked:]
116
+
117
+ batch_range = torch.arange(batch, device = device)[:, None]
118
+ tokens = tokens[batch_range, unmasked_indices]
119
+
120
+ masked_patches = patches[batch_range, masked_indices]
121
+ encoded_tokens = model.encoder.transformer(tokens)
122
+ decoder_tokens = model.enc_to_dec(encoded_tokens)
123
+ unmasked_decoder_tokens = decoder_tokens + model.decoder_pos_emb(unmasked_indices)
124
+
125
+ mask_tokens = repeat(model.mask_token, 'd -> b n d', b = batch, n = num_masked)
126
+ mask_tokens = mask_tokens + model.decoder_pos_emb(masked_indices)
127
+
128
+ decoder_tokens = torch.zeros(batch, num_patches, model.decoder_dim, device=device)
129
+ decoder_tokens[batch_range, unmasked_indices] = unmasked_decoder_tokens
130
+ decoder_tokens[batch_range, masked_indices] = mask_tokens
131
+ decoded_tokens = model.decoder(decoder_tokens)
132
+
133
+ mask_tokens = decoded_tokens[batch_range, masked_indices]
134
+ pred_pixel_values = model.to_pixels(mask_tokens)
135
+
136
+ recon_loss = torch.nn.functional.mse_loss(pred_pixel_values, masked_patches)
137
+ ```
138
+
139
+
140
+ ```python
141
+ def reconstruct_image(self, patches, model_input, masked_indices=None, pred_pixel_values=None, patch_size=8):
142
+ patches = patches.cpu()
143
+ masked_indices_in = masked_indices is not None
144
+ predicted_pixels_in = pred_pixel_values is not None
145
+ if masked_indices_in:
146
+ masked_indices = masked_indices.cpu()
147
+ if predicted_pixels_in:
148
+ pred_pixel_values = pred_pixel_values.cpu()
149
+ patch_width = patch_height = patch_size
150
+ reconstructed_image = patches.clone()
151
+ if masked_indices_in or predicted_pixels_in:
152
+ for i in range(reconstructed_image.shape[0]):
153
+ if masked_indices_in and predicted_pixels_in:
154
+ reconstructed_image[i, masked_indices[i].cpu()] = pred_pixel_values[i, :].cpu().float()
155
+ elif masked_indices_in:
156
+ reconstructed_image[i, masked_indices[i].cpu()] = 0
157
+ invert_patch = Rearrange('b (h w) (p1 p2 c) -> b c (h p1) (w p2)', w=int(model_input.shape[3] / patch_width),
158
+ h=int(model_input.shape[2] / patch_height), c=model_input.shape[1],
159
+ p1=patch_height, p2=patch_width)
160
+ reconstructed_image = invert_patch(reconstructed_image)
161
+ reconstructed_image = reconstructed_image.numpy().transpose(0, 2, 3, 1)
162
+ return reconstructed_image.transpose(0, 3, 1, 2)
163
+ ```
164
+
165
+
166
+ ```python
167
+ with torch.no_grad():
168
+ reconstructed_images1 = reconstruct_image(
169
+ model,
170
+ patches,
171
+ x,
172
+ masked_indices=masked_indices,
173
+ pred_pixel_values=pred_pixel_values,
174
+ patch_size=16
175
+ )
176
+ reconstructed_images2 = reconstruct_image(
177
+ model,
178
+ patches,
179
+ x,
180
+ masked_indices=masked_indices,
181
+ patch_size=16
182
+ )
183
+ ```
184
+
185
+
186
+ ```python
187
+ for i_img, img in enumerate(x):
188
+ rec1 = reconstructed_images1[i_img]
189
+ rec2 = reconstructed_images2[i_img]
190
+ display(ToPILImage()(img[0]))
191
+ display(ToPILImage()(rec2[0]))
192
+ display(ToPILImage()(rec1[0]))
193
+ ```
194
+
195
+
196
+
197
+ ![png](README_files/README_8_0.png)
198
+
199
+
200
+
201
+
202
+
203
+ ![png](README_files/README_8_1.png)
204
+
205
+
206
+
207
+
208
+
209
+ ![png](README_files/README_8_2.png)
210
+
211
+
212
+
213
+
214
+
215
+ ![png](README_files/README_8_3.png)
216
+
217
+
218
+
219
+
220
+
221
+ ![png](README_files/README_8_4.png)
222
+
223
+
224
+
225
+
226
+
227
+ ![png](README_files/README_8_5.png)
228
+
229
+
230
+
231
+
232
+
233
+ ![png](README_files/README_8_6.png)
234
+
235
+
236
+
237
+
238
+
239
+ ![png](README_files/README_8_7.png)
240
+
241
+
242
+
243
+
244
+
245
+ ![png](README_files/README_8_8.png)
246
+
247
+
248
+
249
+
250
+
251
+ ![png](README_files/README_8_9.png)
252
+
253
+
254
+
255
+
256
+
257
+ ![png](README_files/README_8_10.png)
258
+
259
+
260
+
261
+
262
+
263
+ ![png](README_files/README_8_11.png)
264
+
265
+
266
+
267
+
268
+
269
+ ![png](README_files/README_8_12.png)
270
+
271
+
272
+
273
+
274
+
275
+ ![png](README_files/README_8_13.png)
276
+
277
+
278
+
279
+
280
+
281
+ ![png](README_files/README_8_14.png)
282
+
283
+
284
+
285
+
286
+
287
+ ![png](README_files/README_8_15.png)
288
+
289
+
290
+
291
+
292
+
293
+ ![png](README_files/README_8_16.png)
294
+
295
+
296
+
297
+
298
+
299
+ ![png](README_files/README_8_17.png)
300
+
301
+
302
+
303
+
304
+
305
+ ![png](README_files/README_8_18.png)
306
+
307
+
308
+
309
+
310
+
311
+ ![png](README_files/README_8_19.png)
312
+
313
+
314
+
315
+
316
+
317
+ ![png](README_files/README_8_20.png)
318
+
319
+
320
+
321
+
322
+
323
+ ![png](README_files/README_8_21.png)
324
+
325
+
326
+
327
+
328
+
329
+ ![png](README_files/README_8_22.png)
330
+
331
+
332
+
333
+
334
+
335
+ ![png](README_files/README_8_23.png)
336
+
337
+
338
+
339
+
340
+ ```python
341
+
342
+ ```
README_files/README_8_0.jpg ADDED

Git LFS Details

  • SHA256: 775fc1bcc20c5e20be4706cf46438ccc0f3affa4132d2aa80037a2f88e2fe0cb
  • Pointer size: 130 Bytes
  • Size of remote file: 11.3 kB
README_files/README_8_0.png ADDED

Git LFS Details

  • SHA256: e0559f26b3231be99c53ba4a8f822205e0c44b9fb6375c865bf581338ade6b06
  • Pointer size: 130 Bytes
  • Size of remote file: 39.7 kB
README_files/README_8_1.jpg ADDED

Git LFS Details

  • SHA256: cfdd2e188ed9d4f3d1fbf5fd9b67a38a528dc4615e215ca65ca154b184e3b282
  • Pointer size: 129 Bytes
  • Size of remote file: 3.71 kB
README_files/README_8_1.png ADDED

Git LFS Details

  • SHA256: 42816a32a538d2458a602ba663d1fb40a87eb5b9c7827916f4ebed51977a18b4
  • Pointer size: 130 Bytes
  • Size of remote file: 12.4 kB
README_files/README_8_10.jpg ADDED

Git LFS Details

  • SHA256: 9ff9cd845c0bf8a615943a2ed7f9ff36c10f08fd6f3867bfdd5f413422e492e5
  • Pointer size: 129 Bytes
  • Size of remote file: 3.41 kB
README_files/README_8_10.png ADDED

Git LFS Details

  • SHA256: 394963cf10f17314ce80ea1c796b0b7e5234eaf02265fcdbd6aeb1bd8a7fa152
  • Pointer size: 130 Bytes
  • Size of remote file: 12.2 kB
README_files/README_8_11.jpg ADDED

Git LFS Details

  • SHA256: 303885bb351d863b17d0a0cfbe57590da3154c689f0ffdaf79eb7bb0dc2a5073
  • Pointer size: 129 Bytes
  • Size of remote file: 4.11 kB
README_files/README_8_11.png ADDED

Git LFS Details

  • SHA256: 9e5cd7984b4a98a9683bc00cb42bedf19b4a8479f21b0ebc7043c36eb216f4c8
  • Pointer size: 130 Bytes
  • Size of remote file: 25.6 kB
README_files/README_8_12.jpg ADDED

Git LFS Details

  • SHA256: 187daac0aa039d1502e290c630467351ef13b6455a73e80efbd2c3419cf7fca1
  • Pointer size: 129 Bytes
  • Size of remote file: 9.03 kB
README_files/README_8_12.png ADDED

Git LFS Details

  • SHA256: 7839a663052d2c90e678b0e93ba19110fc4fb02a794d546776cf97d27724ddcc
  • Pointer size: 130 Bytes
  • Size of remote file: 38.2 kB
README_files/README_8_13.jpg ADDED

Git LFS Details

  • SHA256: 1e90d81940fc6f12abd7beb6dafae22e18a94803ba5e9f17aff833c3be170b34
  • Pointer size: 129 Bytes
  • Size of remote file: 2.99 kB
README_files/README_8_13.png ADDED

Git LFS Details

  • SHA256: 139dd290008bf73ef7399798eed10889d6d7e7fe1c2fa2f4511d254b6252f9e7
  • Pointer size: 130 Bytes
  • Size of remote file: 11.7 kB
README_files/README_8_14.jpg ADDED

Git LFS Details

  • SHA256: c612084037aba0664419052434eb5f353de9d7771654a04036615746945761c7
  • Pointer size: 129 Bytes
  • Size of remote file: 3.39 kB
README_files/README_8_14.png ADDED

Git LFS Details

  • SHA256: 073a794221a0644856c550342acca063495db9417def1f1ed7b2d4862fabbb77
  • Pointer size: 130 Bytes
  • Size of remote file: 23.3 kB
README_files/README_8_15.jpg ADDED

Git LFS Details

  • SHA256: d55237cb543d7a2a3357b654dfa0cdc777074e803dd1e30e369ec8f8ac24b85c
  • Pointer size: 130 Bytes
  • Size of remote file: 13.7 kB
README_files/README_8_15.png ADDED

Git LFS Details

  • SHA256: 6902e13525f6ce62ca7078b10f98d0c0596dbe26136815b3a09cb1a9f4680a3b
  • Pointer size: 130 Bytes
  • Size of remote file: 41.8 kB
README_files/README_8_16.jpg ADDED

Git LFS Details

  • SHA256: e2804486951ff3b5ffa86f4e1f5d1836e607960ce52c6853ea438851b4a4b871
  • Pointer size: 129 Bytes
  • Size of remote file: 4.24 kB
README_files/README_8_16.png ADDED

Git LFS Details

  • SHA256: 2e0adf07bf7da07601a22b4020279add7ddc0c3912d897e058081832e629f8a3
  • Pointer size: 130 Bytes
  • Size of remote file: 12.9 kB
README_files/README_8_17.jpg ADDED

Git LFS Details

  • SHA256: 458b84a98d70ce413340c6783962c915fdd53b099935bb228420a0214e5f8d2e
  • Pointer size: 129 Bytes
  • Size of remote file: 4.51 kB
README_files/README_8_17.png ADDED

Git LFS Details

  • SHA256: ff8ee5d58f7408f0a2a2624af68704b07c58c42f8a39bec274952ffc65370f85
  • Pointer size: 130 Bytes
  • Size of remote file: 24.2 kB
README_files/README_8_18.jpg ADDED

Git LFS Details

  • SHA256: bb3603936d645b282451a54b8781059cb8fdc7b8a8f433add7ce99781fca948a
  • Pointer size: 130 Bytes
  • Size of remote file: 11.5 kB
README_files/README_8_18.png ADDED

Git LFS Details

  • SHA256: 0a7f3cdcc203d4b18839349e96245504cf751f74767c57dfb2be4c3471c41b4b
  • Pointer size: 130 Bytes
  • Size of remote file: 40.3 kB
README_files/README_8_19.jpg ADDED

Git LFS Details

  • SHA256: 0a8800df42f38c65a44fcb3da7b47d0db1ba431de4cc089a57f59eea24f8a82f
  • Pointer size: 129 Bytes
  • Size of remote file: 3.69 kB
README_files/README_8_19.png ADDED

Git LFS Details

  • SHA256: 6e791bfee5737fb467e1e935dc3223d10927b39ef43a10947a5ae7413a450a3b
  • Pointer size: 130 Bytes
  • Size of remote file: 12.8 kB
README_files/README_8_2.jpg ADDED

Git LFS Details

  • SHA256: 0e69917dac38f98c3a9c1cfa8b5217995ef0efa5d80f6d983e8a75f631d23ae4
  • Pointer size: 129 Bytes
  • Size of remote file: 4.15 kB
README_files/README_8_2.png ADDED

Git LFS Details

  • SHA256: d244f0e128b1df34683fcfa5a98ec96606865639cfb3023dcf8cceb80aacd071
  • Pointer size: 130 Bytes
  • Size of remote file: 24 kB
README_files/README_8_20.jpg ADDED

Git LFS Details

  • SHA256: e2ad293126bad90c6ad31de74b2c875e954b951e1d40aeadec46a255b9e39951
  • Pointer size: 129 Bytes
  • Size of remote file: 4.59 kB
README_files/README_8_20.png ADDED

Git LFS Details

  • SHA256: 70335aa73fc8b4ef911d11f82a9ace93eb5963ad338927cd6c94155308be950a
  • Pointer size: 130 Bytes
  • Size of remote file: 26.5 kB
README_files/README_8_21.jpg ADDED

Git LFS Details

  • SHA256: d2211d0fd60b77e6a2b077b1ffb0e90a0dd8fb4ec20466e9c3dcb745d30b5532
  • Pointer size: 129 Bytes
  • Size of remote file: 9.53 kB
README_files/README_8_21.png ADDED

Git LFS Details

  • SHA256: 76b11e716e8a89e4bb1b668e70fd91b917b994bd146b32df512ef8fb9fbb94dd
  • Pointer size: 130 Bytes
  • Size of remote file: 38.5 kB
README_files/README_8_22.jpg ADDED

Git LFS Details

  • SHA256: bd2a2e0ac1a734db0534a101fbdfe9aa6f8ca1bcfbdc93a507432e4372b7faca
  • Pointer size: 129 Bytes
  • Size of remote file: 3.19 kB
README_files/README_8_22.png ADDED

Git LFS Details

  • SHA256: fd3c988e4eb11b6cf6114e21195d63a52cea4c6937b6298d84a21442da316d25
  • Pointer size: 130 Bytes
  • Size of remote file: 12.2 kB
README_files/README_8_23.jpg ADDED

Git LFS Details

  • SHA256: 4e9c7ea3a61da4ac673e26c7d321bbf60afbd57dce6637a010bc925e2f4b2763
  • Pointer size: 129 Bytes
  • Size of remote file: 3.99 kB
README_files/README_8_23.png ADDED

Git LFS Details

  • SHA256: fac7498fe181f80a47569db5fdb18191b75b34a5ec22b88d76238cf19989023c
  • Pointer size: 130 Bytes
  • Size of remote file: 25.2 kB
README_files/README_8_3.jpg ADDED

Git LFS Details

  • SHA256: 074e8205338e9ca430d2fec345bd284fa0be87297f681799e74099eb10af47dd
  • Pointer size: 130 Bytes
  • Size of remote file: 13.4 kB
README_files/README_8_3.png ADDED

Git LFS Details

  • SHA256: 7a6180f7b5080346adf4a71fb7d220705459835a9614d671e45d45e986f4ac50
  • Pointer size: 130 Bytes
  • Size of remote file: 41.9 kB
README_files/README_8_4.jpg ADDED

Git LFS Details

  • SHA256: 646e9b5146a9e30da1a24ccbdffcd2c073620217e9bb484f26b34e4f87e4979a
  • Pointer size: 129 Bytes
  • Size of remote file: 4.31 kB
README_files/README_8_4.png ADDED

Git LFS Details

  • SHA256: 38aca489ecedd916b70fa55a862e9cd6f56f8c39997b0012c326bb05d29e3d0c
  • Pointer size: 130 Bytes
  • Size of remote file: 13.1 kB
README_files/README_8_5.jpg ADDED

Git LFS Details

  • SHA256: 894b2d94ce7e24cae991a41d3150a8a0797f0bce9bc147fedd108588ad15edbe
  • Pointer size: 129 Bytes
  • Size of remote file: 5.63 kB
README_files/README_8_5.png ADDED

Git LFS Details

  • SHA256: 2c993c3a4ebb165730b30d904ddbb80f52a43b2f4be0c391bd60b3d2785512f8
  • Pointer size: 130 Bytes
  • Size of remote file: 28.6 kB
README_files/README_8_6.jpg ADDED

Git LFS Details

  • SHA256: a67a5ffec24c86fd7fa059744487b17a6de6674f6eed1020b41ab76f5a6a3847
  • Pointer size: 130 Bytes
  • Size of remote file: 13.2 kB
README_files/README_8_6.png ADDED

Git LFS Details

  • SHA256: 38b9de9cda21292e0b364644d5899aac86da534d2b35ca2af12b0c07f3406718
  • Pointer size: 130 Bytes
  • Size of remote file: 41.3 kB
README_files/README_8_7.jpg ADDED

Git LFS Details

  • SHA256: 2fe96a5fe3fa832e234dfcd43b1e99a0788bb60304ff89a1c73c77fbdab7a297
  • Pointer size: 129 Bytes
  • Size of remote file: 4.28 kB
README_files/README_8_7.png ADDED

Git LFS Details

  • SHA256: 19ea76acf3027de7b9a1cb78c01109d287a5ebce50ee69535eddb03475002e13
  • Pointer size: 130 Bytes
  • Size of remote file: 13.1 kB
README_files/README_8_8.jpg ADDED

Git LFS Details

  • SHA256: 366036f0be89dd46a6cef593d4d0bf47995899ea5f5c7e026ad75a82ccb72e11
  • Pointer size: 129 Bytes
  • Size of remote file: 4.5 kB
README_files/README_8_8.png ADDED

Git LFS Details

  • SHA256: e4eea200d10cf2bb80b7186cba2b39ed9e01e5fbf71e99df3532bea2eda63715
  • Pointer size: 130 Bytes
  • Size of remote file: 23.7 kB
README_files/README_8_9.jpg ADDED

Git LFS Details

  • SHA256: 4d6ce0e9e797b82ebac49c55557d533a28acc8dbee73b267b52e649d89cb8a2b
  • Pointer size: 130 Bytes
  • Size of remote file: 10.1 kB