From c3aff8b5b5c516eddc3929828be3e622bf5f6b1f Mon Sep 17 00:00:00 2001 From: "Shakes (WhiteOut)" Date: Sun, 17 Sep 2023 21:47:51 +1000 Subject: [PATCH 01/85] Added recognition branch and README for info. --- recognition/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 recognition/README.md diff --git a/recognition/README.md b/recognition/README.md new file mode 100644 index 000000000..5c646231c --- /dev/null +++ b/recognition/README.md @@ -0,0 +1,10 @@ +# Recognition Tasks +Various recognition tasks solved in deep learning frameworks. + +Tasks may include: +* Image Segmentation +* Object detection +* Graph node classification +* Image super resolution +* Disease classification +* Generative modelling with StyleGAN and Stable Diffusion From 8a02bfc1a42dbe10a1297b88367bfde2d345269b Mon Sep 17 00:00:00 2001 From: Shan Date: Tue, 3 Oct 2023 19:12:25 +1000 Subject: [PATCH 02/85] set up repo --- recognition/SuperResolutionShanJiang/h.gitkeep.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/h.gitkeep.txt diff --git a/recognition/SuperResolutionShanJiang/h.gitkeep.txt b/recognition/SuperResolutionShanJiang/h.gitkeep.txt new file mode 100644 index 000000000..e69de29bb From 5f667263b5be46998e4c4aecfafc535d47c473f0 Mon Sep 17 00:00:00 2001 From: Shan Date: Tue, 3 Oct 2023 19:18:15 +1000 Subject: [PATCH 03/85] add readme --- git | 0 recognition/SuperResolutionShanJiang/README.md.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 git create mode 100644 recognition/SuperResolutionShanJiang/README.md.txt diff --git a/git b/git new file mode 100644 index 000000000..e69de29bb diff --git a/recognition/SuperResolutionShanJiang/README.md.txt b/recognition/SuperResolutionShanJiang/README.md.txt new file mode 100644 index 000000000..e69de29bb From ec949cd262b7db503991dc8a8bba66d21e860a9e Mon Sep 17 00:00:00 2001 From: Shan Date: Tue, 3 Oct 2023 19:22:47 +1000 Subject: [PATCH 04/85] Fix readme format --- recognition/SuperResolutionShanJiang/{README.md.txt => readme.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recognition/SuperResolutionShanJiang/{README.md.txt => readme.md} (100%) diff --git a/recognition/SuperResolutionShanJiang/README.md.txt b/recognition/SuperResolutionShanJiang/readme.md similarity index 100% rename from recognition/SuperResolutionShanJiang/README.md.txt rename to recognition/SuperResolutionShanJiang/readme.md From 4d425c1bd872e405d0e30a510a1e14a966b81173 Mon Sep 17 00:00:00 2001 From: Shan Date: Tue, 3 Oct 2023 19:24:11 +1000 Subject: [PATCH 05/85] Fix readme format --- recognition/SuperResolutionShanJiang/h.gitkeep.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/h.gitkeep.txt diff --git a/recognition/SuperResolutionShanJiang/h.gitkeep.txt b/recognition/SuperResolutionShanJiang/h.gitkeep.txt deleted file mode 100644 index e69de29bb..000000000 From 47fb2caa5d1c7b1b8ecef5b2406b9c76322cba7d Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 18:40:12 +1000 Subject: [PATCH 06/85] Downsized all data --- .../SuperResolutionShanJiang/dataset.py | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/dataset.py diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py new file mode 100644 index 000000000..aaf9a721d --- /dev/null +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -0,0 +1,52 @@ +import tensorflow as tf +import os + + +def downsize_data(input_directory,output_directory): + """ + Downsample image data in input directory and save to output directory + """ + # Define the size for downsampling (factor of 4) + downsample_factor = 4 + + # Get a list of all JPEG files in the input directory + jpeg_files = [f for f in os.listdir(input_directory)] + + # Loop through the JPEG files, resize, and save + for file_name in jpeg_files: + input_path = os.path.join(input_directory, file_name) + output_path = os.path.join(output_directory, file_name) + + # Read the image from the file + image = tf.io.read_file(input_path) + image = tf.image.decode_jpeg(image, channels=3) # Decode the image + + # Resize the image by a factor of 4 + new_height = tf.shape(image)[0] // downsample_factor + new_width = tf.shape(image)[1] // downsample_factor + resized_image = tf.image.resize(image, (new_height, new_width), method=tf.image.ResizeMethod.BILINEAR, antialias=True) + + # Cast the tensor to uint8 before encoding as JPEG + resized_image = tf.cast(resized_image, tf.uint8) + + # Encode and save the downsized image as a JPEG + tf.io.write_file(output_path, tf.image.encode_jpeg(resized_image).numpy()) + + print("Downsampling complete.") + +# Down size data +# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/AD' +# downsize_data(input_directory,output_directory) + +input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/NC' +output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/NC' +downsize_data(input_directory,output_directory) + +input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/AD' +downsize_data(input_directory,output_directory) + +input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/NC' +output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/NC' +downsize_data(input_directory,output_directory) From 217593ab188e579c3a56ace01f0b8a3a3fc02f11 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 20:58:52 +1000 Subject: [PATCH 07/85] new approach: split train and validation using train AD data --- .../SuperResolutionShanJiang/dataset.py | 120 ++++++++++++------ 1 file changed, 84 insertions(+), 36 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index aaf9a721d..96e63cbfe 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -1,52 +1,100 @@ import tensorflow as tf import os +import tensorflow as tf + +import os +import math +import numpy as np + +from tensorflow import keras +from keras import layers +from keras.utils import load_img +from keras.utils import array_to_img +from keras.utils import img_to_array +from keras.preprocessing import image_dataset_from_directory + +from IPython.display import display + + -def downsize_data(input_directory,output_directory): - """ - Downsample image data in input directory and save to output directory - """ - # Define the size for downsampling (factor of 4) - downsample_factor = 4 +# def downsize_data(input_directory,output_directory): +# """ +# Downsample image data in input directory and save to output directory +# """ +# # Define the size for downsampling (factor of 4) +# downsample_factor = 4 - # Get a list of all JPEG files in the input directory - jpeg_files = [f for f in os.listdir(input_directory)] +# # Get a list of all JPEG files in the input directory +# jpeg_files = [f for f in os.listdir(input_directory)] - # Loop through the JPEG files, resize, and save - for file_name in jpeg_files: - input_path = os.path.join(input_directory, file_name) - output_path = os.path.join(output_directory, file_name) +# # Loop through the JPEG files, resize, and save +# for file_name in jpeg_files: +# input_path = os.path.join(input_directory, file_name) +# output_path = os.path.join(output_directory, file_name) - # Read the image from the file - image = tf.io.read_file(input_path) - image = tf.image.decode_jpeg(image, channels=3) # Decode the image +# # Read the image from the file +# image = tf.io.read_file(input_path) +# image = tf.image.decode_jpeg(image, channels=3) # Decode the image - # Resize the image by a factor of 4 - new_height = tf.shape(image)[0] // downsample_factor - new_width = tf.shape(image)[1] // downsample_factor - resized_image = tf.image.resize(image, (new_height, new_width), method=tf.image.ResizeMethod.BILINEAR, antialias=True) +# # Resize the image by a factor of 4 +# new_height = tf.shape(image)[0] // downsample_factor +# new_width = tf.shape(image)[1] // downsample_factor +# resized_image = tf.image.resize(image, (new_height, new_width), method=tf.image.ResizeMethod.BILINEAR, antialias=True) - # Cast the tensor to uint8 before encoding as JPEG - resized_image = tf.cast(resized_image, tf.uint8) +# # Cast the tensor to uint8 before encoding as JPEG +# resized_image = tf.cast(resized_image, tf.uint8) - # Encode and save the downsized image as a JPEG - tf.io.write_file(output_path, tf.image.encode_jpeg(resized_image).numpy()) +# # Encode and save the downsized image as a JPEG +# tf.io.write_file(output_path, tf.image.encode_jpeg(resized_image).numpy()) - print("Downsampling complete.") +# print("Downsampling complete.") -# Down size data -# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/AD' +# # Down size data +# # input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +# # output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/AD' +# # downsize_data(input_directory,output_directory) + +# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/NC' +# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/NC' +# downsize_data(input_directory,output_directory) + +# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/AD' # downsize_data(input_directory,output_directory) -input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/NC' -output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/NC' -downsize_data(input_directory,output_directory) +# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/NC' +# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/NC' +# downsize_data(input_directory,output_directory) + +#Set parameters for cropping +crop_width_size_ = 256 +crop_height_size_ = 249 +upscale_factor = 4 +input_width_size = crop_width_size_ // upscale_factor +input_height_size = crop_height_size_ // upscale_factor +batch_size = 8 +data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' + +#Create traning dataset +train_ds = image_dataset_from_directory( + data_dir, + batch_size=batch_size, + image_size=(input_height_size, input_width_size), + validation_split=0.2, + subset="training", + seed=1337, + label_mode=None, +) -input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' -output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/AD' -downsize_data(input_directory,output_directory) +#Create validation dataset +valid_ds = image_dataset_from_directory( + data_dir, + batch_size=batch_size, + image_size=(input_height_size, input_width_size), + validation_split=0.2, + subset="validation", + seed=1337, + label_mode=None, +) -input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/NC' -output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/NC' -downsize_data(input_directory,output_directory) From 293f1db239c4eda5d165c3f481cdf75ba97487f4 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 21:11:23 +1000 Subject: [PATCH 08/85] normalise training ans validation data --- .../SuperResolutionShanJiang/dataset.py | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 96e63cbfe..fb845f536 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -68,11 +68,11 @@ # downsize_data(input_directory,output_directory) #Set parameters for cropping -crop_width_size_ = 256 -crop_height_size_ = 249 +crop_width_size = 256 +crop_height_size = 249 upscale_factor = 4 -input_width_size = crop_width_size_ // upscale_factor -input_height_size = crop_height_size_ // upscale_factor +input_width_size = crop_width_size // upscale_factor +input_height_size = crop_height_size // upscale_factor batch_size = 8 data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' @@ -80,7 +80,7 @@ train_ds = image_dataset_from_directory( data_dir, batch_size=batch_size, - image_size=(input_height_size, input_width_size), + image_size=(crop_height_size, crop_width_size), validation_split=0.2, subset="training", seed=1337, @@ -91,10 +91,23 @@ valid_ds = image_dataset_from_directory( data_dir, batch_size=batch_size, - image_size=(input_height_size, input_width_size), + image_size=(crop_height_size, crop_width_size), validation_split=0.2, subset="validation", seed=1337, label_mode=None, ) +# resacla training and validation images to take values in the range [0, 1]. +def scaling(input_image): + input_image = input_image / 255.0 + return input_image + +train_ds = train_ds.map(scaling) +valid_ds = valid_ds.map(scaling) + +# for batch in train_ds.take(1): +# for img in batch: +# display(array_to_img(img)) + + From 566359baa9080517d0a49a6b4607d6afcf2bb62a Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 21:20:21 +1000 Subject: [PATCH 09/85] define test data --- recognition/SuperResolutionShanJiang/dataset.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index fb845f536..cc4e9cd5b 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -110,4 +110,15 @@ def scaling(input_image): # for img in batch: # display(array_to_img(img)) +# define test data from test AD +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +test_img_paths = sorted( + [ + os.path.join(test_path, fname) + for fname in os.listdir(test_path) + if fname.endswith(".jpeg") + ] +) + + From b31917809db09fbd77d7433fa70a2674be830c2a Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 22:22:20 +1000 Subject: [PATCH 10/85] Create low-res and high-res for train and validation data --- .../SuperResolutionShanJiang/dataset.py | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index cc4e9cd5b..c012d44c5 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -71,8 +71,8 @@ crop_width_size = 256 crop_height_size = 249 upscale_factor = 4 -input_width_size = crop_width_size // upscale_factor input_height_size = crop_height_size // upscale_factor +input_width_size = crop_width_size // upscale_factor batch_size = 8 data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' @@ -121,4 +121,56 @@ def scaling(input_image): ) +def process_input(input,input_height_size,input_width_size): + """ turn given image to grey scale and crop it + + Args: + input: image to be processed + input_width_size: width to be cropped into + input_height_size: height to be cropped into + + Returns: + tensor: processed image + """ + input = tf.image.rgb_to_yuv(input) + last_dimension_axis = len(input.shape) - 1 + y, u, v = tf.split(input, 3, axis=last_dimension_axis) + return tf.image.resize(y, [input_height_size, input_width_size], method="area") + + +def process_target(input): + """turn given image to grey scale + + Args: + input: image to be processed + + Returns: + tensor: processed image + """ + input = tf.image.rgb_to_yuv(input) + last_dimension_axis = len(input.shape) - 1 + y, u, v = tf.split(input, 3, axis=last_dimension_axis) + return y + + +# Process train dataset:create low resolution images and corresponding high resolution images +train_ds = train_ds.map( + lambda x: (process_input(x, input_height_size, input_width_size), process_target(x)) +) +train_ds = train_ds.prefetch(buffer_size=32) + +# Process validation dataset:create low resolution images and corresponding high resolution images +valid_ds = valid_ds.map( + lambda x: (process_input(x, input_height_size, input_width_size), process_target(x)) +) +valid_ds = valid_ds.prefetch(buffer_size=32) + +# for batch in train_ds.take(1): +# for img in batch[0]: +# display(array_to_img(img)) +# for img in batch[1]: +# display(array_to_img(img)) + + + From 9a65e5e495250d8f83a15fb15d3605f28ba39fad Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 22:44:13 +1000 Subject: [PATCH 11/85] build model --- .../SuperResolutionShanJiang/modules.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/modules.py diff --git a/recognition/SuperResolutionShanJiang/modules.py b/recognition/SuperResolutionShanJiang/modules.py new file mode 100644 index 000000000..f6d62bf8c --- /dev/null +++ b/recognition/SuperResolutionShanJiang/modules.py @@ -0,0 +1,27 @@ +import tensorflow as tf +from tensorflow import keras +from keras import layers + +def get_model(upscale_factor=4, channels=1): + """build a super-resolution model + + Args: + upscale_factor: ratio to upscale the image. Defaults to 3. + channels: Number of channels. Defaults to 1. + + Returns: + keras.Model: super-resolution model + """ + conv_args = { + "activation": "relu", + "kernel_initializer": "Orthogonal", + "padding": "same", + } + inputs = keras.Input(shape=(None, None, channels)) + x = layers.Conv2D(64, 5, **conv_args)(inputs) + x = layers.Conv2D(64, 3, **conv_args)(x) + x = layers.Conv2D(32, 3, **conv_args)(x) + x = layers.Conv2D(channels * (upscale_factor ** 2), 3, **conv_args)(x) + outputs = tf.nn.depth_to_space(x, upscale_factor) + + return keras.Model(inputs, outputs) From 02f24d0f9d68ca663d7cfb3388a511011bb955f6 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 23:18:20 +1000 Subject: [PATCH 12/85] Add utility funcions --- recognition/SuperResolutionShanJiang/utils.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/utils.py diff --git a/recognition/SuperResolutionShanJiang/utils.py b/recognition/SuperResolutionShanJiang/utils.py new file mode 100644 index 000000000..f328c4089 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/utils.py @@ -0,0 +1,53 @@ +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes +from mpl_toolkits.axes_grid1.inset_locator import mark_inset +import PIL +import numpy as np +from keras.utils import img_to_array +def get_lowres_image(img, upscale_factor): + """Return low-resolution image converted from given image to be fed into model + + Args: + img: image to be fed into model + upscale_factor (_type_): the ratio the image is downsized by + + Returns: + Image: low-resolution image + """ + return img.resize( + (img.size[0] // upscale_factor, img.size[1] // upscale_factor), + PIL.Image.BICUBIC, + ) + + +def upscale_image(model, img): + """Use given model to predict high resolution version of the given image and it as RGB. + + Args: + model: super-resolution network + img (_type_): low resolution image to be converted to high resolution + + Returns: + Image: prediction result- high resolution RGB image + """ + ycbcr = img.convert("YCbCr") + y, cb, cr = ycbcr.split() + y = img_to_array(y) + y = y.astype("float32") / 255.0 + + input = np.expand_dims(y, axis=0) + out = model.predict(input) + + out_img_y = out[0] + out_img_y *= 255.0 + + # Restore the image in RGB color space. + out_img_y = out_img_y.clip(0, 255) + out_img_y = out_img_y.reshape((np.shape(out_img_y)[0], np.shape(out_img_y)[1])) + out_img_y = PIL.Image.fromarray(np.uint8(out_img_y), mode="L") + out_img_cb = cb.resize(out_img_y.size, PIL.Image.BICUBIC) + out_img_cr = cr.resize(out_img_y.size, PIL.Image.BICUBIC) + out_img = PIL.Image.merge("YCbCr", (out_img_y, out_img_cb, out_img_cr)).convert( + "RGB" + ) + return out_img \ No newline at end of file From 24c31bb47ba7ad3b1cda699493d3153ab895f4e0 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 23:50:10 +1000 Subject: [PATCH 13/85] define ESPCNCallback --- recognition/SuperResolutionShanJiang/train.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/train.py diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py new file mode 100644 index 000000000..0ade13347 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/train.py @@ -0,0 +1,36 @@ +from utils import * +from tensorflow import keras +from keras import layers +from keras.utils import load_img +import os +import math + +upscale_factor = 4 +# define test data from test AD +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +test_img_paths = sorted( + [ + os.path.join(test_path, fname) + for fname in os.listdir(test_path) + if fname.endswith(".jpeg") + ] +) +class ESPCNCallback(keras.callbacks.Callback): + def __init__(self): + super().__init__() + self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) + + # Store PSNR value in each epoch. + def on_epoch_begin(self, epoch, logs=None): + self.psnr = [] + + def on_epoch_end(self, epoch, logs=None): + print("Mean PSNR for epoch: %.2f" % (np.mean(self.psnr))) + if epoch % 20 == 0: + prediction = upscale_image(self.model, self.test_img) + # plot_results(prediction, "epoch-" + str(epoch), "prediction") + + def on_test_batch_end(self, batch, logs=None): + self.psnr.append(10 * math.log10(1 / logs["loss"])) + + From c779e7ce842758993d487e17a8f906e8b88271e6 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sat, 14 Oct 2023 23:58:20 +1000 Subject: [PATCH 14/85] define more callbacks --- .../SuperResolutionShanJiang/dataset.py | 14 ++----------- recognition/SuperResolutionShanJiang/train.py | 21 +++++++++++++++++++ recognition/SuperResolutionShanJiang/utils.py | 4 +++- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index c012d44c5..2b7e2d46c 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -2,10 +2,8 @@ import os import tensorflow as tf - -import os import math -import numpy as np + from tensorflow import keras from keras import layers @@ -110,15 +108,7 @@ def scaling(input_image): # for img in batch: # display(array_to_img(img)) -# define test data from test AD -test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -test_img_paths = sorted( - [ - os.path.join(test_path, fname) - for fname in os.listdir(test_path) - if fname.endswith(".jpeg") - ] -) + def process_input(input,input_height_size,input_width_size): diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 0ade13347..7d06c6e52 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -1,4 +1,6 @@ from utils import * +from modules import * + from tensorflow import keras from keras import layers from keras.utils import load_img @@ -33,4 +35,23 @@ def on_epoch_end(self, epoch, logs=None): def on_test_batch_end(self, batch, logs=None): self.psnr.append(10 * math.log10(1 / logs["loss"])) +early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) + +checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint" + +model_checkpoint_callback = keras.callbacks.ModelCheckpoint( + filepath=checkpoint_filepath, + save_weights_only=True, + monitor="loss", + mode="min", + save_best_only=True, +) + +model = get_model(upscale_factor=upscale_factor, channels=1) +model.summary() + +callbacks = [ESPCNCallback(), early_stopping_callback, model_checkpoint_callback] +loss_fn = keras.losses.MeanSquaredError() +optimizer = keras.optimizers.Adam(learning_rate=0.001) + diff --git a/recognition/SuperResolutionShanJiang/utils.py b/recognition/SuperResolutionShanJiang/utils.py index f328c4089..a662024b0 100644 --- a/recognition/SuperResolutionShanJiang/utils.py +++ b/recognition/SuperResolutionShanJiang/utils.py @@ -50,4 +50,6 @@ def upscale_image(model, img): out_img = PIL.Image.merge("YCbCr", (out_img_y, out_img_cb, out_img_cr)).convert( "RGB" ) - return out_img \ No newline at end of file + return out_img + + From dfac2c2bb8e120421803e1076ab2cca7f876ffca Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sun, 15 Oct 2023 00:10:12 +1000 Subject: [PATCH 15/85] added model training code and comments --- recognition/SuperResolutionShanJiang/train.py | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 7d06c6e52..0b6d67c34 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -1,5 +1,6 @@ from utils import * from modules import * +from dataset import * from tensorflow import keras from keras import layers @@ -18,27 +19,35 @@ ] ) class ESPCNCallback(keras.callbacks.Callback): + """ + Custom Keras callback for monitoring and displaying PSNR during training. + """ def __init__(self): super().__init__() self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) - # Store PSNR value in each epoch. + # Initialise a array to store epoch PSNR value when each epoch begins def on_epoch_begin(self, epoch, logs=None): self.psnr = [] - + + # Print Mean PSNR for when each epoch ends def on_epoch_end(self, epoch, logs=None): print("Mean PSNR for epoch: %.2f" % (np.mean(self.psnr))) - if epoch % 20 == 0: - prediction = upscale_image(self.model, self.test_img) + # if epoch % 20 == 0: + # prediction = upscale_image(self.model, self.test_img) # plot_results(prediction, "epoch-" + str(epoch), "prediction") - + + # Store PSNR value when each test epoch ends def on_test_batch_end(self, batch, logs=None): self.psnr.append(10 * math.log10(1 / logs["loss"])) - + +# Stop training when loss does not improve for 10 consecutive epochs early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) +# Define path to save model parameters checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint" +# Save model parameters at checkpoint during training model_checkpoint_callback = keras.callbacks.ModelCheckpoint( filepath=checkpoint_filepath, save_weights_only=True, @@ -47,11 +56,26 @@ def on_test_batch_end(self, batch, logs=None): save_best_only=True, ) +# Initialise a model model = get_model(upscale_factor=upscale_factor, channels=1) model.summary() - callbacks = [ESPCNCallback(), early_stopping_callback, model_checkpoint_callback] loss_fn = keras.losses.MeanSquaredError() optimizer = keras.optimizers.Adam(learning_rate=0.001) + +#Train the model +epochs = 100 + +model.compile( + optimizer=optimizer, loss=loss_fn, +) + +model.fit( + train_ds, epochs=epochs, callbacks=callbacks, validation_data=valid_ds, verbose=2 +) + +# The model weights (that are considered the best) are loaded into the model. +model.load_weights(checkpoint_filepath) + From f67f5e4351f26aa61216555d56afc4ab12d930d3 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sun, 15 Oct 2023 00:29:02 +1000 Subject: [PATCH 16/85] added code to plot loss and metric during training --- recognition/SuperResolutionShanJiang/train.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 0b6d67c34..6eb568fc2 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -7,6 +7,7 @@ from keras.utils import load_img import os import math +import matplotlib.pyplot as plt upscale_factor = 4 # define test data from test AD @@ -18,6 +19,10 @@ if fname.endswith(".jpeg") ] ) +train_loss_history = [] +valid_loss_history = [] +train_psnr_history = [] +valid_psnr_history = [] class ESPCNCallback(keras.callbacks.Callback): """ Custom Keras callback for monitoring and displaying PSNR during training. @@ -36,6 +41,33 @@ def on_epoch_end(self, epoch, logs=None): # if epoch % 20 == 0: # prediction = upscale_image(self.model, self.test_img) # plot_results(prediction, "epoch-" + str(epoch), "prediction") + train_loss_history.append(logs['loss']) + valid_loss_history.append(logs['val_loss']) + train_psnr_history.append(np.mean(self.psnr)) + valid_psnr_history.append(np.mean(self.psnr)) + + if epoch % 20 == 0: + # Plot loss history after each epoch + plt.figure(figsize=(10, 6)) + plt.plot(train_loss_history, label='Training Loss', color='blue') + plt.plot(valid_loss_history, label='Validation Loss', color='red') + plt.title('Training and Validation Loss') + plt.xlabel('Epoch') + plt.ylabel('Loss') + plt.legend() + plt.grid(True) + plt.show() + + # Plot PSNR history after each epoch + plt.figure(figsize=(10, 6)) + plt.plot(train_psnr_history, label='Training PSNR', color='blue') + plt.plot(valid_psnr_history, label='Validation PSNR', color='red') + plt.title('Training and Validation PSNR') + plt.xlabel('Epoch') + plt.ylabel('PSNR (dB)') + plt.legend() + plt.grid(True) + plt.show() # Store PSNR value when each test epoch ends def on_test_batch_end(self, batch, logs=None): From 7ae051dbe3f2bbe15b7cd58eb3915c299b292f7e Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sun, 15 Oct 2023 01:19:27 +1000 Subject: [PATCH 17/85] change crop size --- recognition/SuperResolutionShanJiang/dataset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 2b7e2d46c..314233088 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -67,7 +67,7 @@ #Set parameters for cropping crop_width_size = 256 -crop_height_size = 249 +crop_height_size = 248 upscale_factor = 4 input_height_size = crop_height_size // upscale_factor input_width_size = crop_width_size // upscale_factor From 9827d9d0dd24674c9ca287bff746ffa0f63e5584 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sun, 15 Oct 2023 10:11:06 +1000 Subject: [PATCH 18/85] changed epoch number --- recognition/SuperResolutionShanJiang/train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 6eb568fc2..d6c0cac1e 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -30,6 +30,7 @@ class ESPCNCallback(keras.callbacks.Callback): def __init__(self): super().__init__() self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) + print(self.test_img.size) # Initialise a array to store epoch PSNR value when each epoch begins def on_epoch_begin(self, epoch, logs=None): @@ -96,7 +97,7 @@ def on_test_batch_end(self, batch, logs=None): optimizer = keras.optimizers.Adam(learning_rate=0.001) #Train the model -epochs = 100 +epochs = 2600 model.compile( optimizer=optimizer, loss=loss_fn, From 096733b95d062d00cb18d962831f9b91f89b86da Mon Sep 17 00:00:00 2001 From: Shan Jiang Date: Sun, 15 Oct 2023 16:23:12 +1000 Subject: [PATCH 19/85] added code for testing --- .../SuperResolutionShanJiang/dataset.py | 4 +- recognition/SuperResolutionShanJiang/train.py | 49 ++++++++++++++----- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 314233088..dc28f712b 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -72,7 +72,9 @@ input_height_size = crop_height_size // upscale_factor input_width_size = crop_width_size // upscale_factor batch_size = 8 -data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +# data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +data_dir = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/train/AD' + #Create traning dataset train_ds = image_dataset_from_directory( diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index d6c0cac1e..045ac3d4d 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -10,15 +10,7 @@ import matplotlib.pyplot as plt upscale_factor = 4 -# define test data from test AD -test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -test_img_paths = sorted( - [ - os.path.join(test_path, fname) - for fname in os.listdir(test_path) - if fname.endswith(".jpeg") - ] -) + train_loss_history = [] valid_loss_history = [] train_psnr_history = [] @@ -78,7 +70,8 @@ def on_test_batch_end(self, batch, logs=None): early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) # Define path to save model parameters -checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint" +# checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint" +checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" # Save model parameters at checkpoint during training model_checkpoint_callback = keras.callbacks.ModelCheckpoint( @@ -96,7 +89,7 @@ def on_test_batch_end(self, batch, logs=None): loss_fn = keras.losses.MeanSquaredError() optimizer = keras.optimizers.Adam(learning_rate=0.001) -#Train the model +#Train and validate the model epochs = 2600 model.compile( @@ -110,5 +103,39 @@ def on_test_batch_end(self, batch, logs=None): # The model weights (that are considered the best) are loaded into the model. model.load_weights(checkpoint_filepath) +#Test the model +# define test data from test AD +# test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +test_path = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/test/AD' +test_img_paths = sorted( + [ + os.path.join(test_path, fname) + for fname in os.listdir(test_path) + if fname.endswith(".jpeg") + ] +) +total_bicubic_psnr = 0.0 +total_test_psnr = 0.0 + +for index, test_img_path in enumerate(test_img_paths[0:len(test_img_paths)]): + img = load_img(test_img_path) + lowres_input = get_lowres_image(img, upscale_factor) + w = lowres_input.size[0] * upscale_factor + h = lowres_input.size[1] * upscale_factor + highres_img = img.resize((w, h)) + prediction = upscale_image(model, lowres_input) + lowres_img = lowres_input.resize((w, h)) + lowres_img_arr = img_to_array(lowres_img) + highres_img_arr = img_to_array(highres_img) + predict_img_arr = img_to_array(prediction) + bicubic_psnr = tf.image.psnr(lowres_img_arr, highres_img_arr, max_val=255) + test_psnr = tf.image.psnr(predict_img_arr, highres_img_arr, max_val=255) + + total_bicubic_psnr += bicubic_psnr + total_test_psnr += test_psnr + +print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) +print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) + From 09f0fa696b1280ba46e0665f8d1162b6560d7045 Mon Sep 17 00:00:00 2001 From: Shan Jiang Date: Sun, 15 Oct 2023 16:33:00 +1000 Subject: [PATCH 20/85] Fixed bug: undefined test path --- recognition/SuperResolutionShanJiang/train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 045ac3d4d..8fff3e03d 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -21,8 +21,8 @@ class ESPCNCallback(keras.callbacks.Callback): """ def __init__(self): super().__init__() - self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) - print(self.test_img.size) + # self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) + # print(self.test_img.size) # Initialise a array to store epoch PSNR value when each epoch begins def on_epoch_begin(self, epoch, logs=None): From 1bf4a6b59d53baa159ff2093f53f4e4fc64b4d8c Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Sun, 15 Oct 2023 19:48:12 +1000 Subject: [PATCH 21/85] fixed bug: invalid check point directory --- recognition/SuperResolutionShanJiang/train.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 8fff3e03d..d5c4f0bde 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -70,8 +70,8 @@ def on_test_batch_end(self, batch, logs=None): early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) # Define path to save model parameters -# checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint" -checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +# checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" # Save model parameters at checkpoint during training model_checkpoint_callback = keras.callbacks.ModelCheckpoint( @@ -90,7 +90,7 @@ def on_test_batch_end(self, batch, logs=None): optimizer = keras.optimizers.Adam(learning_rate=0.001) #Train and validate the model -epochs = 2600 +epochs = 200 model.compile( optimizer=optimizer, loss=loss_fn, @@ -105,8 +105,8 @@ def on_test_batch_end(self, batch, logs=None): #Test the model # define test data from test AD -# test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -test_path = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/test/AD' +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +# test_path = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/test/AD' test_img_paths = sorted( [ os.path.join(test_path, fname) From e52a9c714330c8f236f09d7daf9a5365d4c9094a Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Tue, 17 Oct 2023 18:25:46 +1000 Subject: [PATCH 22/85] added prediction file --- .../SuperResolutionShanJiang/predict.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/predict.py diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py new file mode 100644 index 000000000..fa23eee97 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -0,0 +1,55 @@ +from utils import * +from modules import * +from dataset import * + + +from tensorflow import keras +from keras import layers +from keras.utils import load_img +from keras.utils import array_to_img +import os +import math +import matplotlib.pyplot as plt + +# load the trained model +checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +model = get_model() +model.load_weights(checkpoint_filepath) + +prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" +prediction_path = sorted( + [ + os.path.join(prediction_path, fname) + for fname in os.listdir(prediction_path) + if fname.endswith(".jpeg") + ] +) + +total_bicubic_psnr = 0.0 +total_test_psnr = 0.0 + +for index, prediction_img_path in enumerate(prediction_path[0:len(prediction_path)]): + img = load_img(prediction_img_path) + lowres_input = get_lowres_image(img, upscale_factor) + w = lowres_input.size[0] * upscale_factor + h = lowres_input.size[1] * upscale_factor + highres_img = img.resize((w, h)) + prediction = upscale_image(model, lowres_input) + lowres_img = lowres_input.resize((w, h)) + lowres_img_arr = img_to_array(lowres_img) + highres_img_arr = img_to_array(highres_img) + predict_img_arr = img_to_array(prediction) + bicubic_psnr = tf.image.psnr(lowres_img_arr, highres_img_arr, max_val=255) + test_psnr = tf.image.psnr(predict_img_arr, highres_img_arr, max_val=255) + print("higher resolution") + display(array_to_img(highres_img)) + print("lower resolution") + display(array_to_img(lowres_img)) + print("prediction") + display(array_to_img(prediction)) + + total_bicubic_psnr += bicubic_psnr + total_test_psnr += test_psnr + +print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) +print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) \ No newline at end of file From 736dabf1c520a0b43ad75c42b1ddd0e7d0678d55 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Tue, 17 Oct 2023 18:33:05 +1000 Subject: [PATCH 23/85] added some comment --- recognition/SuperResolutionShanJiang/predict.py | 11 +++++++---- recognition/SuperResolutionShanJiang/train.py | 12 +++++++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index fa23eee97..aadf4adfe 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -16,6 +16,7 @@ model = get_model() model.load_weights(checkpoint_filepath) +#Get acees to path of each image prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" prediction_path = sorted( [ @@ -25,16 +26,18 @@ ] ) -total_bicubic_psnr = 0.0 -total_test_psnr = 0.0 + +# Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model +total_bicubic_psnr = 0.0 # PSNR of downsampled image +total_test_psnr = 0.0 # PSNR of model output for index, prediction_img_path in enumerate(prediction_path[0:len(prediction_path)]): img = load_img(prediction_img_path) - lowres_input = get_lowres_image(img, upscale_factor) + lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor h = lowres_input.size[1] * upscale_factor highres_img = img.resize((w, h)) - prediction = upscale_image(model, lowres_input) + prediction = upscale_image(model, lowres_input) # Predict lowres_img = lowres_input.resize((w, h)) lowres_img_arr = img_to_array(lowres_img) highres_img_arr = img_to_array(highres_img) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index d5c4f0bde..6472f0769 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -39,7 +39,7 @@ def on_epoch_end(self, epoch, logs=None): train_psnr_history.append(np.mean(self.psnr)) valid_psnr_history.append(np.mean(self.psnr)) - if epoch % 20 == 0: + if epoch % 20 == 0 and epoch!=0: # Plot loss history after each epoch plt.figure(figsize=(10, 6)) plt.plot(train_loss_history, label='Training Loss', color='blue') @@ -104,9 +104,8 @@ def on_test_batch_end(self, batch, logs=None): model.load_weights(checkpoint_filepath) #Test the model -# define test data from test AD +# Get acees to path of each image test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -# test_path = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/test/AD' test_img_paths = sorted( [ os.path.join(test_path, fname) @@ -114,16 +113,19 @@ def on_test_batch_end(self, batch, logs=None): if fname.endswith(".jpeg") ] ) + +# Testing metrics total_bicubic_psnr = 0.0 total_test_psnr = 0.0 +# Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model for index, test_img_path in enumerate(test_img_paths[0:len(test_img_paths)]): img = load_img(test_img_path) - lowres_input = get_lowres_image(img, upscale_factor) + lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor h = lowres_input.size[1] * upscale_factor highres_img = img.resize((w, h)) - prediction = upscale_image(model, lowres_input) + prediction = upscale_image(model, lowres_input) # Predict lowres_img = lowres_input.resize((w, h)) lowres_img_arr = img_to_array(lowres_img) highres_img_arr = img_to_array(highres_img) From c375da59547e9c0909b3fb291c43025893a66438 Mon Sep 17 00:00:00 2001 From: Eric Ye Date: Tue, 17 Oct 2023 18:33:55 +1000 Subject: [PATCH 24/85] added some comment --- recognition/SuperResolutionShanJiang/dataset.py | 4 ++-- recognition/SuperResolutionShanJiang/train.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index dc28f712b..152f8a97a 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -72,8 +72,8 @@ input_height_size = crop_height_size // upscale_factor input_width_size = crop_width_size // upscale_factor batch_size = 8 -# data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' -data_dir = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/train/AD' +data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +# data_dir = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/train/AD' #Create traning dataset diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 6472f0769..b0c563064 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -115,8 +115,8 @@ def on_test_batch_end(self, batch, logs=None): ) # Testing metrics -total_bicubic_psnr = 0.0 -total_test_psnr = 0.0 +total_bicubic_psnr = 0.0 # PSNR of downsampled image +total_test_psnr = 0.0 # PSNR of model output # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model for index, test_img_path in enumerate(test_img_paths[0:len(test_img_paths)]): From 0527fc7b4f0726c6c41500e39709ef388d27a418 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:34:08 +1000 Subject: [PATCH 25/85] Create README.md --- recognition/SuperResolutionShanJiang/README.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/README.md diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md new file mode 100644 index 000000000..00f0bfa47 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/README.md @@ -0,0 +1,7 @@ +# Brain MRI super-resolution network +## Introduction +This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model exhibits the capability to accept an input image and transform it into a higher resolution representation. +## Getting Started +1. Install the required dependencies: +2. ```python +3. pip install -r requirements.txt From 321a34cb973c7d16d0dc264a910bdf64ebe2fee1 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:40:11 +1000 Subject: [PATCH 26/85] Update README.md --- recognition/SuperResolutionShanJiang/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 00f0bfa47..82ba785ce 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -2,6 +2,4 @@ ## Introduction This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model exhibits the capability to accept an input image and transform it into a higher resolution representation. ## Getting Started -1. Install the required dependencies: -2. ```python -3. pip install -r requirements.txt +1. Install the required dependencies: ```python pip install -r requirements.txt From 53cb22ea3f1f53e8e79fa0e823ae92e5a6e7cacf Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:54:32 +1000 Subject: [PATCH 27/85] Update README.md --- recognition/SuperResolutionShanJiang/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 82ba785ce..72fa593a3 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -2,4 +2,8 @@ ## Introduction This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model exhibits the capability to accept an input image and transform it into a higher resolution representation. ## Getting Started -1. Install the required dependencies: ```python pip install -r requirements.txt +1. Install the required dependencies: pip install -r requirements.txt +2. Usage + * Traning + -In dataset.py, change the directory at line 28 to your data directory which directly contains images for training (and validation) + - In train.py, change the directory at From 4a6eca4582b326e231473c9c84160fdbbda2be86 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 09:37:05 +1000 Subject: [PATCH 28/85] Update README.md --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 72fa593a3..d2c11e834 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,6 +1,6 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model exhibits the capability to accept an input image and transform it into a higher resolution representation. +This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model has the capability to reconstruct a low resolution image into a high resolution version. The model is ## Getting Started 1. Install the required dependencies: pip install -r requirements.txt 2. Usage From 5725810f808ba47437d0cef836a98f77df6635d1 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:40:55 +1000 Subject: [PATCH 29/85] Finish Introduction in readme --- recognition/SuperResolutionShanJiang/README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index d2c11e834..76f7a85f1 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,9 +1,14 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a a brain MRI super-resolution network trained on the ADNI brain dataset. The trained model has the capability to reconstruct a low resolution image into a high resolution version. The model is +This project implemented a a brain MRI super-resolution CNN network trained on the ADNI brain dataset. The trained model cnareconstruct a low resolution image into a high resolution version. The CNN consists of three convolutional layers followed by an upscaling operation using depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives accracy of ? and ? respectively. ## Getting Started 1. Install the required dependencies: pip install -r requirements.txt 2. Usage - * Traning - -In dataset.py, change the directory at line 28 to your data directory which directly contains images for training (and validation) - - In train.py, change the directory at + * Loading dataset: + The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. + Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space ,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. + To run dataset.py, follow following steps: + - + + + From 6ce2660819df3da70e384a8f784bb928c07ee267 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:45:35 +1000 Subject: [PATCH 30/85] Reformat readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 76f7a85f1..031ae3ba5 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -5,7 +5,7 @@ This project implemented a a brain MRI super-resolution CNN network trained on t 1. Install the required dependencies: pip install -r requirements.txt 2. Usage * Loading dataset: - The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. + The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space ,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. To run dataset.py, follow following steps: - From d7ba5a6e292e5791d767dd1c981e35e03e8d61f2 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:47:52 +1000 Subject: [PATCH 31/85] Reformat readme --- recognition/SuperResolutionShanJiang/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 031ae3ba5..d7c39af68 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -4,10 +4,10 @@ This project implemented a a brain MRI super-resolution CNN network trained on t ## Getting Started 1. Install the required dependencies: pip install -r requirements.txt 2. Usage - * Loading dataset: - The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. - Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space ,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. - To run dataset.py, follow following steps: + ### Loading dataset: + The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. + Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space ,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. + To run dataset.py, follow following steps: - From 5f8a2b48b3f73e14438e948a1bffa16c71f647f7 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:49:16 +1000 Subject: [PATCH 32/85] Reformat readme --- recognition/SuperResolutionShanJiang/README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index d7c39af68..3ea505cf7 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -2,12 +2,14 @@ ## Introduction This project implemented a a brain MRI super-resolution CNN network trained on the ADNI brain dataset. The trained model cnareconstruct a low resolution image into a high resolution version. The CNN consists of three convolutional layers followed by an upscaling operation using depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives accracy of ? and ? respectively. ## Getting Started -1. Install the required dependencies: pip install -r requirements.txt -2. Usage - ### Loading dataset: - The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. - Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space ,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. - To run dataset.py, follow following steps: +### Install the required dependencies +pip install -r requirements.txt +### Loading dataset +The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. +Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. +To run dataset.py, follow following steps: + + - From a4f995562197cf983a4d1753585de858f721b144 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:52:11 +1000 Subject: [PATCH 33/85] Update README.md --- recognition/SuperResolutionShanJiang/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 3ea505cf7..687840cf9 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -8,9 +8,8 @@ pip install -r requirements.txt The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. To run dataset.py, follow following steps: - +1. Define directory containing training dataset(directly contains image files) at line ?? by changeing the variale data_dir - - - + From 3ee078581b93fe24219f1f94102ca5e91236b4a1 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 12:09:50 +1000 Subject: [PATCH 34/85] added code to save loss plot --- .../SuperResolutionShanJiang/dataset.py | 51 +------------------ .../SuperResolutionShanJiang/predict.py | 30 +++++++++++ recognition/SuperResolutionShanJiang/train.py | 21 +++----- 3 files changed, 38 insertions(+), 64 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 152f8a97a..a31e4949b 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -16,54 +16,7 @@ -# def downsize_data(input_directory,output_directory): -# """ -# Downsample image data in input directory and save to output directory -# """ -# # Define the size for downsampling (factor of 4) -# downsample_factor = 4 - -# # Get a list of all JPEG files in the input directory -# jpeg_files = [f for f in os.listdir(input_directory)] - -# # Loop through the JPEG files, resize, and save -# for file_name in jpeg_files: -# input_path = os.path.join(input_directory, file_name) -# output_path = os.path.join(output_directory, file_name) - -# # Read the image from the file -# image = tf.io.read_file(input_path) -# image = tf.image.decode_jpeg(image, channels=3) # Decode the image - -# # Resize the image by a factor of 4 -# new_height = tf.shape(image)[0] // downsample_factor -# new_width = tf.shape(image)[1] // downsample_factor -# resized_image = tf.image.resize(image, (new_height, new_width), method=tf.image.ResizeMethod.BILINEAR, antialias=True) - -# # Cast the tensor to uint8 before encoding as JPEG -# resized_image = tf.cast(resized_image, tf.uint8) - -# # Encode and save the downsized image as a JPEG -# tf.io.write_file(output_path, tf.image.encode_jpeg(resized_image).numpy()) - -# print("Downsampling complete.") - -# # Down size data -# # input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -# # output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/AD' -# # downsize_data(input_directory,output_directory) - -# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/NC' -# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/test/NC' -# downsize_data(input_directory,output_directory) - -# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' -# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/AD' -# downsize_data(input_directory,output_directory) - -# input_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/NC' -# output_directory = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/downsized/train/NC' -# downsize_data(input_directory,output_directory) + #Set parameters for cropping crop_width_size = 256 @@ -73,7 +26,7 @@ input_width_size = crop_width_size // upscale_factor batch_size = 8 data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' -# data_dir = 'H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/AD_NC/train/AD' + #Create traning dataset diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index aadf4adfe..ecb83519c 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -1,6 +1,8 @@ from utils import * from modules import * from dataset import * +import matplotlib.pyplot as plt +import matplotlib.image as mpimg from tensorflow import keras @@ -26,6 +28,8 @@ ] ) +predic + # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model total_bicubic_psnr = 0.0 # PSNR of downsampled image @@ -50,9 +54,35 @@ display(array_to_img(lowres_img)) print("prediction") display(array_to_img(prediction)) + # array_to_img(prediction).show() total_bicubic_psnr += bicubic_psnr total_test_psnr += test_psnr + + image1 = array_to_img(highres_img) + image2 = array_to_img(lowres_img) + image3 = array_to_img(prediction) + + # Create a figure with three subplots + fig, axes = plt.subplots(1, 3, figsize=(12, 4)) + + # Display the first image in the first subplot + axes[0].imshow(image1) + axes[0].set_title('Image 1') + + # Display the second image in the second subplot + axes[1].imshow(image2) + axes[1].set_title('Image 2') + + # Display the third image in the third subplot + axes[2].imshow(image3) + axes[2].set_title('Image 3') + + # Adjust spacing between subplots + plt.tight_layout() + + # Show the figure + plt.show() print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) \ No newline at end of file diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index b0c563064..f17af5c58 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -10,6 +10,7 @@ import matplotlib.pyplot as plt upscale_factor = 4 +loss_plot_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/loss_plot/' train_loss_history = [] valid_loss_history = [] @@ -39,8 +40,8 @@ def on_epoch_end(self, epoch, logs=None): train_psnr_history.append(np.mean(self.psnr)) valid_psnr_history.append(np.mean(self.psnr)) - if epoch % 20 == 0 and epoch!=0: - # Plot loss history after each epoch + if epoch % 20 == 0 and epoch!= 0: + # Plot loss history after every 20 epoch plt.figure(figsize=(10, 6)) plt.plot(train_loss_history, label='Training Loss', color='blue') plt.plot(valid_loss_history, label='Validation Loss', color='red') @@ -49,19 +50,8 @@ def on_epoch_end(self, epoch, logs=None): plt.ylabel('Loss') plt.legend() plt.grid(True) - plt.show() + plt.savefig(loss_plot_path + 'epoch' + str(epoch+1) + '.png') - # Plot PSNR history after each epoch - plt.figure(figsize=(10, 6)) - plt.plot(train_psnr_history, label='Training PSNR', color='blue') - plt.plot(valid_psnr_history, label='Validation PSNR', color='red') - plt.title('Training and Validation PSNR') - plt.xlabel('Epoch') - plt.ylabel('PSNR (dB)') - plt.legend() - plt.grid(True) - plt.show() - # Store PSNR value when each test epoch ends def on_test_batch_end(self, batch, logs=None): self.psnr.append(10 * math.log10(1 / logs["loss"])) @@ -69,7 +59,8 @@ def on_test_batch_end(self, batch, logs=None): # Stop training when loss does not improve for 10 consecutive epochs early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) -# Define path to save model parameters +# Define +# to save model parameters checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" # checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" From a41d1c8647749c9c5f1670dcb876a43f95df2a8d Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 12:11:49 +1000 Subject: [PATCH 35/85] added code to save loss plot --- recognition/SuperResolutionShanJiang/readme.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/recognition/SuperResolutionShanJiang/readme.md b/recognition/SuperResolutionShanJiang/readme.md index e69de29bb..687840cf9 100644 --- a/recognition/SuperResolutionShanJiang/readme.md +++ b/recognition/SuperResolutionShanJiang/readme.md @@ -0,0 +1,15 @@ +# Brain MRI super-resolution network +## Introduction +This project implemented a a brain MRI super-resolution CNN network trained on the ADNI brain dataset. The trained model cnareconstruct a low resolution image into a high resolution version. The CNN consists of three convolutional layers followed by an upscaling operation using depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives accracy of ? and ? respectively. +## Getting Started +### Install the required dependencies +pip install -r requirements.txt +### Loading dataset +The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. +Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. +To run dataset.py, follow following steps: +1. Define directory containing training dataset(directly contains image files) at line ?? by changeing the variale data_dir + + + + From 79c939fbf27a64794e8b84f3c0c8282eef860577 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 12:17:39 +1000 Subject: [PATCH 36/85] Move code for test data loading into dataset.py --- .../SuperResolutionShanJiang/dataset.py | 18 ++++++++++++------ .../SuperResolutionShanJiang/predict.py | 2 +- recognition/SuperResolutionShanJiang/train.py | 12 ++---------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index a31e4949b..6d5b9c7b1 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -25,7 +25,7 @@ input_height_size = crop_height_size // upscale_factor input_width_size = crop_width_size // upscale_factor batch_size = 8 -data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train/AD' +data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train' @@ -110,12 +110,18 @@ def process_target(input): ) valid_ds = valid_ds.prefetch(buffer_size=32) -# for batch in train_ds.take(1): -# for img in batch[0]: -# display(array_to_img(img)) -# for img in batch[1]: -# display(array_to_img(img)) +# Get acees to path of each image +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +test_img_paths = sorted( + [ + os.path.join(test_path, fname) + for fname in os.listdir(test_path) + if fname.endswith(".jpeg") + ] +) +def test_img_paths(): + return test_img_paths diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index ecb83519c..62cc4b786 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -28,7 +28,7 @@ ] ) -predic + # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index f17af5c58..3a7def351 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -95,22 +95,14 @@ def on_test_batch_end(self, batch, logs=None): model.load_weights(checkpoint_filepath) #Test the model -# Get acees to path of each image -test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' -test_img_paths = sorted( - [ - os.path.join(test_path, fname) - for fname in os.listdir(test_path) - if fname.endswith(".jpeg") - ] -) + # Testing metrics total_bicubic_psnr = 0.0 # PSNR of downsampled image total_test_psnr = 0.0 # PSNR of model output # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model -for index, test_img_path in enumerate(test_img_paths[0:len(test_img_paths)]): +for index, test_img_path in enumerate(test_img_paths()): img = load_img(test_img_path) lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor From ec12619a36ed6eaa6152df12beb77cd0ecaeb30f Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 12:20:09 +1000 Subject: [PATCH 37/85] Move code for prediction data loading into dataset.py --- recognition/SuperResolutionShanJiang/dataset.py | 15 +++++++++++++-- recognition/SuperResolutionShanJiang/predict.py | 11 +---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 6d5b9c7b1..4c8687d5d 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -120,8 +120,19 @@ def process_target(input): ] ) -def test_img_paths(): - return test_img_paths +#Get acees to path of each image +prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" +prediction_path = sorted( + [ + os.path.join(prediction_path, fname) + for fname in os.listdir(prediction_path) + if fname.endswith(".jpeg") + ] +) + + +def prediction_img_paths(): + return prediction_img_paths diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index 62cc4b786..6e42a3ab3 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -18,15 +18,6 @@ model = get_model() model.load_weights(checkpoint_filepath) -#Get acees to path of each image -prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" -prediction_path = sorted( - [ - os.path.join(prediction_path, fname) - for fname in os.listdir(prediction_path) - if fname.endswith(".jpeg") - ] -) @@ -35,7 +26,7 @@ total_bicubic_psnr = 0.0 # PSNR of downsampled image total_test_psnr = 0.0 # PSNR of model output -for index, prediction_img_path in enumerate(prediction_path[0:len(prediction_path)]): +for index, prediction_img_path in enumerate(prediction_img_paths()): img = load_img(prediction_img_path) lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor From de71ae41f9aad273cdcd52e99125f12f73f55cc4 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 12:28:15 +1000 Subject: [PATCH 38/85] Implemented saving prediction result --- recognition/SuperResolutionShanJiang/dataset.py | 2 +- recognition/SuperResolutionShanJiang/predict.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 4c8687d5d..8efd20af5 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -111,7 +111,7 @@ def process_target(input): valid_ds = valid_ds.prefetch(buffer_size=32) # Get acees to path of each image -test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test/AD' +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test' test_img_paths = sorted( [ os.path.join(test_path, fname) diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index 6e42a3ab3..33d1d73c1 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -14,18 +14,20 @@ import matplotlib.pyplot as plt # load the trained model -checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint_back_up/" model = get_model() model.load_weights(checkpoint_filepath) - - +# Specify path to store prediction result +prediction_result_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction_result/" # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model total_bicubic_psnr = 0.0 # PSNR of downsampled image total_test_psnr = 0.0 # PSNR of model output + + for index, prediction_img_path in enumerate(prediction_img_paths()): img = load_img(prediction_img_path) lowres_input = get_lowres_image(img, upscale_factor) # downsample @@ -72,8 +74,9 @@ # Adjust spacing between subplots plt.tight_layout() - # Show the figure - plt.show() + # Save the plot + filename = os.path.basename(img) + plt.save(prediction_result_path+filename) print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) \ No newline at end of file From 6796d3d222e68d41cf5fb5502381819f3cde429f Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 13:12:48 +1000 Subject: [PATCH 39/85] added requirement file --- recognition/SuperResolutionShanJiang/requirements.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/requirements.txt diff --git a/recognition/SuperResolutionShanJiang/requirements.txt b/recognition/SuperResolutionShanJiang/requirements.txt new file mode 100644 index 000000000..a8ea5610e --- /dev/null +++ b/recognition/SuperResolutionShanJiang/requirements.txt @@ -0,0 +1,8 @@ +tensorflow +os +math +IPython +matplotlib +mpl_toolkits +PIL +numpy \ No newline at end of file From 1845b3e1026f42cba482f4449a7e551e28e714c6 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 14:10:14 +1000 Subject: [PATCH 40/85] cleaned code in dataset.py and write readme for dataset.py --- .../SuperResolutionShanJiang/dataset.py | 63 ++++++------------- .../SuperResolutionShanJiang/predict.py | 4 +- .../SuperResolutionShanJiang/readme.md | 13 ++-- 3 files changed, 31 insertions(+), 49 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index 8efd20af5..b79007210 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -1,37 +1,27 @@ import tensorflow as tf import os - -import tensorflow as tf -import math - - from tensorflow import keras from keras import layers from keras.utils import load_img from keras.utils import array_to_img from keras.utils import img_to_array from keras.preprocessing import image_dataset_from_directory - from IPython.display import display - - - - #Set parameters for cropping crop_width_size = 256 crop_height_size = 248 -upscale_factor = 4 +upscale_factor = 4 # ratio that dowansample orginal image for training and upscale images to predict at input_height_size = crop_height_size // upscale_factor input_width_size = crop_width_size // upscale_factor batch_size = 8 -data_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train' - +#Specify directory containing training dataset +training_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train' #Create traning dataset train_ds = image_dataset_from_directory( - data_dir, + training_dir, batch_size=batch_size, image_size=(crop_height_size, crop_width_size), validation_split=0.2, @@ -42,7 +32,7 @@ #Create validation dataset valid_ds = image_dataset_from_directory( - data_dir, + training_dir, batch_size=batch_size, image_size=(crop_height_size, crop_width_size), validation_split=0.2, @@ -63,55 +53,36 @@ def scaling(input_image): # for img in batch: # display(array_to_img(img)) - - - +# A fucntion that turns given image to grey scale and crop it def process_input(input,input_height_size,input_width_size): - """ turn given image to grey scale and crop it - - Args: - input: image to be processed - input_width_size: width to be cropped into - input_height_size: height to be cropped into - - Returns: - tensor: processed image - """ input = tf.image.rgb_to_yuv(input) last_dimension_axis = len(input.shape) - 1 y, u, v = tf.split(input, 3, axis=last_dimension_axis) return tf.image.resize(y, [input_height_size, input_width_size], method="area") - +# A fucntion that turn given image to grey scale def process_target(input): - """turn given image to grey scale - - Args: - input: image to be processed - - Returns: - tensor: processed image - """ input = tf.image.rgb_to_yuv(input) last_dimension_axis = len(input.shape) - 1 y, u, v = tf.split(input, 3, axis=last_dimension_axis) return y -# Process train dataset:create low resolution images and corresponding high resolution images +# Process train dataset:create low resolution images and corresponding high resolution images, and put the pair into a tuple train_ds = train_ds.map( lambda x: (process_input(x, input_height_size, input_width_size), process_target(x)) ) train_ds = train_ds.prefetch(buffer_size=32) -# Process validation dataset:create low resolution images and corresponding high resolution images +# Process validation dataset:create low resolution images and corresponding high resolution images, and put the pair into a tuple valid_ds = valid_ds.map( lambda x: (process_input(x, input_height_size, input_width_size), process_target(x)) ) valid_ds = valid_ds.prefetch(buffer_size=32) -# Get acees to path of each image +#Specify directory containing testing dataset test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test' +#Put path of each testing image into a sorted list test_img_paths = sorted( [ os.path.join(test_path, fname) @@ -120,8 +91,13 @@ def process_target(input): ] ) -#Get acees to path of each image +#return a list containing path of each image for testing +def get_test_img_paths(): + return test_img_paths + +#Specify directory containing prediction dataset prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" +#Put path of each prediction image into a sorted list prediction_path = sorted( [ os.path.join(prediction_path, fname) @@ -131,8 +107,9 @@ def process_target(input): ) -def prediction_img_paths(): - return prediction_img_paths +# return a list containing path of each image to be predicted +def get_prediction_img_paths(): + return prediction_path diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index 33d1d73c1..a00dbca99 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -14,7 +14,7 @@ import matplotlib.pyplot as plt # load the trained model -checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint_back_up/" +checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" model = get_model() model.load_weights(checkpoint_filepath) @@ -28,7 +28,7 @@ -for index, prediction_img_path in enumerate(prediction_img_paths()): +for index, prediction_img_path in enumerate(get_prediction_img_paths()): img = load_img(prediction_img_path) lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor diff --git a/recognition/SuperResolutionShanJiang/readme.md b/recognition/SuperResolutionShanJiang/readme.md index 687840cf9..53639eda3 100644 --- a/recognition/SuperResolutionShanJiang/readme.md +++ b/recognition/SuperResolutionShanJiang/readme.md @@ -1,14 +1,19 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a a brain MRI super-resolution CNN network trained on the ADNI brain dataset. The trained model cnareconstruct a low resolution image into a high resolution version. The CNN consists of three convolutional layers followed by an upscaling operation using depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives accracy of ? and ? respectively. +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of ? and ? WITH averag eloss of ? and? respectively. ## Getting Started ### Install the required dependencies pip install -r requirements.txt ### Loading dataset -The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. -Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. +The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. +Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. To run dataset.py, follow following steps: -1. Define directory containing training dataset(directly contains image files) at line ?? by changeing the variale data_dir +1. Define the exact directory containing training dataset(directly contains image files) at line ?? by altering the value of variable `data_dir`. +2. Define the exact directory containing testing dataset(directly contains image files) at line ?? by altering the value of variable `test_path`. +3. Define the exact directory containing images to be predicted on(directly contains image files) at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` +4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio +5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. + From d2765287315951769016bf0384a37c4dede02df9 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 22:41:58 +1000 Subject: [PATCH 41/85] Added images for readme --- recognition/SuperResolutionShanJiang/readme.md | 2 ++ .../readme_images/high_res_train.png | Bin 0 -> 14743 bytes .../readme_images/low_res_train.png | Bin 0 -> 1341 bytes recognition/SuperResolutionShanJiang/train.py | 4 ++-- 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/readme_images/high_res_train.png create mode 100644 recognition/SuperResolutionShanJiang/readme_images/low_res_train.png diff --git a/recognition/SuperResolutionShanJiang/readme.md b/recognition/SuperResolutionShanJiang/readme.md index 53639eda3..b595cb2d6 100644 --- a/recognition/SuperResolutionShanJiang/readme.md +++ b/recognition/SuperResolutionShanJiang/readme.md @@ -13,6 +13,8 @@ To run dataset.py, follow following steps: 3. Define the exact directory containing images to be predicted on(directly contains image files) at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` 4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio 5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. +### Building model +The model structure is defined in `modules.py`. using keras framwork. The diff --git a/recognition/SuperResolutionShanJiang/readme_images/high_res_train.png b/recognition/SuperResolutionShanJiang/readme_images/high_res_train.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3fab8dd09b06e031fa23c59cd2c4601fa28432 GIT binary patch literal 14743 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 literal 0 HcmV?d00001 diff --git a/recognition/SuperResolutionShanJiang/readme_images/low_res_train.png b/recognition/SuperResolutionShanJiang/readme_images/low_res_train.png new file mode 100644 index 0000000000000000000000000000000000000000..bf536e72ad5236bbb3fbcb2d6eaa5bf082eb912c GIT binary patch literal 1341 zcmV-D1;YA?P)E=)|k(JL=ZyfZQJ zP7{|9BYprz0~isqfWVl{LD~1}I>uSswd;3#+S9)0%L`-d20I;>CVOtr^Zd^9|DWf) z&kMjt{2u}W0P(dS6Lsq$04ntWsug20rt8|gh0DWGcrgz!>2U#&^q$aK`oqGY6Y}ZN z@yg=?AZToR-9r~jJ!qi2Fk~Uh*JlJpS>2@yz~p~}^ysfe5@+A^&8Aa-i7&oleCUO1 zb^rktc-h&;I^zb%a#La0R*nzTXv=S5d7S`)a=k?JzD`S4LFT1-f2ikd_&B(eiT|?F z$~7cFVAyj^qojhtIEHDK-5v9`3Ve;$KRsmGgRgk$8gl?0CVO@#Z?v8+Kchv6Gd>XY zTiv5(*Z%4D=$up^0KB~tth7{0)+@8N<4Mz9Vy{f_DLQ$e^XuO5IwY7~L$`Jr8^y zdp>7u-+boT!zsh1oAUEVeW?jJuU)pa$Yn+bA5HV>9yGqqB-k`}oBVyLF>k`0o_63u zlQz2Q8lWVBBMa83Iv|JX{o4^u%R)v<>w1UoR0~~u7K!+h_dOiNKQ%$Ess{joSV<>9 zSi$uzjor;yb7|;maFo%uG{>+@z}a(Gw&D$1Qo?gq;qwJL%PgI_X`Gwr z%kmw$$pP;T^$vu4tn|Yt%YrP?W&jL$wcpRh=TOjHpMx~DO_gvFFxxQj-pToLk^ zTo%tkz0JfK^Mq+gaUhCKngW{y+=03&+My9OI337v?6E*6y{e4?5A$(&y=Kt{K#Wa#3shhfR0288;0Euu)n4K&kCP4tVmH{YU#+ z$d5NAXgeB*V+Bg8Inq=m003M~A)rWdhk;EOCv3A1EH5xRzIH#>0Z`6J37M5Yu;CAM zeKvRPvHL||UK8`Z7`D&;K z5w~oy6Mr_1J{2PA*s}DU{lmPP)00000NkvXXu0mjfwB~>0 literal 0 HcmV?d00001 diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 3a7def351..9649519c2 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -81,7 +81,7 @@ def on_test_batch_end(self, batch, logs=None): optimizer = keras.optimizers.Adam(learning_rate=0.001) #Train and validate the model -epochs = 200 +epochs = 60 model.compile( optimizer=optimizer, loss=loss_fn, @@ -102,7 +102,7 @@ def on_test_batch_end(self, batch, logs=None): total_test_psnr = 0.0 # PSNR of model output # Dowansample resolution of iamges by factor of 4, then predict higher resolution image using the model -for index, test_img_path in enumerate(test_img_paths()): +for index, test_img_path in enumerate(get_test_img_paths()): img = load_img(test_img_path) lowres_input = get_lowres_image(img, upscale_factor) # downsample w = lowres_input.size[0] * upscale_factor From b9bc6ec7ebf62190ad2888b7b5638ab0c97c2044 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 22:45:57 +1000 Subject: [PATCH 42/85] Added images into readme --- recognition/SuperResolutionShanJiang/readme.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/readme.md b/recognition/SuperResolutionShanJiang/readme.md index b595cb2d6..31b70bbf5 100644 --- a/recognition/SuperResolutionShanJiang/readme.md +++ b/recognition/SuperResolutionShanJiang/readme.md @@ -1,12 +1,14 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of ? and ? WITH averag eloss of ? and? respectively. +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. ## Getting Started ### Install the required dependencies pip install -r requirements.txt ### Loading dataset The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. -Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. +Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. +![A high resolution MRI image](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/readme_images/high_res_train.png) +![A low resolution MRI image](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/readme_images/low_res_train.png) To run dataset.py, follow following steps: 1. Define the exact directory containing training dataset(directly contains image files) at line ?? by altering the value of variable `data_dir`. 2. Define the exact directory containing testing dataset(directly contains image files) at line ?? by altering the value of variable `test_path`. From 43af106e193f8faa9fab6b420a7702046441d03e Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Sat, 21 Oct 2023 22:48:30 +1000 Subject: [PATCH 43/85] Delete recognition/SuperResolutionShanJiang/README.md --- recognition/SuperResolutionShanJiang/README.md | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/README.md diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md deleted file mode 100644 index 687840cf9..000000000 --- a/recognition/SuperResolutionShanJiang/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Brain MRI super-resolution network -## Introduction -This project implemented a a brain MRI super-resolution CNN network trained on the ADNI brain dataset. The trained model cnareconstruct a low resolution image into a high resolution version. The CNN consists of three convolutional layers followed by an upscaling operation using depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives accracy of ? and ? respectively. -## Getting Started -### Install the required dependencies -pip install -r requirements.txt -### Loading dataset -The dataset used for training(and validation) and testing is loaded in dataset.py.The images are cropped into specified size. 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each test path is also created for later use. -Then we produce paired high resolution correspong loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize down sample them to specified size. Each pair is put into a tuple for traning purpose. -To run dataset.py, follow following steps: -1. Define directory containing training dataset(directly contains image files) at line ?? by changeing the variale data_dir - - - - From 8566991498092739ee73656c257de4ee52e895b5 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Sat, 21 Oct 2023 22:57:46 +1000 Subject: [PATCH 44/85] Create README.md --- recognition/SuperResolutionShanJiang/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 recognition/SuperResolutionShanJiang/README.md diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/README.md @@ -0,0 +1 @@ + From 2a7d3cc38c711c21934d8634d8a27af26f0fe402 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Sat, 21 Oct 2023 23:00:02 +1000 Subject: [PATCH 45/85] Delete recognition/SuperResolutionShanJiang/readme.md --- .../SuperResolutionShanJiang/readme.md | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/readme.md diff --git a/recognition/SuperResolutionShanJiang/readme.md b/recognition/SuperResolutionShanJiang/readme.md deleted file mode 100644 index 31b70bbf5..000000000 --- a/recognition/SuperResolutionShanJiang/readme.md +++ /dev/null @@ -1,24 +0,0 @@ -# Brain MRI super-resolution network -## Introduction -This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. -## Getting Started -### Install the required dependencies -pip install -r requirements.txt -### Loading dataset -The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. -Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. -![A high resolution MRI image](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/readme_images/high_res_train.png) -![A low resolution MRI image](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/readme_images/low_res_train.png) -To run dataset.py, follow following steps: -1. Define the exact directory containing training dataset(directly contains image files) at line ?? by altering the value of variable `data_dir`. -2. Define the exact directory containing testing dataset(directly contains image files) at line ?? by altering the value of variable `test_path`. -3. Define the exact directory containing images to be predicted on(directly contains image files) at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` -4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio -5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. -### Building model -The model structure is defined in `modules.py`. using keras framwork. The - - - - - From 0127bf03d13f96865dd446bea27122a2ec7d6052 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Sat, 21 Oct 2023 23:00:09 +1000 Subject: [PATCH 46/85] Delete recognition/SuperResolutionShanJiang/README.md --- recognition/SuperResolutionShanJiang/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 recognition/SuperResolutionShanJiang/README.md diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md deleted file mode 100644 index 8b1378917..000000000 --- a/recognition/SuperResolutionShanJiang/README.md +++ /dev/null @@ -1 +0,0 @@ - From 97560afd9fc2fb0ff2901bb68dc7665b00ee061d Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 23:19:39 +1000 Subject: [PATCH 47/85] Added readme back in --- recognition/SuperResolutionShanJiang/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/README.md diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md new file mode 100644 index 000000000..e69de29bb From 96cc4d345a10a6741a43537418a9a5cbf42485d9 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sat, 21 Oct 2023 23:21:25 +1000 Subject: [PATCH 48/85] Changed path for images in readme --- .../SuperResolutionShanJiang/README.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index e69de29bb..f7a6d2f72 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -0,0 +1,24 @@ +# Brain MRI super-resolution network +## Introduction +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. +## Getting Started +### Install the required dependencies +pip install -r requirements.txt +### Loading dataset +The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. +Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. +![A high resolution MRI image](readme_images/high_res_train.png) +![A low resolution MRI image](readme_images/low_res_train.png) +To run dataset.py, follow following steps: +1. Define the exact directory containing training dataset(directly contains image files) at line ?? by altering the value of variable `data_dir`. +2. Define the exact directory containing testing dataset(directly contains image files) at line ?? by altering the value of variable `test_path`. +3. Define the exact directory containing images to be predicted on(directly contains image files) at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` +4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio +5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. +### Building model +The model structure is defined in `modules.py`. using keras framwork. The + + + + + From 8a837e7e576bf2325e5da93b4a922d9f39e93fb3 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 01:03:10 +1000 Subject: [PATCH 49/85] Added mdel information in readme --- recognition/SuperResolutionShanJiang/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index f7a6d2f72..e32336b07 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -16,7 +16,13 @@ To run dataset.py, follow following steps: 4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio 5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. ### Building model -The model structure is defined in `modules.py`. using keras framwork. The +The model structure is defined in `modules.py`. using keras framwork. The structure of the model is as following: +- first layer: A convolutional layer with 64 filters and a kernel size of 5 to extract features. +- second layer: A convolutional layer with 64 filters and a kernel size of 3 to extract features. +- third layer: A convolutional layer with 32 filters and a kernel size of 3 to extract features. +- fourth layer: A convolution layer with `channels * (upscale_factor ** 2)` filters and a kernel size of 3 to increase spatial resolution. +- depth to space operation: Using TensorFlow's tf.nn.depth_to_space function to perform a depth-to-space upscaling operation specified 'upscale_factor' to produce the super-resolved image with a higher resolution. + From d250a7cdd447a9754fdb814fad69348952dfdd9f Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 10:28:49 +1000 Subject: [PATCH 50/85] Added description for utils.py in readme --- .../SuperResolutionShanJiang/README.md | 5 +++++ recognition/SuperResolutionShanJiang/utils.py | 21 +++---------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index e32336b07..9ebbca00c 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -22,6 +22,11 @@ The model structure is defined in `modules.py`. using keras framwork. The struct - third layer: A convolutional layer with 32 filters and a kernel size of 3 to extract features. - fourth layer: A convolution layer with `channels * (upscale_factor ** 2)` filters and a kernel size of 3 to increase spatial resolution. - depth to space operation: Using TensorFlow's tf.nn.depth_to_space function to perform a depth-to-space upscaling operation specified 'upscale_factor' to produce the super-resolved image with a higher resolution. +Note: for best performance, keep the value of `upscale_factor` parameter (default to 4) in `get_model` the same as the value of `upscale_factor` parameter defined in `dataset.py` and keep the value of `channels` to the default value (1). +### Utilities +Two functions are defined in `utils.py`. +- `get_lowres_image(img, upscale_factor)` downsamples given `image` by ratio of given `upscale_factor`. It is later used in train.py to convert testing images to low resolutions images. +- `upscale_image(model, img)` preprocessed given `image` and use the give `model` to increase its resolution. The preprocessing include convert the image into YCbCr color space and isolate and nomalise(dividing by 255) the Y channel, reshape the Y channel array to shape shape matches the model input shape. The prediction output from the model is demornalised(multiplying by 255) and restored to RGB color space. diff --git a/recognition/SuperResolutionShanJiang/utils.py b/recognition/SuperResolutionShanJiang/utils.py index a662024b0..d96805c1c 100644 --- a/recognition/SuperResolutionShanJiang/utils.py +++ b/recognition/SuperResolutionShanJiang/utils.py @@ -4,32 +4,17 @@ import PIL import numpy as np from keras.utils import img_to_array -def get_lowres_image(img, upscale_factor): - """Return low-resolution image converted from given image to be fed into model - - Args: - img: image to be fed into model - upscale_factor (_type_): the ratio the image is downsized by - Returns: - Image: low-resolution image - """ +# downsamples given image by ratio of given upscale_factor. +def get_lowres_image(img, upscale_factor): return img.resize( (img.size[0] // upscale_factor, img.size[1] // upscale_factor), PIL.Image.BICUBIC, ) +# preprocessed given image and use the give model to increase its resolution def upscale_image(model, img): - """Use given model to predict high resolution version of the given image and it as RGB. - - Args: - model: super-resolution network - img (_type_): low resolution image to be converted to high resolution - - Returns: - Image: prediction result- high resolution RGB image - """ ycbcr = img.convert("YCbCr") y, cb, cr = ycbcr.split() y = img_to_array(y) From 3f6ae63032f1a855e18e9a6151393dea90e6a1c1 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 10:38:52 +1000 Subject: [PATCH 51/85] Fixed: requirement file cannot be executed --- .../SuperResolutionShanJiang/requirements.txt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/requirements.txt b/recognition/SuperResolutionShanJiang/requirements.txt index a8ea5610e..5a9b502e6 100644 --- a/recognition/SuperResolutionShanJiang/requirements.txt +++ b/recognition/SuperResolutionShanJiang/requirements.txt @@ -1,8 +1,5 @@ -tensorflow -os -math -IPython -matplotlib -mpl_toolkits -PIL -numpy \ No newline at end of file +tensorflow >= 2.14.0 +IPython >=8.16.1 +matplotlib >= 3.7.1 +Pillow >= 9.5.0 +numpy >= 1.24.2 \ No newline at end of file From f54177c1dae1b781153e471d7b43fef2f1bd847a Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 19:32:02 +1000 Subject: [PATCH 52/85] Added section for train.py in readme' --- .../SuperResolutionShanJiang/README.md | 35 +++++++++++++++---- recognition/SuperResolutionShanJiang/train.py | 33 +++++++---------- recognition/SuperResolutionShanJiang/utils.py | 8 ++--- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 9ebbca00c..9f59bf9d5 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,20 +1,22 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives mean PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. ## Getting Started ### Install the required dependencies -pip install -r requirements.txt +pip install -r recognition/SuperResolutionShanJiang/requirements.txt ### Loading dataset The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. ![A high resolution MRI image](readme_images/high_res_train.png) ![A low resolution MRI image](readme_images/low_res_train.png) -To run dataset.py, follow following steps: -1. Define the exact directory containing training dataset(directly contains image files) at line ?? by altering the value of variable `data_dir`. -2. Define the exact directory containing testing dataset(directly contains image files) at line ?? by altering the value of variable `test_path`. -3. Define the exact directory containing images to be predicted on(directly contains image files) at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` +To run dataset.py, follow these steps in `dataset.py`: +1. Creat a folder in the same directory as the python file and put images for training inside. Specify the exact directory of this folder at line ?? by altering the value of variable `data_dir`. +2. Creat a folder in the same directory as the python file and put images for testing inside. Specify the exact directory of this folder at line ?? by altering the value of variable `test_path`. +3. Creat a folder in the same directory as the python file and put images for prediction inside. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` 4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio 5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. +6. (optional) Adjust batch size for training and validation by changing the value of `batch_size`at line ??. +7. run `dataset.py` ### Building model The model structure is defined in `modules.py`. using keras framwork. The structure of the model is as following: - first layer: A convolutional layer with 64 filters and a kernel size of 5 to extract features. @@ -27,6 +29,27 @@ Note: for best performance, keep the value of `upscale_factor` parameter (defaul Two functions are defined in `utils.py`. - `get_lowres_image(img, upscale_factor)` downsamples given `image` by ratio of given `upscale_factor`. It is later used in train.py to convert testing images to low resolutions images. - `upscale_image(model, img)` preprocessed given `image` and use the give `model` to increase its resolution. The preprocessing include convert the image into YCbCr color space and isolate and nomalise(dividing by 255) the Y channel, reshape the Y channel array to shape shape matches the model input shape. The prediction output from the model is demornalised(multiplying by 255) and restored to RGB color space. +### Model training +Model training, validation and testing is are implemented in `train.py`. +#### Training and validation +`ESPCNCallback` class is used to monitor and display the accumulating mean PSNR after each epoch; and the plots of loss function (for both training and validation) vs epoch number are saved to specified directory after every 10 epochs. Mean Squared Error is used as the loss function and Adam is used as the optimiser. `early_stopping_callback` is set so that the training stops automatically if loss does not improve for 10 consecutive epochs. During training, the best(resultin in minimul loss) model weight is saved to specified path. The following image is the plot of loss over epoch for the entire training process (epoch 1 to 60). +To run model training, follow these steps in `train.py`: +1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` +2. Make sure training dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) +3. Creat a empty folder in the same directory as the python files to save the weights. Specify the exact directory of this folder at line ?? by altering the value of variable `checkpoint_filepath`at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +4. Creat a empty folder in the same directory as the python files to save the loss plots. Specify the exact directory of this folder at line ?? by altering the value of variable `loss_plot_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +5. Comment out code for testing (from line ??? to line ???) +6. run `train.py` +#### Testing +During model testing, the images are first downsampled by passing them to the functions `get_lowres_imageget_lowres_image(img, upscale_factor)` and then a reconstructed high resolution version is predicted using the model. The average PSNR of lower resolution images and prediction are calculated to verify the effectiveness of the model (PSNR of prediction should be higher than lower resolution images) +To run model testing, follow these steps in `train.py`: +1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` +2. Make sure the model has been trained and weights have been saved (see training part) +3. Make sure testing dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) +4. Comment out code for training (from line ??? to line ???) +5. run `train.py` + + diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 9649519c2..c6ec89828 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -15,33 +15,26 @@ train_loss_history = [] valid_loss_history = [] train_psnr_history = [] -valid_psnr_history = [] + +# Custom Keras callback for monitoring and displaying PSNR during training. class ESPCNCallback(keras.callbacks.Callback): - """ - Custom Keras callback for monitoring and displaying PSNR during training. - """ def __init__(self): super().__init__() - # self.test_img = get_lowres_image(load_img(test_img_paths[0]), upscale_factor) - # print(self.test_img.size) - # Initialise a array to store epoch PSNR value when each epoch begins + # Initialise an array to store epoch PSNR value when each epoch begins def on_epoch_begin(self, epoch, logs=None): self.psnr = [] - # Print Mean PSNR for when each epoch ends + # Print mean training PSNR for when each epoch ends def on_epoch_end(self, epoch, logs=None): print("Mean PSNR for epoch: %.2f" % (np.mean(self.psnr))) - # if epoch % 20 == 0: - # prediction = upscale_image(self.model, self.test_img) - # plot_results(prediction, "epoch-" + str(epoch), "prediction") train_loss_history.append(logs['loss']) valid_loss_history.append(logs['val_loss']) train_psnr_history.append(np.mean(self.psnr)) - valid_psnr_history.append(np.mean(self.psnr)) + - if epoch % 20 == 0 and epoch!= 0: - # Plot loss history after every 20 epoch + if epoch % 9 == 0 and epoch!= 0: + # Plot loss history after every 10 epoch and save the plot plt.figure(figsize=(10, 6)) plt.plot(train_loss_history, label='Training Loss', color='blue') plt.plot(valid_loss_history, label='Validation Loss', color='red') @@ -52,15 +45,14 @@ def on_epoch_end(self, epoch, logs=None): plt.grid(True) plt.savefig(loss_plot_path + 'epoch' + str(epoch+1) + '.png') - # Store PSNR value when each test epoch ends + # Store training PSNR value when each test epoch ends def on_test_batch_end(self, batch, logs=None): self.psnr.append(10 * math.log10(1 / logs["loss"])) # Stop training when loss does not improve for 10 consecutive epochs early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) -# Define -# to save model parameters +# Path to save model parameters checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" # checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" @@ -76,7 +68,9 @@ def on_test_batch_end(self, batch, logs=None): # Initialise a model model = get_model(upscale_factor=upscale_factor, channels=1) model.summary() -callbacks = [ESPCNCallback(), early_stopping_callback, model_checkpoint_callback] + +# Define callbacks, loos function and optimiser +callbacks = [ESPCNCallback(), early_stopping_callback, model_checkpoint_callback] loss_fn = keras.losses.MeanSquaredError() optimizer = keras.optimizers.Adam(learning_rate=0.001) @@ -94,9 +88,6 @@ def on_test_batch_end(self, batch, logs=None): # The model weights (that are considered the best) are loaded into the model. model.load_weights(checkpoint_filepath) -#Test the model - - # Testing metrics total_bicubic_psnr = 0.0 # PSNR of downsampled image total_test_psnr = 0.0 # PSNR of model output diff --git a/recognition/SuperResolutionShanJiang/utils.py b/recognition/SuperResolutionShanJiang/utils.py index d96805c1c..fbe35863b 100644 --- a/recognition/SuperResolutionShanJiang/utils.py +++ b/recognition/SuperResolutionShanJiang/utils.py @@ -15,16 +15,16 @@ def get_lowres_image(img, upscale_factor): # preprocessed given image and use the give model to increase its resolution def upscale_image(model, img): - ycbcr = img.convert("YCbCr") + ycbcr = img.convert("YCbCr") # Convert image to YCbCr colout spave y, cb, cr = ycbcr.split() y = img_to_array(y) - y = y.astype("float32") / 255.0 + y = y.astype("float32") / 255.0 # Normalise the pixel values input = np.expand_dims(y, axis=0) - out = model.predict(input) + out = model.predict(input) out_img_y = out[0] - out_img_y *= 255.0 + out_img_y *= 255.0 # Denormalise the pixel values # Restore the image in RGB color space. out_img_y = out_img_y.clip(0, 255) From a65958c8f68a341000a4cc535b737b7dfaf43d81 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 19:42:24 +1000 Subject: [PATCH 53/85] chenged path in files --- recognition/SuperResolutionShanJiang/README.md | 1 + recognition/SuperResolutionShanJiang/dataset.py | 6 +++--- recognition/SuperResolutionShanJiang/predict.py | 2 +- recognition/SuperResolutionShanJiang/train.py | 8 ++++++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 9f59bf9d5..c208dafb3 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -48,6 +48,7 @@ To run model testing, follow these steps in `train.py`: 3. Make sure testing dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) 4. Comment out code for training (from line ??? to line ???) 5. run `train.py` +### Prediction diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index b79007210..f499633b3 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -17,7 +17,7 @@ batch_size = 8 #Specify directory containing training dataset -training_dir = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/train' +training_dir = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/train_dataset" #Create traning dataset train_ds = image_dataset_from_directory( @@ -81,7 +81,7 @@ def process_target(input): valid_ds = valid_ds.prefetch(buffer_size=32) #Specify directory containing testing dataset -test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/original/test' +test_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/test_dataset' #Put path of each testing image into a sorted list test_img_paths = sorted( [ @@ -96,7 +96,7 @@ def get_test_img_paths(): return test_img_paths #Specify directory containing prediction dataset -prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction" +prediction_path = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/prediction_dataset" #Put path of each prediction image into a sorted list prediction_path = sorted( [ diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index a00dbca99..f7a33f003 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -14,7 +14,7 @@ import matplotlib.pyplot as plt # load the trained model -checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/checkpoint/" model = get_model() model.load_weights(checkpoint_filepath) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index c6ec89828..07be58f17 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -53,7 +53,7 @@ def on_test_batch_end(self, batch, logs=None): early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) # Path to save model parameters -checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" +checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/checkpoint/" # checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" # Save model parameters at checkpoint during training @@ -67,7 +67,7 @@ def on_test_batch_end(self, batch, logs=None): # Initialise a model model = get_model(upscale_factor=upscale_factor, channels=1) -model.summary() +# model.summary() # Define callbacks, loos function and optimiser callbacks = [ESPCNCallback(), early_stopping_callback, model_checkpoint_callback] @@ -85,6 +85,10 @@ def on_test_batch_end(self, batch, logs=None): train_ds, epochs=epochs, callbacks=callbacks, validation_data=valid_ds, verbose=2 ) + +# Initialise a model +model = get_model(upscale_factor=upscale_factor, channels=1) + # The model weights (that are considered the best) are loaded into the model. model.load_weights(checkpoint_filepath) From c94acbadb680bbcf2de11eb15654c6b8d848c113 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 20:54:47 +1000 Subject: [PATCH 54/85] added section for prediton in readme --- recognition/SuperResolutionShanJiang/README.md | 10 +++++++--- recognition/SuperResolutionShanJiang/predict.py | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index c208dafb3..ed52c08ac 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -33,7 +33,7 @@ Two functions are defined in `utils.py`. Model training, validation and testing is are implemented in `train.py`. #### Training and validation `ESPCNCallback` class is used to monitor and display the accumulating mean PSNR after each epoch; and the plots of loss function (for both training and validation) vs epoch number are saved to specified directory after every 10 epochs. Mean Squared Error is used as the loss function and Adam is used as the optimiser. `early_stopping_callback` is set so that the training stops automatically if loss does not improve for 10 consecutive epochs. During training, the best(resultin in minimul loss) model weight is saved to specified path. The following image is the plot of loss over epoch for the entire training process (epoch 1 to 60). -To run model training, follow these steps in `train.py`: +To run model training, do following in `train.py`: 1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` 2. Make sure training dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) 3. Creat a empty folder in the same directory as the python files to save the weights. Specify the exact directory of this folder at line ?? by altering the value of variable `checkpoint_filepath`at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". @@ -42,14 +42,18 @@ To run model training, follow these steps in `train.py`: 6. run `train.py` #### Testing During model testing, the images are first downsampled by passing them to the functions `get_lowres_imageget_lowres_image(img, upscale_factor)` and then a reconstructed high resolution version is predicted using the model. The average PSNR of lower resolution images and prediction are calculated to verify the effectiveness of the model (PSNR of prediction should be higher than lower resolution images) -To run model testing, follow these steps in `train.py`: +To run model testing, do following in `train.py`: 1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` 2. Make sure the model has been trained and weights have been saved (see training part) 3. Make sure testing dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) 4. Comment out code for training (from line ??? to line ???) 5. run `train.py` ### Prediction - +Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are downsampled, predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. To run this file, do following in `predict.py`: +2. Make sure the model has been trained and weights have been saved (see training part) +3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) +4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +5. run `predict.py` diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index f7a33f003..4dde01108 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -77,6 +77,9 @@ # Save the plot filename = os.path.basename(img) plt.save(prediction_result_path+filename) + + print("PSNR of lowres images is %.4f" % (bicubic_psnr / 10)) + print("PSNR of reconstructions is %.4f" % (test_psnr / 10)) print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) \ No newline at end of file From 69b09e75a0513d1429def8771c2677f9e92d3769 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:05:24 +1000 Subject: [PATCH 55/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 5 +++-- .../SuperResolutionShanJiang/example_image.jpg | Bin 0 -> 5486 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/example_image.jpg diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index ed52c08ac..d1144b081 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -49,12 +49,13 @@ To run model testing, do following in `train.py`: 4. Comment out code for training (from line ??? to line ???) 5. run `train.py` ### Prediction -Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are downsampled, predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. To run this file, do following in `predict.py`: +Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are downsampled, predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. The following figures show an example of the figure. +To run this file, do following in `predict.py`: 2. Make sure the model has been trained and weights have been saved (see training part) 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` - +![example image](example_image.jpg) diff --git a/recognition/SuperResolutionShanJiang/example_image.jpg b/recognition/SuperResolutionShanJiang/example_image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e738125f691f72b5b2d1bd229b268f744b9880ba GIT binary patch literal 5486 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 Date: Sun, 22 Oct 2023 21:06:38 +1000 Subject: [PATCH 56/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index d1144b081..7568b83ae 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example image](example_image.jpg) +![example](example_image.jpg) From fe8e43aed13e8a7ef6d608d225ae4332bc92c051 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:07:43 +1000 Subject: [PATCH 57/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 7568b83ae..456f3af95 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](example_image.jpg) +![example](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/example_image.jpg) From 01e4139c6037110261063d57f916cc91e2a10ddc Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:15:50 +1000 Subject: [PATCH 58/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 456f3af95..7568b83ae 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](https://github.com/ShanJiang929/PatternAnalysis_2023_Shan_Jiang/blob/topic-recognition/recognition/SuperResolutionShanJiang/example_image.jpg) +![example](example_image.jpg) From c3ae62e772300d44448c7fbb4053a70c599e38eb Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:28:11 +1000 Subject: [PATCH 59/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- recognition/SuperResolutionShanJiang/im.jpg | Bin 0 -> 3851 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 recognition/SuperResolutionShanJiang/im.jpg diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 7568b83ae..222dfbc33 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](example_image.jpg) +![example](im.jpeg) diff --git a/recognition/SuperResolutionShanJiang/im.jpg b/recognition/SuperResolutionShanJiang/im.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20571172c7b85c78b0c1978a97d379f01cb898b5 GIT binary patch literal 3851 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 i_~uEHunXv0SYE(xMf7i8f5f+9Ej# Date: Sun, 22 Oct 2023 21:28:22 +1000 Subject: [PATCH 60/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 222dfbc33..7b404b5cd 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](im.jpeg) +![example](im.jpg) From 7bb1d276bd6fe022d6819f07de2c5bd9f6dfbc02 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:32:53 +1000 Subject: [PATCH 61/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 7b404b5cd..ef6049906 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](im.jpg) +![example](im.JPG) From 8f99518408bfe6e5d81d36cb7ac7413cb5d7cef5 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:34:32 +1000 Subject: [PATCH 62/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index ef6049906..7b404b5cd 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](im.JPG) +![example](im.jpg) From a625002b08ab3ce568bc0315d2480eb7ec484644 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:35:07 +1000 Subject: [PATCH 63/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 7b404b5cd..25505485b 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](im.jpg) +![example](./im.jpg) From 5fb8c6f747172c5093258a2edf886004080fe1f8 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Sun, 22 Oct 2023 21:35:27 +1000 Subject: [PATCH 64/85] Test out image display in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 25505485b..6f3223267 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](./im.jpg) +![example](./ism.jpg) From 3d4566a4d878ddcea2c5b40155ea9ad0afa66252 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 10:04:21 +1000 Subject: [PATCH 65/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 4 ++-- .../SuperResolutionShanJiang/example_image.jpg | Bin 5486 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/example_image.jpg diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 6f3223267..0d3d0caab 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,6 +1,6 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives mean PSNR of 28.82 and ? WITH loss of 0.0013 and? respectively. +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives mean PSNR of 28.82 and 24.83 WITH loss of 0.0013 and? respectively. ## Getting Started ### Install the required dependencies pip install -r recognition/SuperResolutionShanJiang/requirements.txt @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](./ism.jpg) +![example](./im.jpg) diff --git a/recognition/SuperResolutionShanJiang/example_image.jpg b/recognition/SuperResolutionShanJiang/example_image.jpg deleted file mode 100644 index e738125f691f72b5b2d1bd229b268f744b9880ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5486 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 Date: Mon, 23 Oct 2023 10:06:13 +1000 Subject: [PATCH 66/85] Adds file to test image display in readme --- recognition/SuperResolutionShanJiang/lake.jpg | Bin 0 -> 13855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/lake.jpg diff --git a/recognition/SuperResolutionShanJiang/lake.jpg b/recognition/SuperResolutionShanJiang/lake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17be6fd151c54b3b3d89e06e0b8a78327aadd74b GIT binary patch literal 13855 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 A!~g&Q literal 0 HcmV?d00001 From 6edb048508bbadd7ab2f0286b02509a866826e34 Mon Sep 17 00:00:00 2001 From: ikai <107908503+ShanJiang929@users.noreply.github.com> Date: Mon, 23 Oct 2023 10:07:08 +1000 Subject: [PATCH 67/85] Delete recognition/SuperResolutionShanJiang/lake.jpg --- recognition/SuperResolutionShanJiang/lake.jpg | Bin 13855 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/lake.jpg diff --git a/recognition/SuperResolutionShanJiang/lake.jpg b/recognition/SuperResolutionShanJiang/lake.jpg deleted file mode 100644 index 17be6fd151c54b3b3d89e06e0b8a78327aadd74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13855 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 A!~g&Q From 9290524e40f92f4d61ff62eaf44aec0d89d9789b Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 10:28:39 +1000 Subject: [PATCH 68/85] Test out image in readme --- .../18-oo-patterns.png | Bin 0 -> 355916 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/18-oo-patterns.png diff --git a/recognition/SuperResolutionShanJiang/18-oo-patterns.png b/recognition/SuperResolutionShanJiang/18-oo-patterns.png new file mode 100644 index 0000000000000000000000000000000000000000..f257d6f513b3fff510e366ae687f7880a000be3b GIT binary patch literal 355916 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 vuW&>YdpHD4Q4J8w&Lb_09W;g1$sTt97my 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%0A1WvK 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 Date: Mon, 23 Oct 2023 11:51:23 +1000 Subject: [PATCH 71/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index d36bc0dfd..abf568a22 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](https://camo.githubusercontent.com/722283a1bf8e4c866a781df40eb8ba7452dba3b86db00008898854583837ed82/68747470733a2f2f6c6f63616c73656e642e6f72672f696d672f73637265656e73686f742d6970686f6e652e77656270) +![example](https://drive.google.com/drive/u/0/folders/1pyv5saVVll-be1Ftmzcfv7ERXnjgiKsf) From befef2f9eacfa313a94d105f8ad9e9a97acccb86 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 11:53:04 +1000 Subject: [PATCH 72/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index abf568a22..3bdbfa348 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](https://drive.google.com/drive/u/0/folders/1pyv5saVVll-be1Ftmzcfv7ERXnjgiKsf) +![example](https://drive.google.com/file/d/1q5PTeLp9Wn0MWLWYdxnZGm9j32s6NYRR/view?usp=share_link) From 97cea088af57169ec89fbc77593e00f0302a0fdd Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 11:59:25 +1000 Subject: [PATCH 73/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 3bdbfa348..5d0a79930 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](https://drive.google.com/file/d/1q5PTeLp9Wn0MWLWYdxnZGm9j32s6NYRR/view?usp=share_link) +![example](im.png) From 0bdd215c504a41ac81400d6606db9c0d64428308 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 12:00:14 +1000 Subject: [PATCH 74/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 5d0a79930..2800689be 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](im.png) +![example](im.jpg) From ff2b693e292450a48df1bc9943e5a933141b6944 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 12:16:29 +1000 Subject: [PATCH 75/85] Test out image in readme --- .../SuperResolutionShanJiang/.gitattributes | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 recognition/SuperResolutionShanJiang/.gitattributes diff --git a/recognition/SuperResolutionShanJiang/.gitattributes b/recognition/SuperResolutionShanJiang/.gitattributes new file mode 100644 index 000000000..e126f2a83 --- /dev/null +++ b/recognition/SuperResolutionShanJiang/.gitattributes @@ -0,0 +1,215 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +# Auto detect +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Source code +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text +*.css text diff=css +*.htm text diff=html +*.html text diff=html +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.ls text +*.map text -diff +*.od text +*.onlydata text +*.php text diff=php +*.pl text +*.ps1 text eol=crlf +*.py text diff=python +*.rb text diff=ruby +*.sass text +*.scm text +*.scss text diff=css +*.sh text eol=lf +.husky/* text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text diff=html + +# Docker +Dockerfile text + +# Documentation +*.ipynb text eol=lf +*.markdown text diff=markdown +*.md text diff=markdown +*.mdwn text diff=markdown +*.mdown text diff=markdown +*.mkd text diff=markdown +*.mkdn text diff=markdown +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +# Templates +*.dot text +*.ejs text +*.erb text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.njk text +*.phtml text +*.svelte text +*.tmpl text +*.tpl text +*.twig text +*.vue text + +# Configs +*.cnf text +*.conf text +*.config text +.editorconfig text +.env text +.gitattributes text +.gitconfig text +.htaccess text +*.lock text -diff +package.json text eol=lf +package-lock.json text eol=lf -diff +pnpm-lock.yaml text eol=lf -diff +.prettierrc text +yarn.lock text -diff +*.toml text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text +# Fixes syntax highlighting on GitHub to allow comments +tsconfig.json linguist-language=JSON-with-Comments + +# Heroku +Procfile text + +# Graphics +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.gifv binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# Audio +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +# Video +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.avi binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.ogv binary +*.swc binary +*.swf binary +*.webm binary + +# Archives +*.7z binary +*.gz binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +# Fonts +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Executables +*.exe binary +*.pyc binary +# Prevents massive diffs caused by vendored, minified files +**/.yarn/releases/** binary +**/.yarn/plugins/** binary + +# RC files (like .babelrc or .eslintrc) +*.*rc text + +# Ignore files (like .npmignore or .gitignore) +*.*ignore text + +# Prevents massive diffs from built files +dist/* binary \ No newline at end of file From 89bd9b9f8be5c036b3a44ea9d51b6a58b30d974d Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 12:17:49 +1000 Subject: [PATCH 76/85] Test out image in readme --- .../SuperResolutionShanJiang/high_res_train.png | Bin 0 -> 14743 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/high_res_train.png diff --git a/recognition/SuperResolutionShanJiang/high_res_train.png b/recognition/SuperResolutionShanJiang/high_res_train.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3fab8dd09b06e031fa23c59cd2c4601fa28432 GIT binary patch literal 14743 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 literal 0 HcmV?d00001 From 8facf9d73db9dd2f55d9ae99641b1a87eb210631 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 12:54:09 +1000 Subject: [PATCH 77/85] Test out image in readme --- recognition/SuperResolutionShanJiang/train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 07be58f17..73e90ebb3 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -33,7 +33,7 @@ def on_epoch_end(self, epoch, logs=None): train_psnr_history.append(np.mean(self.psnr)) - if epoch % 9 == 0 and epoch!= 0: + if (epoch+1) % 10 == 0 and epoch!= 0: # Plot loss history after every 10 epoch and save the plot plt.figure(figsize=(10, 6)) plt.plot(train_loss_history, label='Training Loss', color='blue') From 2f361acb709720104755b5319044530db869b682 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 12:55:51 +1000 Subject: [PATCH 78/85] Delete unwanted files --- .../SuperResolutionShanJiang/.gitattributes | 215 ------------------ .../high_res_train.png | Bin 14743 -> 0 bytes recognition/SuperResolutionShanJiang/im.jpg | Bin 3851 -> 0 bytes 3 files changed, 215 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/.gitattributes delete mode 100644 recognition/SuperResolutionShanJiang/high_res_train.png delete mode 100644 recognition/SuperResolutionShanJiang/im.jpg diff --git a/recognition/SuperResolutionShanJiang/.gitattributes b/recognition/SuperResolutionShanJiang/.gitattributes deleted file mode 100644 index e126f2a83..000000000 --- a/recognition/SuperResolutionShanJiang/.gitattributes +++ /dev/null @@ -1,215 +0,0 @@ -## GITATTRIBUTES FOR WEB PROJECTS -# -# These settings are for any web project. -# -# Details per file setting: -# text These files should be normalized (i.e. convert CRLF to LF). -# binary These files are binary and should be left untouched. -# -# Note that binary is a macro for -text -diff. -###################################################################### - -# Auto detect -## Handle line endings automatically for files detected as -## text and leave all files detected as binary untouched. -## This will handle all files NOT defined below. -* text=auto - -# Source code -*.bash text eol=lf -*.bat text eol=crlf -*.cmd text eol=crlf -*.coffee text -*.css text diff=css -*.htm text diff=html -*.html text diff=html -*.inc text -*.ini text -*.js text -*.json text -*.jsx text -*.less text -*.ls text -*.map text -diff -*.od text -*.onlydata text -*.php text diff=php -*.pl text -*.ps1 text eol=crlf -*.py text diff=python -*.rb text diff=ruby -*.sass text -*.scm text -*.scss text diff=css -*.sh text eol=lf -.husky/* text eol=lf -*.sql text -*.styl text -*.tag text -*.ts text -*.tsx text -*.xml text -*.xhtml text diff=html - -# Docker -Dockerfile text - -# Documentation -*.ipynb text eol=lf -*.markdown text diff=markdown -*.md text diff=markdown -*.mdwn text diff=markdown -*.mdown text diff=markdown -*.mkd text diff=markdown -*.mkdn text diff=markdown -*.mdtxt text -*.mdtext text -*.txt text -AUTHORS text -CHANGELOG text -CHANGES text -CONTRIBUTING text -COPYING text -copyright text -*COPYRIGHT* text -INSTALL text -license text -LICENSE text -NEWS text -readme text -*README* text -TODO text - -# Templates -*.dot text -*.ejs text -*.erb text -*.haml text -*.handlebars text -*.hbs text -*.hbt text -*.jade text -*.latte text -*.mustache text -*.njk text -*.phtml text -*.svelte text -*.tmpl text -*.tpl text -*.twig text -*.vue text - -# Configs -*.cnf text -*.conf text -*.config text -.editorconfig text -.env text -.gitattributes text -.gitconfig text -.htaccess text -*.lock text -diff -package.json text eol=lf -package-lock.json text eol=lf -diff -pnpm-lock.yaml text eol=lf -diff -.prettierrc text -yarn.lock text -diff -*.toml text -*.yaml text -*.yml text -browserslist text -Makefile text -makefile text -# Fixes syntax highlighting on GitHub to allow comments -tsconfig.json linguist-language=JSON-with-Comments - -# Heroku -Procfile text - -# Graphics -*.ai binary -*.bmp binary -*.eps binary -*.gif binary -*.gifv binary -*.ico binary -*.jng binary -*.jp2 binary -*.jpg binary -*.jpeg binary -*.jpx binary -*.jxr binary -*.pdf binary -*.png binary -*.psb binary -*.psd binary -# SVG treated as an asset (binary) by default. -*.svg text -# If you want to treat it as binary, -# use the following line instead. -# *.svg binary -*.svgz binary -*.tif binary -*.tiff binary -*.wbmp binary -*.webp binary - -# Audio -*.kar binary -*.m4a binary -*.mid binary -*.midi binary -*.mp3 binary -*.ogg binary -*.ra binary - -# Video -*.3gpp binary -*.3gp binary -*.as binary -*.asf binary -*.asx binary -*.avi binary -*.fla binary -*.flv binary -*.m4v binary -*.mng binary -*.mov binary -*.mp4 binary -*.mpeg binary -*.mpg binary -*.ogv binary -*.swc binary -*.swf binary -*.webm binary - -# Archives -*.7z binary -*.gz binary -*.jar binary -*.rar binary -*.tar binary -*.zip binary - -# Fonts -*.ttf binary -*.eot binary -*.otf binary -*.woff binary -*.woff2 binary - -# Executables -*.exe binary -*.pyc binary -# Prevents massive diffs caused by vendored, minified files -**/.yarn/releases/** binary -**/.yarn/plugins/** binary - -# RC files (like .babelrc or .eslintrc) -*.*rc text - -# Ignore files (like .npmignore or .gitignore) -*.*ignore text - -# Prevents massive diffs from built files -dist/* binary \ No newline at end of file diff --git a/recognition/SuperResolutionShanJiang/high_res_train.png b/recognition/SuperResolutionShanJiang/high_res_train.png deleted file mode 100644 index 5b3fab8dd09b06e031fa23c59cd2c4601fa28432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14743 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 diff --git a/recognition/SuperResolutionShanJiang/im.jpg b/recognition/SuperResolutionShanJiang/im.jpg deleted file mode 100644 index 20571172c7b85c78b0c1978a97d379f01cb898b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3851 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 i_~uEHunXv0SYE(xMf7i8f5f+9Ej# Date: Mon, 23 Oct 2023 13:23:55 +1000 Subject: [PATCH 79/85] Uploaded loss plot for readme --- .../readme_images/loss_plot.png | Bin 0 -> 39530 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/readme_images/loss_plot.png diff --git a/recognition/SuperResolutionShanJiang/readme_images/loss_plot.png b/recognition/SuperResolutionShanJiang/readme_images/loss_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..7649825bf1a84222f6585f19b4bf10dd636a2076 GIT binary patch literal 39530 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%0D*rD&Sr0M>EChvZ9q*N4?3qN3vD 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 Date: Mon, 23 Oct 2023 14:00:44 +1000 Subject: [PATCH 80/85] Added line number and more images in readme --- .../SuperResolutionShanJiang/README.md | 48 +++++++++--------- .../SuperResolutionShanJiang/dataset.py | 4 -- .../SuperResolutionShanJiang/predict.py | 16 +++--- .../readme_images/prediction.jpeg | Bin 0 -> 39314 bytes recognition/SuperResolutionShanJiang/train.py | 11 ++-- 5 files changed, 38 insertions(+), 41 deletions(-) create mode 100644 recognition/SuperResolutionShanJiang/readme_images/prediction.jpeg diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 2800689be..e780be826 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,21 +1,21 @@ # Brain MRI super-resolution network ## Introduction -This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training and testing achives mean PSNR of 28.82 and 24.83 WITH loss of 0.0013 and? respectively. +This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training achieves mean PSNR of 28.82 with loss of 0.0013 testing achieves mean PSNR of 27.56, which is higher than mean PSNR of arbitary lower resolution images (25.96). ## Getting Started ### Install the required dependencies pip install -r recognition/SuperResolutionShanJiang/requirements.txt ### Loading dataset -The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing image is also created for later use. +The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing and prediction image is also created for later use. Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. -![A high resolution MRI image](readme_images/high_res_train.png) -![A low resolution MRI image](readme_images/low_res_train.png) +![A high resolution MRI image](./readme_images/high_res_train.png) +![A low resolution MRI image](./readme_images/low_res_train.png) To run dataset.py, follow these steps in `dataset.py`: -1. Creat a folder in the same directory as the python file and put images for training inside. Specify the exact directory of this folder at line ?? by altering the value of variable `data_dir`. -2. Creat a folder in the same directory as the python file and put images for testing inside. Specify the exact directory of this folder at line ?? by altering the value of variable `test_path`. -3. Creat a folder in the same directory as the python file and put images for prediction inside. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` -4. (optional) change the value of `upscale_factor` at line ?? to downsample your training and validation images by a different ratio -5. Change the values of `crop_width_size` at line ?? and `crop_height_size` in line ?? to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. -6. (optional) Adjust batch size for training and validation by changing the value of `batch_size`at line ??. +1. Creat a folder in the same directory as the python file and put images for training inside. Specify the exact directory of this folder at line 20 by altering the value of variable `training_dir`. +2. Creat a folder in the same directory as the python file and put images for testing inside. Specify the exact directory of this folder at line 80 by altering the value of variable `test_path`. +3. Creat a folder in the same directory as the python file and put images for prediction inside. Specify the exact directory of this folder at line 95 by altering the value of variable `prediction_path`. Those images is used to provide a demo of the prediction result of the model in `predict.py` +4. (optional) change the value of `upscale_factor` at line 14 to downsample your training and validation images by a different ratio +5. Change the values of `crop_width_size` at line 16 and `crop_height_size` in line 15 to make sure they are less than or equal to the orginal width and height of the images, and is divisible by `upscale_factor`. +6. (optional) Adjust batch size for training and validation by changing the value of `batch_size`at line 17 7. run `dataset.py` ### Building model The model structure is defined in `modules.py`. using keras framwork. The structure of the model is as following: @@ -32,30 +32,32 @@ Two functions are defined in `utils.py`. ### Model training Model training, validation and testing is are implemented in `train.py`. #### Training and validation -`ESPCNCallback` class is used to monitor and display the accumulating mean PSNR after each epoch; and the plots of loss function (for both training and validation) vs epoch number are saved to specified directory after every 10 epochs. Mean Squared Error is used as the loss function and Adam is used as the optimiser. `early_stopping_callback` is set so that the training stops automatically if loss does not improve for 10 consecutive epochs. During training, the best(resultin in minimul loss) model weight is saved to specified path. The following image is the plot of loss over epoch for the entire training process (epoch 1 to 60). +`ESPCNCallback` class is used to monitor and display mean PSNR after each epoch; and the plots of loss function (for both training and validation) vs epoch number are saved to specified directory after every 10 epochs. Mean Squared Error is used as the loss function and Adam is used as the optimiser. `early_stopping_callback` is set so that the training stops automatically if loss does not improve for 10 consecutive epochs. During training, the best(the one result in in minimal loss) model weight is saved to specified path. The following image is the plot of loss over epoch for the entire training process (epoch 1 to 60). +![loss for each epoch during training](./readme_images/loss_plot.png) To run model training, do following in `train.py`: -1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` +1. Make sure the value of `upscale_factor` at line 12 is the same as the one defined in `dataset.py` 2. Make sure training dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) -3. Creat a empty folder in the same directory as the python files to save the weights. Specify the exact directory of this folder at line ?? by altering the value of variable `checkpoint_filepath`at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". -4. Creat a empty folder in the same directory as the python files to save the loss plots. Specify the exact directory of this folder at line ?? by altering the value of variable `loss_plot_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". -5. Comment out code for testing (from line ??? to line ???) +3. Creat a empty folder in the same directory as the python files to save the weights. Specify the exact directory of this folder at lineby altering the value of variable `checkpoint_filepath`at line 16. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +4. Creat a empty folder in the same directory as the python files to save the loss plots. Specify the exact directory of this folder at line ?? by altering the value of variable `loss_plot_path` at line 13. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +5. Comment out code for testing (from line 88 to line 117) 6. run `train.py` #### Testing During model testing, the images are first downsampled by passing them to the functions `get_lowres_imageget_lowres_image(img, upscale_factor)` and then a reconstructed high resolution version is predicted using the model. The average PSNR of lower resolution images and prediction are calculated to verify the effectiveness of the model (PSNR of prediction should be higher than lower resolution images) To run model testing, do following in `train.py`: -1. Make sure the value of `upscale_factor` at line ?? is the same as the one defined in `dataset.py` +1. Make sure the value of `upscale_factor` at line 12 is the same as the one defined in `dataset.py` 2. Make sure the model has been trained and weights have been saved (see training part) 3. Make sure testing dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc ) -4. Comment out code for training (from line ??? to line ???) +4. Comment out code for training (from line 18 to line 85) 5. run `train.py` ### Prediction -Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are downsampled, predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. The following figures show an example of the figure. +Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are chosen to be downsampled and predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. The following figures show an example of the figure. ![prediction figure](./readme_images/prediction.jpeg) To run this file, do following in `predict.py`: -2. Make sure the model has been trained and weights have been saved (see training part) -3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) -4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". -5. run `predict.py` -![example](im.jpg) +2. Make sure the model has been trained and weights have been saved (see training part). +3. Make sure the value of `prediction_result_path` at line 17 is the same as `prediction_result_path` defined in `train.py`. +4. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) +5. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at by altering the value of variable `prediction_result_path` at line 22. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +6. run `predict.py` + diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index f499633b3..e48d6bd42 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -49,10 +49,6 @@ def scaling(input_image): train_ds = train_ds.map(scaling) valid_ds = valid_ds.map(scaling) -# for batch in train_ds.take(1): -# for img in batch: -# display(array_to_img(img)) - # A fucntion that turns given image to grey scale and crop it def process_input(input,input_height_size,input_width_size): input = tf.image.rgb_to_yuv(input) diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index 4dde01108..58e669500 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -59,24 +59,24 @@ # Create a figure with three subplots fig, axes = plt.subplots(1, 3, figsize=(12, 4)) - # Display the first image in the first subplot + # Display the high redolution image in the first subplot axes[0].imshow(image1) - axes[0].set_title('Image 1') + axes[0].set_title('high redolution') - # Display the second image in the second subplot + # Display the low redolution image in the second subplot axes[1].imshow(image2) - axes[1].set_title('Image 2') + axes[1].set_title('low redolution') - # Display the third image in the third subplot + # Display the prediction image in the third subplot axes[2].imshow(image3) - axes[2].set_title('Image 3') + axes[2].set_title('prediction') # Adjust spacing between subplots plt.tight_layout() # Save the plot - filename = os.path.basename(img) - plt.save(prediction_result_path+filename) + filename = os.path.basename(os.path.basename(prediction_img_path)) + plt.savefig(prediction_result_path+filename) print("PSNR of lowres images is %.4f" % (bicubic_psnr / 10)) print("PSNR of reconstructions is %.4f" % (test_psnr / 10)) diff --git a/recognition/SuperResolutionShanJiang/readme_images/prediction.jpeg b/recognition/SuperResolutionShanJiang/readme_images/prediction.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2c941b49b4c6679f8f381b55ffc5a47f9ab0aacf GIT binary patch literal 39314 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%0DwehgrI&TLz#11W-&Y=_)QU zd7PJwP8(>bzDi>Kz@O93>P_F!;>!wXW%YY0kS%E!fz^nHG~gx(p!ApeFB;Vm#=Vat z%M+|;nAa91`+E;m7uK_6a2@e#m+Iz^E69%qC07P%bQ_P5wQB9==eI_*39NKLZ>%12 z9t_DObWk*TcH+F9{2bE6-oj8D34@CwR{BxsWmR(kc1ugM52S@T{W+pM$JjhM?41eh zp&@6Th)TINQm_WYHQkodW>qI&b;E=ZM}~G-vHx$Wj>B2B#06)M&_`I^kv4> zvBBatk+*nlq}2>zxQdyOmSz5$ubcn_5<@6p{x7&d#M;c)x0xn%1@(1MJQL1Yxk_;a zwBWrIlSn&wW1Z9Y2c@e=QZ4WD4RkHi-yE~Bv6UuCo;R1$a`bgph6(ubj7BPQ&Uf^cLyTf|&=y;X( zp@zDK3Iz2fr=39Im6m@ock-;<=<(eOGm2?>ZCxz4re84503*ZtH+X=9hUhB@{3ol$ Pf25-PKY5PWPc#1q@j~Z2 literal 0 HcmV?d00001 diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index 73e90ebb3..bd4c182c6 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -12,6 +12,9 @@ upscale_factor = 4 loss_plot_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/loss_plot/' +# Path to save model parameters +checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/checkpoint/" + train_loss_history = [] valid_loss_history = [] train_psnr_history = [] @@ -52,10 +55,6 @@ def on_test_batch_end(self, batch, logs=None): # Stop training when loss does not improve for 10 consecutive epochs early_stopping_callback = keras.callbacks.EarlyStopping(monitor="loss", patience=10) -# Path to save model parameters -checkpoint_filepath = "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/checkpoint/" -# checkpoint_filepath = "H:/final_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/tmp/checkpoint/" - # Save model parameters at checkpoint during training model_checkpoint_callback = keras.callbacks.ModelCheckpoint( filepath=checkpoint_filepath, @@ -114,8 +113,8 @@ def on_test_batch_end(self, batch, logs=None): total_bicubic_psnr += bicubic_psnr total_test_psnr += test_psnr -print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / 10)) -print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / 10)) +print("Avg. PSNR of lowres images is %.4f" % (total_bicubic_psnr / len(get_test_img_paths()))) +print("Avg. PSNR of reconstructions is %.4f" % (total_test_psnr / len(get_test_img_paths()))) From 2980d0489ff05c1e3c236a563e749fb0162a7f80 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 14:11:33 +1000 Subject: [PATCH 81/85] Fixed erros in readme --- recognition/SuperResolutionShanJiang/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index e780be826..c3996c199 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -52,11 +52,11 @@ To run model testing, do following in `train.py`: ### Prediction Example usage of this model is shown in `predict.py`. In this file, 10 images from testing daaset are chosen to be downsampled and predicted using the model. For each image, we show the lower resolution version, higher resolution version and prediction in one figure and saved in specified directory. The following figures show an example of the figure. ![prediction figure](./readme_images/prediction.jpeg) To run this file, do following in `predict.py`: -2. Make sure the model has been trained and weights have been saved (see training part). -3. Make sure the value of `prediction_result_path` at line 17 is the same as `prediction_result_path` defined in `train.py`. -4. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) -5. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at by altering the value of variable `prediction_result_path` at line 22. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". -6. run `predict.py` +1. Make sure the model has been trained and weights have been saved (see training part). +2. Make sure the value of `checkpoint_filepath` at line 17 is the same as `checkpoint_filepath` defined in `train.py`. +3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) +4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at by altering the value of variable `prediction_result_path` at line 22. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". +5. run `predict.py` From 9510efab27d94a67ccdc0804945dcc0df9bfc410 Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 19:53:43 +1000 Subject: [PATCH 82/85] added references --- recognition/SuperResolutionShanJiang/README.md | 2 ++ recognition/SuperResolutionShanJiang/dataset.py | 6 ++++++ recognition/SuperResolutionShanJiang/modules.py | 7 +++++++ recognition/SuperResolutionShanJiang/predict.py | 7 +++++++ recognition/SuperResolutionShanJiang/train.py | 8 +++++++- recognition/SuperResolutionShanJiang/utils.py | 6 ++++++ 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index c3996c199..589d42d2d 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -57,6 +57,8 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at by altering the value of variable `prediction_result_path` at line 22. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` +### References +Long X. (2020). Image Super-Resolution using an Efficient Sub-Pixel CNN. https://keras.io/examples/vision/super_resolution_sub_pixel/ diff --git a/recognition/SuperResolutionShanJiang/dataset.py b/recognition/SuperResolutionShanJiang/dataset.py index e48d6bd42..f2ea666b4 100644 --- a/recognition/SuperResolutionShanJiang/dataset.py +++ b/recognition/SuperResolutionShanJiang/dataset.py @@ -8,6 +8,12 @@ from keras.preprocessing import image_dataset_from_directory from IPython.display import display +# Reference +""" Title: Image Super-Resolution using an Efficient Sub-Pixel CNN +Author: Xingyu Long +Date: 28/07/2020 +Availability: https://keras.io/examples/vision/super_resolution_sub_pixel/""" + #Set parameters for cropping crop_width_size = 256 crop_height_size = 248 diff --git a/recognition/SuperResolutionShanJiang/modules.py b/recognition/SuperResolutionShanJiang/modules.py index f6d62bf8c..6698a81dc 100644 --- a/recognition/SuperResolutionShanJiang/modules.py +++ b/recognition/SuperResolutionShanJiang/modules.py @@ -2,6 +2,13 @@ from tensorflow import keras from keras import layers + +# Reference +""" Title: Image Super-Resolution using an Efficient Sub-Pixel CNN +Author: Xingyu Long +Date: 28/07/2020 +Availability: https://keras.io/examples/vision/super_resolution_sub_pixel/""" + def get_model(upscale_factor=4, channels=1): """build a super-resolution model diff --git a/recognition/SuperResolutionShanJiang/predict.py b/recognition/SuperResolutionShanJiang/predict.py index 58e669500..cf56ff62e 100644 --- a/recognition/SuperResolutionShanJiang/predict.py +++ b/recognition/SuperResolutionShanJiang/predict.py @@ -13,6 +13,13 @@ import math import matplotlib.pyplot as plt + +# Reference +""" Title: Image Super-Resolution using an Efficient Sub-Pixel CNN +Author: Xingyu Long +Date: 28/07/2020 +Availability: https://keras.io/examples/vision/super_resolution_sub_pixel/""" + # load the trained model checkpoint_filepath= "D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/checkpoint/" model = get_model() diff --git a/recognition/SuperResolutionShanJiang/train.py b/recognition/SuperResolutionShanJiang/train.py index bd4c182c6..a461cdaac 100644 --- a/recognition/SuperResolutionShanJiang/train.py +++ b/recognition/SuperResolutionShanJiang/train.py @@ -9,6 +9,12 @@ import math import matplotlib.pyplot as plt +# Reference +""" Title: Image Super-Resolution using an Efficient Sub-Pixel CNN +Author: Xingyu Long +Date: 28/07/2020 +Availability: https://keras.io/examples/vision/super_resolution_sub_pixel/""" + upscale_factor = 4 loss_plot_path = 'D:/temporary_workspace/comp3710_project/PatternAnalysis_2023_Shan_Jiang/recognition/SuperResolutionShanJiang/loss_plot/' @@ -74,7 +80,7 @@ def on_test_batch_end(self, batch, logs=None): optimizer = keras.optimizers.Adam(learning_rate=0.001) #Train and validate the model -epochs = 60 +epochs = 100 model.compile( optimizer=optimizer, loss=loss_fn, diff --git a/recognition/SuperResolutionShanJiang/utils.py b/recognition/SuperResolutionShanJiang/utils.py index fbe35863b..89436c8b4 100644 --- a/recognition/SuperResolutionShanJiang/utils.py +++ b/recognition/SuperResolutionShanJiang/utils.py @@ -5,6 +5,12 @@ import numpy as np from keras.utils import img_to_array +# Reference +""" Title: Image Super-Resolution using an Efficient Sub-Pixel CNN +Author: Xingyu Long +Date: 28/07/2020 +Availability: https://keras.io/examples/vision/super_resolution_sub_pixel/""" + # downsamples given image by ratio of given upscale_factor. def get_lowres_image(img, upscale_factor): return img.resize( From 207eefd2db02563ddfbba93ac01e1d040310f7ca Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 19:56:10 +1000 Subject: [PATCH 83/85] Added link for dataset in readme --- recognition/SuperResolutionShanJiang/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 589d42d2d..6ad26b496 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -5,7 +5,8 @@ This project implemented a super-resolution CNN network trained on the ADNI brai ### Install the required dependencies pip install -r recognition/SuperResolutionShanJiang/requirements.txt ### Loading dataset -The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing and prediction image is also created for later use. +The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing and prediction image is also created for later use. The dataset is can be found at [ADNI MRI Dataset (2D slices) +](https://cloudstor.aarnet.edu.au/plus/s/L6bbssKhUoUdTSI) Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. ![A high resolution MRI image](./readme_images/high_res_train.png) ![A low resolution MRI image](./readme_images/low_res_train.png) From 7a1c8036f7d31739e1fc793cacb82f70af10bc0d Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 19:57:19 +1000 Subject: [PATCH 84/85] split a paragraph in readme --- recognition/SuperResolutionShanJiang/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 6ad26b496..9d6bb7f9c 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -7,6 +7,7 @@ pip install -r recognition/SuperResolutionShanJiang/requirements.txt ### Loading dataset The dataset used for training(and validation) and testing is loaded in `dataset.py`.The images are cropped into specified size (256*248 in our case). 20% of the training dataset is reserved for validation. Pixel values of traning and validation images are rescales to range of 0 to 1. A list of path for each testing and prediction image is also created for later use. The dataset is can be found at [ADNI MRI Dataset (2D slices) ](https://cloudstor.aarnet.edu.au/plus/s/L6bbssKhUoUdTSI) + Then we produce pairs of high resolution and loss resolution images from the training and validation dataset. To get high resolution images,we convert images from the RGB color space to the YUV colour space and only keeps Y channel. To get low recolution version, we convert images from the RGB color space to the YUV colour space,only keeps Y channel and resize them by certain ratio (4 in our case) so that their resolution is reduced. Each pair is put into a tuple to be fed into the model for training. The following images show exmaple of a high resolution image and the corresponding low resolution image. ![A high resolution MRI image](./readme_images/high_res_train.png) ![A low resolution MRI image](./readme_images/low_res_train.png) From f93ffc128b3a4db113fe1183edc1a48144f15cdf Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 20:16:07 +1000 Subject: [PATCH 85/85] Added note for marker in readme --- recognition/SuperResolutionShanJiang/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 9d6bb7f9c..3a5ef9bd3 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -1,3 +1,4 @@ +Note: Sorry that the images in this repo hence this readme cannot load properly, please check Turnitin submission of the readme file to look at images included in this doc. Sorry for the inconvenience. # Brain MRI super-resolution network ## Introduction This project implemented a super-resolution CNN network trained on the ADNI brain dataset. The trained model can convert a low resolution image into a high resolution version. The CNN consists of four convolutional layers followed by a depth-to-space transformation. The dataset used in training and testing is ADNI dataset, including 2D slices of MRI for both Alzheimer’s disease patients (AD) and health control (HC). For our purpose, dataset for AD and HC are combined together into one dataset (since our model do not deal with classification). The training achieves mean PSNR of 28.82 with loss of 0.0013 testing achieves mean PSNR of 27.56, which is higher than mean PSNR of arbitary lower resolution images (25.96).
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 vuW&>YdpHD4Q4J8w&Lb_09W;g1$sTt97my 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%0A1WvK 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 Date: Mon, 23 Oct 2023 10:33:02 +1000 Subject: [PATCH 69/85] Test out image in readme --- recognition/SuperResolutionShanJiang/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recognition/SuperResolutionShanJiang/README.md b/recognition/SuperResolutionShanJiang/README.md index 0d3d0caab..d36bc0dfd 100644 --- a/recognition/SuperResolutionShanJiang/README.md +++ b/recognition/SuperResolutionShanJiang/README.md @@ -55,7 +55,7 @@ To run this file, do following in `predict.py`: 3. Make sure prediction dataset is well defined in `dataset.py`. (Refer to "Loading dataset" of this doc) 4. Creat a empty folder in the same directory as the python files to save the example figures. Specify the exact directory of this folder at line ?? by altering the value of variable `prediction_result_path` at line ??. Make sure add a "/" at the end of the path, for example: "exact/path/to/the/folder/". 5. run `predict.py` -![example](./im.jpg) +![example](https://camo.githubusercontent.com/722283a1bf8e4c866a781df40eb8ba7452dba3b86db00008898854583837ed82/68747470733a2f2f6c6f63616c73656e642e6f72672f696d672f73637265656e73686f742d6970686f6e652e77656270) From cc647b288324ecaa5e99fb0be929712f100bef2a Mon Sep 17 00:00:00 2001 From: Ericliol Date: Mon, 23 Oct 2023 10:35:35 +1000 Subject: [PATCH 70/85] Test out image in readme --- .../18-oo-patterns.png | Bin 355916 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recognition/SuperResolutionShanJiang/18-oo-patterns.png diff --git a/recognition/SuperResolutionShanJiang/18-oo-patterns.png b/recognition/SuperResolutionShanJiang/18-oo-patterns.png deleted file mode 100644 index f257d6f513b3fff510e366ae687f7880a000be3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355916 zcmeFZb8uzb_AnZC&>h>hZFbbb?sRP1wrv}oq?3+q+qRu_Y&&^7=bj(lS9QO8{(o;* zt(tSqjOpPqRziP#7l-?d{TT!V1Ww|ch#UwA)G7!Fv==lOuw|LEW&v1$+RKT51t}lL zJp{hQ7^+AZ0RSM>z&bPtBq$^Z_y-6G5FQly?>Z>3jt%nZuXYd+B~YCIu4{o({ttYx zDG0>hFh;=gmLPB0U10!xZ5wX9!1K;?F zO&lC-xEUCnot^2OS?I0pj2W1?xVRV?nHiXw>3|S)_O4bAx-N89_9Xur@krtINO_}Jex$)mv97kYwUx{}RFF6ZniT9m6qQfV z7Mic5%z+|=NZ%lkeg8wT7}&{=6lBIWQKdf+b#-u#rmRur`FwYTlKY$IAN4m!Qc+V| zuD4wAdOmG#=O( z<+>#24=#6C>uU#M97mx^760+X{~9MdTySf*>TFHfqrCN?E`#KJ78{jc?rnLY{jPWN zF!euQ^9LrpLTlI!kG=TCO|Aux0AwF zo`7f%$$!E(*jd0#sX9`nIIffaGp<*bBdX9zJvt^1DUknP&{1a$QDyygrRurC^V#V= zT&4p|N=oYa^v!bZ^%x<;8s$TtE;a)3y2Eyap6%buG96DMn?9g0wdwk_pXq+KWSr$W zuWJ0$Y1y6@IFKe|To&wsnwPVTQdK#?2rP~mxMuKm!B(SDU!;c?%x(e@`!>c^?D z#UDfAO8arH{f9Mylb2X={Ks5@r(AIY&zswF=QeP7P93~m7Db7Vv)9oDvJq{}Zq$FT za&)dog1q73y;ntho&=zL*Fi;y=AY?%@VqqPd1l|x*hhEfGQhKbmDC_I zGeJa=`~JiVQx`3JKcb%*JfV%*u6$NjALGv^MRbMFfGwPWsurt#j8e~IYM{;z}* zkCBR6MV9|wH9P(U`umYW;Bly-Cu{ow=AHhrPSf79SRvP|$^cf3D$yk85v zUjvcPjV}|Q!F$zqVC|uw<83JGWr#@Zo`o#U_b>cc(f_~={Z5vqe=juH!NHQXy&l~+ zp4V%}xl1zH{bL254sw@j-X{@WCq1}C8aFl}IdpVoz_tn>heufYy@8PXM+?BopRQph zRQ{4Lr6>?e{1fIsDbvjUZ+dSj0YnDN&Pm$vp!`W;Zj{@FKLIZXiFVCiLi+jZ`gz;A z=ehgJ%KCg0N1yiBjkmjoXo0r}vqbHlf`197$Us50Ve8T>NlO%8xadyT{h!A7dUy(_ zu`i9}gIhuN6m2>;O*3O5A5=(%wAk+1qDq!t4M=Sno!t}DxmgZhdJOh{fC`2e*aSs* zcsqZ88;jK1qyLM`0DOFyV7*?dN9apXn_TA^-nJRITkg{ zBQ))|o#pvI0LflS&NgIhK;Z521FOf2Du{wPMNZa*S43)&D<}A$IUm|rrB_Ha*HfUL%fc+bb=>fa#fE%WMOr zh!Z&I)@`&3m#J_q1C6)E0sgxp8PB8jm|Z}Yxc$QWv-kTskhVit*3O(#b^)!c%xISRoFQ%&+Y1Vkcz~6Ul z`h9T|ls_{uynk8;D*Rx0t2&D)UgsX4q?0jo$=38E;vr0n!Ych1fee)o1p9H5I{xQ| zyIF{sm9kXf6z^&64FAn9gvaMWaelkYmySI@6eZLvpv-I2OTpaa1Jbzn%YZkh(uvo7 z3jsGn`;qgC)NOr3+nC~}-2$Ac{9MJ`QAHY?=6&YAoxKcs4gcHVrh5+W;~d{xjQX8tbg9gaV8Cx}>?nHhLJ3*<5@@ zU(dUmEX~-`%xf+?X?_ALESkT_3Js}qk^fkAA}r}@aLFH@8@eH+Ru^n{zzo06bF&V< z*}!yQp&{$KZ1;L%!)pm`geQM__?&n>*~tp{`k1V75qX|*y=$G}ePx=Q>A2p9q1oM0 z=&%V21w`iiwtHo~E6-!~k?vCRN4_hL zNg96wu`+46#oAkca(TfXHzGbOuj};pUYVDGj&EhYyo-?C2Ko@rvL@mJ{>$C~pI~-m;wZEWlP-J*7Qztz3?6aO%J6=XQUh=e`@-kys+T40@ z)-TjMZq;*I|Bx}bZhg^yxCj>T=sR!=*%x?!q{kXqX@BTrFrul|OMt@@#0hA4tyt@j z@qU`YCZ|nz>M)SRF#z4m=V&{ecp05|nRtH`;MhhtTGA!e8i96y07}G_P?tGld2arz z*yxu#>-YL;+)SQuOXsE$&9{?@H;Y~b8?~dvSd31v#af-27mNsgfW^~2iBENHc3vXq zRsaesW}1VP^Q-L9N-*yqqGBaa>49S6%0uDX`86!#WTV-!W6gFs9KT#QlEWnORZthO|FOK7H^LjZyCTfPnugzk&0p7RQ3; zI(wx4q-J8Aj>k#8M@G`XbYy%tZ-k-oV6`H{Zn@w)?{lwwy>>|W0^G551^G;a^@i;e zY5Ir+vh(BA@CgGl{LEK$?;!qaBc*Wp=3~usv-_3h6+n)8I2CfRBmD1EMC4KdZI(8+ z`i2cWFmQb$`%+g<)j{atZ--XSE$O*b^IloLpG`%!81w)|r%V3!LdHkM#GYpN6U0yn zFAp?I9e#9{9WBqshtT(*`1HTyo*~-D_~ylT%~OCKd&Xr~zrAj}zXEBIpwE_ze8G9V zxt>6tym`DR1j)VI-2T&DU1i!i4ExI*khrrJIzK40nV9NBQN2m56}ai&Sx$W(DR10}czWZUm$5>IU#&wM8yqK>aTv+INPKU7d!-{!PLgxBhK z+>G@8NZAcPF-5z=dUyndQ^weG5P+#XhzmSTy_%QsH93KRNhv;4x_AF6=|ftSQoHT* zm4rFQ1)a&;2QopWWQwCA^#<;P`|0F%)Q$_Fa1D0Sa1>rn)ZjZ^E}AJjN{upwE=695 z(Z4eFDe(SF_X;Q3WKAiL(bU*cv>;JSHD#0^6s~Yz)D^J%bN})HK;YVTzvFojgqqbM zTWPddY&hq9SKoM@?|8p==D+Ma#n5Q9Jg#4B>yguCa?UcV;hDa=;@Z!g5zBg$Cctx; zGjr>t**F>Y@jrLYioZ^3XzgR}Sv&W-XX96Za}XnsV2@FQov>YH`H5Mjhp!B)<0J$1 z(4*VeNha7e76)5L=gTM|!X#6pk4b5tuQSLRjLL+kqr3&Hdq+Rcx$M7(1Y)4Irw~`+ zu}kAX^B_Gc3yMWS_1honhpuz;%uig37${IcfccC|xw9O8s$bh_cbVgXn-~H4clOTW z%c+_Tx(k%d3kaNqle$9$u0NK)wb>+IWiv8|asl=aGChuU3+S!G36id#W!~uyql~FRRLM~iGYl8 zch;@iJZrU-n=CY6#kAT1BJrppW4eUDof86Ja8%Kqb1BEt=J8spgVz)M_pJz?SG6+U zmq86peOnD}yIsNB*2izp)nOfKZ`0FPQFz9$_X{0QZ||JBittH4rxnGtx6XUT zml=jNwT4;X_dJ`E{*M|iPfJqj75u&Vl9_Y5X`6q}LXH3Ah@^ho4xeo4OZWl#g(3P! z^U|0VySdtRAO{<}Vflp|NY#ivLfloHSjBtv`=vlL7g%hyQO0-OJZ-SeT|CGKpxS;u z{;Hlw-(CX4rt*DKoJ&o$i=7d7mE^{6c4?4jQl+cU`gev1goIcIdGYYpIvkc@ zJk^#bC#IBDFCV=9n38{UO#TE=ij_;aZd`k$8kdAmM%&h9Nu*&p$UF z@!+g(o!P%TGHi$Vza3Z^m{Dac>k25}bnMbuA4WVM)R?ZK!?<5!p3_yyB-v|T`#c+1LX5Z$IeJ(Fh5BMFyFQ|HLCVrQaH_-FD`*_U z{b?y(k-O_FYPXS!+(oB?5E%svJ%cq7Gp*9R@JtnP_#qdaIwc~ky}&!?P&>8MzaoEr zO!+XiJ3XLNG8aNZlzT_~@oxxgOEo1MWosjH0a%23IF9+)x(QG9bSw0nw>KyoE~~Bu znU~;``qgFbaba0{5#haSr0+pO(&(-4W|v~Ntz10<_~o02#fdGI2z|}4KHsv zt5<_HGEaNSZ-*O6^;RWR{n(rB?f61gmK)I+8^ZCck^7N~h;is~>}%-z#&ram1&r<`IcIP@*6ADRda zOeTWy3~4Ho3v z%M%f2UZyxTCO?1xyIX_LaX8%{5b*5g0y@5yM3YbIL$&poJ6b*WiwNE-q}tuj#=N%* z5ZVs6_PtJdwB1I68M+3~Yb+_Ayhf_+ZSGpeyB3~fbKB3O1nf>ptQuS2ldd~F`vde3 z_GeZ=IcFv$j5|huOoN_%x3YPG)>9^i{!9Y81KI+*2eAL;!l$|T)y_BqwjuPDt)(!1 z^$+<0?Lk!$^*k&XMzibKH`gZ61Z}FiD^7iMacC>B@P}?Y!E6&S0+H4&vP>4O?}CaH zR7DnEW+`#IQ7_ZzvoEPx@5>lKqUO@(+$}kOTl`e;v&}I}(M)H~aiKljPiWfWWP@YT?ZnhmPTN(e5$I99OVI5?h;0$y=AD9A}M=5mjK8I^KKl zUHOyh?fV*k$#Kn*`YwZ8me@RUktN{%`Eg%h%)PW+HCG+bWqlaBEz*1X~(%_QBHP?iYVpt zEkAr2B@@Nm7Oi?+mSIuM^*_NJ)TBvZog26}+f`*l(o_^&CfwKcgP$2*x*1L`zi?+L z9wm=Vgkc!P?<5ypsLpEL_qHb=;=vP#U1fESZZ95IA1cUgTX(3v0rWNy$U-^8#ap= zGCox)VgAAmdkqT%%Oegk^RN-}GjiRp+3@DWOOuYo`QYBMzjxm>^NXWxisOA(e&6FU zfrh?GZ(-^}O1=KH<@6=K{W{RwBd@cX=JA41Z?~OdHe`iln{?Dd%?9s>EE< zASQMfBT@Z0gQVmq6ZJOtF@>M*yuf0A(jh~h zB!N8bPT$)(aL-YAm4Ng+v4@>7isX+M7DDZ$f=o^Q%tX$bggcBVYB%&C(kQ9c?eb+Y zR5!=UeCI6Pt~3&|BsNTwNVc>`2LHZsAXU#%$a}sfb56RyzqyelA8k#PY2R$=c2&iw zX*FOq+bYGmQPn~ljkJvqH)(2* zz>#cpb@5Vfo;_bjU~x~y=gGLE=To(>_ba`ut&uFYZiiCZX7PA(>U9hJa))%*uHo`= z{MV@yA~&@sM%jKoQ0hcV%YhZ*X16s_Xu8IY5IdHTI@ve5D__Wet0RC|L3X z1p#1J{VUx?UuQmcOu0tqhBCvwU9zwmYevO9LZN!*Df8tI#elx|pmX@ulsJJU(y>!R zi)Q>y2%7%c#4lOXNP?~d5>KE<*C=~OE=>FVR{LC8Q2ogVinmi)pCyAsktqby!R;{y-|+X4mIek_E~xs zy;uF41+ZWRFv`8d4PU;&T63CJ%F^m+?ESuvu%7uV#M5a5q0!RRYPf$J{pKr-(6PR- z@jhhzKCsWwauKJQ+(K`yx@>&hXPns)p1aW;h}8Cdzmmk-=h9{JTgz=c_ z~ayeWHk?5lb(PC0P9ocVY-)-s7kM%Vo$Xstx@XiX0*)Grt*kD6oz z>6*HO8(IVmwO41n3{2%ECgZX3w?tvy4}DQ6JVewu`ph5>@0bagUOkcOXN{J zUJM1dA1^N{sVO%R8kl}mka8fOREk>27=t91GYu9sjSAZ;%)f{)i0)m-CE?nq6J8~S zMlHCg4u!%~*!*OZ;@tMK%Mi`4Bo*T}Wo+ea*(ecW6@4K4;%-6ZBIm-XuU;#cmCBHOOQHSaR=XmnVBmp2wfgsiFE;2FLi_mOy`;Vsf4S(L{I_a%n+y|XulC-yxqB^&a0?n6?I%(~(J4*sWNq2KMP?d%bZf#!_Cwb|z+ z6>8dw!R%*v=Ppp?z0~3TwEUoFr;MlNvgh;5o^8P{R?%%|CcDC9Ott>4JR8vuW_q_Z(2j^mKe$Bz@Drow#6TiT!#c{Fe>olj^Y4b|c53EmbG4j%|P{3P*6SRMO9Mc!t&udo2gNXeR* z{m&-Ali&-BKzCnt-a6NgoGnlJ3gYo;wVhJ@o=%wV9)3+Y(Nxd|&{cKJKF(T@o}UQ_ zGSb#CMf$QYPA&$= z97anDQrp2nnC8*^w5JZY;ug9!BJnV+b-B>pU*)*&luDd z0-taHOu4KN5sO)^Ruhtl>gJu0+7#)3L)Z2pQf&`=jby?Bx-1wW0`(a?bJ&X~$d}?sfRBV=7hw>x@$Xu(G&h!BB=c! z9xtw`F&%9o4Q|U; zEq~j}y3puiI}Z&h4tLjMtk^(~lG!?Gi>`e!s=W}zRSg6ZZE*8n7r(uMa#_ohbK64u z*OwWfwPxY)!>h*8AJGy{X-%eI5g*PD*`+#x^Mzs}L4Zxa2 zEGcf-=KHCn4jnuyXREj4>oUYg9H9VH1DZvtPvycsrSLS(l^u^x$NigY;+VLs9jLj~!m|GYK~TE53~dx=>=Z=GMDr1vFtSwLSL-=y~3A^46e2byib{&YdT{INAnI zD?DpRk}4!pN@<Yuk02> zpK1!$vvN?moYGi7kqB0=6}A6WL$YKzenv09coYXRXlV%|yiAfxNrRr>(;aRoNM@cO zzHur3x+P~|nFcXc!XJbS$&TFD-N)s3!0kL+uWSMFi&W_msigAdfEGk?YWG27e%@9? zR=$B;_lnZ$Qr6gJO!5~b=0OT2Z~vz{fFo+XhOaD@EA63J;L=hhPpr0sYXpD%$^%5C z)$0(eP%|15%n4(wH z-7OVh)hID{^N(iTy{XDctf48^JiD%kzgKsqYHW;R64&R#J#(ai(K)@?-g#zvgE0#I zu+N8F6RuHPRI91)t-zqw9tyaMXq7O_6YX}?h76Tv|DFZihxk+;3y&MKU!~u5kILk; zN=(6(zC^5_!ng_%=lwdO2*Ivo{p~R`V3-C?Ef~o^^?G1{&8g-!+Q=|1Xxf_1jMh&M zwQnz^PWEPNUSE{Dwf&Y%+1Zwrz)42nml`)>tFe|y_V?|3@Av!TG>EfJ>-Rfr{jhn8 zZ4zhsrL=}!Ssp82n-9BoJIYfp5#Y!z;C$bdzuD7Za9^rRX5en47@x>4Vq` z6ocnhKZq?$3B2WP55Kg~4f7GX&jzIjM+W>j4ErG0-En^Gi`IqT+l4)bBx=j1GNS0% zkDiTuckL{y$aGlx7jk+iJhF)AR6x^fk$fiv3yO$|qCrpXLS* ze#q5pie*(vC+CcQWZ`sbg@9C}AA7{}ygvZWy;?jGRyT&&TgE%r4dq*R`vqS0IbK55 zEtZ-*fq}I(@fFUsJ?!6OXY~#Aqz45MKf1+TUGi82ibCNQbXLj``{no6$hSE~t}o4=gH!tbGo+c`4_=hd&4oCEL;RuD90 z05w#!Lf7RKzLyt~5_SSRyr)8>S8`>t^9@0KqDG?XPt?oNL~Y4o?s17IZgoX9mC0{j zwG46;G^L`>5vQ4l`o*}3*usz;sgV?49&!;ip?>Y#NC1djI5_-TK*Zw|s#*TDf{kp{ zftTJR4R;L)N>(-GOd`qojqPB-Zq^l5sG^@O;&Fik?n&cOFC@;6NI`-pkzlh_Xy zYI68ajZzKb?1apW4Qg`mWFZx_V^oalm^u3@R%N3*1n({hCH>{Gq5Y1|CM*;d-M!*< zGt`BOT?b3&NzFw%Fgwk&n2X$9Lo*XFR77+u{W1&06d<`VY)-lTX(hCPYivAp5h_V@ zqdiGUgyQ&`>@wEW9Az7T~@cSZ_B!Bes{{RchC!KCOSSt(MFRAG{ngM)mO`ytKh@Ql`zR#lba(v zvqjGzKP&M%&F~ucnT0Oed{1CIrB!?17tb8ET1TknDm3U5bfC+F0buaW=ZHS4afrG7 z>&5^U+hfFup3lEh(ijE60+TyN%B<}6)lc0gePNS6+}n=c56{sLOZq>qzqLP-F`&!0 z6b#G~>VwNV#+pq!>O~Se>ihXjT$ZqW;?2EYO5^7+GtlUohL=!-!VK|>*G}Ibom`5= zOg#{4eAP3iYbD6K8rGH#NN}^rIGhk$+~yt;{cZnqCtM0{D%X;eVC!~#5I`%=Y8B31 zaX_w7;2&kYs?!>l^hrlzO550<^^WPASxGAzt8eTG5?`$oEw=a<(2_fUFDMAANcq<$;j_Uq*wtBI{saZ#;8># z?0;U1J4A5Gj!NPJI?cXMR2<2Z$W1e%y~1%%nS&G#S7^f>q6Ml3^3V@;W*6AaQ$`A- z21KBJVLxOe($$$36$6G!OH@S(wPFzopl_5Ca!cvhA0Q)F^>lK0x3@#(9L?eOWw5X+ zeA{v&2uj1i-p=~-;e^$1oz9-L11I(uYX=s5dIt6|MU2UviY_2&d1zH|YXU7^FkDLk z(nxxq`806C1_;(Q^UH8bo(c?5Cn_$b{BvES1c%!24b-PP8ov}1JqwQtb;z@9^{gd8 zYBY8o@URaK9zXKrmJ<$Y?yOc4Xr<;I>KNw6syHQO(-bEk4onW0b9G!18@*5&J?nN# zdCVg%ou}v|X{;hE+Ir@n(vf_X3968rUzTjT(6bgRl4&U=TfA#w^6I*lR9|X5PRlNHWa{>62bknPRJ#LN{d{FH zaBL>L;x|R>vRt;>TNWi6@5e=16QY9Et{;Id^NWWBw^KeKD~q&OuE+5f5eMnF^++Si zc3;ph*C&gGO>IXPj1L!<7td|%l!fCyTR;7hXkZ-8fO0HfS0aiq1m+LCiIpDBoKJdl z@dD2GM!H2fXj>gUarV+=;e5j}B?x6l)z9d{mr~WSQ+B)wK zyI%9=F$l4?)1wL$n(Xy-$yER;Gwh`ppU?5OO;-?~$ft{}2xMK+ zLN;NxfT(eLM`d2ROTWb@$qpZW-YfiumHQa~alS_$C|tM6$nyt%D2;nHo(7p38*#JL$S39mKKU>8L13M4pR}AHyBjcXkaF_=M+!ajmsnB<}@FcAGz=gm}q3$w3hZU++|CgRr zR04-ev4l?BAQZM`p5CrtdxBIVZO3=>SbDLXt7kT}GzE@<+GfeLVe;oOPP+cS9f`c9 z=2HvjV|rT#k^>X<&ua69lGPo7V%Z2Pqu#z2NG56gOl#ZdvX43DA{D8AL^dg4n2pqU zw*xW&LUbPwo5~>JhNdw~YUYXx z!phQ*FX8-u3Slbcq|Ls{=2O!qfqja)#e^T+OinPBZG>h;GqVsb$t*cq9R1C^nUE3N zpxJ{im%n9VULQJnA;|^!zSEH-2q+-yUF2p(ZjK%YpA+PGO9PS42-UlFwnDh`KI|gRmucIix^sW>KN*>1QXCRGBKXuX{mB{;7Zy zZ419@*rtriBMA~|)PuWJNqnyOFq3&#>!$8@>oKa2zeAY&RjarBn~#-v`OIyJZHe$o zWJ6i>46eNhK?8C%eXU*oLNxX=_yJ><3s-tq(nvrcMA2JCkvo%>A_Nk7rnLv=?)x~Ruy zx>vQCe6G>bwD^_?+*L+Xq4IIEjDUxjU|!OCQ2{L3l7YB7xf5%Zd0 z3{%*h2}4BgA4w4!o?-fzUqit#UOwj(s;=daois)U4*$*zg;z}C^m+m4mpZGhS~`)l z$vzQ~6-Z1CEu>r4?) zSJb1*iJ!Ag#}E=kS+f{Qqbf7?RX#!7$BdVeGM|sC8^+4Z&cl~*^?#@C;7p-$9LN## zPYE$1DaCRux>NKcE;)1fD~*^D36u_&7^f#Ny2mDUju?d`eZE((t7QW88Sjy0z@pmANTL`i>g*)bfZm2Q##`p%QFBe3(%MnxTQGzn=CpE$8{vCZPomBD@> z?CadSf(L4-dohAc-eSZ=hLMO7z81;~nhJ7FK8us1`R)78t1a*9!%)x)#HVepk5%#jW>%oeu$ zZd;`?euf^W*hAh7`;<_bb`*qslQjN$d1A4y7rB2pSdJaJlV^m)4ay`)@lFqYYcr=c zJ}`jRE-iqZKTN9aTN5RJZOT$`M0%o+CbANA0(k;-EQ4tN9rgCp;|`?`ngj)5&1W+4 zvKrT~u|$kZD1|V)=EUOqU#kPQ=Rfa~iB^PlU(x&2L`lTk#(RnlNftvQN-MI0VTk!o zYmaeUT~^K1P)cXdZb_>lwHSGGTwk&YDhS0gk5apX+zJ){xNX4!4Mm@QB@6F)@m0U%dLfhIL)?XnsZ>nN~QKmxe9__}#aKsT1AkSSHGOv#_5#Q#*7LBAW$k13cqk9NdnYFT1Fe=0Qdt3L*O?ZH`` zMHGlJ7Tm4Nb+ADCX8ai-59aYjHchm8SppLab>j7$|5qsMJ-kqPu8RgG!XwRb0VTB-Ri3~ zFMcG`O%13itRrBkF6C)2R^#dzp89tH)!=J5>L%oz=>D< zjMyL{u`2mdHBg0V?S)D5-GL<6vNx12NGO&@A{|9j>#jPPZAy7ZSmh6m$!z*963@wa z1lk0nK^!=)iF$)c`B$tsVzXya2DeyM0((U95~(RzQnA``B!VXKQjmOZS(l6`vG;AO zc?xX4mMwRWQUo?dzW1N9O5(dA>`7=V3&DqHIV*rbbv(W#0rFoG|&q3RtMCM&Qw6%B8GEe;t4sf(Bf<8k>tmvoQ4j;-a~w#6Vb&+RTb%*Sn7>&bbo0zhWr zj&r`9W3MzKO(u!FFmt4R3pR)I!7K2*rp%@GT}BoD&5mUuXo3&N30RcP2*M&ARE{W* z7*r-p6M`m6vAVGZXo8?{NPS{*llWrNsZey}qDXJ>D@7Dtrs^~2rv^22QfQE&5OqN9 zVDhKK{;yNJRH)foHhIKc0`Lkc>C>sr{kBLu;K5Qot>4lQt#!*S%_q0M3ihQx2-Bxm zZReZk$w`&*xzM6X;9K5vK5+y6<|>BAuyXc;4S5unk2DO4IqLP2(ybZ& ze5Wm3zYW~9`Ut54C)v?pl$XI;Yq8{G(!3mpY0>IQ_Y($ej^rf??OU~x8fK3I$Ih|I zUVq0`6a0Fd72J?+J1Zd4=%n1P;1V^viLZf6WY12es3)~s6 zO5mdYuAPn4eZ84mlh^iUIRrbKyAnh?sWeI{t6bQA#>LD8w=*Zw{Dse~Cdb&+Aa|nF ziYBQ&-?ysvB!zrUOy8p{)cBKjz`;UlkGSszYh(v7V;7t6cIL9Gi?@CI?CUJVfj2I) z=Z)mIyv4Sm&0fVM{IM3Z3FQxA>&B`PsocEof+;J}eNa<{Cl=W^dwXwTkQ42g`_PEJ zEA>V!+S;Vbv&zE@Bqf>@BOm?k#{r+R~+-^yK_=ZGLHLo z^Fp>k*$0(CWJCHZG!d@rCe@1ckem_K?NZ9FHF={N*cD}1Rd5s60Pn>fd?hG4^cT#a z1rS_vM{@ir-wDdTPiNqiCc=Fwt&^*yoQB8!~Y5|A*haJ|+*%)qG83j%JfzHw2f#xP5l7m=j> zJoqs*PYp)~2sta=8=;-3txe*GQ4CSh1T^z2azgD`t?(2>z_!SD?N z&KJ-Q&oPX95CjAAy7p;9Qh-!NleU53mj!?l2F(vgz85JTGIkm5o?wu?ycN@M7Vf|P z7eL%I(*(YL?!*H(5C(!M>WkuFW_e z^2p!S6rEvTFN4F7Xan^7ei+no!vuL#l+8m;^I}gd$jD)W(UnXV=kLy-RKeSlDcsS_ zf|&0$ioGq+&ar(P6gNNA@53^k3gBy`OGT$smSGx+a}uL@NP!@`+_7!M-C#d6vayhv z0cHdTkVh1oUgaXMMB-}~18^)or3fb zNs#QfL=1bKKf=XZUnM;8;By;L z&k(dg{#l7j9=tIqQ%AT!K2)|by?7-nmR=;X_HBS@O1vUKA?$Eir*)`Id+Ul_jDi39 zFAphEaTJi| zru*yy4y%41`V}TR1Gl=HbG~1Fgx=@uA5urF~ zrdDHuAro_+)}xFGmzP5nwWV6a|I>Iup>#SHm`(|fG#O{2?vUJEztDQ5sQvtc(V*=l z+Hi?WX_131_T*_aySlp&kc^R0C-gOg2Riqf`Kx{wjZ&x| zK?4czIMu_k`eiyg^%3e~C%BY6MF+sHhX3eb>?hK(D1RYSX6aHP#o?KZkKU_hFht!^V?&v4G%jjYKG;Q zjdhK)Xfk|$kWz0gf5TUzLaZtvduQ%W&5Wtsj>%te zAw{Hfvfs}PvY1K-Qga~Z&w~~rm+dA654ECU2?RPvIa(~rtvE5;Qzy{*UxO307im0Z zG&+mjxbW1N!8RC2nmr`ej=v~}B5HthOWdUz%oYz}&S0cnkF0)Iw1r_iix7l(+L9=@ z;s3g)vS5fXY26~cT6xsf=3|E%d^Xs`&uX3CHxMyF`trs9c1|Z#>lwJP5tZmeS^gJMDy|PC_R0&U4bg0h%IFY^)kzD6M9SU zJM$L`{%Q1awf(1hrmqg47ezi75$&cAP+N}S<|=phu@RK$(LQj|X2ufxidKp#3gNUD zvWppUYihQ8wY|(`eBQCu3rj+ut>q?Xv~x5NX#<&;`w?N-VZ6qt{Ia0?C})AvaAe0p zyoXbAv-FvjV@_QtdS^sMxk+*1K)y^i$JjCXm#e1*?s|1gG*4;@XP>493A$wb4Zim* z&TxzNR4=U*)xqG!x$Vndnbj-%0TCX-ZXY3{?@~MJqLzU>%B8;o%z=6 zytaL%Z*7yF4vax+_t2M!FV0ms_30#gc9FF#KCTIz+OSA=9F6h5OUzJLr?7T0tm2Nv z&YsxIUd%}@z=APEt5xmNWcm@0JaIxU1ac=hI|UT}ak*nK-Fpi%u2W{VKiq&4kpI3} zs+b(hj5qJl1GN(|o1_P*9iH91PWU3woCxCP?SM632YKwA&31c|6cE0}PIN^doub`= zoNObE=NVt4O)Yht*tquw^8c{+mQisv%lGEN(#q93gRn=9sYj=13>N7x=B*iQkG!tS0LRS8j zGObGUf%%+DzYoVOjzVr8RdS?}eyb|Kpx?5kklr*Q_Qb9Oa^wk~n~9)@&*W3Q8LsRUxZB ztqEJ*K`B+A%XrqiT|%4q{lg$D(v&1yjIk%tco>cfb2Kfm|LbK;j6_f0cbnr4$ksXR zFe_Dz%l0>->o~5c!2-^?D9u&VJ#PHuQKqY1js0pO;Fw6)AfoFjVd-d6r4`AiA6T=h}?;M26^oc`!R48`+vEyS zVkCJ+Sw%)~$9tX6`#M)mS~|B*9GjX2o9LVFcS^!`g}|#&^Q@-#2C!8}Q!0Jz@3{aJtI_4t}JdMFU;q#4On)f^Qu$__7VxeCM1nHEED|^^kX)zc0{#y#XUwJ7DvQfzs%7Nyyr|xv8Li1RvahMm(2rb&Y*g8?CzA78X3=>P_Tn z+ilslKxtR%4!1`XJyfIck9-;wU@dwE2j#ek^cPT{(mZsp8rNv;umdWPn8WniT0+=f z{KG~zxpy$p&2qq7NP1#fcB&jPQ{J1s=x;?2WtSgO7nK2Dnn}Pt{c;ZH2n4~H;R(c> z8TZ+zOy2Z!<}kJkHkkqkS{C_8cSMo+iF6N$k1XX1}D7l!;V0 zuob3hRVTgR(BWh4+-Z_yf) zJk3K*Pm5t2pgO$)ZD5}UeK|p|0HVwmw;T4SKDubCPVyjkHSxq>@hUB|n6d}Q#jtRp z<#LD=ZVNJR2CbUg&C3k>z$W>*qzg-TbbhUTt(eR>&Hc6CC%7;C7!qplQKar1cHkm?Uk@?v27;mKzf=AQswYWVzq;vX^%YGR=-Xz-16YdCF?Y- zVSWnpYE@UyVJ(#vrr*9MeRjX$@YI->5?pvy0FO*45L994qVZkTeau7Cbzs)2jnhyF z0!5JZj!dQ@+E035%RX}>lM60;i#c?cV^yHy6rgQ-PwPLB`wiUoO zS0j?hTlV4^qes$;f3wLQne||12(^tkv|>o6ifX^&LmxD#Jyej&P#a9&Jz~U@YvLET zZu!g7o(ZQvu$GY^vv^D)8xx+eT<&CN#7~RjC`GLoSvrV*`g50NjedWlYE7&&AxDXW zr!Y+z zaY5*pVGJ88`bku6yD7xAhEtPXOb>>6hWk01 zSdZprJv$b#>XA*!_TF74&R)LfA8!dr3K$9Mt;3CFyJ{2_z^}HtZu_FTd%hj{{p82Ydp_lgf1&6BHmcF|chGiQAsWHoc^>)39NE1D^v zwIRORZ6mRwWi2Y={uQHdsCd1jKxfVcXQ5yjkmuic!Q(e-;eY1$ao- z6M)9~Xp7FnNNhgM>=<~tJPSeoY)mN9e-nKl4biK{@Jt}TMmAY*;-@Z}Wj%;;`m2v( z?{c_n(Nf)@iCQI?Lh8xp?lK?u9kL&$C(jR-EMOxmeih*9x-NU-)y%SR)GLK#W+_gc zeRaw^5XBEzxytAl+L?qRN0Lye?c`P}zVDZ7UTxD9q`ZNctgtF>sfO)$o4dg1!Wb<1 zH%&WiNJTy#4_L4$u2ii#+pe#x6X~}&KiDb3+$=a9F2plg(qo*Cgq$(j*FL7R^{N`% zyhBkhe2eds4#h;dAgK!8Z?p!mN4k<_SJ;c$&YXC1FI5uYm5aZi*w{(J@lr6vtVh!r z-CrvIzERFocI8qr#=-P$%8=knZ-gb={Y=N*Gbq?Lb--!>Ca6P>-PdImlG^`er0hPdNJ1GFe4@hVyarcZKL8udB3Z+G>`p7!3&#t21i9V54p z-#V3aF!rcS57B!r;|F7@2#dlknLda4FJf!V)9z{ApC_aBqcsAAW!~?1VS|;bJ>1;7&F|(RqR+RRTuXto-+((4bAx=rR^77lMQsS22Gf`E%gPpUC)zF z|AU~}NfOcB*phYX=NX!!ERX(>lncM5c?2QKyfnos{U75GS+;6AetL)tP52WU%4iZi z$y+=&P2Ru_pnix2&o{&5mDd~tbk&Ec!S`1mk}&i(`JOc5B_5BkHJc_=ys$`iGTVU*cu-!O%biSH#5CDG_iPX3yP0(UTJ0q91;Q54ceao; zjGF(30IH-T9pogPR8jW3_*u{D!pzw>2@^_NYTDe2N$7lF9DEH3dL%E?FP~dr$`i?Z&M8Tf98mGLG5mLc}Eh zx5(cQR}^nO9s@DqR{IB79GbU?idY;r!F8LgNb*$W5>^WtpOG_p@34}>* zc3*Cfc?|_{YR~v)ifmK~hHMhDXvyp*bO%B~*?_3$@9ZGjPp%7{so(m(O2xo!Z(H5q zJDi;&cJ462V9X*wQw8RJV&zZw!$ou*u#}(M<~74N)C@`VSP;&8Z4M3a=T5=;{W#o? zQ*R9e71fmv_xj|^#Pmcv2$O6-?%7?H-s9q7q+2e0sk-Pr@4l;E1x@(&D0}iSAe;ZL zC?2G*NGVwQJk8Z&0_8O@h;JL_-QNUrSHZ6k?&vlPz=$WOJ8i6cJO8=w$OCL_KsL5Bmv@|_PZ33xo4 z@qX(_hZ&fS?>ayqNHeHuLys>raede1mh!sRst(HVBmB`^nA!+202!}EzX!&FEGLFK zAh=6HVBCt|SL>z~Ei+_)G<00H1lQLaEzZ%xgxI#YefDBo^YRmCn(L$tin(Wf+Rtcx zdXDCLSCcPh3*|9RmoG=ziil8Uf8FiI#B{svUpmox%;F9H@LWU68Ok*->^OtU^dk~! zc6xo8K6M2gGWVCovRR>W;Z0_}JqOWc<2$%kJ@|OyZ(MGfTv&H~B#&EVYd>2{P+oVQfA{9dK~JH! zTIBsyTOj&KeF?RRaj*SNNLJSv|LbxE9Mv-3Fde+b^MxZz;>ag-uHUIh9!cyRSX1l_ zm8vKnX)5KGx!O{yq#}AP)QA89o-SfE=N)bSG^~C(Z1Pu#W}iriJh2;~5n|pALzTQcf6^QH>?2dgxVyo@ecc-Xj(_B4fbl{2lNJDr=E_L^J~9m}fB5~7wo zJ&{&v&y52njyYkLI4YAq_<+8!P=T(r<(){C^*nF!L&BWBLLhKW%{F)|?Aw|V|T{V>>Whr;fo%$=n!-4N&bvI+6DH2tjA6W=5akb!ohck>}4wv!F>6rgvQ)3JTXzq zKA9igqo7W!eezcN+tajf0X;qvi5(*JV8`1#r;mgN#}`>3Jl|-MADVMIHv~K8s*gc< zZCy_+4VZ+nZ|^?6waj%0d-HYLb7vOZkSi-HiSj5#oS#E3j5cWV`5n|g+pV^f@fLN-JTB=Da#S9g_q+%M5 zR5ONHs%b)b_!$4I4zu^#)r|Tw*VzP(xg)4)NUakljO1kMq|6S-{Np% zWYNCm@XEuXz~HmKas9PJcR(>xytQ>O}lv8tOadp^laVf1ggU220VY+k9ysFw7sEi$-vS|XzMkaoV5&S7nIKF^^Dj= zwnd%AASdidw}yu$eqw}KNFcKZOKTgXLH*u+`)uO7SG`)$ zj2Iju)F2pIVowxBl4~40-qd019fu^bNSNbfS@MEVCp1uW`E$sz{IvO%=nA&**$cW$ zYoPv3E*?)*%E6>ZWtt5)0R~Nln4|*VS)?CbJ|6?G#T~Cj=6pj{pS5#$t-wz;laq^C zTF?~&x&^9RiX-i-N>#57-j>_o%tyczk~z+f4+tM#)i{v)0h>=DHJTUoLEhkD#(roA z%VnJ<+6r9yJNAeQ*pq(I6b&MASEM`udqrOfs9PZmYNC=)`^1|iBv_j}8rmH|u!cqa z6kV*5F=&V053weP3Ps2wPt{|xKu01M*)iz--q)$Aw$gT6)8AHH|fG>=CW*5u$qw&X3qm=_7N@&zxySwZD(RF-s0gsdDS2na4P znyv-08oT+=q6K;AD=N0|dkrN2I!%en{Ci-~kPwD9m&9u*sqJuPfn}Ag<7Q`eQs0>C z?O9`+%cz#Y-GdpPzOAe}iXL73gr>dbnUut_ zU82omEakTR{oqjUqmgYYoQ!^O+CB^7`$^I=s`wZP9Gf*Wo1h8uPxGYxV32GqL*&Li zWUm215a2=PJqA(@^(It3+Poy9`9_^GYukcZY;DxFR~FwOXtS&D(w_T#O{^*w=DdNT$*D!Ar}JTk8~ z(9M5sIW}h};p9e&pVyJ6(b7DA2e0+qHIb4AysouX*?2%UHE9O*7xj=2GEvE4n;YDu zZ>H9R>=EyiG-h%;;X^MhN5sN@LxKWmd4?NsuAx>z<}Nj>m?pB6^X39HPc3rRig+}K zb^n(M+6ImbNfExvL%8b`w1CE$W9H}fjyzm%m{*3+s z1rK{ke*^xs!kqD&-oZ~(Ac{km6t?`n{U6)&Z)%vP0Cn2o9v#2Y74JxP3O0Kj(BJ*KiG?@J@D(%6R03~|fhT`@c;ra&TG z6nDn|iq0RC;)94C--7V6qHU++@h6h89dyBkh&Z9*ZExcBJ>#uyRHsOugjOBI&oYaj z3EC+l<*+@wX>$(9z6ZRN+w3^aN^;6WT_H zbBsXVP1&KJ44p`wl-@a9jmw1`6xnz^(IehCq^4jnjr=#pp81V=znao z7nlD6M_`lIqA8VCdDv8Z%vHwB=PAFICUflS+(Qi+n9%vOVyb@R6Jd$>ye?1pJPu9cC%(xb2RghbQ5T z!qmk51-Z35--4b9R--XQ8CITa^+Y22GMg88fijKyF;%FKvY0|(<7dauWh?=kTvc%= z8TDovf&{*jv1u?6F%OS>n6ctmSva?X+G1=u_3pbx;w-irV&w8747SJfAMjH{3^+8A zz1VN<+o+Q!hB^~>>)`A7+KC9PGW~7&lq~;kg5S4E6&hJ@$_=K3-f*N};0PVju;PF% zM?hJ{ioOEUKH5J`k*a=`e+Iv&b(d(8Lg}h&Ql(>Q7CxauPmzK_LKZTz@mu89k!+(o zAS5!UEHB#KWploUb$g>mB1RjnA5)Uh1V9d*y z!LwP-6!f-k+_I`N!_vc8ri6*9;SK~M;q8_)Z^_#A-r9Q{W5NhAsNyR04Bud3kjJV* zw*hLX@kA&Fgx9t*Df%n8ke5;)|Lz-_14a>u-ruPA8+E zQWjHdG0jk0jCX98xAnBiuIp$sl%%7}EL#OG)2Y1A#cyXo(*owr32sVh$+O$S>fI{@ ztCuhyD%EU%wvs21LjJV&Q!9xGey*MIweE$TGqL}#wPI7nT-NuJ>%5=6^%AZKMQM3Q zIwIvR0JOS^x#BPN+Bdx#I@=!5MVo#7T@M36yi7QX8sNUJkC}5kg&x_<@8vyto zn@$eMA&3M%<~Ld*jUVjCN(u|i;<|zfOoUjv!srEnNg;-6i7N)37y8e+%6oEm+~#r(heFJ zi7EC)riq8p6QBSyU-apo}|gIR#I0fT&~Gj=T>+cfCICb z-T8i6BL%>oBN}o>P|gv2*ESD6d_x9d%u zTDvBv%`(&8b5sdv{1;Y&*K|=m3VBN;&U4Rk?F{l^R(W#T6#nqlN>e2E!&Mpq=dz6* zFfcRCKon}Cp7a<@XcB*JWFC}oYDQeX4t&vMI3y4=GL$Q82n{NgNO-rF^d1Qp>_*Sl zH3n%tLL(~!8%}1&gId_fse9E|8K1{r*GS^Lwj1sS;UT;BjBdaL%16&Z*OMUPYFW*Z ziAN68s7~)=CKNOCLosn|7KoAW|0a$l zG8ulCj3%|=Rt6Nf*mW-CbE5WTGOaI**9C`rJDH`Sa^+T+UpbzhSIVV{j92Z-e{W(Y?r9xrffYSV|Pq>BeKj#>bDXTLA*qEOVh3d!MX-UZ&^Qz3*I_!fN!3=#QWzMIs>1QtNg9G_^XX>?NL=&{Y0O;6c#?K9KJ%>Bk5Qm+p=*w1=pOiaWibC%774^d^u>+s}` zwm8LtJ~89B=THTNa?-x$dCgt0Rbil-C)lDb8+R;NY$mt19_MbiD4|9#$%*rY5gOnS zcmP0DlNv^zSSc<~%j{XWR1EJRy`rLAQ$UYgle^6+&Cm0i`2e>7OWDn0MHZy08#qb} zMUd}~ng_&Jr6+8i^hI{1nhkh|i-Kc0G%FsYJ6BgMV+0V1e-y{GNrHJaV0y);x+nID zcocSTu5pi^&@~N^7CwC7a;8nF-S{@?W0?K;B~R|ssddE9*e0Gx;JknURkUb*B%n#! zXed*WrydO>gOLnnlJT>I_a5t1_WUS*s!rb1)8X6AnM&y*&v{`{2rV3x2T&|g^zWh=o_uLxT3u<2lVQZ;pkxE$?faOHH-6Nd1S?8kQLsBgI-&2Urs4 z?~qyqJ$w^`ex(cuGac{^@OU~#FG$LxxqKy@vCa2i%PlGk6lm$~pJoamG^So|r^_id z!nS*F>pI@m?^^u87fL8$UDZ_cZ7lQob~-({+q(8TXAm1apgj#HG`Ru`E|fkU!9&im z4F?>*skaHA{+e3eD@DcxSYN@1{ilA>HiF?YEB|j8(+xoRQ}VALoBp1M^T5bi$@8_2 zU#n!lzg>6y$m$tFE+lbz7*x>vA-P@r28Dd1?a)G&luh}5B!OI3CF=bQh_kF{BCES* z7ii3PQh@;zUH?jF`YVZa8*c9*W-9Fv@UwT0q}2r6-~pG#Z=h=K`<`X5rLpuDO~3M8 z)m%!-1&->tUpK&o>euBNWyK&g-gS{M&k$&~Q|Kh^kkFDAHR#78u%@8|GF6%RmipLU zR4eVt>@D@6zH+&CK~jinv>X8CDq6YUK^-rZCmH!zBayu8ps3Wm2WbGL~5@;DI`51;G=i$85OpA^&1kt~sn8386T-)N zpMeK!Vj`usDy+qz2P80%oSYt{l%T(k#K~lQVnOT^5ch4(&0F}5BXO||b()^&ffdJF zOh#VsNSScapfIk+<)2DB!ay+5MexyQgqtF&6A;MBq=u1UWRJxu`T)$*JlTUI%Qi0) z@XQI8JX-;8y!D>@p0*Sg9o=a2aRt4N*3N5zxHa-Qx>ehH2!o{aE~0aZN>QhL{^MOQ zS@c&&ObCwFZFyjUmT7cYyoCBWxa;D!s~B^oXLi4yAa7pS_&fu*x?|_#u)Mx;3b=#a zYvSb9N*?KLF=5#koyburpy*dUs)_R{g~5H5tf{qJIZ2U5Gdrm%Dj7QurAm9AnJVry zOMMatvoM64p_nT3a8Y9#R|QEx-tXR$?p%|;moq}>fb?OzrE|D9KS(+--20@{wEgyN zP~c4S_^94X;5IzDD_SvaJRR^6DOB4yo{EtOD#)wu^YIruL}9MstCD#WL!c$pAzA;G z*%?)UltCvBI>(q4(Fbp-3Dw2C=Rxfi7JJbZox^X6#2AVwRa)$KPLiY~K58oxWO&+B zl2RTEorOg3(VFym{_v`kevKUiK;fuRWW7+=K66@kCq*v7XuZyMezzSC)z>We$T<(C ztD6_e+0b)FF^G>P_;%YR3-~~{*m(v)OsZO1^m?1ezj4O7cW;b{P zd&xsc2NM*B{#i!>!f8UAT*QX9Qn5O$x18skaw444>~jEw8Z)m89Q>|(f7jRf(AX7t z&j{U=GyS9w{W|L^lU*5`deoo22@w2-8A;8P$A_omBrC=Uvs+{A{EW15u5Y6Qu2O9Go+ zexV&q3BsVEBWz8iM`AkYVXrT%HA-Ti?-T|q(vE_TxmsX` zT&=WlA(j#PXCMhl5i2q$45dh5(02`?Vz&(McjeP|%!y(1?z_zj%$L4|PIe;OBa3u- z&6z)-k-t&1xlQU??oe8&YXUqzflD~8bATFA(P1O+Z7QpCt%?Y0W?^&TqS8YQK9eKb z7Lpjat=lqgeh=k4BF((3+kw&Kdypgxb$i*hA7ugt--Us?&2L@D2;`+x(uz;C{ZR!q z)ty=DGZ*xDrrep3w=4IuhKxWF9Y5zagRct|nCh)g#_@bFZ#_BNMEcr1TI10-mSauMR!loL5=QRJ>#HI0slOO2-9t?RgqC}UI zHe2dli_^H!>FBnu*7`VI1P|sS8E{wm*9WgS%7-%jSn0Dyl9SZaY?o~f*X{#<{2KX) zGnR!XVZ2^k*=Mfr>sy~oIW;wXVXl&q@NERR{VX>P|$WE z9cgb;njjDbemn;sg{pr5ha($MM%}st>bJE+xHq`EYlRQK`IxH!K6bv?VV*~M4ZGL7 z(Wb9)*0viPCWIfR)ZEVFjpVEZMZly#KK-d`WcW>zd?hd~kAiY(o<{|L75{|X;x6y% zhk#?}s>p5kXGpFE=baVIH?Or5`ul?G&ii#NgWu0CN`h`ys~t2bUeN^IeOeoE6pJ@A zm^CZhd1q(^l?2tkJzRt~1hAU%GVU_zt*C_AQ3F~ZS_ldbFy=?0jDdb>@5ec@KAdwQ zyJE|kA-2t6ZL?M!Wnh2q^AOlyTqdX7VZG_R0Z9;IOk46BYnd1tW%VucWCEu2)SUiOulqNZNN zrAVdaW^QH-k2Q(|`NZziQYIA}wV~2K;nYYaX@VVC#HL@#J}m7F};c`+f9?MbLXm9aVj4>kh)#s7agx1(rw5V$;h8qwLb;n(w~c*VSf6rbXG& zQ{@J0;=Bhl$Q8tBx{zYj<23H$(rg4feGOupdo505TFMF%zpwl=A?l zyo~aa)IAxsdRB(c_qlm}^MbWC%w;gVI&Q1KR6od4oT3H-ei1Lw*4Cg$F)Ywd1LSCQ zZnXl}cMBZ&@4Dakq5GOs)LP7sm*yv|g@c1UO8`c1$EqeQ-zRG%C6eWKg(92On1-4( z03ZAe&-DuC_zIS8wWcyKPsY?C=d+okyTbF^jwyh6R$(LwYgf_d zpGj_g2Zb*+l7Bc|p3X0HYuN12-|w^FW&8b*b$DDl{_-$0)3F*ZE0R3b&HST^Z){~A z!&~pc6}On5U)@k5R4KxO)+VicN6-uVlrL6`Hp-{3Or*nh37Ns6IJDP|+9BmMGui8g z??Zoe9;a494gyj?GtMs7t{AWN(Kq~#7G%7$o=MC&;wndEzf`k1I>_!rTz`0?*fWp4 z)0RS%YL4$3*cO!0MKpj#5I&-NC3%E#+EWqdM&J^^{47;a>bG)r_%w>e+Wp0RGt*3n7%@{t)gLnXD*Fml+YIw2fF=33A@?BneSS7w^s9+ zf_O03W&I_h$C_^un#@^9TWZi`?{7Z=tm6^RvJgzmIy{meV|D2m-oh22{Fj=My%*B|?d-KlkvqDv=VpptodMnMohn|}c7knGPF1emhnRFWT zWaSL$9CwsT`-0IHD-dO&vAIOCQ}}`}==V4?CP-^HA$wb4=%!NJcirMzSJcqWV^E&P zcY)bmrmazKNf9+Yfh{EBTjBIbe#-`o!+5^cbj<`#-@hK8I8i_1>}NEVL(ZnQVO3LKno^YRf#nD_Dh*xv8%7K=EJfLzk;p`5Pc!X z7B6z&n$DrlgRZ{kKgBkw8nO_UFqt8h3Bc|f&frwqejp!-v^VO?75@>;AP>X2fkiu_ z+b0s2NM@>C|Gt#KBa7-gWD}X3^Qz8G=Qwu3J?qe>wzQ}|Tx)d~=&hRe2Xx6xj9lmT zRt2d<;!pm=A2@Dm7;ga>dalA&w5aYi94a&aH*FX74mVhhOEuRgpF)u3TIs_e^^x!l z{1#F=?{D7_`%k1~X}j<&4pesyV@9xFeTWM_=2|@mu;6)`!k^K%^)RQnrkQgc>#^%a z(k;w500k&1Eq<9tY4(_a&v8=OSh+)E<%70&mUnAecUY~A*tP7~dWI6Hz5&Uf%;yax zgR3@=KIpaa**Au!)iMvVB zcN$(k{Bn7mp!93Vf>q@7sld0=d@rsRjp(>@%Iw$HFy*T3g_2TbzVO22yVY{gVobbE zp=`yQUko*t?u&7?lGf}w0;;AL{Q-=0B%m%q8FJZsH+`|PvTPzM8x0B?`J73=AGI2M z!-*YGFasPH0Z}l_&4Yt~fwQ8;8cw`D;fK!t6tnxM{$8~O2EEJ&ewLMr(rA(9c*m|G zHiza3#W$V9dVa=y1f3b-o7=(nOzvm7yOTnP`3_m`JsK0gS3KOEeg?)_Q29eJ|Ci0a zo<;n$?Eord9pHN&Yz&fk5PKjhpT7X2E1~FfJZum^so;CMONqGzOLU_qO^T9Odas3h zeq&A?yVa(Q&41F)ZSRcp6vJL4p30^&$kUcKF zfW&9;Zrwp@(D=$+_1Ec2WBff_?ac+VT>5Ri;EU&fEuCl>L$!r+u^aPtqrUQD*!9Yq z2U=3qLCCR_Xmfjzq{ito?eNL}#|5ltc<%4rkF4#Vr!bHi!zsgz9Sqq5aHPOS8fWcH zxaun4pAUxJhcT%A;Rs7O-rZN4P(&iQJT*F7eI3YHjO8hGsF!1;>|E6MK5stECdAX()~;pT znXgk8+jX*Wv_l0|He!_4+YcqNzw?Zu&%J(QG)C}<4o+EkBSG=;-Ej=9vG2F`pJxup z+%wVAkE+V|OJ)2#;$6xCIc;R`iCH!rdr{r(ZdI2;@boPYW6@%|#`!j%df&V~(o9$V zl^en81^Ld#PTz!-Bpk<{v7Y9Ezo&xi24A#(TPeyvu8_zGTiZaif+e>**e_mZ=X* zhOA;?oxj`T!LO5!-SpV>o!8UWTgc_5tkP_gKEB_HU`wvL&trqd&f~-IRMZl1J({v> zSRN=OXUQ#)PbqcCg}Ee@)Q2Tz;C9&9w0wFMvdgm-gQ@Dh-W-Ndmjd6G4B>w}q)a+EDBs$K0eF{IXCxTD)P+E>joZ-NoAV7P|g zK?OG9Y;~SEc^{YX|K$vU932(rgv3F7M)Yu3&M^h>^tcQYMP|U4*d|>y{TAfLa2wVr z&lp<)ntg>vT#R<0x&g1q!@|hubTbl^Hzqz+w3WrT5_eMSortdImu<2ExTrGw!x1R(mav$yeKs`vXEAnl+2A z%LRn9_MaPmU%Ac7v_4dCu<1K|B5|8jJ>fSzjFpB8+3nola5swPX8tkphTdKa`fc5YU`?4H7~cVs8isOoetY;WPE%cfp@~m z&4ZB}b#|f|UOOT_$2*-y&3&_0zZ~8s@UXSx3jr=@c<&#t9 z5LIG&`}TK1ivG-^4i=r#Tq3`shBn@5x=kg4h?nbZzh(p!j1&C}58rbeOGh5qZ5GP4 zCTJheYL&|x3fTXxNA&E@d+(#9b1%DZ9ky1wi0NR;^uHtZFhaJd=H^m#dk1asFGYPH z=;<62ipN#YG>v|4_kMn zUU}V~6m%1D-*w!a#ph#$c?Q<|7II&uY^X6X7yBzi>X$cYcv}x^j9-}QPE47Psz5Xy zQ$@vZAd;Y}^SR|!CHQb)cx2>5YXS7}Ks3o}^M(4($(5=W9J&~JI{Xdo^In4Tf~#pd zoo+(-={8;ZWU`9{6g1>6RG<a=LN(!KXG_C7nQ9w+Nt$zHh;8Y?+0QcPgR9 zn=GbaJw3f&KR5mHaB&&ws|2>y*#IgqrSgZR@3Ay0)-{g#@)-0}Sab@>0*r6G`0~C4 zUMtdBo>z{eqniJcrLb7=AL$1!y zJgi=}3nXry*GAHoJS zoM1r!As*#b*42p9%)hMXMF-J!U_f91iS?&{DdfMs-oILj-9R)yX2Yg8jpAPp@n5(8 z)u%5NV$%4nIqI+f2+H6YC2=o3w#{BKme z{6;h}2BZfQ^mhCS~!aQUASn6bZwc zGMd={`6Y|PsBzA{g=-LaS43b3z?opNw@e};jq!sF|TiSWA4`u5FfTXmG6Uh`N z4se2RlXTg7AsG}A)gK>58JKEWFH&ERQ(^^4@MU1grp~Sxn*J7}CiOyzWmJGweOXz} z+Pv)auN;!?oVJb0)0n|s26NB$sJqNMuwBVN(auZ-eqwP+ssU3??CEz(mo2t9|vJ+0NozNdbZMD z+C*Pf&P^krrFW3`UBA18v%>vR-|NR8%bPle6O=DI=UzT}C`7yJUltIy@n|t1{43Te zcW7njtCPz0Qh9l2dHMK+IV;hV?0PEP#KkD_b-kcL3CWK0POcw+J$ng!X3;*YS-}b0 zH`lb7hLb64nN^%^pFguoNi(ITZFd{THZoC?`%@?1kDeIskEcL_8>w-*VK1|=E9&&Y z&Q$GXkTgfvxwbV(&+PGj3@v+y^rx9V{2XDaqN~0}SyCk9EA8{*7UE2l7n2t2gU@ZA zUl=?>8f;y^s7ahFWxdB}-1*04gq4eVD%o2(*AU9^#KnnVb>_*C(^pw|GtghCoV%yE zAMbdGGgJN{AN>oAHP$?5sjoT{fryi*_W9it&xgNaFNDwSoM)Y+qujjVF=hEPY8yi0 z!TzG;@~4I)D)huggLQAU54-yhYRZ2HPRCZsC|0sNS-}N-gG^aQn`OD=i`s;#1s2=Y zyHTm?=~b`>Zp_v3xAUqKy>JKxZ2&#)uAdyAOZy?FvBQS489Obftpyq>mr;Z&9&oty zSD7T!0<@*;W0WlJ=>>S!>mec@uHWMRBjQ{+@)d2nLy;Ek^N|rb4|8{QEho-@dI57d zS@aZ5)!hP+JybS48}Qx%00294bJMEVGBSTGi@X$W?l1E+FU%J|csl;=tV)9psA%9? z%Ot#L*>C^=5SJnEvXjA{;XnRbQnM>TbrD(#wcuHD*b=;rHX`&B35gGZl7fb&2QRqy zk1dg-17K`KOI$WKWO}1uD%{n73H~+3z$47CLg1=ZO_pc?VaGty2tRoG)@0lEugWlO zDJpTaZ{}`m=@3F5d>ZRTMG?|M6w-%4EK<`66&?M@^2M-VtO@2t1>fD%hKIP|RJilk z3*i2lBRb5m2A~ebt99|C7{RW~@^z5k`%K0^x9}m%3RajVO6~#n9Y6Qq+Ez9GoIrkJ z4|75IJAr~J0ruFLp&wYx`zAAiLOUq|SbuCP%slYOs(#*7$lq1YtD9`xGLz`#flx3Q z7%Es=o7&RPS~@UBs3WI(!Oz9daQjqOySq7m8cefo32&5DxDt*dWLLYu)U9B&!4VVw zQSK4=-28c7#fFK&d#ru?Owzwk+{SZEAF}+o;C@27kkf`%vI<`Wn?v4HHHq=pyu+NK zA&MYTg3Gm2Bv(dqDc^r->gre8=l8O|1^Fy_;XceIr|zAj=>JO6pN_6|kSHt~*ZlW?Zc+}3Y$lbV|9XbMqyHh{ zUzb33NSO8pi~I9`j2FcMa)dkoV}EG49%@JcrZ7eP>OZ#$x_Wx`uL1vOD})3H7wqp` z@c$R`{%MUca!vGC0si=y|8^l)fCPBGaN|b*c?^gU9R6Fc|MKtu2>~Lx{}aOh3E{6z z{6EtKO7gAe`^K48(lW1aSXGNefxVBUGdg;DBEM}M07(w+D6IX;imM+l1FWgYGyX&X zb-GO=W#e1Pb8d0M4XP1ZCAF}_6R_Y=G(yP-qae=-! z%{x%_QvK&Olk8{IPs$j&1xG7@S`UHU#Q>g)s4Gl+aHcSSdLSXO3HlZqc zq7F3^8rW-*Q6RSM+Zi2TCBXCNdLqyBT^Fa(Xo=R1MmJiXH8QZdW$*TGZ+=ga4{7yl zuTRchi4~Di;J+x&lFDhwuRDnn2>0;DeLmK@OS!Q7@Cx<)va{h;Y+%W%LsDuAQD}Ig z$c^jp_|G}q@(JOK>b2D>#j)WZLd6!tH8?uwIv#m5_44aca=%f3A=UYSpTLK5m7Nm% zOcrfPsTm1QeZ|QR^0I%ur#6ks_25qUp?-Z*}}727@nGv$oQt|rV%z8XmclO_ul-G?; z%^OM#Dh`$DD61mliN1x~s&ts{tb0w(r+q|@2&Y@yxNUxYqRh4M%qPrq+p=CiirluJ z^l;Us1ISW22Py@%4wOkcfr>@o%i7A2upVzl_|F24eBd!ji!~oTRmmWv=UgLv6d?^k zWPJXXRJu$?d*}YP>i)-IxP<`_pnI?9O!xn>_vZgl{@?%jE0H!-!ZS-MAqmNroh)S+ z*|(5&Fl9H4C6!9ZzAu%XvF~ezWS8AAWF2OVVa6C{%*^*vulM@>eEx#(_ZPPtZZp@p z&h>bl$2s?Nzn{x4J!tH)XlmJt`?`g#q3^cTnX7TkpWX)bn?}-s-)jpZI`=i5Oze00 zSz9}f0)HZnmHb*}8;&+PPWN*${Y_CYH}VWxC%_|k^5=dTWD7EEd`1bB3cHnwtD-t* z2ODj#mRXmS#3X-s8hVg>wkxdrG|t5A3WDK>jC6_UCPgA4Xk5eBN$8M;{1_s`>^uryLgs$gMVflte< z{ir&D5ug3Gt+rwLFg-#wh#)CB2cgdeJIum(HfFJ#qPu)ys4}W(Ky+(`n9pxOIgx zWm4PreqrBlF9bKR;O8T?71Eg?t)7oOyc>W~0}y3bj){eI=pz>J!QY8P^k8@pLA&>#t3FC$byQ zc&au0NyJq0>gkfPZNU3}q2C&{wY09bS>Q~qn&^JS6OUS|Ha-kQf+yGK>+I!GdBa}T zS2it*c&FEGq?;qvy~vq+_WZ}mmI@brTTelRRhgd-SAD=f{|f$Uvs4(VYc@4Exdpv{ z#?8%Ns~ynKAvxuvB!LfH5TrYA$12Ftf+)36BD{u&rJh1$cPI_q4|#$bo;ziu<6M6B zCRnzL&18I|EvQ)w3USW%d(i)T$g29f#=rB?NR`Pg7P`hMJ)MPJzX$v=sxP2o`~0et~lh?SVmU};RVukgfg?5s=T{6$QpMu;i<|a;HI+x zPsb&mLnuv7%)1selJsAfT38I;bh8C7&6*Joa4_aq7(!5~P5NSF zrfOkvacFmr8<|;H;qdc&7u$QS6&ZMYMuxRXb>|PVquj-gtn_R0Q>pEL0=?vE-*kwX zHeXi_KVfsybIPZTS*aQbqt1~vjD?qyWH@gE`$nJsAXZ9W)R+9EcDb{1W<0KVa_bP` zK}Ji&+%S_}f$huw6TAt??rren`!mf;&k$aIMB}&DDS6OwB2P}k95X39-$U_MP#1x< zb@gIAIQ+(++Teob2`LlAy6#BJhHvVmli0?tO<$kQ)tvI_K4;J5$rlUH{5#YyHBz#% zpI`hqUO&2LH$(!d6Rnqm{blOQ0+;+o-X}Z91INp?3oLYdNpVqS^Im=vXi%`71u{3I zt?!L2tLU9(9DAajcUSgi)E4jXOc}YCRzeFMdPxhSlBTUzv{17mK?6e)Ke&^W99YaC zU99!8UH%47!j3d1v*HxOC||k?JnA(__KY`Ao!6eTWrR`p%KE1lUeI=QFv>cKBv_`x z^YOYR`2tL{PB2Efj^cXDR^m>0VK4#GzI1egKF7!RHbaifXjaNmmODGmhVt#G4(hLi zn&jKiKe{J%O|2)au$AK|;l&m1UsAHO#y-RXELpy z8cR!eJ`4!wgo=MdOT7k}a!eiJg4ghs&E7TREDJKoA3BNCSkTn%$CN`E6b`GaZj2w` zbxv-$tw6X`TWkQY6;l{ut_-HySk~@TPGH_NNxF_?D4(UW=Y(1eu_$N4lAdS#_^qd} zc!N8vZ7^FQg0LM|LKMEtxgAMemLE~p0hzH0z&iDDg(3>H zDzA+U?HqNON8Uu$hEHTS{JNvrQWLZJ`pBm=>u|XASJ6}qM^erLzPGuLt9)+ex^Cz$ zTjTvm=_CZfJPy35b)_!dLWAy46gSLksQO7k7zil4wfpJ9ZMOAEc{wKaNO=6MX}W5{vnib%Ws^B={U z>$h@08sg_}6lGv$V(U;>M1VZ)I(Ib>?tiM*3p6^i~WEe#9O>v z!ZG;S?z@#y=?Or_X*W-4=g`Aey+_(vK_>z`6NW!?UPXSJDTk#=e?f|2(Q|TZ#YX%x z3(1C7WzT)q`yQ@Y2de^^L&^fR%3C)`@Y6@%*`z2!PUoEbh%9SwI-MM3cTFako#N!3 zRBY2?{W`lE#1%bY)`6#@#9i*++i%csStsY3@%s3$l@nVOp4T4UzqXojYP)lm+swJp z;7X(X_3L|iA@`Gg;hs^Yfoq-&##;c3%Rf}-%1Z3dRx~8opO3LrL|Kr>3v-&9oXkJH zkfKcR;ynsyU~uZk(&G9mvSc&!+J5~(Ug*yTg52MWrO(`T(tq%ve^fQJr&Ng)vR2iV zHCQ30Tyb&k=xkcgSa8m*j;Al#qboD!(TkOrV5w7QDXBD<7GooslPH6aK(^-GHF}8z z4(+K+C3M^3yTq7?T%u-UZ_smm7aE=+NoNi1ZkV>?L!T~`H2keLVE_O+d7WA zJzZp*i?ePXd92EZ^Fx|jOw;n7AF+iZ=YE_T27~{i;oS}4nqYiMo@Ji2asVjmlj4`x zw354Zd=1lGPlsq!*T6^RB|>sY6yO~nzX|B`o?*u6qv{!?1H+xVHR|=JF3+xA5CfwB z%9?g#bPeeJYdoh>*LIvU_8~@n zNsGg@?Wiz&GapTYf#~B%%I}~MCvG3tAG=XS=XtDi8`r}U6ET&;tgQhAi@DX8!eTN( zUo~%k9>$3-UbKAaQS_*8zzJzq`VgO?EY&Ic9B`HW|= z>j9AV-fngAtm~|SlwV0)BrEE~Ibjw#`@?YiNgt&ep&HTqQclq){A0)J8Ok`l6{w4Y=_Vxi zh1fS_kAepvr5=gbn14aloCl0JSG;=k8Iu=$Z~2z5~@G{30LjZgIu?_j9gy zg2|BCP3Z;YnbsRID%QuX-?9N7h!f>UMW2Fy-C~DiN1G&X1m6+i6?^NhcbS|?3Q+F(xJ96Hit{l7@NEw~vJC8MM1D(w})N$UjM`2oWnF z*H-FaLk26rKa~YB-C$h!ds=YMLam*pF>yw)Bt7D!noekD)iHUdJ1%?~E8L*?v?nDP z4PJW3F+pJ*&nVDjM!o(RJSP=#O{pDj%*n$vhR5CuwlYh#&ed4_@j#IbELwxIfUs|| zjHs!ywM=@E64udyb)deWx5=FOV&(AlK8{}ov0~OF!j!dGVg9$n=0>*vet`>nPDp&;^z^)&=_~lEO!lLN5Z0dh_SZdZ z<1PYeFQn(Ufm*b{tFwOARO~ATTO$#tIGFSNPS6)7Z&5|#FukC}M}z%?%{Xp~pZD2) zPGdzZt6+A^%ILNa)a%@!srEDOHoNb}0hL#MTCz)gN%4$+L90{UTXzZ)N&B1o`;ttO zc7);JjD5Y@zOr00YGtHe`JSP;UV4K3X8+zVKFKPNZ&h7Dh6jfVkbLXR3XzpzQXO;f zdJt8RjH}%US{|+|5DI0G=`Xr(B?|oMkc`%aw^XeewCm)a zJjISbqzcWnZ4V1jW&UM@3-Mo@-kyd)ry4v|zf2WlU;g;9D_lW+BQ)ogF6Ub%ENr}3 zY|=@y7I5%IZ{b)-1PD5cKlU4mS z6T*5HdlF8}K_GwfEK?z`h_+lNyUJurGDl9$e#}ebY5=FekbaCi>lP&qkpgH3Y&~m3 zg6Z|bW}qYD;0mXbIFPJ9yC4xOm%mEZ0&$d;=~OhE<4AS zMg_ZtaonU3`xSeigxy~pt{dlcs5s!v4gDAD)vvY9;4y#1f@lg*jyB8Km{yIe3K%bi z%HOIyYLI;H+z8ay02=IIo<|z5d@t6vP?2|)#_BWOknpLV4}<$K^;~-ia@%9_V)l2Q zy}N03o0=#GSGxPCfV2Sg{i&@|$#M&HQx2~za06?2lYol% zsU6`;DwX9W-KxhSpMf)jjy7J^NhTWaZVd>K!1t1iMMO)o4rBWs(;)34cccHhH-oJ> zWH%4ewMcZn_=4(M zQyTg+zEWg{@Da`?taoK-Ed{#J=PX|5pAXIX#i{@K@X0~kMwanIh4bzoTfD$ZjyG_H zxaP#l8pcYWFeG)QxtbX{M&s+>hJLSb+U_3MGwL3GF-CfQi_W2tP)6N2*QyH& z)8B94EEgglCF%$&1G7ek+Y9IBk(7N4>d)GJvAZj$Tl%=}9wW?OEl(7Ia@O@LDJ~`C zIo?V1{8fU^Ye@@qX_o<-y6u}eXw~k2io;1-x;@AyXwiPzX0~G&)G4+aa&9gPbO%Fq zjzETmrPa5b>u&{r9)N&Arjz^$8K`JSmM6tEes%-`YN@vQYTIIlmE0y3#iCS;hsr%G zw^*9~M=H4U88+q^oD5fSxoi&Ivp@;DZg)3%`du65Vz_%MVIQ--gfE3!2ly)AqOtbldJ!04Q*q3gQelQS})-%5H?=bNN^ z(XhkK#v~YHIvpmE_H7S{;x3G{@7znvC`#N>3xnw{rP#S~2X7^jh{Sl8QP?O|etL z{^B2i#)uBGU7WczNHpk?5ZkN-+wK&!Y));lO9z%Xd(YAS9JoU~zXV)~QQz{i2ebGJ zd28&{43(~bqjZV+8|IK1$t@o>0hnCRFWn8(af>&RE*U%oN`(Xom%ZE)RBX@GTxLGn z3DSEkb$$Ks)Yg3@I=m=w z0|&ngPx93sdN5nb`$P#@>XSLsP4x_p)~16!7}lDQ$uY|XgDbvK`*S^;b|=%M>uI7= z3`Rt_$;lI$8h;x(stmr^c%PnG#jv2o(BDt`YREY|LSR2{B6`$?V?3-3(?j1Gd>tg{ z*JHV8+_B#H+L^{lr?m1ja?s)Fjh#ewV@(_SK`UD)XYQKZQ@8KXM)ph`N37wXx0)ZP z8!aL(9?vt>-1<2fzlH{i@ekY<4HZ|KxEa49w()EFg&yXJ!e@BRtUgNC&m?k>Y7sTqEFXhq&U^mu)FTN*=m1Zf8qsiHy zXMOsmt^9K(6iXh;B&z*I8NC=++ov`RQ7OitBNwCBv%Cqu`?hLC`J(UKlek4DCdqbFNQQ{U!-5 zV|GwClT`E8;_Vib${}ehCp$l{^)rqS{$a7n{WuqK(CuY2q@?#CZYaZ33fb>dx{zUZ z2$xTmaG4ghvY)#BsoFGpIQJv1o5$Z-4Nlb@ba&%C`zpgb3?JF<=E#?I6E;3@8DH9A zTNxx+xj8&^n~*b3T+!Qm0lGD7UfSgjpE+Tb!0V?ix4E7tsh&`hA<*ne`W#3-7{9E) zH9kPS`+YSkYjmNd<6z@GMpJrF&dQ=0^*a$)gurTRRU9^dI;Ym(pf-${I9w9#)_FzK@ETa|U zYgiRG>I(NFbBfgYYm5nSp)|lhs-x<`U#8~mE#m&v@9lK&ey z1bL&9NX>Xp>#&57Blp9%k|h@Qm8Kr4w>CFSVO3z}zr%{lc(g3VLAG`Lpzi~;PT_F$j%=GRxj z-^BLKV)`=cEAWqgGoSR4?2B8*F$8nRKh>1+Zw2rT&6n7lOq@P z#>O$UIsyLynX*0VWN48WE_o;Az&EC{+F`@5=jbJF;mv-}f)=YAxu+^j=14&LoOyCF zGuHjSuJI+qJW)O%*@(-QFi^M$-8)TgQXNS63z#736g$!j7_Gqe)s1z!tnW4>5XqUa z2*a%<#ks^{#2*A@X6xd~w(t16=CHhv1i{&}{XVp(-#)5eyL@8ts@$io2u}x#uP$2| z6B9rs;ilzjOq}lteGY>lBU3!s%nNY^GF!S*viqN1X3rXYyDk6FEe4$tv}Lc@k>fS`uJQlj`F(wOjh{b=(%~*D)ocl`;sHuR0RRExVT+#zd7;Pa_JcIf(TweV z9_}r{>^3%{REYt~$<{IjRM#_p2qvlS5DM=$FN*)bj{d=Afc<~NI?JO_++J7DIDivn zBvZ|P^w=s>+Jn(}lrl-&-?A6z+*F_C8!7Jlb)2tO`>e zDf&V6OtTz03staF)rWZA;Ogs`ap?Tq$Ho1mNiGEVlv(iNJH?P6tGh?F6Xkky!7_=a zpSR*&CVIXCIVWdfo5K&QWS{^(IUmt;Nv@($m3eBp+|_vOoebj|3V!$8%QtU-ahz8L zm8EL38FbE6^{@3S2pqK0F*!ZZbBdM!JYXCkc$1Na6GA5J(i=V~aFRdf37^ndjUH}> zPPR>hUklOdXu1Tfu7l2T9uI@Ot=bp`!cW}(-A>K6ytkC=A!Xi{I{+QBo`8jQL#_u|BM9Oi` z|D91*$_v_2CeMKW9D?QsJCiEOqzI-4wr^KLPnpYrF3oSl6UN^3NR_~G@0ZI2*kU@Z zPnKkwY%*dq&6O83eq@NXBHy+2X}W{TY{LS2_P>-W(|#oRUJ9l3B)}@3De=$k-`%Pe zUVNPtk(u!U&OcD<%y?*>2cb@DAZ;Dr3q9UlG#mVUYP~l2YqRoU%|U6OGc0iwzf%(` zUvU+RDm@uXK*u7@YGUFj)L>B2TCuTFdj?r+La*#8MJRW_roK*k)55mOJGVNtQH)2< z1iUUD$7$zFa$=C@ zx%^-;`nRB}=%12d@U(e*<#)rP{jh)U8IPCM2;Ng5s=0L_sbD~65mCEi;A8EVIMPZ! zRl9MsDQxGY{ly4VAiDvxnT4=bK<0`bnjrEdMW~526jOf-B1>nQ2H3<;t)&KC+$Luu5U#P&Ubi3Vsr!%;Qk5zu`zG2wu#jyZ=WPbb~c>oKcRt}Nl_pa*ZG)P z%aBcVW0iOL1TsAO+c*ZY_%tr}OBYP;NRnYx&n%#_*ZAIMsABcBrOgU3nd_Gu0Mbhq zr2_S`08D)r!va&<{EiywmenS zET;-SJ>81^hXgZi+bgs&BgES^BhxY%m^y=cti1(o+)_8+)@`e|4%Iw(1d5IKIh++; z++CAj9^E>QMH~5aoalz_{gp2x1G$->AQxPzAn zW}Bd$cft)^)i=ZP;G~uXfMo?8owurF=1xl`GiJV(q=T`YR+?7@5g#0;U9Mt$G&v6| z>3FeUSmqH|Uz#AGQX<&WZ?;(72%`kJ*)$RbXud%^DFFVJd4n^W588e8y=rFGtJ2#V zO9V3s2uOOOw3#;;#(dCsQpRuAr(ViqeOd&L+?)_)dm!i33X?n!!Yt}!dHN}x%@a<` zyjSd1gUg^%>|bsw$p^F&+Cv%}bNuer4l8S{B!H?cjSC%6c#;+IJnzm%PTlS)J*F`v zez{!{j?2Ljb{6sK4 zv~HDpee^vyy``v%!C{J3k4+!ykje3T{&owrj5H^(zCObmzHvCdWIQdQv1Fx@?l=67 zlYa=DC~Az=M>xrM>WV-@ZHkMFdE(8Sw|Q7Od5q`04$F)7zA83KKU9PH1wBvrT(|#b z!Q}NMHmtPs8y^nz9_a9P6u$9k7(0O3Tx}QmX})ygVo>r($HsZGIdzk{tb`U}S<4M% z(1+|QPT8SZw#HIVCRT*nH*;R{u-uvPQs0aTIMi58j5>dwbI5I`E!zmixjB8p7=f1} zypYG_AdYda>T7xNi$IUoD@f0m_C;o`rR>bS`U}*yPobdayx8;P>_or)ceAO7x&Vy+ z9aI=DTzx$UGwp{+59wif5IUG-ek;Tb2^c)lcEKgpCLEIh6yNWge9qV*#3 z&cqbw(85^O5PoXE;oXBDDk}B#02Jc)?M`k#X@f?=YdznMq_;q^x9n%Wam+!1c#GePh#UgdDop@YWjq{xnsDr z9;!d2Dv-3`UCAS^h475}5J?323!goH61)6)jQv~XDNkgp&En>TSXgSO+AuvxpEAe z?`-J;VnCWWYIBnO-U6m=cji zwN!(hPF(a@J}dUzsx-A_pka9Z7;BWnA53lE#wUFlGPZzw$=}aJuLv-VPlE3F9PKs- z*yM(8P$LjuCzpghCl-Q;^D_YJ=1NQyf^B1q6vpD0Eo%Y;J0c4okKhV*T|Hp9+8;6# z!uUWM^&ph%?9FPI06}AeVIeg}GTUkEiM*X47X6y2YeeBM-?m%Z$zh5e5FHj8$gCj$ zCc$c2G({YuKEmLGDyNG?ynA=Wk!5q2Fqba)p<3pQZewX-M5au3qLMq<_?qXct)9$G zVZN4nT!MbdYeUHRIN|lfOGX(G@kD8d5wBWW<|_F|&xG8o+{9VwyPwXmX#+jT;gNQX zdvN?895I~!a^m!~j$h(9JtZ+Kt8J1!z39Va*|u$GSQ3;fBnpzA&a(pQW2*o@gmR$l z$}4d{zT|=eq2UT}eodvU9ZPk(Bg-#Sl-4Mwz64&o9poF881$fvqPed1Fayv>Rz+!L zssl&k+?OB1oejk^<$jmkx&lzUYnc!ZbSju#%G{b5XEzjv%DIZSn^rV;i1W%A=O@o6 z>YhmaXt2ODy+$K`%Z~wGO%?jC+YeHv294ug_s#YX>t{cCH053ms^meHTfeVf*0Q9+-=ILGr)$qf`+Z`51{ielxLdWNby_0YLsK z1qM8)Kr?|xw3cGaZ133&uT*kWUa$ab#0>j$+1!3p6B7}e7T@jpW)d;USbsB5ZhC48 zrBYB((9_eSp`if;?8ZpuZm&5F6|u$v-q0Ubw($VBOUsm{G6ma)8)^oq8lMjQ_W50! z?%jLowc*z)RbS$=WVe8FXFBsaYHl?mv(A4o1|`-3JHQHWi*-)#+=stAWuu4iYc0nc z=y|Hnw*l#Ea%E>`!*qpPm;ZUl8~;N0ClI_MqWcVQ+y@T{pDy?M;T%CiFCrcfMv zX5smTJJn?)2m{ulU!@t+)wy|P+5*ak)SdARMgy@2N6wc|TPod^&`$Do5Q!=!JrC_; zYow3uC~DFj7BQ3DefP$gG8(EM;oEN^wY~??SnrnY(PocauoBTXm4b_V5O(IM#8Ug+~aZwbVSd^ zh&npHjScI+zkWCPRRH-G=gF#_q-aDg)Fw4OYo3y5#?{*XD_gVYL!)~r73RNr*5u*P z3*7G^!kPnaJ#)itcEP3A4UuEgNpxGA!%N12Jinn{t==Te8q7kf7P#y3lfk{GDrSuf z{zVth_BO%PO0QuKGga#!6x4jR?%dh4q^p6?pE=!!aGx!o*;OGTfoOfZ4VdI}Zs?N; z<`Gx!ufa1>n3B7%_%ige)K9ZSn(&4+coVyZLR*HYopp--($Uui;eoUZxEHe*BG}Io zvrg##$1H#+P+WXYy@Z4WAul^2;nJ`RW*afRzgusRoYw|ZJ(m2r)`ydkivUH*I`VRB zO^wkTW^IK3006YY7Ie6ziy^e}p_+iqjho@=G_m4PFKnF~A=Y=cw>OSzX zc$6F1&J=&A0dy=rxwKD;=lu;0l{}_XPhP)}p;E`NmVWYX9r~x~pN>cbkouv)`S)u#L&ZVcUztyno>CHw>5X-nGN`MYV7LLv^X! z;e9-za9*X&}(5^`$#&XR%ta@Fg!ROImc`0yy{Q)vg z1G61iB9GPn`rOBJAiARUlP{`V)1=o1L-YLm?ir`As%ARn+?%?S@ZT>7T==cliL0j^ zaWzIIO_u;r!7Mei|3*s{=DRe6v)%dodY`e_ZIB75*j; zyW5kw%^RwZ8W*m%3hm{2`}co;B#VE3sK=>r@t!h%bKZAtJuq7537?t2X}`bP=OXv4 zGjzLrKyrG}Jaw!xa4@{)H0rFr>bTQl#Q#5TAx|sfBS10m@d1<}06L-(=Hu0JM_jnJ zZ>0)YymIQ{IXIs0{rZ2|_W%1KJ%}hDkL^>~e3YFgoc{IcWm{f-AyN7Rnyt09^X)(I z-G8oxe;Xanr*c2Xjt&R`PY*JFl6-vshcW-{QAXT9e(n!BGE4tTRR8xE0nbg{6o62l zQDpxu^!&Tx{>wQ)2ao%hKlLSA&*cAT{_)-1IG%b@L*?fAAB*U}-RHH~V^YO0V7TM| z`}_aBcH)nRURZ?vTmJl?3+lftzVPsvdAH$UZ1R7-+n>kVqg?sl+VB77hySqaEg!JH zUiem*{LxGQA1)HE^6Yp@%2e)`|FsAI%Ol;LMo5!Z`fuN_(NnJoyTQCkk89^R1_xHcGE*%b1< zX@zFdR8@U%_1|k>h4D-X`PakL7}@35jJ#WUlv=C5TkpHTSA5`1vFru9-8&z-N0N)S z#l;Lwjf|?EX$5J$Yi)tsn3$~iqrn;$vnV#>dB>GG)k0OnNkX0A^Og$YthTEP1MSM9B~REc>~WM$hWz zNWf0NSs7I$vt0G?|A}t`dVK$)Fb`C>akhD8Tj(y8L=sh&@PReEW+czqG{Y(mM zuU<$BFwdY)`+gKVATAc_)UY4Ni9Gz-%ayj!q3YgZs2N8?`Z*4#XHI?#E!{Ke!Z$h# zH5Za~Qh?x99j$Xbp(rBl;sJ(?&gpJ>X~h90eR#aSyabqiO@;eWi-XC7G* z_h~LUP4`&z>yFgp(1`o(7Z@f+rMcp#D|DjYKTuE!_Gm!l1k1K=DhKMY#)IQ{YFYle z!NK_Hp)&10CiqwX%bMlonevx5Hk>mgm7YMn(_qQ$S=KeSECH(N3Xgnm#>rLW5zQh>5(O6n*4DILHRZaGAIfv!cws4$?me6Pb#$pKJ94w2@hZI5 z+Z(<+qfurGCGF2;*i{foXkob>K0Wv4=>5 zrj(=E_bmh3Pgr@@BW#2D1*9b=k_9Fx-U|v$gtCD1nc!Nz+Ncd{26uP&(4!+C3TB~b zB$kXx&CZ-_9?q>jcD;kP0@WcA`@7&Wxj2$4qkC0d>$U?moVJ z=Yrb}Ai_`z%;|*_T&!N799DcvTWzmnV z?P}Ocw=KG&EL*{w;y0q7{yE*U{x+X*aQBN|x8f|XcF3$?Ub9x*l@`C4R!DbsuZ=Q6 zDA;6ludj6*hc~lhUU*T|t9(>keT&v@Y!F0lc7q?$I_#bf%Wf>ZbVikstKZ4!XG`|2 zl!!A-A)09EtYEmy;6H*7>&Z{o2R|nZ6GT7t%At?;yI5qh{ZYWPbMI%F2Naw+*$vx2 zxH7o~Kao0c-7AnYyV&oqH!Un$&dHLF&Pns!>#j^|pV?YF@SVDYG447`Bg}z^-z-9L zyUl#e&&M*str#scTc^&hTOy*N_;eS^Z`k)?G)(QcQ)>PTYk7(K{neo&a6@FtSuX|G zj}KVt>+22la*lHQ5^wiwXG05JoU^?NQY)gZgBGiH$9o-EvUQ5L7U4fOkd+-{T)Qs| zbfjl|zoy7z=L5Q!tc(^J@W@WwDr6{n)dLI| z;B0f?*Gpxm6vtX9WURFJ#F^A-ze{yA1*I3uUt|`Z# zp>1Uc9PRaR?7vAImK)y;PRq!t2z?tFF#pRIy&LGPOglOXaG?>e=YIH7c1A)Aun>#p85S zmP=-7X(=%8b2wYxjCMRnm*qg(aF{9T#@1x(pZ`p1KGxEGe+}J@@cE&Dv828%$ z0EgA>T(o3an9jbtO=M6$IKe#c-&&G86mV~{0{g4}`ZCt+UZoXLm=_XAq7b37;EKiD zQY|clq0`%6sr{@5x(bA6Y{n{fj$3KC_Z)HNm6f%w4(Qhm4CFo3(laGVmj!7;E?pWd z$uO}KjI|xc<0s>kLU*(TXF-{IXg|u~7fmX)i>Rt|HK4Bmsh?49BBqG@DY9Zfv)DnQn_UjkL7DMn8o{hsfN{D%u$<%;Nn;th-feA6v5x6#0 z&F1_QJ62KRY*XkGyf;^2=M`&KK@qr<@{6m2DBQWr9=RQa7xDX-Z~sOIGLMNYLPLT@ zP?(oRh3l!6o!+LiG+Y10lkcz1$mU;k6^k&bby;&mMbFP~ZEe-nNp|+W*_YGS*;gw= zT;lJ4W$_zurIOd&r(xAai-ylS#BCAfh$(4J2qKsu{tzwI27UXf>rL5OhW~W7d!%SP zmKu8U)C?%uwkB|w?IBO|Q>shHVa2(^`4@YKNV2nZ{X{I0YyB=nZRaP`G}@__f+dqR#Ognzm*z!N{F(-B%|OB-O-$%%_ow$2CbWZYM~uF z(hZaj2b1P#Hg%(Y;M{96%_DN!-8=}3Q7Rn^6l zS2*QKVM5|riNX`-Tt!SwigaM%vbh;<`=5gJSnU)h`rzSW*{p+UtuvJ zi~5lCcHROXe5;Z|fGzD?Bn9UtNl`IZ&$FQ~RXTh$0#E1sEhi$v&(EJV0!KtDHb_d` z)M%YZ&%SmcG{SNOp1LGgClF9?pc47D*r&0>!T9@d*xGKd!HiokAX@6bLqqbmK4abd zoXn8QBQAIMMx|cAj*jU4=SiG_watgLPOmR|&W>jY6tnI{3wbn+%2k(^{zVfMsfmg7 za=Hg>^gF^gu$EzodIYI(3-TbQvC`T!faP(UdvcQ`D^QxITf z(xaX|I5zg2*nR&@mArGPVV;2gTM3C%IT)k zaGdfLucMehi9^EH2Ui;ArhxD0f)c2~E5rq3y9uZg62Vx}GKQsR51}45@ief!{aKbo z1kUy*Y`^ePe^lE{DVYg*3(^{f^J-NBlA4H%L2Ns%lj3$H&~F5SMb@{o`XSL0Od-`0 zGQ^1)JXc3UqW9;Bi*Z-0HetvtwtwQMy;7;o2V-3i(b*9`r{T*Gcj{mJd{5L<#gz8) zYN3lU(o@LcPuKx?jfp1(^^$G45Jz@JiZV@5?YTq6o! z@?eLWR^MD>ZWTQ=bb-Cg$%JO8)4o~hhd9GcSd?3awo!)bc;wEmi_-nz;rvZ8k7^3@ z@cT*O6m+7e@y{(&mRy0_>Q|6#EVTRLuw@J<_^LGqhwV6cS$qE}`cuT0-WmRrmt;1jDwek2^zydA28fjOB+~{KK4#4F$14M`4H!TBYjf{+Q z4>nd3D_Te!=R_xpm4+LDeCgL`JaLM{7Ebx7mP8v&5~@_7rpflF$YVk#nvtH8&(8_E z%-V%jyi=MGDT$R)!j~(7?!Hd`r)qMFcIZo;(@9a<0opl}KS%Amw&?ygo4@n@4q4vh zE~}28ryI$ykNNf4F7#Knn#C?Wpw7K*;+{ZJJ_%#NTRbbv|N3<*w|_AlB516)^mC<` zC-D0_(P=mt17wApe0PHrQ;O!iJ3oCX?m}D%#+0NE5gz((cB~!E6}sw53--<@x<2Na zWMh7gGiYCj&)J5!ElZ4)c99c-At+ONjk@W(rRfh{24#`f$^^HfA=skN_nfF0fA0yw z-6;+`BWhs0k-6iBK2ChSy29 zL*T5sQUAI9hR~m)tvM2#Qx6x(DqY`XkyYNaModXA!%>>!hJe0hogoBrp*O^{wEsQy`2L8h+(m!3#n99kZS~ zkbY1iC6*K2h7!ADzWY6r<*MIy^KfWZ*kmWUHelh!7&%sU%y!blQmt_@bOGMJ$%-q% zD`UrCnGIu^;a&R5P_%uQq;Kn~wgEKUB)t@CUzAN*qq3XRaSlT*>%?ZcyWEb3v}j$_Cg$-gVfUk)jNgC;3^M5*JGcK0OBYExIixNX+RY_~#yyL*DC?H)Ml<|4qYUFSyzpD!ux# zk+SQOhW+{@CxGh4T4B6mQsrBs2}}1!X0Nk#*cD79R2&3giu|}(I2D|J2gL+Msh zTB)Ij9(qJdrMp2|a_ELZx@PDYx_jszV&DE^Kkxr}-~D{t$NsR7gAaUIbKmP;>#Fm- zu4}Di1bWB#1Rv(QM+Y44qj)?y#=T>P*5;eB9wLWb&R^t_b9V-H^9}lu+*_%hbRK`i zN3(8S%xuIh;EReO+HKnV`ki)LUyQjx|L6Cko2GN=J4pV!Pu%T*-jU0IByce)UPzzV zlDj!lk2nIt`vFH#YB|Q+YO>s5cQWi2vgTS^Dc`s_$ojZ%H(HCv^NJ_%0ovi2VmVEe z>p^VNmhXdNA;Xjn$>mDTaoff6;Uk6jI&%kb9-Bl|+lwQIm5$uB(%c`Td>F~)5Q0DC zKW!hDOAzYg);2`G$R>ECbf@5SRX}JEyNDD(Aj7T}-n@vSgMoU-y5mhW1eev4lfr9t zWf@%GnX2M_`Q74m0F6_4LV%=Ah=CuD?W~hB#V+3;^tiU8gBeY%yHvrf>T+#a59p>C zY!&4;H#*8ER%#d~Z8SO$gML+p@U)pSFpwMcqZ)PtC`34SMTjG`RwJc?`kY6K)CV#L zNN`N){;FO4X>mK`+0v7VPs2(n;HD(Dx$Q~bs^d-rr+t65oi_+mW$z{dBWKg>sGLD= z#utR&aQ=|=b}>uEp_|n_ZWo6+lNf5AlYwF7al^(q(c{T2ws?m%G&`KrYNO1G2KtUQ zLuU+VI2Dq_oOtXy9^EC4e}rg0a=~pb)MyDEwdCLtnJGN>C>dcc(l>qd#VYlkE~jS* z?>H*etM>&+j9l@g%CVm#aCq&~jPRL~N}V#?+e|}&2zj>q3S~8OEKLc~D^H4lR+nGW z9jnW$X;A778ZEg)Ab7r6kWx{XP=L8yNCKNlcg#7grG%L1vdIh#zwhjTZb@Z?C$2=sRjc;@j-w*W#uF>_RR@%D zW-*u^*56)?=~u^$dJO1N@$6)FggAy)I&4JNvp1f7Y1#^&^MGxf&cQZpl0-+FE3JeZ zm9Mkb4A%h&D8Gf2ckDLsxU^^5u90vaos{)6Fq=pkCYd7t+qdbke9BSSs6JmUn&CA+ zC!BOYq)Y6O5xKgc*q(VMIUh`1pr{rsJozu%kniY#n90D$~GbS#2?@pi5G+oz~ z-{{MPPPpU{+Fqb^R_`yel0s#8-R!%mscE2-Ar-}zJ7${}WGr~ewxjNMEKX72hRIHY=_rSQ?YL;Mt# zBWP*+a97M5LX?D0MpU5&$CJn!C$I!72mCo4=!q@Zb2tyK6X~PuO)<;zF9ZEbSc)QS_^H7 zw!c53RC#g4m6)X8h(+3W(`TK1?mE)gr~>!)@tsWQ{cK2YbLMfSfbX@OyRf9Bf?KYl z^a8f~q(6Zhwf(#B`9Ei_c3~w(w4+@1+2MW-#O0sOZ5qGRWfhUljcz04;`zVe^$eR| zJTCnvZvEhmr;@dyq2+kP7c!I{)#9bR?$uV~k6uiX4aNvpWX1XYF>nHP{snM@;<4WF zv^`&{!vTZ_x||%gn)x8Tvzm--PI7I^Kqw?4cXywBs{f`O!nh~+6ilg72KHY}d!Z1? zz@RY5s1U9CVvsFDQ~jk)hAQ1qMof=^P9X!TOzLIE%XhM6l4Zj;5Jck=|E|XzrfJP< z&ZFOJ_te|7Sio_$Pxvs!v7hS@X!%?zNS(4;-wT6Ype!P^jCK(bi=<)5KQyuf*EhGPQ>|-M9&>eDq$=A{aYANmc(#@=RFLZkR<|UwiJ}4} z7w+&M&)HO`H@=Fwfiv7*X{9zGc6Z*Gwacdn5-VF#vj!1j)84v`D^AOb<>KJgx;bj4 zTHU+#tLpKcdks?s<6_Vos^<#eI?+ey*bG6N+LuZ}UvFWTVcpj30r_j@gr?(u9OrPz z-I32#0wBJx#yL%O90%Tng(HhZJj!6Q!Xgml-n4HL8Rw#Xy93|5UpO8n{+r}Nd~o+c^8TP74<9XvAGzXO>#&yRJ}Bi(Zs=wo#mLYb^B}QS>am66#7^k2LFV%V zl9!+E46)HVsjU;Wc5I+k5Giei6uOO=*wg!qLVM z^Fp+db4cp_d|PRJ&vx9rJL>3!HM+LY1=fO(JZc7K(Q0}EQ^iOz{LBW+MoU!La8E1` z1v)71HLA|IGxl`urp4>j`(iAq=W}4n3qwzIPw%p7#13+=SgcIfkoHl371GJ6|b;)Str<1#KR~ujgQKE zb|)|QYtDx(K7H``LTz*=v(!BwiO$%-A>mjYEkap4tU{p2v$h0fuyH=4*CBkR*!*YsSSC})pH$8&9NFqP~~R-eGE2ZCc7)UK&bOD9Uq_1BqT z{Cb>$E|-IwNRXyeJbF$yYGxx|7jv=`1J)xRBNIBndQvAi?f+-_eI7E|^~Ljk^3s04 z|6D_Qve)zg)$qBou;0gxn!Yt+O6Rf|*wdkBM=2@@O1_;=@LEE=G~bL#C7es?vIV6U znmFEsK|`-rUdtwWofhjeN|U2zH%E7hH8l$KJ~T}D5ma)qpUa4zCRWuB>zS8&ej_&2 z|54L(mvmxBKD|Y%8C5otCtxRd{usx*b+y-j+~eL(ODPHemFdV%YZL|nf; zmG)@Xg>0L!)88MlnC6G3FV9>!1RNfB(pdR5K>Aaw-H&R{FD+>ruP2*r^;cCAh(4ss z>lM6}z7bpf%Z)wOjA}#ES1HKz!&Zng}q-5 z#HV&$`kvKzcU9)ZFR<9A&cwE?GJ7Khq659lEO$nO^~bzi%FIu26g@g_771fOHr$LN%cHeLS*MB_b8Y)?k^M5Uz`#w50z-J5DR#Bg^%{e zO<|WaDQ~+-JaEjTGG-NYMGcra9uf|0?-?9yy>r%S40}(Hy?qE)n6wt5E9NNB7 z6sYf@st}~DfyYhNtrr^IOuyr?F9ZHkb6iP@pI%|0VC8Y6bD2awit`>89egn7i0ga7 z9Yk&#cN`OmNbTqyf&exaa(!^GGs)*iSiD5p79R+|h-=b*!6X(A^o(#k@wvxp`)mvb zQ{A2_uQ!fjQHT*MaLrSN+Dw$VpL4DmAHq`)j^jCw6Zs(0(qvUTR(e)F$*9fw8qTLI zg2u@Um(1Sar*3L%NU1RUsZGUr>9e*BDH`Y&+Lkq{@E*AzOE~OPx=6i?1uV_$pe;(J zYT?bDvg0|sxvNY=s$WM*V?{Ow=?$?ovBe)h6g%rJHJT{BYi&h7hl+K@R%Y8N|!aZMk0LU7#!EG8&~4nS2b@HJ?AUd zcd?xtYuYibhM*Zw*&UlMjkY~@sf5F=eQk%Y_HSZdnbOFmeJNb4+#F9klo~4YO)wS% zAHf%6EJsyc+cTtYuA{7f@KAYXkI`CSq=Mvp+U>CMZ2wtocl}R$JitFUr(uVB zqa}Knp7LH_(ecV<_59MtobYUoR)@h1j|*}fR^k|Wf*Mpc^FJ*8&@4jG%a7ee1XA0& z6fyc1Nj2>_BW%$_?W<%;v_sb&nZC2p>>g^1O^qHTi1=bCTTsJJ@%i~0f+AAyywZK| z_nLI@5Weu?w@*EkfKL!`T=Cw^rk%pE8RlnFR>XJEJ-zJuV78QKq<%EQLBoD+mNWd^ zuxvWvN|eT9lMECubM^?B@+~aFZ+Jda_0C%(xoOfVjC`zbb@{y#d4Hfd@{oFN3z=c; z4U6}6^(>d{3F@xb_r%(1KPh}@e&s~*{)PPT_it~oiIQ$fpSRi073$U-F({A=Sw|SP z59=+?TyIcU3txU49ga=B3|4^7?SF(28#k1#vV1HV(SG_Q^Ribx--MXuCy#w@nzq4h zDzf~$lSp0CEPe-j{DbTf#J6$VE#5Hm5Ceb9wWN~ZB^|AuzMcS?N0et6SU2@2jk^N1 z<<$*$>mGU@5Aw~v*3BzB+%HEKoGg6Z-EluyZ}8u-+;94=k*>o7T5K-yY!ef+JaR@) z_MV{Y3aGv!Cg()V+IyI0-NuCUvmQ+pl;>!LYu{P$5p_dRjlRkr^&NYwq6G)TY8x;z8IFWf2x&dRs=Ca z4ux{G(+Ii_6fX@6ugOu_sMCecR`UL?66#gNP^WJYc9RjxE@$jOw8i?h!s*RUp2o4 zt7OKsJ(tpJXHDiX?i?%XIrO9KsI(foGJQaD`Nm4qHh zrr-UN)`$u99Jf6;&YaXTDhPBslpt8?UQ1Sv>AZ!D1( z-!UsUwy$^q;XvAVd@pT5$j*?PqqD4H!jG7&@(S_UTKSp#Bu2v2dBr!T-9)AoP9udP z`@^E=StHt@+MMj7XMdv_qj#U?rcvZpYltMRJ7`J)hpe@a_2z>aJ{rw0X}bKL;hy<_ zx!3x(9ybzp+ISjFb`+e>5k2YQHOpP*63{C@9Wo+hYRpbvIktL!fnR8F=hbEj zioQG~{1z;J6G$_Z<0_KLHSFZ7Z$c17{#W1##P%<7UndBS3+op<#Jnt9`0$r)|AScn zLXKNR%`elOr&1F^s#xVrN|6vPde7l1n_i9I&%@<(iAw4IjB3uso^?I=KI!IAU8w4I z0ZJ2)il#ut(RiDme?4a`vtBU{m4@WJc=)$r`M;lyeS3P`?@KEy?pZ`L5Dk)*9z1>N z3JC*UzI@L4_K%&sh0V$3^PR@q_0vrg5TA++UDg2rZrJA+Q;I`RmDtV5+Zbf`KrHPB`b#YY-Ko%hv6+PBQ{d-RMW}B6`D@Le4YWES+@K-oXs=|LP$t|n}LO^El8HU80Ww3Q-q0s$d zmHsF(Xi7(j*9(%2Kd$l5mivoWkI%g{Jf4Q6p)0Ro2p{KH&YJ$zyU_P}(jm>dZU2n> zYng$c;06Nj(C%f#JuK1Z;q)Nn1*^`PEUo0<=oj||$?ZHHB_BR3AhojGUCyX{W(*ua zk;J!#OsYOYfeZ)se$@R2aUqAYHLg*C4a!z@Y#CN&l~|lifQrB3@+Kb-n#k+Jh#M8jwnIFP+C<8?txT#~M|h=4y5x z)i2UdIz%h!hh4>HSmkwI)`~+QeMZ^+mpap`5p|`qoOX}qKYi^iof9o;_26o5p%vPf zQf}3Hv4l^9oP6<11dth@!gsWw-(TC=3!^YuQDyS}BBN0;2QsCfBgA^X{^6c{UW?De zB?7B%E{A7}bj!u{iHm;VxS%KNmT_Jmd><5gBPVi^WeYjm-N*^xUa{QwPw?Di)R~D&M9Nzl( zJ;218Vc0*^3$vi!G5EFr>V_=i&%9{0Ej?`fe=SNf_DA#ithdkpG8z94`(O18m^Dx} z|7>LmH?Hun&H0b7{7YZ|);48ePzpEh|DcVxuoq=-WqMLBMDqNHzW=MO|0sI1+^x)p zsC%FPo#Ov#RzO3+r|2+xy|RB$`+u`#|9k*HFbFb4``^s|e|`W^&L4bW@24>KzkJI7 z{x1_S=nvxiZ&Uq`N7=ssY)zuz@S+<-#7o$0sx&3Z+bc(vuXd2YncoT z60#ut9~S`VGmt*#Z(*?dpVsnA)GcW@rbjLR`&a+huYe{Hz~#u)nEV61{+opSvn+PN zpxytk3DZ3G+TFio$%5$P^$aBQUem#Fi+>WI^-F`Y<#XpP1FtFc(|iqu!?#3!jCN;x z3lca4t6d3PPMkY`+|QoC?Itr(Fm2nv&Wlz8_f0gCaQn&q+jB&pvKzojjE=Z2>jUXN zVJ;qkADlU+vktk3BDOG6D=sJmJ~ZxFKL``OOA?c4tZ#ou7lW8;v82x=pS&M`2D| z`TbqLeQ{DyJF}Gq;M~y0-9{Ojmmtq|J8r}B0Rf!ZnZsT9Dfcg^Zc!pj(~an!Ek8#P z{Cu^xeyabO5N~puy?hj%;l@Mekvq-nNfQ$39BzKp4vKFg@c;vXe_ND4BU%Tps3SYHUT zGhJ#dvvBcfN&WpQ;$*i-H`n`ezdwlds@B_UC9!hT0HR;}O5;*51&_va?}(~euBA80 z@TO(`TgZ3sV)C-PL}vi)2`+Y-O_%8WXroxR&9od};oU07lty``Ue~@o(}?Mb%)L51 zJxQ*02-7XE+GEa@)UGI8rWiM`VxIa&6B}KiC(twfPK<5%=E3PqCO42^5wad!9Qdve z0SK1G{UlwMGRY0jwCe+_Dr;0S-cUIS(gDwdvBail8Nf$RUw?c9y}qnRA!eEQ1bsQ zJ=vM5=NXtSGgbIrkaTfNCFh9`otv3;)rcV1bzV?^;L!E$7}?0SY4HeIJI;JI%qnv1 zqY!wuf!utpD}r96b5bgZz@y_kQr(Lja5nvm^$=EylneOUZY^fGdM=U6Vo_Hl z)zW!K04BCylh!?P_du7|_NY9$i-Z^pEIcdH{yeP+8KX6GysQ?d@1cLPEoV@o{9301 zNKJKQ0XaN#x184p?w&VIjZiRZQGfU#I5BDiNT#il63Y8#ixN{Bk|PVQ-o*>tgBm@^FElTEk*BUcoRc zr2SIyIL9j$=TJVcM6T*+Sf_o`I1JJeh%a-<^B~1>euiqQDxnJs*?HKIWY(8Y1LY=h z%huy|G)vrAil+5FpmfD-PhY=tCGd?#fkkT>B1lPxjwmDpwincTJ8(~U< z>ytHBl{A9vMvWi2?})$E`aE~CpGE{@?=h$C7cqtr->G*_x#(spySgjSbyf>v(SX@o zsA&pfm(ejc;$5Dht8=<0fgT7NzFEI&o7o1V{l!& z;_*SEO3{1tWg01~x^|oau`g1Z+mK7kYspI+U^KrnJ)N!fN-~SvFmF%dJ^$m7_PA~b zEPLCgaGM6Xffx})A}>C@MBgS46Q^CkD^V5oP5MZkV_WQfJ)+XV&w3DJrB4ffbAV&y z7gezSFg9|L&TiUXr>M&2FfBl`+y%`_1%UiTvys~*88LkqV9kpdmUtDS#!bRzfcl_N}04rN(Q8GaeUVX&+17A32`JF^C1Pr*Sip zBKm*k4IkYe1W76%W^{K7Qy|7)UkuUr&_Pm#jWr8BFN+|ex|Ma38$*vp6pa3Iak9^_ z9(EJ|WHz2k_%1*gFvKAvA3!Mk5C~|v%BTWQcW>;3E(%Yjr~nY6R}uJy%0 zPw@L+q$Qv4irtuGMMppKp~rR+nr$6=%JPn(3OhqjSEp99$P7KX!t$QBN)@1)Xv05X z+j_4rypsy8qk0Y9sclylQff)IYr%6S=Ns!f>~qW~N3B9d806`WHwJJd(;{9Ta)im8 z^8|f=xBzl6ig>QH+feS>9l0R(PX6zSzxXrpOrF0cPW)dJuYq-!xaeIX`0h} z1@5rjF?6m=tvO!^temz6vX`towR}9xKpLyY^EcKN%LV*Kzu9tSSKapV$aWUDolXL#g=9pEZsiEL~3JsgsxV($B|9!W^HI<@o#|2tp zRF|_fR%4VC@SA8N2DZBV?(;bP*xEj~JdF@nTuGJrF&XMXxS-qNdU$a2^ucm36NE*F z5vFV9eJ$|jtt7{Rp_o+*_7!XAvi12(xY=VlYA+)%Xe=^GtJK|j9P;`iS&LQo1ijo% zF?OlBT@eXN@vseXKVI|-SMP8kQm;cwb|3MSnQ-~e0 z8GG#)aQ}ke&)0~K2%tA^NgTv;8w#r%WcjX4xS0916G+5-d=yow44sWL)GSiVJ=@5& z%BuQ&yt!0nDpaIMrnO~dm%HTh;|V)kL3DK9mTfZI=_LjhO8-i|#?JCw;T)O9DV6F_ zFkY0TlgPbf%oBjvn^o=r4n15}#3I1X;JoAZGEC;7kG_zL6L@A5h)z}ya*zZfdo4l5 zgNeavW&jhn(f1475yGNdTc)UWVRbq0Pa4oL;L#7SSNsYP{gqyq->2$aDmRqo2ht^g zFhZ7P!~151G=_!3w&>m?*zN#bTeF-Y)MgQ5cFBK!Kklk}UXCfINHzOvSfnSbFf5hN z?O<)UktK6#7k+IiugwWT-qGUaT_`Wm0v~>a#0BZ%!DLMMrq8CpwTCM#+QoWXp(#CD zN(Sp|kpg|aDO1(#i5wD%^fJYIZ&&-=|2+#pXHlzE`jL$k!9^jTQ}1g3jpv?+mG_0* zlHv-~KB~Y<&%2fdno=N8VK_J36K!)m?^~=}cj>XEDS#0@4jxjPs<5B++C_opHuozo zOW^y*BV=h_ypV&q=b1Xm9)nV&>;)9+bJlw0ISPknEKP>neQPU$f@zR$1{DJ81Gs8- z^8RE0);u#wvH<1nB39vsj=b;b_+zB40UN>+jXw^Mo;tM-q=uu*C$=++?v3iL20N$2 zkU0UGU9VjccjKo~T#%iqI;SFs-*=JqvnFbt`_*aQk#aiFv-A5T(N^A|)W`n*M>&>j z8#OH~;HKms-s^0fotw)UNQFLl zIWilR>>L|Hz(v>!ODLBF*U8bCY^a6snwn_AXc5F+yTy?6NP%*NG=2NCQ!#VWuWGj_ zLXYU#C2oWo-J9m>tBUbqfWl)2y3dN-;!*E+M+EhkznZ?OHEpnfjFy&qg^Ow**ixeC8c%($_a z^fO`WiOhF*fPVus2JebkIt_5YrEjGx#911VP*!PqTcGj+AU6TETn}7c_$9p7TW+<6 zl#>WVUL6F%d2L5-Rav41$15y|e-(;6jBVZM^Meg=nfzL`iBC3z%4weAkn`zW&wPzi z7G25L1z!Q}MlR?x-4F-)@52>FKPCDNCWDwUVTHu47biScZvpEAU16=B27(qK&F{#Y z7HGF_(8jJ1TLJS(sCrycb2^K>GQdy98<o}JiM9(twkJN+ zc(=MnM=~E!a(ohpBdJ1uL4?PyQd1j;p6I?>P8bxqv91`q&e0LNx=80Flf{7AdhW)h z>G`p#^~Z+zl!tZhvYLmy;j+%mrVheaE&MYo4`>F`WlOp#LR`wy>gG0G z=|B{1`5m{?w~A8)P8|IWsfDgH3W^1Juk6F-Jcr}x16Ul^TiSJAf_4p}*$+bQC-P#I+Wo7M#_wcW^73u<^?O!s*)Q`#6e z=JypQDyK5&iG}M@$Y(aYlL3+ic*o|HzIK^kgx$!Hsn0!TrQ(KTMFNDGz#|4muN!;f ziax!C>NL02BI@*6xhr%q#wNt=l_yHk{ZJQb)QW*$j;;@KW(qAS)hM>hXU5juTwp~B z7>h!88x0^cdC#1S7z;7_KK!E@hHJ{JlG>mRUQellF;Z^xGta>KJESMP4W$~e^j2#= ztA$`Ph+%OIzT70!Jk!4@gjV!{lywqk?fdk1cOQ`SrHMg{^=kDFD>v}4ic(T5d}B?u zdQPvbw;8kyZHCq*@>|UU;M4tjqMV=RADzyCTEy55JQa>D@27cr9}}!H>7o&=S7Rix zt4|{}2@M^ThMUs7&6bj)1+V&#<sX_VWoTOa;KhWQqiVmHjhX8rltWPf|GF2 zU;>(RCHT#3X}3m!x1J@J{XJW^tlm3~hVK<64J|fWbh<| z=eY;uW-D5axVTXU>NML%|Y9t;fGr}>(ivIKr z?xH`y?Gy2tDAbTZz}xQ*i-KYn_WuLMk=BVTj7_CGk03b}eL$zrdt8e>$W9r|5HEmy>4Toxjm-s$-(V`!LC-s2f#Aj)uPS#73;NpN4V)gkt5 z;wPUB{3M^lQwY3*Fq}VTHq^?G@C=PO)Z|~VbAOz94}W`j|8`W;r9_vr9~a1C6emfq z(!9fo_}uPB3t;TwTyOa^J+i|_pN;vlxw!E7lD}+8H_4|o(`xGuw0n>Be+FDnn9mY_ zHaoSog@3tD?s(|lYVt8dQJWP^z;t+nPcwEplBL%~+s$ta<(?EM>*MWiIUbeC4EbQ7 z;6vT8DR10X&1~~&xUN#a7<|3MS6)HTCH-peyna^{suC#9RcdQ9Tk<<=1bL+Ac2HB1 z$3^UqaH_V<&z{cH-M=3Gs1vkuM{BUo!BO8*Q)c)cm#CQK`!{&kSD-bk85*9?h>zx` zv8eAf%ymGf)2Xhm`vlHg-xKp_AMm*wCBv9hkJ;HFoj1g>sudBuZ?4Ks=vEAxEuzQk z-bFFKv^+lw=ZmZcc^hk?5vlxxI?DOWDdAf`XHY_G;)r(WAQ2iI_=lp=`7 z@kme57ra+2-{QV#ydV!tSXH?}d`6{Y7Hl^qzB+nk+Mdq9E0{^iP4?_Si@}aAU=V=RsaU^^)h9 z->9*@l>1p1OCafP{rKmIewT{`(DmWzT$Kz*g-TkIpz~N=`5t_TE$^#A07?!QJ|K$$ zS837j>yfy%|5_SJpIs^Im6@D#)Z|TOWYgYJJnULb;2Kqmw2}egGhPDJNRoJ^0{f$e zBptktKl4|1(N*B8E@-#X;mea{*P-s5t#|Ne{>TE8sEM$@pUbY^pWX`K z8OB2dXEl&mYmmWdWF|&`1yaamx@jYpae5iLlM@c(*>Uk+a*U>V2cT~4ACwWjbmN;V zy-%38mNOE#ti}pJMC+$*=@K55^}TF{qt}eJugA?m#^&V#a7qEkCO!}38PKUal6|T5 zI)zWGUl1NSnQz^ppBP1X-g7GniqxxJiO*K|zYo2>u5V%{XWfeRgi8v_4$pGuN*Op< zKB-s<3#p~9x? zs`kX;4;eo}dm%}AnMRVc9XR*Y{R?($B!YAq!^kV0hiT;ZmZ}d$y|0cbXk=6QVrl3O zN4`s`ka!9_8OlBw*DPeE;M+ts3rloLsv{U2R{;#}Bhb72_!${DW5!=f!m1^&FM2;Y zfav^7S~jE2w^jgG9+RieJOEFZ>jUGO zm}0?1W4DcZ@#vuG#5jt{%T5o8-Z5(v6-F-yip6c=__j_f5 zzSY|-ry~`rSL0*S-%Bs+cdtLzcZ3(tJx9fa*FL-wQf%2kNrVb43}Dwh@M)t5h@c)i zx3gC&?EM2xUMVDQXmC`JfK}W;a^3bkP}7t&X%!2o7D3Kf!guvQPKRjqyW+ZLMJ%+6vXiCVF8k3%?C@T!F^?y9v2|DK7xC0- zd4Fa5fa~J{OJxDUv3G2&KD$6YWxaHhZ0RCUZSg7$w`yQd=Jez-@t$yi^NKNB=3x7R z8mFm0>M7nUrU-Awd0zSp?J>UyrKv_GeQwTz;Trq1U?58Gb0r)^f?X?&vXHb5uR=B)zV37Z4kX)fxSY*AMN%MNIv3BKxO0-Ut zKy+`s*^Y!#&U(oO$BQ0qEuMvI=5C`znrFej6GXH zZxzkpY0Y|;Uo#ghuv=w_b}J4S>SKV4D1NR}+9WgN2u)=|7v)b8_l(@^po?CwMvU1GdJFQMv<@p zfV?cey!L1Z8^8@>nWMs#yWZS(tBRm7x+*^>2J$yUFK9<=#Z2d7*tu&(5@CD)i6Y0O&_spJ)Yjx|_OV)`5udFa<0A@^k(XdE%e!VP3-s(u z^~-$Pd0WTVmv@;+m@^bArOHpx&bNXaLbif=9HX`44L8Jpf9>!C+*bL(OAHvGy$7F1 z0<{7lNv~W`KVO=+>Sy#!G#79cvQxasKy7vXXS|G@7rD62gVNdz6unhqr zc-NA9;SH3_-eOx6t$Nh<^-YP(Sju98Z;LcW9f3;LoDxOp$7Cz?Xeskivosa4;g3VX zgg9cS)~OBW-dFZ{BpQ?v40%?$j%UbU?|zCBrH|1 zdraqcbZ&*dLlvsrY9XGhf8aA!su__vP+As|862egosQ|5?;3Jg@7;Q*Gat6#`P8V( z?I?-kx;TPVu5nt8zU*;5bBq^#nRiFl-JiccK{Q5v%v%#d> z7RFT1d$G2Q7VAs3ksoy6A|5D|7$+IGdRuCxlvYczx+`12ys%PmdZ+sb2eMIFL}ioV4wB3oEd6A#?8kh&zCy6F>W^4>pEMgxNk49!oi!0!T<7g> zgCWg#2Whs@qfI1-MqM$#&*Qo~>pE#LAoGv|Wbn2=D63`G@-t^dg>vU`S+C(_MP9AO z?!^{5I>yM!*6;f`nCel{T)TYiNW-`9BY1U*zuuEh=lsd+`l*PkbwNg&_NJKCw(05A zBZnr~QxzCcFv$V%H^lV4#Uq{|bv|u3>z^)5EGrCp4+@=Jrh(f+Zsrxd`dDkXbPM8z>dHCE?)pRD__LUe(Pv4a#OJrCb%)8OlZC)~L$)=#-pS&)40*GF@I` zyZQ8W9{_MF+!3gR{htHIqU!s+(fAySp*irQbqe2LDTB5woD|XNU9S^?Uc(2sE876^ zeVp7FW7aIe{*Gd!LiR%vp3*8z>^j~vEwSX1q~T=r$#|Yvs?6zN@aL4LVNKObK9PaN z-_*=nnizm=_?^TKcbF*sylg3VcInC1!J2yIkIv%}b~*a~7gK58?$D#sfSmiX0^N7d zqpD{eFn24rIfBcCXyjs?&XTBpjTFxPbk0>~6y5m!B(p)S5mirzr8>I010Y{xVfA%Y zmamnb*B9k1iqtW}Y=XHiHftmAzCA<~(N`+m-;5?uS`ZxWeH?Bkn!62?i$q> z`y6Z~D1eYuzA{k^yofV&c9$dLu6#Td^O--6IzP`^&10^Gc`$}CxoU5Zyk5REPQqOb ztn3nV;pyImQI_~#JwD}Yz4^GuH0rS&h<4m+cKQbh>vL-KmV1xhB-!1qCPs5kt*k(u z2}(WoqD9A5q|HuUA7$sIK4mFXZj!Nj#*C;}d-w|*0Uw*aW#GlJH2fq{*a-FfPYOU8 zD{+ci7?g@nk3Q@M@i}|TZh0c~&vix>i=4;JG*stTi?WWGsde-wSu?=0mrZ7~PEpzF zl}IUe&!f^q;;ig}PMS2~Ex5&uVA9Y%)nO|@Y+b1JL$50b5wVf@J`*lP85?koeC^@l zi0Y@{<4-cgV@BPwLQ%ZLcUvrs+)4(SJ6D+#e7vvrWs-awx~<$h^d_lO8Yu+BrEmiS zn)PvCJOePs;KS}#EjOSmG&+_S$>)F4#;Q$s#ZHsj1ooG~d)@J#ybDB2CxFn(Qqetm9H4 z6R+TYpL#1L;=TvIhc|)Y!JGW5+Pu|LB%+3P8-#}J&Ussx>E}`-7JYq)B zl_Cq1xhhT$Z4f_wNC2vU% zi&N!(P=%GM6}q)A(1fr{5F1&jGkOMzWE|>F5SOb?;8^=tgVznu+k+_LoP??wY<|03eS8}JWcTd- zA8_lt3+m@Q?`7APJS@!f%2u*nxI7tkFTmPOR?bqDVu>TmJ~S ztN<2gHF;%IcZ@WwS|EKS$DUCZeSAWjWIezLs$Hr!{_@jQ0AS^Gx56qr1!#glvnHdY ziDO|*ZgWF#@9M07#(&INyYZ3^y?Q=J2EsnxBUJh>{J;mBo;DZcK$VleT4$)4Zz+bn z8B-rfoY8MuMd%mAByTEKzk^Ejm7hS8o6J6J<{0Ism|20OobMGH(}1$BgkKGzLiYC} zwD5KLY&a9*gbx)#%oYJf&y>lAJbPkjhm_x0`gdgBn0fF-qEMyw8gxgdXG*WD4;;++ zPZ}XH>C9I=BC)5>2tGtu`3CxS^5#p8Q=Hme2l9C&)zrr zJ?Yko;sg3G%-Vm9Y}Nn?i@*C}MRMt;rg#7n&6_@j9yPg|n4>vvfZY-vhtV3!wqS_mFpyby;A`p5x-2Yg6 zIYt41^%ZV+^^eVV-Er67^Vk0{Y+A;0{K#z_5K_T1Tm&+(8W7`EDuYip*Yj$B`gH#F zE@PSA$}41jZVdDAN{o*h@6GY#GV>$dS#!vW3f1BMBDl#u=i%cMO#~rX$3|@6IRCE~ zCo^L+gs^JoYdb~8yoOn7lc`eEpl+1%8l~EMC(^g10h9<%mrDLb&T!8uY3Yb{B6{1cI41m z0A(*H0Qp_l8J*J#N1J&vxSSna{E{n=_9DiYs*FE9a9$;QmE5BxI70t>M`}z?HhaMJ zXwDjz^M2uZsDWvTpyabS9b&6tjg{zDSMPX{0*S`nA~R-J)dj2FI+hlP$SBa;mRa%r zC)k{K0l$?RxNJGMr!jkiNJ3x;oji-0dH`lk2`dSdxErRyg8c0;fDGpIXS?kwr2bt7 z%B(cMz_d3VG*J&yiQ7ujh26?&6N4J&W`5Df2xXGb1R6$lsZEY^B4$HD@Lth`VaJshU;RXZ<+|oM0a;-Vo2#$&yFGlxIKitd`34 zBXX~&S08OXg+1M}q4wxw)ck1(s$Eq{eG)-4D$ZVjY~vL^h|%ILK1b-q7DZY|&z0It ziA_}}UGxyDl^cj$)gSINO#)%{95fQYe`FBG*7=%OLaSMqM?WE}HT#eFr~~5j`on^n zvVC?bta`7`c7wC>PtYW#%2-`>bq<;jC5|z*vGg&@A~QaPP4o!TeE(yA-0`<`OD$2H zjeQ-1e)xR0Go_iK-&_}(JP zU41$Zdv4aG9@sGRO+yUNTxc-ru?*IDKpF4i<4>|XZnDL3be=JwV~>IT%8OT4T8!+f zuf1H_?F`C)`kIP7tKeFCn~w4PW#pFM^ETohkG9_(UPcSy)8_^?r>Taqm!C|2xpZec zy!)gm7i5ME|L}jY_nl!;ElazCAW;EH0+K zP?4OYFu;K13_~8$U4Wi%@AI8=e%#v<` zIYQj1vSz}0WGU)to|Qc!X$xrC-R+2dE{6YDrT8b8_2ehc$xOpkf4+40JX0mZD9wc# z!G_eDA#6(f#<=HwBb?K^2` zY6t$V8gE?0Mnm-SE`Q5*ysc;8dYyh<{HWvsCR zj;atT`KLC%{CkaL{E`8j4Ik`)?3B`0j`pzAU8vimia`aQi9xG(1WE<9+R@k7@6gquXrrE0(rY|pCy1ba#7lfEUl zT+`_GNf$xB#M7D+0Z89cy$o3g!bSElEzi*&{Gw&-$gE{fYG%S`=g_U#-c2y3(i2nR zWaUA+!&UO#F90cWXGqS4&Q0x(RL4P_%M=FT$BGzSEi>#>+rrw$b}Ox>F0~AiP%_a` zx^Ett$y#!7SSlCP_}5_2VEhpX_cb5f4_}>!dGCHW0l_MDWF7ibI-bqN*EgmV!zG*B zyY#-Gb0GU-SuTqeaxa$s8BmBcBs1OD;5RpNr~8pHpa;?3ZS7^s_MFQ3rDT8H9SHpd zB(=@MDBpAmt}dvik?|GwGo%weN!$1`mp!h3{%94Ybs_!J$1PR%(B4Z5cY!FC4;4)J zlij1`Jkf#VZk+Kdhf$dbH~69^BTKwbjvGhskp*9)n{?M|T&doSCql;2?ag3}uHeoq zofC3L11Vv(V&(7Rof-lzJ056<+dK(L3g`b^?HzE@=q$&yqTp{Y7Sxl**%^4Cn?SzC zfWz+0S7l4-(Tx($2x{*bn<^a5$W%DH2xVI_WAi9*uIPsi&jra6N@1^n<^qlkw!M3h z9g~^Ogyk+2&d$p6K6)Rh>vBnSRk$rnIQt6`nizf8D3R~l6$>iXZ=MpOXDW12Oq63e zu^pVF@K{GQ2xv(OPV3gJ0huIXr-#|>3h=zG!ZRY>Qv>@@+4Sz)gk%GwJ1BF7@u#F%2;{)Xe|C07^_grufz z;whgRfC%m-JE(`(KeZWaJ`a)j5Xj8h(JRjIFsDmggenyGT5(e}cNO`3zuUH4$PHXh z+B$zY8a+6lX_?HLDA3-@*|ewl#K2?x&NmX~;@4hn+$%V5Sdgj~GY)a|H4nriEr zGfyFYmQ{eb@lx1S^)W!V;dQrfqO$X;EPg5661g%h(VszwzbOWO% zuJ6ij9V8d|(A3X~r}=c-j6)GoH~$V^<~jV)D!D z1GsS?jS<0xd(S8L-ejn>Kt9&P30d_&NCU0Ekp|Aj;sB(9vvdt{v=%ZFwgQ_Uq_)7>`PlM0I5 zOP(h`ejd%p@o`<$a!*s%tfR!$eRCB&86i`0($qTKe-<#qTP<#_Eqz}`UcC;Ah z4*7nvnVB?aM7GBn)!e3twD3$@0E2*b&j#=;mp!96M>!ogmcuSI8&yhlFw3;6IwrsN z1~{a%JI&EF>?uc4>u*aNcSmt7haG`-)(od(OGtNtNK`EUI`cgCc$(3x))!*kT&iKQ zZtVCZh?+P)JH9juz-bZ<#ao(|EYa!KFuU*bb2<0*IU-R;yaAs+D}k>^ROXJKyll(b zSi24wTj!mq#0Md+x9`ujsfvoYn{cS^xAMjCu3|d z-0qa<*`t+8lrf)<0!$?B431Qyljz01jiZyFs{OoT82eH)han5#lloZG8e2%x29Qv$ z52}3haGF0yPJp&#ZX@cn{cLTd#^9j7({jgI?6V)66m|`v+Q&klUUF*+_qxkx5$_rY z_!5)0)siFz)clCBDW2`2Mo}A?Y$eB8jMQeSTjDcKQ<3l3Ra%aEd?7liALnWS zPBO*~NjF3FtF5*mpTFf1ka0TeR33KXL$LCcTm>KO!#`r0;vn27fh3zRuHeG;bKB+d zVpvO?^xckkO@io)UCFjlVKXxd9J3`!<|br&D1gYD1a-dO1+w-xmp)#dojdx5z-nCk zvq**y`i-N;r@26vjc(uXn6hlFZ?ca)R>-MX#XBi4aa>e?%aIvT_EU^8leGasjWZ zGY0Cr%Aq4R5)-XJ9wm%F7BWBB{+u}`;g$0Ja912Y*>43=3>3)Pfk5n?t16hfE)COQ zae8__vGD}!6OYAYUOJEv@v`B2iG+~rjHeDhxl^L&K*CeIFILgoO-pN6NfhTGwcP;& zOj(sE7nHm&n+Nm^ihQo^eJ(liGOs+3o6uQqrSG1YJ_^Ph?Mon>Nz^S0CodYS>uBu= zH|l)?MBMv&6n@^f(}YEFK1429ePdd!c>7%iPI~lxkM$3{j3NUNlqnPOOWCCN(crC- z)v&TWojjsGMvec0Q2@?KTsHIon2B+gabqA8m=jlU{kbbU$pzzh{cIvmkcBTD+umWp zq0&+9;+)h5onKgj503)HR8&QE2V#dE!-B`g3VD>ZX+-GFZ3p$sv;4tvuqB(GC9Q(6 zjhj&kMdh1Z4Mp>YrgfW@ZXh3H$nvLMgUs2_*3LGBA#F_QH}Sl?stG&-^@J^n{pvL{ zhg0vP#x9%p;#a)B%r>}>*F@63#Vc}IH70i#x~jz4V{6)VaxB}!!;hDd zAVYUT=^d?s+52o0pLz+|v>t&{d?t)bW0P>bfeM+iRDLw>7xT$BL}Ho72~6j7E7Y;SGgAt}SbwZMC~)2b_oD&A-s`D}l~w#= zHTTG$udok%0^yQ;@$YjJr%Q&9dq#i$dX>&E{EX9;%WC(?R{lhXO>Ck|eIu>4C04|6 zgoA_IX1%5>kvRyQua^C}lW%8$E_KezM(^j&%Gc-*Q7jv0-D`{)gxQnWMnfIO3j(kn zOiogw->4b71<^8XKqiDevQCf-kPv;FI>lYmydc>$IO1WQk$GKL+->|6jn6$RlnF9< z($jLME9kDhK1V0}dwDZt#g5uJ9kBsb5k#w>OiPCBy~HedWEC@v_?3r=2q0zJIrRm5 z-RJZR2jp7?pWx2yqH8g4MZPm}Ugnj?ss+SN5!$6C;hXV=?bF(_Z?o@=0;L$0R=I|g z5~<}l#GbC>F;bc!UV4o4IG4}zEE~X4R{e|qbDl)K5hBwx)q|{}q{pvbIvkvF@;a?{7ctuqTHY82@01wh@*x9V^pf!P>1&OPF$ z8^^-`+$C^&wudJF>46#Ui+dG;`;?%$saV4yWP@){(YoEAg8M$&NE8mtKf6vwT6)Tt zb)nMik9w6l_Ap1J>!AREN+QD{No2ZdZU=`@{UEmQbw5bmoeKmqC9KXid15j>1sJq- z92V@B*eq)ir7kQ9dLZJ}6(J2nEhgRLdR{JIL1CsxKN%O(Y{iss=|`zZROkD95nHyU z=NqQ_YK)>QT#+5e8(b0F2hcMPbDM88w(~k<4NfyJ$!)bhzo8HN02ZF^waqEPxluwEGKa3Fnb{dx~)k82Da$VF?2AbVc>YVMnir385l8hrB< zD9wQ1&yR`Ws)=G!N?UVYUlUZrgZF_f&yFk93p)nGSd@`cqj;~1JOugo>>oXydum*X zvlb{xUS4anC@Z5|?O=S+^brjsxkc>Ngg+{%CuuapxLep(^I7q`@aE$;Kc9wp0a@F% z%*+V!m01*pNxsV!d5QfzL~pIV!{u_}XNoAS&u%f0sVbY)z+yXn@Kq=<@TBKrJdS+0J&hK1pjgbGW`k-XA47{ z`5bf*-O=>yzYLtaS?Y`CKRegHli^-0D|xf--ue=-+IW;!Ppe&id;rWsvs=Z+?$j5N z-_K;x;(7^5ycwu_M89u9n$CMTY!BYbelw#m+ezu*_NXhw{l(t<$VIT|qGfhDog+#R z^l&WS8LlC%S@E9rJ43OR;ZHF|%5Qj?ROR%u_$4fHUb8JoVPMzonG(OlcotpRm(wGd zGE@pcjC@#}fJTIuQ7JhZYj#v09OOzRw|Q`k;6ESe=8kAj?fdFF(UkXApq7z?J4f79yD`Y6d_& zN(R03Uj%uo8I~qHVQ*N2Egp)bZq8lYuA2X%+f8Of`r>2tJ1Ng+;fd?u&WfQmiRpUtn6`00$7RJw z&7{l%sC%z@m(J-a#|9Z_B(g&}a@aQUZM^Zn+e)6`pWQ)sqr$!G=jCzuv;B4gHdOcZ z9iVvbfk~HqDl-5GUw}4~h|m*#3xIA?V;FTvaV^ys07p*nW4G4MQy(vWiuq3QhFka* za}^G``d(GZOAMFD2)RsX(G<&y2seqPJUGx?} z0J=fj=R|hhO%oo1Zp^45ueAI^@!3Cc24=;O0TjJ$kWHiD{pY6`e1LvT5*hvsBw316 z%7#kMpqmBPJ{(ChbzJBrE}JWsHt#>;ond&Znolf%u++bFsg+g>*X| z7X38>rLXG=ugdx(pP;Ac)K^9A?Q`_^*!cl`JDEwTn}&IM01~`M_&9P7-YR~}054o7 ztm6v6Mi?C#J6^11PD2t;nAnuyq?L7iJgB=>Qfc!!{$t$&6-a-(4N$}SBwOmT@$KN! z!8* ziJ9#g#Dj$VmX2!v)LO5>-IF()vPiou?ZUW8z)-Q$VEhgC_P@q;MVj{&SVlyNzx;pTWMm}J8-r1$%9Fni=J&Mz>3io2 zO8>0X|3{SpS}F3i*zu`D<(N-*46Mf%@?>1nD{E|Ls7zkD=5!rnt&s{aZ04$TKj^Us@Dvhqm)wt&j5Q3(Y(L0CWNSG#Y$M% zO^TZwr*+a_h+^Li8vrWYICYFs%b}zzXV0nOB!w1Posad;C?p?lPMJ&mfqeo7n1i27 z683=r4V675DC+C`z_GraCE;7wU)jMyf|y&IUW!Nt>#dJ(PnUlO)kgk?_>1&IIlQcN zyj<$-o3p-yX&9<#o85@1K}_v&xPd4cg(nlSe#!c?%K^nNLm@*SHRKQ|@8Zx(He-lH zZs^>(jRdo>)_&Nd<*}JE;eG2J_V202X87VZm_?V)BBf>&gk^{-t(ooVa5?*ao76A? z)?`1Ac!yQO`De${j`6L^bjm9C6&N+XGi3L{Z>+B+D8uY#3}jbhD6ra#F#@=HjIYQm z^5HZcHeRCp6lS{;d4-mCWg_;WaG&p-Z-KaF`AAt3vp6`s4c+TW7w4e+p8W!Yob}Sgvt%Hx?V-nIU6zuf%nr+aUb7v*)wZYi z$oc6!TBlrLtS>)rJTZ-D^K|c=I>9m<)@w`-KKm_ht4gywUjsZ`&nvB`x08Le>#PqL zH%Yr)7Z?B}9yjduj=;GAj%?ty4l%&%VAg@=TPbWNmsj%>2IEj(Y(p+l z9GB~zVU2wGW_28)sm>Zv!%C*bn?=OfuWtwsLWu?+0__gEWeY%IrF)boQ97Krt)IxI ze*~+q?{j-v_NFqHQT8gLw*wGTKt<{FyZNK7^V6EqWX-eUnSfQ{PeS6@(4gYqi;qOE zrKd-ZY>mPEX9`n7Ri+hujs8=(|9-Y|tZZa?R-sept3VM;)3>@*H;OL@4S&k4(lQdAG^M{>t|MzI^f7hm6gjGy}c z>hIQQ%;5SiZm2mVxs(b9Ul|BREKhT&ac^JuG?Xs9G&C7KrkGo#`Z{Q|Z7bs|*qwN? zz}x6tcL>w{JO`xoo9*bWA->8J6)fvgh8E`?xMhCT1X(A_9|xl)Iof1CzOU#7Y&}NX zTQV=4QH^{wg`=`)Z#NP34Qsy7$B?-}r%Qb2Ta-M56iOA^xXNla+E|rYmE*&Y zX|~w|ccEsu7P8iO;m^a9_kYUg76nj;Ha=@0yB)|3_c+>8&uN>?GUEQ+PDEVy2f8%U zm!wAa*4_NvgC1`u!|-t}-6Um@$w9J;Nk&Rv7DwCTvNXTI7i=OQd%XF7JjiZbWqKU_ z1K#ICb3+n_a0~W!F5Jk4haA-~R?|Ra_;@Jf!$`#aa;1~T8x zhpn-$)DUF-itEY2PBleL#nG8~phX zYqUw1+~>Eg(;FRrZwhG`T0r2-8eC2O#WQ>bMYnEhr1=tjIqMaKkoiSxM+IbJ?bxJ6HBW}`Is^VFR!M3IDVFlJ znrz`fGPl?(mNSOF?dQvb2HYPtvqtUdn8dE3zjb@l$r2Uw+O_}yxn5OOdP99TdLE_R z%k^OTMl9(T;*Fx?kk>u|vI}Y&jrK5ojZ}~o6*jR= z>(`{;CN9xeJKA0SgOvI=l4FZROF=>EYfW|oJ;aa4+kwA~mazqf|AEfff`gKhG)Zz8 zVAb)*d-tWERU7X6qVNw_)z696&a*yFT;z`(@Q+{q5+m?qRs@0qL_SFQLVx!2f6+XL z67WD*+moVyE98ICM3^cR$YD?aVQ{PPf5IUDyZNdV&>f=uGu@2<+^pn(BCO*V;DVd( z68oH;$FF?2U8EOXNUs3!!j1uV$beBhIDf^$C`Tw%% z|4TNtTuwCL>^%O!?K@u=J%jJQErBOafI@&$tQFO-{{j!|vBrj8y`EM6<1Al)LadDU zk7?BF_gU$MrMF${PG@Qp>YBP2RqCeR`J_F6?E?IF=$Z%I54XX5b+_5o&6U6(hT2;q zKo}mYWsdgGqyPEw=KqcreKQ)jizo2^^4j0pv|z9bzqmlTM7BHr+wghx%E)!-}U3Wje_2F+Lt6q{qIOknMFofRN7&?6&&&J`k55~ z?rLnVG*S9%=YRX&|0R~ZI{ZFg1KliCM^tsu`CXGEOojOX`_8D9myYqBH=;1r^hQwNo6%Pxq$&yb7EC{(5Gmk(n9*TC- zHfCBP(sr4H1UaEEj|oY_L~dPuCPNn4rJ+;ffyyh4{{GM}1P|`s$$r*C@$$56xH?f3 z?*AQA{;NiIr(~X9ZW#*M^^_kM`C>n)BqYURF_F`kel7CTC)H*4V3J!mlaCV=s1G%O zm{eh1e_ID7XS|x2w1lXV3#8_5ogJ8Pew-H+0C(`w_r}D+stgF=Fnoj6`_L9==o^{hu%C(ly?BZ`fXQ>^q~YPWF*O!m@YyS8sw}aH%#({ zVRY!3#!Q&769)zo6X;Yp4t-~dx4Ya1gIRSibV|l%2hKWl$-`WdZv)Wf6Z_Rab&ZS zyYMPnF3*|maouH59ataw<_UUu$NSP4G4Yvg$V*P#>wzbs=4{7Myg-Po-aW4yAFH>* zXqOWZ%dW`j6<;ViDH3+Ro+xiNs-ux?{L0+%_=^FM$0jLOS9gd%c4PwnyZw&*sZUyv z%g5$aH^SX6Cw%p_T&37FWkmZtIGJ&z$bEAlf1^W7j?m(b>NSBV$hz09ZfB2&=ZxRm zU?VG$y5?$@@LQ+m{mBcrOg#<}x6Mg?@rs_W04c`@Zyc}Q^wXiDYRcRX8RF=Qfc#ig zFSBM&0tdbKWI3+4N57_3{eI-k3xxRP2H5!NtdHRW3w$jh|E*<7JA0{lJ48A}wTv5#p;Pxjy?vrt4~DED*G~SV&j=iPaxc`UOYm3w%_BvNh9k zB45c?ivdcG>3+JtZnBLc|5nzZ?a2wAa&z<0QG(Jtm)~8;P;pMN>g71a!f8`K=g~Cx z?Kx|fq%uj@ictCc2Y7kaZs1&f>K2j@5&FIO3*`onZ5#$ngg*44)s89OWYG0MeIrnB zI$Ey)Kl5exQm}hpR<`f;v489LQjPR|!Ydu-y%%h0ZSHy3Y1BbVl;Fcs9miP94AZ`! z@`IZ$3^1?RMHG9q=-sp-cQ7eQE8@ncSS)%q*}QXCgDKM26~%VIqy{+@`Rbnrp7J}i zT=P*MAYjB@1{BgEXXr&vlwj#m=TSD@a%AyC_C}Hv#gX`w2l!=Ip8?4dt6uZ~5myx}PEQ?rmC$rCw>&SXF&j(f zcfP(5x1)q~xeCsuhttZ!H3gz}l%DClyOC7|jQnsFxe+yv5pOT@*l`zTv~7m= zGAilca)N{G{Zj(*I_7LHChP7s__UiMNZhEKsoY_;9S%E z_dgc7zDfb`sj9L#81+5OtA?|0(MR6qY0ux~r6?S^>9%DTH-AD=720qnND(ZVdPDEX zBVg>DUZk<(K7lFER=A{ZR&oZ$vFYVXddV+=fE$u~F>f9ePAGk7`n}q1k+}e|;B1pZ>J$5>Y+&X?#~e`R}O@z9r(;jCn)O4P*ai9iSge1Ljaf#>Cx!XQtc&Y><^F#|+AVU5oJpaBA+}LG-zxVpr&-q4N*+J+@(|>*V_mK*}NZbDVlfQjV=ssYL z(VDsZdrn<3;r72L@V`s|xcgrw{FezgOXUBVBmkD~&k_w?4Hqs=_o>2|&qQZUGx{&= zrVeLS$~W>~{UG)5ZkA)kx}gfC*|%4xcJJM)Wtr!0ORSrp17|g|9O6SswI^lj9TZHg z&Fkyjg>_m9VlU$UWg)iL7sKkRZdBM`gg2S@+Zt@@rFo$7_6-^P(p@59s2EPPzQ zJ~J8Wd$&CxSMR%PnWHtA`CUp$5Eh^EM*4kGgHw2&LihY6_IjF6jK@ors)pL1S<_%k z=a;Thi#IeqMr!D-HeP6ug6I;xWcYl(?)qqdvsgo2^H)poo{QjV;)u(BGNk8O)Ik}4 zL%oHN;=#feUt{B`SA6#B(sBM)w|=PA_yX_ddy5-8HD4de(nJxi#KfUt-9Md52XRRj zEL06$VP(l~sQR!vBgD&H;qIDOwh24(o)TPglyh+Zo_wdu!}t>)zbK?ybk$eDF@Iq2 z%Dm|!pn7cZ2oF{9C6caUsq;J$bk0cEBwmoG{}p@UWHt7xcOfczsD=F~B{V{! zuE`V}(>v*tPvBe0g7Nz?J;l4Wa_?V~8Y;05uBe$z&B}j z{0k@in##PJE;lKSp85E|ll=Nqn(aKTBJNpOgX!)mo=c26+D#%~;&g4h+Xsm+sDW8zh`1(o#I}?R=$MZ~7 zOq@rHp3j+FmukjX1pGH#c(BCYYIXQl(v&vPY{2*K&dnjfsG*u>cy25lu7^k76tOj1 zlSPvTZ+E`PQs#+g+PGHdWVf5MsfAu|L%zwvuN7y~LJSJ!brmm?j8;)ky1scG$d-8=Sz&fQb_(m(seyVxi=SvG+xX1Sj-WF5oV^lH zmYl)Tbh2Li6{aJu58c@*1{L0q#lfuN2>#%pOo4>bi1jqD(Uo#6O$+dc1=n+3acX!u z_7W3{lWP(_c3=f#C-z^y7FoM{M3?TGD#)gUV^o}+VZiBXmTf?HZ5;yJB^S+?%K*2@ zNIS5roI_huXnNGErmljZz;cAtg1T5y{Rp%&Ajg+qkP*P^btmY$KbX3g;#|%uWGbZ&~UonS`~X&H6&oN z$X)hbS{F16o27FAXluob9lnST0o$Q6`adK!6GyrxZh3X`$?J1bxwdDLD|u%T6{S73 zGuLw#x41FFG6Gx54K%hXjwC`hvarS8^A$SEB}%qETo#J(?5n<=yzMzWuMyYxaoh33 zh8%S20p8?7X(*FkoK;7nnEL)tBEWfU+2;b!iY?$4N>N#_h`GUf%e3_9St0AC$IrHl z(lL)HKRj@Vd-kmP4Op4A*jr0*EKYL}P6xt& z+Y&E6`=Trc$jajpLr-(Uw`XV#N5j5K*t580d%zpj9ms^72k)rA9{MN|W+MpNohoI_ zTMMCJg7Kb>-glEw_)fhXMAxR4E86$4Fsr>9eFXW6nb)L>PxLorMI9qm%B|Mp zNewARHiIMa(HgZL1{c2;Pp~ek$mKEFNyX3(aRkdEppS-1f(*P0bRUKOp^X+9E?Fyx zZ?f)cjeggqnY7OY_Wai-hbBawW!so;SI}Va~7$CYzO20^k4CYm- zCEm#{-)h+kS$2gwL5qTg^zz}V-g>%CB5rjHwsv5Thr*ksq8NY}v`V~2u}BBvZj(oe z4&sDFUyPTHp7TpW5(})mSMs)SAcyP$+D9;Hi2nWTgg0ZU9@vA*pWU7JlOrXs-5$Wv z!LJ1JK}{mQqiJEm1&S* z6Z(km^2@IlG{=%vzO5qXZpq4m`O~9LX&1MGhWJ#(sr$4$NX}tt)|3*xSEQvKx!yNB z;;3f}cZUoq5!{xRn44s1F_Y6rY2Xo3m#ka!;@$N9!>Oq$Z4dzkKMj%>iNSXD*l89E zS8u&>9yPxT>8p?7aQ#oAnIRo|{)^^y+?8|AOa! z-GZqSB7Y_xCf7E$N6g&kZd^gl{v6SH>fhiJ9bIQ|@kzik-1tB;k)mBW^DC~qH!NS- zHTZB{-GP|G(TcBb%sJVJ)x$8Lo;uH!J22RTS>r&yd(sC^%o1mcis`yhPE7ELl;(eq+m*8=vj5`p2MFqP0Y$%AZ)#_tc--DHKHq;Tv( zzomL$;gECJSP>0X>UL;P_ipMG^iJPz$C$8YW4?Cij_ZUE<9&t`Y?Q;WEwv#tgo4J( zqI+mF>B$XDGP-eK8`s4<-NZ`^6L6NGSC!8=wH{TKOyz=m{E`osLG4SIsm&H17k)-^ zvL;%U?opeh4Ej!z-`D$;!!$#@Y zqyqvw4i(l6h8YSCIlv)8QOypPLp`t(5{d8Fl{H(MMRe!=n`K2m1|%_hDM>fzdDH4# zOuMoU_yq1PZSk5heF@?&#UHGHJuko--HD<`ZxhlO&<=ND_>nT$_uzhUiL7q5+a9^C ziS^HHwz|bM*Q9%poZebpnpu==n;9KaxBO&*Aaxlh zIoTKml9*=-{{u1cw`SWMBX8c_uddopDX6Scu#%C2n_OlnxMnj(AwL8`|NHSXu52p92oUyD9^r>fu zdU+Yh_G5@fQB~`%unQFRMj;|m+s$TYS(+RSTP-Y3l8w?mo^s!h3>#N^QPc&}(k~6h z>D6*_>Z>RY^MD^dbZK<$GeftX5C$oQ7fyKm+S&L4rAUpgIsMYC^)++kGw7H8S_dhswE|H<4=)(?ms!J##zba)(Wa3X?;Yy1IZHY|fgOydzA#UJE>aCjD=^cj&W+^liG zkPCjk_dP9!$?xF3Zm9;}qSDVjtduBwx620R`iq6j3a!u%IhVO=y({b5xoJImI_;!K zZYc)(&cHr%9kV@J5CrmC80Mqwb26|5>u8k3z&2d--lf49md{sJgl)J-^iC@iLR_bq zp6FLYH{A@*>E_;c!*Z3{5)u;5yNsYw3&#b0A}%U^*fDISpErE4TsOg`Fy zc4+!^={f=iKby6#u8m*oFjjbuGh*Sj7s=}IqE;2JKa0R6jAyx{tXa6zX_AsG#z#kc z8=gk58Fdry@RjmQNk!v<@yX0=6dFL^0ztDMj4m?pz!c0-0P!_6_foApF@Oak+_pq{ z{3;FVy}&8_c_qrAPB8uLg*n=z{y1cZ<%Z>YR~j822PWoF_0@K{G0A(#=xU+9-5Dbm z1yQoN=)6cZov>jWAKuMyDNG#7k{!R=aQGP73c32kCSeJOS8L3WSNv30{kAZCLeu?y z$NC4NtrJaP($l7_I^0+Frn?;IH;LpX6=+q<>biBsn`=K$DM7ltJuG%r1|eqU*O@+RA>@QQ$!0X>E%A44Nz7($u z&d|aai@W5W)eV0++mEXANd3Mew$|qUWV^cSAu-8db4a{-r54W&ul>2YVUzg6=u+_K z^EK``2zCw6kJw!&$X6?Dc2YI^XkK{99v`2VkoisQP+a(tXSY@*?Rt6>+{13tpDRJA zA!mBi2JgfK=U(*5;=xPxjcDvrJ@v@m@45BW4HkTk9n-Exi`qDV5x*WGomMkU1CM^< z+I%E`rUKEB(=4ZC)28MFJXRJU23PbhN)}m{YGX}Kp~OiKJe|g2yc9Lo6n$zCw|o3^ z%66HMLWZ>;uU_yM3(s74Wt>La&wP=E+uz^7l5sh9pOB1}a>tt68TB;ijNHG^q(t&o z)eU(Oad%UDW=6G)ZS`kp@1v;QsYF=(OM1Sx`j8=$8udiOnUQ7j@LGDr4=H(Tod?OB zv9OFt+~vtgTo%<+G6%)}R?57B30roGx7?TQ2C47Bv7KsaA?v9)-Ec1LGOrc=ir7U= z>I4p!|m5BQ>IxF*l< zNd?P%51XqWzBPTPqP?#&Z6*DncjEN(kE89Zv3wB(WAJYePFDEWcDGW4t9f3-!cjVP z8DM#SV-aUnZK(2a`@~pwUwtk5WtpU0!$Mg+2U4JieCnQN@S~7##V^mZa*A>( zU5jEQ0JTYk^tr5nNRko53dv9{M}FJ8YJ5=ywGYE|qs|Q#!WLt&`BT0`H&Aa1w9(~9 z-PCV~)hvKBv-zuTAG*}1a3LolxF@_nd{ks{Hwtf+HtmIRG1TQG+0_uGtTG*cDEQe8iIy2Wl;6m4iSbZ?wgu*JN@qljGtd zqjs)#f=XW~+_ltaYuelauNEVHtVjcIuT-#7`fY$v`rGEq}k zxj$Dz)+I3ZrXI{C5oB^+$#xKNcY^F_4ePCZw}&>*%zm^tI)nhr`~l46+W;cKBbnx# zM%ww8#v^s8M(TsN#j?g-(3weyi`2O#qHD*;QlnJXGLmg#=RD7H9@noyTAdrm`EYuy9x$<+?${bx1ot`T*eq=~ig!5=B9w)y46~XkEDZ%MSlpeP!(v?e2HGo1_Xj#Lbu4(yJ z3>1;Dc()W}dWuik9XeSxAH&=HoPlDdIPJpjs2L81Qh|54?-i#mDI$eG;gI(v8%=bL_fdSgE>^1Lw9TP_Ca)^qCRzI7p4O;Ih)s>h zs!PL<`t7i7wM^>>`PK3bXYh)AY_>ss-L~uVgAhl2j8vYo@zqM@T~p^FQ%S)2GudEa za-S+=Uu1nJ^qB3W4fkk0T%&(x08vLa`Y1Y*XSXZ${>i9m^o`$}k%bII0m*DU3+AD; zqH90mrmEq3DtxRbfJsJeI-WUQ8j;FXn+fYwrDRW1n4IGzb(kqP81Hz9n1NZShMm8a zk#qo3Bt9U^8>mVMbC(GsXWs6M*36Wg@^XBk^(i5najKl*JRC^)o`O{rw0f;N><`#* zwfi7G>x%1RKA0!hTnhhIzk3=T!*#Kl(fC|FqRwmm=TTeH`^I zzb4}==4UN1FkW);rKEqiM`A?Uw^^-#^MTM{%!hLJ{A4X;e6IJ4+x_)xoT2*)j+u) zKjtv?I0|9qe~4qSUr2@&Kk3`WWM_n&!pDJ+O7vDkk01v7ANUSvv*GGGau59V{NW`A zjT0<1+Zt(r3cm_M6w=r&bb~Yx$?26>qvO=-=Pk=4`C&w0+n^(O>oqVn9&_Wa= zP1z#Dy_HGB(PZa4X_+75x!cp;<-eD6qp)1j2j>p?NRQul?zm+wQ)VbMrJ<#2!tKDl~s3j>~ zTcy-k?z42`9n;vf-L{E9!@sNYM6h=uD| zEy@Sq{YUI7`Y@fu?|P6G`t$7^J~$IX$* zF}BNu;6>;+=4I=Hj&KFJK4&J{t<+u)-WUp1h9+0rx1k7nO%gHxWYF8i>R=(e;);n% zp6$@p$+nW5_B^zyu7`0?+?_$}`JgKA!82z>`hr`LOT;P7CQduP)g)s=1No&f$p^F} zbJY7z!|m&qv^P;kVLsHPDXtg#bgcLViRORRnM#WbPvnOo+I|(;qNC# zmpUaZctaXn_qh@+T{XHB#o%WU_2fmp6+IJ>Hr%F$06jdE|KN1_!phmQ({>6C-aF9b4=$ziLUD!&QMx>n!`b= z^JQ8d|5Al*a)V^<_p-W|2ALe2I?U352A!SlqXf-_@e^|%;w2qJmfu6mzAZo zNSIrD{Ucy&k>wftYpNfvO9uhw`3wI_0%mZOhMRgbz(Za^1Cs-s}#EnX*PbVeWBf0%e6@mXQq zcG~64I#*&L_tQ~EW3SFzyESA}>maH`!)byg3fOo=EL)F#2s3XDi(=yZL&pX}Q{KxG z4+$mH7y1;H(ApZK7ee{P84$IE>YpSQ2?Y*oFBcw!Gc4a`FN*jG5qR!l--)(t=#fq^ z`Sj}qsme{9Qmsb#yr^&Mc&iDa!(y&|3Ol!lk-^rKZZB*;>2%aAypS_!W;Y*CT$F8I zIp|0+Mpyu0e5#23#mnU4wUBkk573Wx7IAb7g|HPwlIyt+!oKN_Im(#=aI6jSqN!?! zpvZ@j1{!$Ooyk^WYLxbRE-jv=`)DdumBLa^J2&3zmf0`Vh7TSB5q3*r3Qrvd^*Euq zF)*2^|ELa>dU=F3n#5(d&O)8*k2#f z&&DYWOJpB)J&e-)VwCG$w89|eJ|TYT=_{yrB>yHZ>cE=nS|oApklUB|&=S;hcdHxy zQ#R4m@3JSj2UsEse?(){c5)%1-;P={mwx;Fc9`jdX^Km&@k#-hVJS zcPTH4g(*h|jnpFE@=xNwInEf!E|IfR^=ieG0yUOF*7a&j7pZVtR~Y3z{VJKz4Zc%E z>OENuRPY>p2GTAoZ@jBSnvAx7UQIR@-;G<5h$CD(Ve9q);dAne<*P>!*hSvyh*xID%>W&~a z@!9^$0Gp8!u%Ifo)i;nZT&|dFENVWTwa_*~%~awab!7goo6F0GK)ebVm<|i-It)$n zCG9nuJi&_Th5{F(I!(6Otaf(#z=M@*U7L71KQm~q#GI@Z*WU*UgYoT1zbdfBfUkL! zab?fg%R6>LeOlz{E#Dg}lT$quxN1^vBX^9HDFAG2KZ7W-rCjm$mnr+yDmSK`n%m;k zJjfo<1)x`l53bTQ;@c+_BP{aUhGT%uG_1DWG_3{dIwbCjN{Jp!ZhqPO{pgj4sJ102 zpekTk zaKhvD(zQ{;KQ?{$TBmh)n76k3W~`(zG49atB|JMDuL1$Y_&D%FdV}XMK$mZ##kI=p zy=P-i+e!f&fVHX>sgs_p?6oZtftR{F!=g%hYotHu^Wn^bHI9E)<Vsde+4CmfAnd&B>4KyuScSHyLdf6EC6t4H#6pLb~wIhP(0W_TKeV>N9bOf z#zq|>O*D|P z)!S&I?&#zwmdq;o7ly-t;H9{a*^zfkM?RlW47S~>%`P$N7YnQ=<=7&K)@h;9f{51VW)Or3l$B-E=v6$lH)K9; zn=(&Y3OP~bk-xoY%Q2My7s#X_sV32%OuETSqniTvj|m6FP}Szc0VyEPCUY`<&Su{h;}XT92+znMW& zUDOGSz4U&(!ZlRkLoP&8LRmI8ED_6YKfaZaI=TRITFD`^7rH7n?+Vmf`S@T_*hGC5 zbpDP1nv)Px6=9^_u>tjg(a51gzRLU5O56nggTeJlr~BT?*(|j*l%;K}~^eq)g^nTgg_KxH+xlKTi7T=Vj7 z8CYXe9{-Dr-f?JPgz92;O}AaMs$JxE^mihwyQ_NE2g7CF4|Y907)m{k^4Cxzqfrp| zSam;N7OiJ>>oh22l8t}lg(`VkvsK#vhb?^M7_<+#D-AlB)NFnN2=Iw0%+izKZ{@%5 zYu;DLI%fKIMeN+QzL?167<@3nB0}Q|3Q?-i3Ga_jE2%TKq&2FR1C+|32`*@GM-QO5 zK0Yjqu9EI#n1u1K9QOjLKfw+aH5n~Ze8U9bx)I0_rTh-TjvP+99i(37!B?{f4=aiH zxaff?@r^#qWC0Cr7Pm8I0t7y0J*fo!QTWOB27j^CUtSOA*=KKQhfO9uwu1;ZOKzV9 ztBlZ$UPM$4bUZs@X8{_yN)wI>jRZr*Svz$$I1R}yaEWqBODC5!RziK zNlF{d&L;=lI1vYLH4&-FioZl$pz7oRhuD%CcL^dURa#UC2g6I~a3!+m+xH{Zhx;st z`UB>**JsVN0l77`y{gA!?Vh=|4xSgU+iu9n^SN|30=fLDDob-p(gu5KYu zIRw9YKwAs0S8q6cHcW3DzK%*Hte;2EB0r8TiX1EH*sc7UU=HvKSdnUv-28^KYr)hm z#_7l6I{IcCm>3rlLXx)PDQmvei&RcD71$2#R|NzUe>)+d8Cr23Ps_^FEs<$WcDUd+ zie}wB#^pC)JL!?Hvxic#I}$8RkK<(sUAKqD18X)4dhkG z;#U`X@i)pTmcvjo)a`{V*@NykUq@Ryt}+wU6>vh*z!D4gWGaU(f;A?@jl-+}Qj-di z)lgj*MB}co>j%;Ou8*`rwBryo_o#Vj)$NjTk^J+lKPb@gx|kr|k{#h9c)DTgq#r67 z^&46|jtRt`t`2P0amD4`!vQOOL~H@RLUMk+C4b;}IKBFemd$knI%1^VWS`v8j4m(a zWwohgZ*WVgSg-wB$A>;_6Wl>o`O7r#Q5ZZFI;k6vz=7UfmKnxh{cI{H1LC#+qSD&i zJRfF9BhT!%0*S|Iy7kV^U0In72O6#i3iKY6+X)d4?54CYK2A+Jbf}sBL+O2J(AzYB z1H7xF=CJTES>ffgIYB#zCegKiK)|Gz$TT8Vp|$dSI*jBT z<)|{VchkDVq7}}LUE)EvtDXbnt479YST`&OPnM3{`1F0x)|+e2NoRfHDkqW}CUysu zug-bJATO7I!z?!>)2PYhv*hn5V`R_BRCc65Ur zm+UKs+(21K3l`2TEb3K?4rFlAbOSfnXfGx3E6XMEnAi*zSt4R@G5CcQyD15q;`X&) zG70-%?v*-A(7J;mf0Dvh64{uDo}tNiF_AiQKUZs8Ho(J=FaDz!Kr$x-OovTT6{v-F z2+md><*o`BP+Hw$xj`OKt7%G{msI2DS^SDrA#@TwP(>k-^QD<_yKhBOUj{9lK(l;j z`lQTk?}QcJ*A_n@hyk$ zt|*j4s1k2tOoD214?K^r0#=Q(%B5vv%q!sbv&M%U_2Y8PYtYFu@r;x#jgn zk90v=$NW$5ci9-IeD{swndj_4Z|vK8eakK?Virf~ktIKUw$%0kuFLkGJU!+SLv}7V zosU1)l^*}pvelu#>LWqsv<;I?9k=_;nV{NMY_u%c`?$3NAUULBOq%`%nVxh)<<8VG zwn{_1ee(6xo@J4>uBmyw6>dUEiv{}Q8;2-(+jb|k8Ck*jF!p9c(JxwQ@yRqYG@Z>& z>!*b)>EEaK<#Rg1qviH!hnAm;1mwN~2tWH`@XMB|R=o+kHd0vRwCkIXg2D9RgM{{>*fqF&nEilmch&W*gk5$EA+m zrx7ttBS9Rt_!^@FPRc5jJ3~r~`f3;0+8=*RkDuTf;#W%DlQy5=K_F>CE4Ez%T94M= zA%_+7Ez-Phb-9t^R*T8VjCs#q*;N7UY%QC`w+~u3Yg+cmWF%n7?LY^tJO@=uGJQI&=^Jc;1@V$Fvapbu(zv>;xuZ4d++i7sx#t^PR?}5z_apzl`^q@ zAs^+ErET43!4!{$8ZTxE(w2qBa|o!mzkE<2hgTt9Q+TC&R&KOj@VDMQ)R{Nx`cNET z56PljwLP15cjz%@T1(U_eA0{EjQjobZwBBmozA!8mZ~R)#UBdXYz|CYH|nzcl1SsK z6qC)rxR`zl<2!MZ{av?5w9ILN{dBW#*iO8L*wq2IUa3C0=ugnrMi-4_dtL%<@0+hD zAkka~_15n}VOcr>^M#u#ME)71w?EsF$^dHTB|cW3{crxP6^yS{;Y7>bTwg>_gF6a) zvw&(gHtK4HZgc!xG9h7)_u;xR?4M5ebv@5+e(|URng>(OSknq;ht!}Z0z+=RNX!Pe zWY3y`qn3HS?1;M?6RomMG?Io!7bj*1n-FyI z8_R+nV=Oi&XeN_Sxj$Q_8gt@CQtZ`sE2rN6e^a-tRi_fcGzEgAv@p>fq+ z(d+OId2u-JSuQ%yq!E~~+6||`7t#X{0svcB2f)_alXB)RBOh`1I7Ds~v4x~xRREJ` z)|LMB0F5f;x_9uDBPBh5 zL?1y`{ocmr1p#+xv+?e(ZKY!J3zOzNR%!Lj2sg*@xr3aRQL1%sj|45u#<|t)bFBp4 zl%dCaI!Y3U4M6mV=j>u)AJnT}U0o?CD1dLz({I{u&zH(ftNJMH_|x}avazu-FffRT ziLEW4h>gN=oJNPGL?INw$VCzQ*+_IY@4$pfIeEYw z&7J{Pzja;dn;RPsQHC&GWy{zYnv14;hbxG)h?$7;s#IP~@h5K#j$G~R z?39(2wY9ZBd?=pSlbqXFq-iw0-alE%MhR8=6uI1EeNMNsjvA04*@Ox-H8|=MkHwgS zs&q~Dy)VlciMSoOb^{8XF1}l%_ad6B%_?*#zR6rL__n=x6aW)wQ5x!x9)Y^d`HUdz zXCv)WiI`nSR6$Z@?cA1o(;5(6R*JI58;QGT?$-??p8j@nq<6mKwBGhRH5RKX&9kEe195l(loY>22MTR?nI&vCgykXF5vGLJu7|zZEzjJDmriDv^tXr2us@aX~S6X=T z)d*boNKwwb(YpE#`!DrtYMkKy(&pwz)|qG@XBWxovz-m3#*C6eLuB`0Y^-vid#Y4H zHUxv&f^JkSn0*R?IXBM11%~Ki-Ag*X+u3qaSM3y3X@J7@(hzyVg+6oYgA74T6lsDL zcOUUqYhRqMretqzdRhXq+Jliz>~Xq6mEC7|)yI4DA644P#ovg1g*UjSI`QYv?I8A& z-~7iunz1V;ty;WPXd0{GUdj9NkN8C2wwWfA*oiV!fOh6a7t_-;#osUDm~KGWQuMW3&uwW}i zvP+`EOz-E<(4;?JK9AJ1RS$MPv^2m~JY}t1&$8E1m)zssP*EkGt+700I@pX{B>U>L^V(IXkc(aLTfLIGWCcBX4*g$Bs;?4A zJWUG;6bR~Cxuzlnu~^i?lu^pT@aIc{_byZ?qzzwh7X4V|awR|a}c{FikH0q`Pp4jdt|2Thq;`ZOKWXt@csTL?J4 zwrCKI=m~`2lGzGrBld=!RYG|`JKhaa|M{OlAl}h8Juu4a z0~IFY{Yb*K?~ZM6KS#c79yE(a7l(zx0T#-iFPf6j9K1hfe4vf-@wvK@YU{tI&2huf zlF>(31^8t{6HR|wsK~VT7Tq0dI=!y@qo(-DY5|9yuc>k~tX4m6;?7};^vKd1E75-_^j#4N$W*MAPt z0Y86P>N*tSDlE{vx8DC)#g^rtuuw?=8CoebB=Pofl?UFljSc!RQ)aMBibvUu#|xo; zJO1823ba77YUL#r_1{`nyUN} zU;@e0kp zxd+2qH~SX%U;N2`cX9Pn=(yDW@~IH^zh?a}e&Ua_K-2D?pbH^SXo;i#%B}wX_PmyQ0z0QtWRBS}Yx z&M9$z_Q^2(51;lQZ@2mQTbOXf;_~Q!j_|KX!gwyJE>0)TMDbV1`=5U5f4@?vM2|D~ zNiELof6T^z-1mbAXygaum}}zA|8w3J=_J)V_{=+hVP4@rcrQ+0uJ8#FYB=rN=bDrwe|7C4S z+W&TNOA>3u`e2mp@18J0%-bc5d;NlYOY9N}L782M@v{a3Y*{9R#&{%c1R~4XJ9vhNOJ@Ce+ zb%cp*20x8Yi1KiPoF{LY$W$P+3!a@XoJ;hUw=^mh-&jV+r+vi$e!3p7{bQic2jKKXzA-L zy=h3NfwW$C3IJ~>ulJ`^52yL7Db#EU1>d0o^z3Td_B)!(F`)19H2$1UvEPzFIjxX? zuw9MK+UqN$*lcDlzhDFj_i0(z{i`cOpK{U&AfK}B@DH)p`k!&P*SFOmUR?AFe;^ao zEP+D(5;H4+?akU{i7zePs)qO9aXW@5h}O=P2tb63U2s}$da&)g#ahv)9r#p(B6<_c zn4KCIYp(-my}}(X_g~tW7m14qd;Do;dDLY+lpfj z6BF=;9?zT6&9V?)eY0Hp`1LV0<4fAl*>v{eT<8dN^XJX-EwY#ZzN9yCPDoi%oRXb9 zm*sPGA~z}eXUc4zURrf~R5Yx#4mLrq;2qM21E;6uiUPkfFsy8rJa(54??v|OEk@!0 zb>~N^fy!K-w|6w#s}@IdwVP;S+T!(3E?VC^lZg~j|KCRVhvaR(Z=k*BC|B4_+aUf&@?(#OAO1!MJC8kmG$xb7Bl26Yq8xN92b~WeJ}19l)x&Sghkvt}5-4BtK6A%vPc{eq`+QxRN@5;% ze-dRmS={klxg8$m4p_N>+!pq1!`7OWIN?>ClE0;O59oex3#acgU#dhYDf=Qn60Ag@ zw_9bWawBC2_U9{>aKLwK4M{zQOr3A849|mH1ku}+WGW`2^jSsZF*y0B7fW_FFsA|^ z7x!GVd{}42$1MrM9ij0b+nX=@tDQ47T0f_6%DvxiQ$CIeJZ|34l@Duhm{N8zO??I1 z=`&51(Y0*IyLb0{U&TPj(Bl6{)DgE1tU^$R*LIH&Rwzjc34x6cbTozql#bkUH+N~Q z6PIE}je}*F>5V7ny}1>(bBE~j2O)`iax${_*R2%O(e?@2c##u~u!v3=8*{w}la?NO zFgRp>yhixWeUHh@?qpL%1a{FCWF;>XQif?@Af%x|Xfpwb%gkip%)QX;tnd{gBcK*; z@tPQ%o_+*!U9nzK^;ojGs0@&}+D>oxd2INQJ&Izkb^B|F->6Wx+M($d6uNu1Y&iNa zRW|X7e$6GkkJjHn7RuSyG-m54mYZ#RhzfIzW8Mr%IaxAcU_Iw(;ilZU9nOVrP7)m6 z380&;P!;)urX)m2Z*G!@$sqaGA4iKC-~zvtg^s?C2(Ak0mYu;9DfKFr=d0hXxN>e& z6L%->A2Su9h-Gs&8Gy`Rc>4_aFv8t+TY_)e+J42xx}2Nhc)(GIc`U60_QFj*p8DqI zQ~dUo;JY9XlNN1nc+ERqx!&b5aUCmX1$yuyhgN_v$7sbUZIR0L{)`?H zDC9NIGsb=gOSa|&*TLXm9!;%${gZQQBtC`PMMPdZRnPH<=Gm^>R*#W%ale^wke@Fk z1R536`K^Gy1ArK@LdO6SO3v(w!;y4?g9QehXXM23F3`^%2*n~lhAKYzg^()^jaz7& z(N+}g)_Kd(>lpjh@9(-R#K!8LLOD^#VaLE>g#M@B8O5)kPt^rhK7Je$6wzUTNq4_a zoH@02UG;*+vtegn|K#z!LkEH*my*(R+|GU{>gSxZYTUULTa+;c+HFlARxyBxDo~LK`_xJl>-&*Yn6!RSR4Aewa76mdyVTkBHa-cLTdp$1`518jRLq8%SAvwE+E8jRI~?Ot?t zV9N(iS2FUFk}1=)rnl$&SgjtPK80p4=k<*(8!=XAI83;<0lAE?1mrp3H&x%kB7Z zVnw{cyUQJ3bmynksG+2t#=nC0oZw#;(R@Rr9>%1-y~5ZwFc=IX@xIQO!@(GQFb7QH zxOI(MbzMqY;f%RH(s$Wif=d)37~cX2K?XM)jfsYZ+H8a%g@BtMdfXJZUx$z-U54w; z%#Z{rB;tDNB4Rlhu{Y}ga$lDRj-*uuKd2d~VYGz>-wjy7{SgamrL5#9{_srB{`dM` z+l+a=ORHhaKTzH6zC)9O+>oBeBMF)`kBDE?l;oW`t`aLZkss&0GDzX)fBYw!=>gtUHPuY7(vIAX+{)$7Y8_-6ZDle3?W4&x}*YQR=Rv&7SpJRcY%Lk+iUzN1e4z&htiQn}&x zcc^bMBAM%`c{c}#EM7?pCal#NCdyg+YtUh~V>@c6DnQkCGCv4SX5vQrkN0%nEmW@n z0_LIv99t}>cfkTtsYf~G-ky_@xOpoZSekPF_4oy0D=qSsn$!}oA93k8TW8I%PE>bI z)T5`>hIn(8tH#Ds6JVi*W^PY)H|2z7jq$B`Ikd|5!E|RlXW|FObh@0%nIVPaxf_sP zgX6_O$T3k|vI^qFMenZT!_TX&=ngae0g5jiyEMMPdL2vxP`-uY^g!cD)DOHd0P=ik zy$69}^GvkxbQBj>l!eYDiQFxC8Np3`8tt`&?t?(3DQISY;?;RKK}QO&0-7;`Uh+$! z%UI96&kbl}sPkg_%i3v$eu)+o8*dbV1MaT2KAmohdm^o7DB~`I+FaDb3+<`m;`jn? z;(WJb2j`gmZxKrN$8{ZkXIFpAhT8J*+rw66x;#vX^KrC>qlVF`a349O7ptdRraaZL`4*GV5i~LSULT?@7nX$B0 zt#L`*Vim9ylTuHjq}AjYcIO85!M0Uxz;#UI=eDQ)!~Oo7#{$qREL?igyXpKW%8V^T z(fTr;2T6dP;`)Rh_1W9`~HLbHf_l;0t4q?x zCF7jsb1jbP)ou!D-k|lMI=_o1_eJ?D2r*KJ>#5MHT4BJgzJ@&P{A4A8U}b$#6V1co zfq0oDKElP{b6=C4Te*|G`*DYdA2W`ycu%gAlMy~<3X=6Gdgyt$u(ud@Q7=5erMJHp zaM8}S`>wvhoSs{FvviH2*H3(}9T-qH*A%Y%cEXe60y|o3$N~szZuZ3A23y0vtbZbJ z$((|tl1*_VoZN0$Gc=4lVGsl_s-llJ-s-`rr_>|t)K;e1f^Uj|OUVxN*3nj^jWrm$ zbkL9ucFIuPjj%VY-yL5SGaN-HdKEy~KdmYx@56Kwmh%+6TQ&xG3@B-VHp$O14n^dR zuNTUbElN{+Rj6{&-SSO}ceUG7{5`u5T_UdxQFAR|lySvFrS)q#)e=SIr=VnE$8tp( z)6IAdMs$EP3f?aFp>47rzZ;DgY)#@k*)7KOTyedXO>TOmmmGLaJhs{{0XjaE2AlY7 zFluT#@MlbyR4ljXV!)WQn)gnsfZ4)+!I7Rub#_R+4RrS$E6pKY6`lI8u|ZyBXSA$y zW6{de>e>EQkpZxGpkd=7jj(b^Da8~KXKWu7-h9`KjlcI{W-yXB9^y=UW$F@RBTgSv zMLdqZH=w)w<3YtI95{8^oumaEpAzJSp=M|!Hz4-)kNEdjHYRua&3T1SU4x3(S=?ly z$ML+^j(w5;Wxe4{o?bHH#me}xd0+X5>kCGb5iKB6E!FBVqrd@3caDpg*0}mI{#t(J zTZLGLn;i^sRtjAe!Zm}YlBzUyH;9cl zBeZJSbi|0_hl~>iwqX*w!^`n?+eP!lVmf8kLuq`-SGOtzF)at-%z5vr=dK(@xfPex zHz@~3MjywpZnh2 zlj2iU6m5Ww>mZ9Ez8^>H{*Wgmu5MVd3f2$Vn0Bc^4UCD`x^7?tOd2&dwj@$L3b7rXp|d5 z02ON}QtkeduB-dB9v3sj zeg1S~7D`;??3}K7WeA(Lb8<1^xhnVr;UTRxw71S3?B{D%P9mbDtbmD%@4^I3IUe>Y z*%@MA%FB^vdi5*44_gJ*pWn2y_cH(NzkjmeH#W|HwLRsmCLz%#)!o9)*7Aswv)}Vk zrbvkvWkuj}%l2ws?Tt+Y63jgjMWMqC|9I=PIPZ$Qh{fa{i1d)zjXg8c(ev)S5-S?> z*YP=7>c{VTfw!6iN36pd}r__R1|XX@b# zRwe6xJa7CaNCxy)UGe}-V+A8}R(-Tg$2arhweV8ksnIxJ1E0dI`3@LJPo#;Dom{cR~{5=L?rRdR{mD6GcXzY zTVov#E?h3a+bTvnIXu~W$B-_|TfmIjq8N1JFT_venT2*oL$cz{S&*-F1qJW^WBVC& zYHZndp4O4lbbHfmR`*Lt&-l3`&FsIeqMjJtgt%MEC6PttOAjm>HXG{^SnLfc<)a!4 zvVZIRzTCmPbck$PNECdiQaHbF7=1D=nPFO6QMub6pHxs7K(J~6{B~fYG>WE$Hk{Er zLwhT|s=jYzp|F5!o6i>kR!_22pFfh~js?m>>yZ{Wt>;;jOe&Ob>`aE*0xq`&OjB8N z@7aHc0zuuS6xE!0yGd2ois;@316}K$u*6yCgcX$a%F9UPGrZ`QLKDV(CTCu`wZ~Yb`pG)I3 z>va98aG(L7{yphBj|Tg>WwRpnMU8$j_r6R!>2W;>__sc*dKoWU*euwM^lMV{N=M4E z)&RvIXfp?L)DafeFX`{jK?oGh&Pvc=rc6y;*yU;^tw_5;Tx*lWCBNtXY&aU?Il6|OhbLNZI5`eDgS9nQJpV& zIiP#%Zti>c7*G(iB-7{YA-=0fWfGG#0CzuB6&= zU_l}a?^I(Bq~al2B?n4OsyZhsL^Kn?i+?Q#K*@{Rdqt&|8`7i zLwp*2ziUCX{@ii__*KD+4)UdtwlCJ8)C$x;1q~;hqGcvHeF}4%>pqkP2eK;QvaF=> zWbHhzX;IM{k8a^U{mWK(dq-cY$tldD@}t12^D@z&yaeqqj{-2xki_BQ$>4eyxUq_} z_=h8qgCk!uaU{mp*|d#O+lPWA^&*TK{RtkN)J0e-+2MqMnq0Xp@z9&X(&pkaR{v*? zy~$PlwySSu6@l!I&ftT>zU$K_Q&Z|H9T(NR!%}{CW}{VChM2UH8%1W;AckwrE!HA8 zYhbv#a)Hs%rw17yFr&+Yi4UrURy#@5=PXwVa&JpavVHHc{O+Fb#J7rgw+46$_I4;R zvex-|gHe=8x7qErff4KB>rE*9{a)SupNEINhv=`)-p)h0>S_`!EaiQU{llL>Z|+7H zd>;AqIeRWY-)@b`J~pWkiC&XJ%(vtvEQEw6SqN*mdLbRYS7l&s7&vd^L$m+$^tzW)95ljE7^ww0RW*}z zK3%`sop3z_?8o-lgh`DE^F0O$E6|h!%^!Y?sT_zK_)pI_(CuKX7V5kL2a{}boKWD3 zOS>)KadyvH6d}7XLU6|%8SM$!YGcKZb_+Cn&4(0T-DR(Et$SVqGV~oP?aSJ)p7v`QdEXC7tePl1m@QC>jgZP*KTsbIc`yvh*4%wfoANl`D1Sf32tqv!JL{impn z3Ls|aMybPsxWaZBv@I&z8>NNMR3)ZBQERu%moPS6j!!v9-$p;Flxo1#vfAk8jsi_p z6FBg8xbqDgL6!~sQEm5fi-F?gCdAXOQ2bQ6Xq^L+c^l zZ{uSyJ@Lnly|`(CQ*Vp~WAD3e4wif3Qpon^1(~{fKVDq<;3kH6l_*R}ul-oF(pb~- zvfcZN-@b;M*EVYuPo(6n->P7dIAVwsJ1aDJc`TP6`(7zD*~7a-ogXVYNLMfdJ;V^v zuT(@5Y@psC^B;Vv^a&yrr6R@meKE8`im?;zJg`BrS@#)a*_<+>zq?vsEV1WIL9<}8 zp12}gta$i?^k-16B!PyBpUM{x{VbOXbD`a$SIF44_l2aPfd|T=zb@pQmp8_>Hz4h3 zrBbhBMj1Clakn}ht@c!cxYIe+_3O}{wJU}&kz_Uz+i^+fXUzV=h6hXWO#j}$5Gi1Lp; zXZ>$=M6xR8Ym`g94}}sk5k+dOT+20E{cn1=N#6HGvrN*8`6`O>PDT>T5BOdFDtVKC zfa7$z>E78Q#@dDX*V%+Nc{R5xgE_9n)Es_>PU5LPORm@t#+UPX{qIrcg5mf8$-SsB88B^j|9 zOXbgA@L@&&@DPkgTTSVY)$#}24PyQgGkZNLBdPxM;D~GaH1!19?7J?gV@nM1u3Ybl z&?zzO`te)`o2RIu=d%4B%dX6kTWM;DSyt9XCEIuPDa#S2Nm%uM>DJ4q{hpGE`U5W0 zYKORw^j^HlNHKgGZ119i7S62>sb1Y-e!7U{63?Bjy+bbW@D}-a)bs&)t)QMSV+m%z z7W4DR3)tD|o7! zmxV&Li$en|)k~hS^p6o95NB~8Khl{^$9Z8*Q?5v_Vju5n)L7vOGnDAP``ix+UI2>Wq~>g2Bq_Mu!idzEs@)5X7+L ze7q|n%bOsqg1EWw`pn^JdjC6;;Bj)E_vd{vX>Ua?|1lh4&9n}_+foCnW{wYc^a8>PRmHY(f^>*-spVKQ25=j@1g>1ig`rN zVxYczY@YFKhRs5aQ{!le?Cv;k3zyvI`{WmaU2Hm~i<0MCUurH3Wla2pl27qSN6Do` z*yyCXnmR5-IU&p875(1{DvtUC?ocZh3rzRYfV@EB_j~AT66az`eIu3 zN_@@3!e0GCH_a4r35k6EHO=cf-K-cx$O|Ox}Nd8f(l!4sC_n*YOel*&0nfC{l@Q$rm>@aCa z?+bEm^u^#c>xZ`~-dh3^wzxa}{N|r~ba{M2kth&E+mz6?yzE~&pq;B;?ppChSbty*VE_;|f1*O9$hQO=->hQeZI+V@cY^L#&0MBlGlhlk?@8)DSlj0R$?|(C#s+dT&Ia?j z=qPu#+;d}kpFWXslf$Z8p!m^YWo~3vv@LrTtS6wv6!KLq9k7&&g<~qJt7{s;^liTQ zA{wvMTF@L%uhh+L>+wrF<5#pnquW`T8_21UAxg{^IFr}d1DKR z?J%n(eYT9yqQ`wY6smbDE^VFKT-ot*zSLx;0B=rhC@5QXj z^^scRTR29Ab#FGS-pux^zRIlD#}aK-;S>RD8Jwt+)1K#+D$x{6SjRS>qIPR6Hac1x zY3bV?FK{1J5m4xhI>RQTv_4zVdc}ye>p0W@8$hXGdL0r_Ex!BtcH}Mp4dT{E_{Uh5 zK*0Gku5Um=&nTLzqb^PZq30kMmAaV(mU#Npg+uBvI&{o^*mI(XpDz5iIdSO=U~9~j zxX3zP@JF#TQV+0qe(&_0N=EE*c1Hf&D*e!MhT>B@_9WjZ&kO(X$(Xd zqB0%s8lJxrAg=N4(v>vIMicRc+iTJAfUKa+&!3$3_6~5vs7pjY_-3+jD;L-*1%C%Lm>Z=$cj$XEMqD2K_Jr!jy z_Bup0I?wFq7r<#dzde;cxDuU1LE~ab88-9JD52Jf()YBBqa2U&N~w#*HUpMU8_>F4lpi^)=1ccds5R|6Q_FQx z5b-!d-xvjI?Up`$fb$zebTOq(d4?-yoi=+KX{@;uGvLrPhf_E-v$IR*PXlKmc#Rvc$I|*p zQP2eQYiaW(u|L#h#|>^0(e9; z5jcB`P@2nx+BZ2-kvw2u50XEKD>D-S&Z-_S_(^;dzGmf8EF?pmhEfRU3G`7Penpof z$?)a;7ygcpS}z*mD1l8G;QDbM{nOTEJg#4=vcp2(lLi}Q2V`-)s*rTsd-G|z>h?z1 zdkjNtf{QU?Gz)F-1}lwb~zReByomk(48!h|mTxE3|@XIGdfRhid&co*e5hqhbpiEoX(_+TmMZM*ene z-|d$d-7&S>6-uOth(eULtT+|Bo-MOk6_yT%VY5m;NTy0KCBF}`yDI$+9vm-Wka|$L zEY}HKY_SeFsfDjyQqhIPuutRYRJqbps+6085rP4Yc*onpx(UIdR;OI7&2HXL&!l-M zIl&G!awT>wJ40pr1*x-yv)1zN>-w15s;pvUE+^XQw4TrkvME%Ddl^?uMhcBqIZiOi ztkIGJ(4f0>ehMuljKR3&+lsZ%X+%atiHK5=45`!Y&K34?kLBxZPrVNaq*7(v%*9Ir zdFC?(T#oK=VcSe#CSgin7?NvjMn;22`iTSDM^cAe%oVe9!jvUp;KGweqY>VjNBR=h zH86TXkb=Peaqtm<^LjKbHu%DxD%0Uaz3F8|ic(;8`_gbdnz;i{>mH z55(dPDV>uF$DmfFrevoznp*mPuPgFFon(4Mnc`@VkF{wWl_1q^jn+BC?(9fKBt=!3 z!}@ko9ZoF!iKr+qmZWGN9&1Wn_H&Da^4JxM;i5qUZh@f2{DCgbh)mqKO!fo24%oOeBKuAZx_ z1gk9wuFTKl?otT>AxZt|#xf+vqonKYMwe%EWsC?s4)Mj`3v_Ua>|v2q zoXiu1?qE-*#{>5KJf7L&@U|9*IiU+6D(_>yTzteQmHZ*NGtgD|&sqR_)w_pFGpbC+ zU&>NN=ry#q8(&u2kerWH;~i18yz0@X2|JpaDF3}b=^?OZvoTK z-s-v5@`5Zk(Hn}2L7%{H+i4~E0@U1T3|u4M9G-|#OmP&rIrwl;M!@OhF>ywMbjJU3 zeaWm7t=Uu+UUA{XI(4lxkq09d9eG~;L>$-(oBN|a z#BEN8)1}zDzcuc_&1}V_on*wD!*}yTO_#BxB5G_p^j~7i35LS_BIB29zPK~woBChk z*r09`D&$+#3YE}<3ithu?bgdAFNyxRtHPPlJ--xj?xcHjezn~K@^z8>0@@u3W2K$U zYb2zo41-M;e8+!MrfNg92=}@v7(HbMU$7mT=UT~ibl2hHxwI8|RtD&gXYjhi%O4dQ z9ZD0Ow9XKdf=dyZJ$-Pg2NoV#tBa~8SN$C+Ohr>S)#0cEQC4eDQC&VSbS9$*pRD>D zSzu9*mULt(X4tvjEqI?BWT~Zd@2$R{tMcPx+vqj`zxWcTGEvJ+kqo&%6o<)NSoxE< zy^=R|nu@(P4C)Uqm(B@7lso;zXs{uQV~YX(T1ev)75ee;u%k|KZ7aP+h%B4TZyYkW zU_dG!hIx3--OEY_e4Y$RJai48s1ewT&sDFwb`DD*Of{dAW*t_`Os)mIDA;O6K3rWM zwhY)HVE}p^3E)M)N(bd?)Zrk^Q&HSM`9>1RFo(P&a2bX}e763lzDR*h7Jql{w-^cC zy~LkWV$0NZur zoZQb<0K#(P_4SI~?Hl|6A^x}#c#e#p;cy6>y-hR#U3aDZgd!lAXt3<%Oe|C7SFJJd zy?X#HG5+nCp~5IaM&a?2pL92Zna>>R_7N1qn-~Icz&{LQpbM{pfI@tGPtTS02g{!) z_Pe?N&Ps0){c)}^WahJFL+{OB5bqxdK^69Q%L}1+p+%?x`pKI4b)6}_F}y0>`pL9S zzC?FsYw|~m{aV0U`}fcPf&oL+MHQoiOzVbB{<$u&v00&+B!`P>I-T!&zGFW9j9}Wg z{})05bcv7#g~RLOx&r4;e<~L0Y%v0}ZNX$b6(a=L+v{Bm;#U0O!d9m^iRC7m|ItV? zkT~Nq{JvT*^e?+Z2>gp;Q4}h_|9aX2;I~@vx=FxTZg2gq6#q;*oxcGoNHi4tVP)Zb z@bT!)I%z=gS+NAzN%`Vg7^Nb7Mt{Wx{xOGo;QB%Dst({uFayT^EQ&25GO5LEfw=cK zI<@-e#mnRx!#9MY-hYikfB=kC%d;2ekU4)o$+oZF=}_?@-M&hrBYusISUmK1hg|p= z_nuhP=uGtW$1Rb+Jm`Nch(EuaUt6i~D|R&$(A#Gj$P*^xUtL{?5%*gE9Pq)%2_$bj&S$D@`d#ryS=)b1+Ki)S%)+=hqnrw#oH~IXJZ~fN~ zN0@5GHCzj=Z~xi%e*hBy{=Od;Ficx$7P?>mDVhKEt$%gwCoZrT*h8?B^#60T|Ix|6 zf9OF25|;)R8U8=C_}`|2Ap`(^#&Y_N|A!X;0bTv`KgoiA8KD1brj