From e14f926f759b34e9cf920bf14da408c027f3a739 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Sat, 31 Dec 2022 16:28:08 +0000 Subject: [PATCH 01/67] E_ITP metric --- pycvvdp/e_itp.py | 82 ++++++++++++++++++++ pycvvdp/video_source.py | 160 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 pycvvdp/e_itp.py diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py new file mode 100644 index 0000000..c4034e0 --- /dev/null +++ b/pycvvdp/e_itp.py @@ -0,0 +1,82 @@ +import torch + +from pycvvdp.utils import PU +from pycvvdp.video_source import * + +""" +E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class e_itp: + def __init__(self, device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + + ''' + Videos/images are encoded using perceptually uniform PU21 before computing PSNR. + + test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. + Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. + The two supported datatypes are float16 and uint8. + dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote + B - batch + C - colour channel + F - frame + H - height + W - width + Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video + The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. + frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the + first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: + 'replicate' - replicate the first frame + 'circular' - tile the video in the front, so that the last frame is used for frame 0. + 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... + ''' + def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): + + test_vs = fvvdp_video_source_array_itp( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) + + return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, fixation_point=None, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + eitp = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device) + R = vid_source.get_reference_frame(ff, device=self.device) + + eitp = eitp + self.eitp_fn(T, R) / N_frames + return eitp, None + + def eitp_fn(self, img1, img2): + mse = torch.mean(torch.sum( (img1 - img2)**2 )) + return 20*torch.log10( torch.sqrt(mse) ) + + def short_name(self): + return "E-ITP" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/video_source.py b/pycvvdp/video_source.py index dff4d87..5ce25ff 100644 --- a/pycvvdp/video_source.py +++ b/pycvvdp/video_source.py @@ -285,3 +285,163 @@ def _get_frame(self, from_array, idx, device): L = L[:,0:1,:,:,:]*self.color_to_luminance[0] + L[:,1:2,:,:,:]*self.color_to_luminance[1] + L[:,2:3,:,:,:]*self.color_to_luminance[2] return L + + + +""" +This video_source uses a photometric display model to convert input content (e.g. sRGB) to ITP +""" +class fvvdp_video_source_dm_itp( fvvdp_video_source ): + + def __init__( self, display_photometry='standard_hdr', color_space_name='sRGB' ): + + colorspaces_file = os.path.join(os.path.dirname(__file__), "fvvdp_data/color_spaces.json") + #colorspaces_file = utils.config_files.find( "color_spaces.json" ) + colorspaces = utils.json2dict(colorspaces_file) + + if not color_space_name in colorspaces: + raise RuntimeError( "Unknown color space: \"" + color_space_name + "\"" ) + + self.color_to_L= colorspaces[color_space_name]['RGB2L'] + self.color_to_M= colorspaces[color_space_name]['RGB2M'] + self.color_to_S= colorspaces[color_space_name]['RGB2S'] + self.LMS_to_I= colorspaces[color_space_name]['LMS2I'] + self.LMS_to_T= colorspaces[color_space_name]['LMS2T'] + self.LMS_to_P= colorspaces[color_space_name]['LMS2P'] + + if isinstance( display_photometry, str ): + self.dm_photometry = fvvdp_display_photometry.load(display_photometry) + elif isinstance( display_photometry, fvvdp_display_photometry ): + self.dm_photometry = display_photometry + else: + raise RuntimeError( "display_model must be a string or fvvdp_display_photometry subclass" ) + + +""" +This video source supplies frames from either Pytorch tensors and Numpy arrays. It also applies a photometric display model. + +A batch of videos should be stored as a tensor or numpy array. Ideally, the tensor should have the dimensions BCFHW (batch, colour, frame, height, width).If tensor is stored in another formay, you can pass the order of dimsions as "dim_order" parameter. If any dimension is missing, it will +be added as a singleton dimension. + +This class is for display-encoded (gamma-encoded) content that will be processed by a display model to produce vidoes in ITP color coordinates +""" +class fvvdp_video_source_array_itp( fvvdp_video_source_dm_itp ): + + # test_video, reference video - tensor with test and reference video frames. See the class description above for the explanation of dimensions of those tensors. + # fps - frames per second. Must be 0 for images + # dim_order - a string with the order of the dimensions. 'BCFHW' is the default. + # display_model - object that implements fvvdp_display_photometry + # class + # color_space_name - name of the colour space (see + # fvvdp_data/color_spaces.json) + def __init__( self, test_video, reference_video, fps, dim_order='BCFHW', display_photometry='sdr_4k_30', color_space_name='sRGB' ): + + super().__init__(display_photometry=display_photometry, color_space_name=color_space_name) + + if test_video.shape != reference_video.shape: + raise RuntimeError( 'Test and reference image/video tensors must be exactly the same shape' ) + + if len(dim_order) != len(test_video.shape): + raise RuntimeError( 'Input tensor much have exactly as many dimensions as there are characters in the "dims" parameter' ) + + # Convert numpy arrays to tensors. Note that we do not upload to device or change dtype at this point (to save GPU memory) + if isinstance( test_video, np.ndarray ): + if test_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Test has datatype uint16, packing into int16') + test_video = test_video.astype(np.int16) + test_video = torch.tensor(test_video) + if isinstance( reference_video, np.ndarray ): + if reference_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Reference has datatype uint16, packing into int16') + reference_video = reference_video.astype(np.int16) + reference_video = torch.tensor(reference_video) + + # Change the order of dimension to match BFCHW - batch, frame, colour, height, width + test_video = reshuffle_dims( test_video, in_dims=dim_order, out_dims="BCFHW" ) + reference_video = reshuffle_dims( reference_video, in_dims=dim_order, out_dims="BCFHW" ) + + B, C, F, H, W = test_video.shape + + if fps==0 and F>1: + raise RuntimeError( 'When passing video sequences, you must set ''frames_per_second'' parameter' ) + + if C!=3 and C!=1: + raise RuntimeError( 'The content must have either 1 or 3 colour channels.' ) + + self.fps = fps + self.is_video = (fps>0) + self.is_color = (C==3) + self.test_video = test_video + self.reference_video = reference_video + + + def get_frames_per_second(self): + return self.fps + + # Return a [height width frames] vector with the resolution and + # the number of frames in the video clip. [height width 1] is + # returned for an image. + def get_video_size(self): + + sh = self.test_video.shape + return (sh[3], sh[4], sh[2]) + + # % Get a test video frame as a single-precision luminance map + # % scaled in absolute inits of cd/m^2. 'frame' is the frame index, + # % starting from 0. If use_gpu==true, the function should return a + # % gpuArray. + + def get_test_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.test_video, frame, device ) + + def get_reference_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.reference_video, frame, device ) + + def _get_frame( self, from_array, frame, device ): + # Determine the maximum value of the data type storing the + # image/video + + if from_array.dtype is torch.float32: + frame = from_array[:,:,frame:(frame+1),:,:].to(device) + elif from_array.dtype is torch.int16: + # Use int16 to losslessly pack uint16 values + # Unpack from int16 by bit masking as described in this thread: + # https://stackoverflow.com/a/20766900 + # logging.info('Found int16 datatype, unpack into uint16') + max_value = 2**16 - 1 + # Cast to int32 to store values >= 2**15 + frame_int32 = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.int32) + frame_uint16 = frame_int32 & max_value + # Finally convert to float in the range [0,1] + frame = frame_uint16.to(torch.float32) / max_value + elif from_array.dtype is torch.uint8: + frame = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.float32)/255 + else: + raise RuntimeError( "Only uint8, uint16 and float32 is currently supported" ) + + if self.is_color: + # Convert RGB to LMS + RGB = frame; + LMS[:,0:1,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_L[0] + RGB[:,1:2,:,:,:]*self.color_to_L[1] + RGB[:,2:3,:,:,:]*self.color_to_L[2] + LMS[:,1:2,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_M[0] + RGB[:,1:2,:,:,:]*self.color_to_M[1] + RGB[:,2:3,:,:,:]*self.color_to_M[2] + LMS[:,2:3,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_S[0] + RGB[:,1:2,:,:,:]*self.color_to_S[1] + RGB[:,2:3,:,:,:]*self.color_to_S[2] + else: + LMS = frame*self.color_to_L[0] + frame*self.color_to_L[1] + frame*self.color_to_L[2] + + # Apply PQ curve + LMS_p = self.dm_photometry.forward( LMS ) + + if self.is_color: + # Convert LMS' to ITP + ITP[:,0:1,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_I[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_I[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_I[2] + ITP[:,1:2,:,:,:]= 0.5*LMS_p[:,0:1,:,:,:]*self.LMS_to_T[0] + 0.5*LMS_p[:,1:2,:,:,:]*self.LMS_to_T[1] + 0.5*LMS_p[:,2:3,:,:,:]*self.LMS_to_T[2] + ITP[:,2:3,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_P[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_P[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_P[2] + else: + ITP = frame*self.LMS_to_I[0] + frame*self.LMS_to_I[1] + frame*self.LMS_to_I[2] + + + return ITP From c996e263cbe2348d841ab824b7f709f1f3e61cc8 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Sat, 31 Dec 2022 16:28:08 +0000 Subject: [PATCH 02/67] E_ITP metric --- pycvvdp/e_itp.py | 82 ++++++++++++++++++++ pycvvdp/video_source.py | 160 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 pycvvdp/e_itp.py diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py new file mode 100644 index 0000000..c4034e0 --- /dev/null +++ b/pycvvdp/e_itp.py @@ -0,0 +1,82 @@ +import torch + +from pycvvdp.utils import PU +from pycvvdp.video_source import * + +""" +E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class e_itp: + def __init__(self, device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + + ''' + Videos/images are encoded using perceptually uniform PU21 before computing PSNR. + + test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. + Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. + The two supported datatypes are float16 and uint8. + dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote + B - batch + C - colour channel + F - frame + H - height + W - width + Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video + The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. + frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the + first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: + 'replicate' - replicate the first frame + 'circular' - tile the video in the front, so that the last frame is used for frame 0. + 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... + ''' + def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): + + test_vs = fvvdp_video_source_array_itp( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) + + return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, fixation_point=None, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + eitp = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device) + R = vid_source.get_reference_frame(ff, device=self.device) + + eitp = eitp + self.eitp_fn(T, R) / N_frames + return eitp, None + + def eitp_fn(self, img1, img2): + mse = torch.mean(torch.sum( (img1 - img2)**2 )) + return 20*torch.log10( torch.sqrt(mse) ) + + def short_name(self): + return "E-ITP" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/video_source.py b/pycvvdp/video_source.py index 9f19702..604cc33 100644 --- a/pycvvdp/video_source.py +++ b/pycvvdp/video_source.py @@ -287,3 +287,163 @@ def _get_frame(self, from_array, idx, device): L = L[:,0:1,:,:,:]*self.color_to_luminance[0] + L[:,1:2,:,:,:]*self.color_to_luminance[1] + L[:,2:3,:,:,:]*self.color_to_luminance[2] return L + + + +""" +This video_source uses a photometric display model to convert input content (e.g. sRGB) to ITP +""" +class fvvdp_video_source_dm_itp( fvvdp_video_source ): + + def __init__( self, display_photometry='standard_hdr', color_space_name='sRGB' ): + + colorspaces_file = os.path.join(os.path.dirname(__file__), "fvvdp_data/color_spaces.json") + #colorspaces_file = utils.config_files.find( "color_spaces.json" ) + colorspaces = utils.json2dict(colorspaces_file) + + if not color_space_name in colorspaces: + raise RuntimeError( "Unknown color space: \"" + color_space_name + "\"" ) + + self.color_to_L= colorspaces[color_space_name]['RGB2L'] + self.color_to_M= colorspaces[color_space_name]['RGB2M'] + self.color_to_S= colorspaces[color_space_name]['RGB2S'] + self.LMS_to_I= colorspaces[color_space_name]['LMS2I'] + self.LMS_to_T= colorspaces[color_space_name]['LMS2T'] + self.LMS_to_P= colorspaces[color_space_name]['LMS2P'] + + if isinstance( display_photometry, str ): + self.dm_photometry = fvvdp_display_photometry.load(display_photometry) + elif isinstance( display_photometry, fvvdp_display_photometry ): + self.dm_photometry = display_photometry + else: + raise RuntimeError( "display_model must be a string or fvvdp_display_photometry subclass" ) + + +""" +This video source supplies frames from either Pytorch tensors and Numpy arrays. It also applies a photometric display model. + +A batch of videos should be stored as a tensor or numpy array. Ideally, the tensor should have the dimensions BCFHW (batch, colour, frame, height, width).If tensor is stored in another formay, you can pass the order of dimsions as "dim_order" parameter. If any dimension is missing, it will +be added as a singleton dimension. + +This class is for display-encoded (gamma-encoded) content that will be processed by a display model to produce vidoes in ITP color coordinates +""" +class fvvdp_video_source_array_itp( fvvdp_video_source_dm_itp ): + + # test_video, reference video - tensor with test and reference video frames. See the class description above for the explanation of dimensions of those tensors. + # fps - frames per second. Must be 0 for images + # dim_order - a string with the order of the dimensions. 'BCFHW' is the default. + # display_model - object that implements fvvdp_display_photometry + # class + # color_space_name - name of the colour space (see + # fvvdp_data/color_spaces.json) + def __init__( self, test_video, reference_video, fps, dim_order='BCFHW', display_photometry='sdr_4k_30', color_space_name='sRGB' ): + + super().__init__(display_photometry=display_photometry, color_space_name=color_space_name) + + if test_video.shape != reference_video.shape: + raise RuntimeError( 'Test and reference image/video tensors must be exactly the same shape' ) + + if len(dim_order) != len(test_video.shape): + raise RuntimeError( 'Input tensor much have exactly as many dimensions as there are characters in the "dims" parameter' ) + + # Convert numpy arrays to tensors. Note that we do not upload to device or change dtype at this point (to save GPU memory) + if isinstance( test_video, np.ndarray ): + if test_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Test has datatype uint16, packing into int16') + test_video = test_video.astype(np.int16) + test_video = torch.tensor(test_video) + if isinstance( reference_video, np.ndarray ): + if reference_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Reference has datatype uint16, packing into int16') + reference_video = reference_video.astype(np.int16) + reference_video = torch.tensor(reference_video) + + # Change the order of dimension to match BFCHW - batch, frame, colour, height, width + test_video = reshuffle_dims( test_video, in_dims=dim_order, out_dims="BCFHW" ) + reference_video = reshuffle_dims( reference_video, in_dims=dim_order, out_dims="BCFHW" ) + + B, C, F, H, W = test_video.shape + + if fps==0 and F>1: + raise RuntimeError( 'When passing video sequences, you must set ''frames_per_second'' parameter' ) + + if C!=3 and C!=1: + raise RuntimeError( 'The content must have either 1 or 3 colour channels.' ) + + self.fps = fps + self.is_video = (fps>0) + self.is_color = (C==3) + self.test_video = test_video + self.reference_video = reference_video + + + def get_frames_per_second(self): + return self.fps + + # Return a [height width frames] vector with the resolution and + # the number of frames in the video clip. [height width 1] is + # returned for an image. + def get_video_size(self): + + sh = self.test_video.shape + return (sh[3], sh[4], sh[2]) + + # % Get a test video frame as a single-precision luminance map + # % scaled in absolute inits of cd/m^2. 'frame' is the frame index, + # % starting from 0. If use_gpu==true, the function should return a + # % gpuArray. + + def get_test_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.test_video, frame, device ) + + def get_reference_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.reference_video, frame, device ) + + def _get_frame( self, from_array, frame, device ): + # Determine the maximum value of the data type storing the + # image/video + + if from_array.dtype is torch.float32: + frame = from_array[:,:,frame:(frame+1),:,:].to(device) + elif from_array.dtype is torch.int16: + # Use int16 to losslessly pack uint16 values + # Unpack from int16 by bit masking as described in this thread: + # https://stackoverflow.com/a/20766900 + # logging.info('Found int16 datatype, unpack into uint16') + max_value = 2**16 - 1 + # Cast to int32 to store values >= 2**15 + frame_int32 = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.int32) + frame_uint16 = frame_int32 & max_value + # Finally convert to float in the range [0,1] + frame = frame_uint16.to(torch.float32) / max_value + elif from_array.dtype is torch.uint8: + frame = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.float32)/255 + else: + raise RuntimeError( "Only uint8, uint16 and float32 is currently supported" ) + + if self.is_color: + # Convert RGB to LMS + RGB = frame; + LMS[:,0:1,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_L[0] + RGB[:,1:2,:,:,:]*self.color_to_L[1] + RGB[:,2:3,:,:,:]*self.color_to_L[2] + LMS[:,1:2,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_M[0] + RGB[:,1:2,:,:,:]*self.color_to_M[1] + RGB[:,2:3,:,:,:]*self.color_to_M[2] + LMS[:,2:3,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_S[0] + RGB[:,1:2,:,:,:]*self.color_to_S[1] + RGB[:,2:3,:,:,:]*self.color_to_S[2] + else: + LMS = frame*self.color_to_L[0] + frame*self.color_to_L[1] + frame*self.color_to_L[2] + + # Apply PQ curve + LMS_p = self.dm_photometry.forward( LMS ) + + if self.is_color: + # Convert LMS' to ITP + ITP[:,0:1,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_I[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_I[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_I[2] + ITP[:,1:2,:,:,:]= 0.5*LMS_p[:,0:1,:,:,:]*self.LMS_to_T[0] + 0.5*LMS_p[:,1:2,:,:,:]*self.LMS_to_T[1] + 0.5*LMS_p[:,2:3,:,:,:]*self.LMS_to_T[2] + ITP[:,2:3,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_P[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_P[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_P[2] + else: + ITP = frame*self.LMS_to_I[0] + frame*self.LMS_to_I[1] + frame*self.LMS_to_I[2] + + + return ITP From f0cfcf9081c190125df52f14ed828c3ccd005868 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Sun, 8 Jan 2023 17:07:28 +0000 Subject: [PATCH 03/67] ITP metric updated --- pycvvdp/colorspace.py | 7 +++++ pycvvdp/e_itp.py | 66 ++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/pycvvdp/colorspace.py b/pycvvdp/colorspace.py index ba0c677..c5414c5 100644 --- a/pycvvdp/colorspace.py +++ b/pycvvdp/colorspace.py @@ -12,6 +12,11 @@ (1.000000000000000, -2.311130179947035, 0), (-1.000000000000000, -1.000000000000000, 50.977571328718781) ) +XYZ_to_LMShpe = ( + ( 0.4002, 0.7075, -0.0807 ), + (-0.2280, 1.1500, 0.0612 ), + ( 0, 0, 0.9184 ) ) + XYZ_to_RGB2020 = ( (1.716502508360628, -0.355584689096764, -0.253375213570850), \ (-0.666625609145029, 1.616446566522207, 0.015775479726511), \ (0.017655211703087, -0.042810696059636, 0.942089263920533) ) @@ -51,6 +56,8 @@ def rgb2colourspace(self, RGB_lin, colorspace): rgb2abc = torch.as_tensor( XYZ_to_LMS2006, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="DKLd65": rgb2abc = torch.as_tensor( LMS2006_to_DKLd65, dtype=RGB_lin.dtype, device=RGB_lin.device) @ torch.as_tensor( XYZ_to_LMS2006, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz + elif colorspace=="LMShpe": + rgb2abc = torch.as_tensor( XYZ_to_LMShpe, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="RGB709": rgb2abc = torch.as_tensor( XYZ_to_RGB709, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="RGB2020": diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py index c4034e0..34ce129 100644 --- a/pycvvdp/e_itp.py +++ b/pycvvdp/e_itp.py @@ -2,11 +2,12 @@ from pycvvdp.utils import PU from pycvvdp.video_source import * +from pycvvdp.vq_metric import * """ E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ -class e_itp: +class e_itp(vq_metric): def __init__(self, device=None): # Use GPU if available if device is None: @@ -17,32 +18,7 @@ def __init__(self, device=None): else: self.device = device - - ''' - Videos/images are encoded using perceptually uniform PU21 before computing PSNR. - - test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. - Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. - The two supported datatypes are float16 and uint8. - dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote - B - batch - C - colour channel - F - frame - H - height - W - width - Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video - The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. - frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the - first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: - 'replicate' - replicate the first frame - 'circular' - tile the video in the front, so that the last frame is used for frame 0. - 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... - ''' - def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): - - test_vs = fvvdp_video_source_array_itp( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) - - return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) + self.colorspace = 'LMShpe' ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. @@ -62,12 +38,38 @@ def predict_video_source(self, vid_source, fixation_point=None, frame_padding="r eitp = 0.0 for ff in range(N_frames): - T = vid_source.get_test_frame(ff, device=self.device) - R = vid_source.get_reference_frame(ff, device=self.device) - - eitp = eitp + self.eitp_fn(T, R) / N_frames + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # LMS_HPE to LMS_HPE_Lin + T_lms_lin = self.lmshpe_to_lmshpelin(T) + R_lms_lin = self.lmshpe_to_lmshpelin(R) + + # LMS_HPE_Lin to ITP + T_itp = self.lmshpelin_to_itp(T_lms_lin) + R_itp = self.lmshpelin_to_itp(R_lms_lin) + + eitp = eitp + self.eitp_fn(T_itp, R_itp) / N_frames return eitp, None - + + def lmshpe_to_lmshpelin(img) + lms_lin_pos = img**0.43 + lms_lin_neg = -(-img)**0.43 + condition = torch.less(img, 0) + lms_lin = torch.where(condition, lms_lin_neg, lms_lin_pos) + return lms_lin + + def lmshpelin_to_itp(img) + LMShpelin_to_itp = ( + (0.4, 0.4, 0.2), + (4.455, -4.851, 0.396), + (0.8056, 0.3572, -1.1628) ) + mat = torch.as_tensor( LMShpelin_to_itp, dtype=img.dtype, device=img.device) + ITP = torch.empty_like(img) + for cc in range(3): + ITP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return ITP + def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) return 20*torch.log10( torch.sqrt(mse) ) From 8db48336861daacc2b306cb209e80bf229e5a67e Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Sat, 31 Dec 2022 16:28:08 +0000 Subject: [PATCH 04/67] E_ITP metric --- pycvvdp/e_itp.py | 82 ++++++++++++++++++++ pycvvdp/video_source.py | 160 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 242 insertions(+) create mode 100644 pycvvdp/e_itp.py diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py new file mode 100644 index 0000000..c4034e0 --- /dev/null +++ b/pycvvdp/e_itp.py @@ -0,0 +1,82 @@ +import torch + +from pycvvdp.utils import PU +from pycvvdp.video_source import * + +""" +E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class e_itp: + def __init__(self, device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + + ''' + Videos/images are encoded using perceptually uniform PU21 before computing PSNR. + + test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. + Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. + The two supported datatypes are float16 and uint8. + dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote + B - batch + C - colour channel + F - frame + H - height + W - width + Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video + The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. + frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the + first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: + 'replicate' - replicate the first frame + 'circular' - tile the video in the front, so that the last frame is used for frame 0. + 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... + ''' + def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): + + test_vs = fvvdp_video_source_array_itp( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) + + return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, fixation_point=None, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + eitp = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device) + R = vid_source.get_reference_frame(ff, device=self.device) + + eitp = eitp + self.eitp_fn(T, R) / N_frames + return eitp, None + + def eitp_fn(self, img1, img2): + mse = torch.mean(torch.sum( (img1 - img2)**2 )) + return 20*torch.log10( torch.sqrt(mse) ) + + def short_name(self): + return "E-ITP" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/video_source.py b/pycvvdp/video_source.py index dff4d87..5ce25ff 100644 --- a/pycvvdp/video_source.py +++ b/pycvvdp/video_source.py @@ -285,3 +285,163 @@ def _get_frame(self, from_array, idx, device): L = L[:,0:1,:,:,:]*self.color_to_luminance[0] + L[:,1:2,:,:,:]*self.color_to_luminance[1] + L[:,2:3,:,:,:]*self.color_to_luminance[2] return L + + + +""" +This video_source uses a photometric display model to convert input content (e.g. sRGB) to ITP +""" +class fvvdp_video_source_dm_itp( fvvdp_video_source ): + + def __init__( self, display_photometry='standard_hdr', color_space_name='sRGB' ): + + colorspaces_file = os.path.join(os.path.dirname(__file__), "fvvdp_data/color_spaces.json") + #colorspaces_file = utils.config_files.find( "color_spaces.json" ) + colorspaces = utils.json2dict(colorspaces_file) + + if not color_space_name in colorspaces: + raise RuntimeError( "Unknown color space: \"" + color_space_name + "\"" ) + + self.color_to_L= colorspaces[color_space_name]['RGB2L'] + self.color_to_M= colorspaces[color_space_name]['RGB2M'] + self.color_to_S= colorspaces[color_space_name]['RGB2S'] + self.LMS_to_I= colorspaces[color_space_name]['LMS2I'] + self.LMS_to_T= colorspaces[color_space_name]['LMS2T'] + self.LMS_to_P= colorspaces[color_space_name]['LMS2P'] + + if isinstance( display_photometry, str ): + self.dm_photometry = fvvdp_display_photometry.load(display_photometry) + elif isinstance( display_photometry, fvvdp_display_photometry ): + self.dm_photometry = display_photometry + else: + raise RuntimeError( "display_model must be a string or fvvdp_display_photometry subclass" ) + + +""" +This video source supplies frames from either Pytorch tensors and Numpy arrays. It also applies a photometric display model. + +A batch of videos should be stored as a tensor or numpy array. Ideally, the tensor should have the dimensions BCFHW (batch, colour, frame, height, width).If tensor is stored in another formay, you can pass the order of dimsions as "dim_order" parameter. If any dimension is missing, it will +be added as a singleton dimension. + +This class is for display-encoded (gamma-encoded) content that will be processed by a display model to produce vidoes in ITP color coordinates +""" +class fvvdp_video_source_array_itp( fvvdp_video_source_dm_itp ): + + # test_video, reference video - tensor with test and reference video frames. See the class description above for the explanation of dimensions of those tensors. + # fps - frames per second. Must be 0 for images + # dim_order - a string with the order of the dimensions. 'BCFHW' is the default. + # display_model - object that implements fvvdp_display_photometry + # class + # color_space_name - name of the colour space (see + # fvvdp_data/color_spaces.json) + def __init__( self, test_video, reference_video, fps, dim_order='BCFHW', display_photometry='sdr_4k_30', color_space_name='sRGB' ): + + super().__init__(display_photometry=display_photometry, color_space_name=color_space_name) + + if test_video.shape != reference_video.shape: + raise RuntimeError( 'Test and reference image/video tensors must be exactly the same shape' ) + + if len(dim_order) != len(test_video.shape): + raise RuntimeError( 'Input tensor much have exactly as many dimensions as there are characters in the "dims" parameter' ) + + # Convert numpy arrays to tensors. Note that we do not upload to device or change dtype at this point (to save GPU memory) + if isinstance( test_video, np.ndarray ): + if test_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Test has datatype uint16, packing into int16') + test_video = test_video.astype(np.int16) + test_video = torch.tensor(test_video) + if isinstance( reference_video, np.ndarray ): + if reference_video.dtype == np.uint16: + # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. + # This will be efficiently transferred and unpacked on the GPU. + # logging.info('Reference has datatype uint16, packing into int16') + reference_video = reference_video.astype(np.int16) + reference_video = torch.tensor(reference_video) + + # Change the order of dimension to match BFCHW - batch, frame, colour, height, width + test_video = reshuffle_dims( test_video, in_dims=dim_order, out_dims="BCFHW" ) + reference_video = reshuffle_dims( reference_video, in_dims=dim_order, out_dims="BCFHW" ) + + B, C, F, H, W = test_video.shape + + if fps==0 and F>1: + raise RuntimeError( 'When passing video sequences, you must set ''frames_per_second'' parameter' ) + + if C!=3 and C!=1: + raise RuntimeError( 'The content must have either 1 or 3 colour channels.' ) + + self.fps = fps + self.is_video = (fps>0) + self.is_color = (C==3) + self.test_video = test_video + self.reference_video = reference_video + + + def get_frames_per_second(self): + return self.fps + + # Return a [height width frames] vector with the resolution and + # the number of frames in the video clip. [height width 1] is + # returned for an image. + def get_video_size(self): + + sh = self.test_video.shape + return (sh[3], sh[4], sh[2]) + + # % Get a test video frame as a single-precision luminance map + # % scaled in absolute inits of cd/m^2. 'frame' is the frame index, + # % starting from 0. If use_gpu==true, the function should return a + # % gpuArray. + + def get_test_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.test_video, frame, device ) + + def get_reference_frame( self, frame, device=torch.device('cpu') ): + return self._get_frame(self.reference_video, frame, device ) + + def _get_frame( self, from_array, frame, device ): + # Determine the maximum value of the data type storing the + # image/video + + if from_array.dtype is torch.float32: + frame = from_array[:,:,frame:(frame+1),:,:].to(device) + elif from_array.dtype is torch.int16: + # Use int16 to losslessly pack uint16 values + # Unpack from int16 by bit masking as described in this thread: + # https://stackoverflow.com/a/20766900 + # logging.info('Found int16 datatype, unpack into uint16') + max_value = 2**16 - 1 + # Cast to int32 to store values >= 2**15 + frame_int32 = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.int32) + frame_uint16 = frame_int32 & max_value + # Finally convert to float in the range [0,1] + frame = frame_uint16.to(torch.float32) / max_value + elif from_array.dtype is torch.uint8: + frame = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.float32)/255 + else: + raise RuntimeError( "Only uint8, uint16 and float32 is currently supported" ) + + if self.is_color: + # Convert RGB to LMS + RGB = frame; + LMS[:,0:1,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_L[0] + RGB[:,1:2,:,:,:]*self.color_to_L[1] + RGB[:,2:3,:,:,:]*self.color_to_L[2] + LMS[:,1:2,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_M[0] + RGB[:,1:2,:,:,:]*self.color_to_M[1] + RGB[:,2:3,:,:,:]*self.color_to_M[2] + LMS[:,2:3,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_S[0] + RGB[:,1:2,:,:,:]*self.color_to_S[1] + RGB[:,2:3,:,:,:]*self.color_to_S[2] + else: + LMS = frame*self.color_to_L[0] + frame*self.color_to_L[1] + frame*self.color_to_L[2] + + # Apply PQ curve + LMS_p = self.dm_photometry.forward( LMS ) + + if self.is_color: + # Convert LMS' to ITP + ITP[:,0:1,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_I[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_I[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_I[2] + ITP[:,1:2,:,:,:]= 0.5*LMS_p[:,0:1,:,:,:]*self.LMS_to_T[0] + 0.5*LMS_p[:,1:2,:,:,:]*self.LMS_to_T[1] + 0.5*LMS_p[:,2:3,:,:,:]*self.LMS_to_T[2] + ITP[:,2:3,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_P[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_P[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_P[2] + else: + ITP = frame*self.LMS_to_I[0] + frame*self.LMS_to_I[1] + frame*self.LMS_to_I[2] + + + return ITP From e8eb047b5c1fefdef0503cba90c0ca138f4f85f2 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Thu, 5 Jan 2023 19:44:16 +0000 Subject: [PATCH 05/67] Fixed a few issues with training --- pycvvdp/cvvdp_metric.py | 10 +++++++--- pycvvdp/video_source.py | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 9b750b8..96f5117 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -88,11 +88,11 @@ def update_device( self, device ): # for oo in self.omega: # self.preload_cache(oo, self.csf_sigma) self.ch_weights = self.ch_weights.to(device) + self.sigma_tf = self.sigma_tf.to(device) + self.beta_tf = self.beta_tf.to(device) self.lpyr = None self.imgaussfilt = utils.ImGaussFilt(0.5 * self.pix_per_deg, self.device) - # self.quality_band_freq_log = self.quality_band_freq_log.to(device) - # self.quality_band_w_log = self.quality_band_w_log.to(device) self.csf.update_device(device) @@ -234,7 +234,11 @@ def predict_video_source(self, vid_source): self.mem_allocated_peak = 0 #mem_per_frame = pix_cnt*4*3*2 + pix_cnt*4*all_ch*2 + int(pix_cnt*4*all_ch*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*1.33) - mem_per_frame = pix_cnt*350 # Estimated memory required per frame + if self.use_checkpoints: + # More memory required when training. TODO: better way to detect when running with require_grad + mem_per_frame = pix_cnt*2500 # Estimated memory required per frame + else: + mem_per_frame = pix_cnt*350 # Estimated memory required per frame max_frames = int((mem_avail-mem_const)/mem_per_frame) # how many frames can we fit into memory diff --git a/pycvvdp/video_source.py b/pycvvdp/video_source.py index 5ce25ff..604cc33 100644 --- a/pycvvdp/video_source.py +++ b/pycvvdp/video_source.py @@ -178,6 +178,8 @@ def _get_frame( self, from_array, frame, device, colorspace ): if from_array.dtype is torch.float32: frame = from_array[:,:,frame:(frame+1),:,:].to(device) + elif from_array.dtype is torch.float16: + frame = from_array[:,:,frame:(frame+1),:,:].to(device=device, dtype=torch.float32) elif from_array.dtype is torch.int16: # Use int16 to losslessly pack uint16 values # Unpack from int16 by bit masking as described in this thread: @@ -192,7 +194,7 @@ def _get_frame( self, from_array, frame, device, colorspace ): elif from_array.dtype is torch.uint8: frame = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.float32)/255 else: - raise RuntimeError( "Only uint8, uint16 and float32 is currently supported" ) + raise RuntimeError( f"Only uint8, uint16 and float32 is currently supported. {from_array.dtype} encountered." ) L_lin = self.dm_photometry.forward( frame ) From ce5f4b067c05e2eb22f593122a36dd713a27a5cd Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Thu, 5 Jan 2023 21:31:09 +0000 Subject: [PATCH 06/67] Reduced mem requirements --- pycvvdp/cvvdp_metric.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 96f5117..d917f75 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -236,7 +236,7 @@ def predict_video_source(self, vid_source): #mem_per_frame = pix_cnt*4*3*2 + pix_cnt*4*all_ch*2 + int(pix_cnt*4*all_ch*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*1.33) if self.use_checkpoints: # More memory required when training. TODO: better way to detect when running with require_grad - mem_per_frame = pix_cnt*2500 # Estimated memory required per frame + mem_per_frame = pix_cnt*500 # Estimated memory required per frame else: mem_per_frame = pix_cnt*350 # Estimated memory required per frame From 2042f1cc97d4ee291665204bc02bf746ce6f21d1 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Fri, 6 Jan 2023 09:20:57 +0000 Subject: [PATCH 07/67] Updated default params --- pycvvdp/vvdp_data/cvvdp_parameters.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pycvvdp/vvdp_data/cvvdp_parameters.json b/pycvvdp/vvdp_data/cvvdp_parameters.json index 8fc0f86..2cf765a 100644 --- a/pycvvdp/vvdp_data/cvvdp_parameters.json +++ b/pycvvdp/vvdp_data/cvvdp_parameters.json @@ -17,13 +17,13 @@ "masking_model": "min_mutual_masking_perc_norm2", "local_adapt": "gpyr", "contrast": "weber", - "jod_a": 0.329211, - "jod_exp": 0.273115, + "jod_a": 0.0957346, + "jod_exp": 0.432649, "mask_q_sust": 2.43685, "mask_q_trans": 4.946, "filter_len": -1, - "ch_weights": [1, 0.119421, 0.119421, 0.53489], + "ch_weights": [1, 1.02103, 1.02103, 1.25785], "sigma_tf": [5.79336, 14.1255, 6.63661, 0.12314], "beta_tf": [1.3314, 1.1196, 0.947901, 0.1898], - "baseband_weight": 5.50161 + "baseband_weight": 5.25268 } \ No newline at end of file From 0651919c30d68b8c923db67b7c45a0aee49c86e7 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sat, 7 Jan 2023 20:00:54 +0000 Subject: [PATCH 08/67] Fixed optimization of betas --- pycvvdp/cvvdp_metric.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index d917f75..442840f 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -577,7 +577,11 @@ def lp_norm(self, x, p, dim=0, normalize=True, keepdim=True): else: N = 1.0 - return torch.norm(x, p, dim=dim, keepdim=keepdim) / (float(N) ** (1./p)) + if isinstance( p, torch.Tensor ): + # p is a Tensor if it is being optimized. In that case, we need the formula for the norm + return torch.pow( torch.sum(x ** (p), dim=dim, keepdim=keepdim)/float(N), 1/p) + else: + return torch.norm(x, p, dim=dim, keepdim=keepdim) / (float(N) ** (1./p)) # Return temporal filters # F[0] - Y sustained From 977ec1ea8a41293f3ccf33c9763ea136202eec01 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sat, 7 Jan 2023 21:11:57 +0000 Subject: [PATCH 09/67] Code cleanup --- pycvvdp/cvvdp_metric.py | 41 +++-------------------------------------- 1 file changed, 3 insertions(+), 38 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 442840f..f0fd7d7 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -189,7 +189,6 @@ def predict_video_source(self, vid_source): if self.do_heatmap: self.heatmap_pyr = fvvdp_lpyr_dec(width, height, self.pix_per_deg, self.device) - #assert self.W == R_vid.shape[-1] and self.H == R_vid.shape[-2] #assert len(R_vid.shape)==5 @@ -464,6 +463,9 @@ def process_block_of_frames(self, R, vid_sz, temp_ch, lpyr, heatmap): return Q_per_ch_block def apply_masking_model(self, T, R, S): + # T - test contrast tensor + # R - reference contrast tensor + # S - sensitivity T = T*S R = R*S M = self.phase_uncertainty( torch.min( torch.abs(T), torch.abs(R) ) ) @@ -515,43 +517,6 @@ def compute_local_contrast(self, R, T, next_gauss_band, L_adapt): return L_bkg, R, T - # def get_cache_key(self, omega, sigma, k_cm): - # return ("o%g_s%g_cm%f" % (omega, sigma, k_cm)).replace('-', 'n').replace('.', '_') - - # def preload_cache(self, omega, sigma): - # key = self.get_cache_key(omega, sigma, self.k_cm) - # for csf_cache_dir in self.csf_cache_dirs: - # #fname = os.path.join(csf_cache_dir, key + '_cpu.mat') - # fname = os.path.join(csf_cache_dir, key + '_gpu0.mat') - # if os.path.isfile(fname): - # #lut = load_mat_dict(fname, "lut_cpu", self.device) - # lut = utils.load_mat_dict(fname, "lut", self.device) - # for k in lut: - # lut[k] = torch.tensor(lut[k], device=self.device, requires_grad=False) - # self.csf_cache[key] = {"lut" : lut} - # break - # if key not in self.csf_cache: - # raise RuntimeError("Error: cache file for %s not found" % key) - - # def cached_sensitivity(self, rho, omega, L_bkg, ecc, sigma): - # key = self.get_cache_key(omega, sigma, self.k_cm) - - # if key in self.csf_cache: - # lut = self.csf_cache[key]["lut"] - # else: - # print("Error: Key %s not found in cache" % key) - - # # ASSUMPTION: rho_q and ecc_q are not scalars - # rho_q = torch.log2(torch.clamp(rho, lut["rho"][0], lut["rho"][-1])) - # Y_q = torch.log2(torch.clamp(L_bkg, lut["Y"][0], lut["Y"][-1])) - # ecc_q = torch.sqrt(torch.clamp(ecc, lut["ecc"][0], lut["ecc"][-1])) - - # interpolated = interp3( lut["rho_log"], lut["Y_log"], lut["ecc_sqrt"], lut["S_log"], rho_q, Y_q, ecc_q) - - # S = torch.pow(2.0, interpolated) - - # return S - def weber2log(self, W): # Convert Weber contrast # From 388a1aabda6f0d976ae402cbf29739a787292162 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sat, 7 Jan 2023 22:24:57 +0000 Subject: [PATCH 10/67] Fixed bugs with the temporal filters --- pycvvdp/cvvdp_metric.py | 14 +++++++++----- test_on_XR-DAVID.py | 9 ++++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index f0fd7d7..3ef273a 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -361,6 +361,7 @@ def do_pooling_and_jods(self, Q_per_ch, rho_band): # Weights for the two temporal channels no_channels = Q_per_ch.shape[0] no_frames = Q_per_ch.shape[1] + no_bands = Q_per_ch.shape[2] if no_frames>1: # If video per_ch_w = self.ch_weights[0:no_channels].view(-1,1,1) #torch.stack( (torch.ones(1, device=self.device), torch.as_tensor(self.w_transient, device=self.device)[None] ), dim=1)[:,:,None] @@ -368,10 +369,12 @@ def do_pooling_and_jods(self, Q_per_ch, rho_band): per_ch_w = 1 # Weights for the spatial bands + per_sband_w = torch.ones( (1,1,no_bands), device=self.device) + per_sband_w[0,0,-1] = self.baseband_weight + #per_sband_w = torch.exp(interp1( self.quality_band_freq_log, self.quality_band_w_log, torch.log(torch.as_tensor(rho_band, device=self.device)) ))[:,None,None] - #Q_sc = self.lp_norm(Q_per_ch*per_tband_w*per_sband_w, self.beta_sch, 0, False) # Sum across spatial channels - Q_sc = self.lp_norm(Q_per_ch*per_ch_w, self.beta_sch, dim=2, normalize=False) # Sum across spatial channels + Q_sc = self.lp_norm(Q_per_ch*per_ch_w*per_sband_w, self.beta_sch, dim=2, normalize=False) # Sum across spatial channels Q_tc = self.lp_norm(Q_sc, self.beta_tch, dim=0, normalize=False) # Sum across temporal and chromatic channels Q = self.lp_norm(Q_tc, self.beta_t, dim=1, normalize=True) # Sum across frames Q = Q.squeeze() @@ -421,7 +424,7 @@ def process_block_of_frames(self, R, vid_sz, temp_ch, lpyr, heatmap): cch = cc if cc<3 else 0 # Y, rg, yv S[cc,:,:,:] = self.csf.sensitivity(rho, self.omega[tch], L_bkg, cch, self.csf_sigma) * 10.0**(self.sensitivity_correction/20.0) - D = (torch.abs(T_f-R_f) / L_bkg * S) * self.baseband_weight + D = (torch.abs(T_f-R_f) / L_bkg * S) else: if self.local_adapt=="gpyr": L_bkg = lpyr.get_gband(L_bkg_pyr, bb) @@ -567,11 +570,12 @@ def get_temporal_filters(self, frames_per_s): R[3:4,:] = torch.exp( -(omega ** self.beta_tf[3] - omega_bands[1] ** self.beta_tf[3])**2 / self.sigma_tf[3] ) # Freqency-space response #r = torch.empty( (4, N), device=self.device ) - r = torch.fft.fftshift( torch.real( torch.fft.irfft( R, dim=1, norm="backward", n=N ) ) ) F = [] for kk in range(4): - F.append( r[kk,:] ) + # Must be executed once per each channel. For some reason, gives wrong results when run on the entire array + r = torch.fft.fftshift( torch.real( torch.fft.irfft( R[kk,:], norm="backward", n=N ) ) ) + F.append( r ) return F, omega_bands diff --git a/test_on_XR-DAVID.py b/test_on_XR-DAVID.py index 611a2cc..7ccf253 100644 --- a/test_on_XR-DAVID.py +++ b/test_on_XR-DAVID.py @@ -13,8 +13,11 @@ # TST_FILEs = glob.glob(os.path.join(media_folder, 'Bonfire_Blur_*.yuv')) media_folder = 'S:\\Datasets\\XR-DAVID' -ref_file = os.path.join(media_folder, 'Bonfire_reference_Level001.mp4') -TST_FILEs = glob.glob(os.path.join(media_folder, 'Bonfire_WGNU_Level003.mp4')) +# ref_file = os.path.join(media_folder, 'Business_reference_Level001.mp4') +# TST_FILEs = glob.glob(os.path.join(media_folder, 'Business_WGNU_Level003.mp4')) + +ref_file = os.path.join(media_folder, 'Business_reference_Level001.mp4') +TST_FILEs = glob.glob(os.path.join(media_folder, 'Business_DUC_Level003.mp4')) # media_folder = 'S:\\Datasets\\LIVEHDR\\train' # ref_file = os.path.join(media_folder, '4k_ref_CenterPanorama.mp4') @@ -28,7 +31,7 @@ for tst_fname in TST_FILEs: - vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=30 ) + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=120 ) start = time.time() Q_JOD_static, stats_static = cvvdp.predict_video_source( vs ) From e099c5979e58839fb349ada62a1f5cdf0f54f9a1 Mon Sep 17 00:00:00 2001 From: Param Hanji Date: Sun, 8 Jan 2023 00:15:04 +0000 Subject: [PATCH 11/67] Some bug fixes for retaining gradients; removed update device --- pycvvdp/cvvdp_metric.py | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 3ef273a..2fb9f2f 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -82,20 +82,6 @@ def __init__(self, display_name="standard_4k", display_photometry=None, display_ self.imgaussfilt = utils.ImGaussFilt(0.5 * self.pix_per_deg, self.device) self.heatmap_pyr = None - def update_device( self, device ): - self.device = device - self.omega = torch.tensor([0,5], device=self.device, requires_grad=False) - # for oo in self.omega: - # self.preload_cache(oo, self.csf_sigma) - self.ch_weights = self.ch_weights.to(device) - self.sigma_tf = self.sigma_tf.to(device) - self.beta_tf = self.beta_tf.to(device) - - self.lpyr = None - self.imgaussfilt = utils.ImGaussFilt(0.5 * self.pix_per_deg, self.device) - - self.csf.update_device(device) - def load_config( self ): #parameters_file = os.path.join(os.path.dirname(__file__), "fvvdp_data/fvvdp_parameters.json") @@ -492,9 +478,9 @@ def mask_func_perc_norm(self, G, G_mask ): # Masking on perceptually normalized quantities (as in Daly's VDP) p = self.mask_p if G_mask.shape[0]==3: # image - q = torch.tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust], device=self.device ).view(3,1,1,1) + q = torch.stack( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust] ).view(3,1,1,1) else: # video - q = torch.tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust, self.mask_q_trans], device=self.device ).view(4,1,1,1) + q = torch.stack( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust, self.mask_q_trans] ).view(4,1,1,1) R = torch.div(torch.pow(G,p), 1. + torch.pow(G_mask, q)) return R @@ -580,7 +566,7 @@ def get_temporal_filters(self, frames_per_s): return F, omega_bands def torch_scalar(self, val, dtype=torch.float32): - return torch.tensor(val, dtype=dtype, device=self.device) + return torch.tensor(val, dtype=dtype, device=self.device) if not torch.is_tensor(val) else val.to(dtype) def short_name(self): return "FovVideoVDP" From 0acd9e60a602f4e9ce6c966cb07b76159e95e777 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sun, 8 Jan 2023 00:32:08 +0000 Subject: [PATCH 12/67] Created a super-class for all metrics --- pycvvdp/cvvdp_metric.py | 8 ++++--- pycvvdp/pupsnr.py | 39 ++++++------------------------- pycvvdp/vq_metric.py | 52 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 35 deletions(-) create mode 100644 pycvvdp/vq_metric.py diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 2fb9f2f..00460ab 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -19,6 +19,8 @@ from pycvvdp.visualize_diff_map import visualize_diff_map from pycvvdp.video_source import * +from pycvvdp.vq_metric import * + # For debugging only # from gfxdisp.pfs.pfs_torch import pfs_torch @@ -39,7 +41,7 @@ """ ColourVideoVDP metric. Refer to pytorch_examples for examples on how to use this class. """ -class cvvdp: +class cvvdp(vq_metric): def __init__(self, display_name="standard_4k", display_photometry=None, display_geometry=None, color_space="sRGB", foveated=False, heatmap=None, quiet=False, device=None, temp_padding="replicate", use_checkpoints=False): self.quiet = quiet self.foveated = foveated @@ -569,7 +571,7 @@ def torch_scalar(self, val, dtype=torch.float32): return torch.tensor(val, dtype=dtype, device=self.device) if not torch.is_tensor(val) else val.to(dtype) def short_name(self): - return "FovVideoVDP" + return "cvvdp" def quality_unit(self): return "JOD" @@ -581,7 +583,7 @@ def get_info_string(self): else: standard_str = '' fv_mode = 'foveated' if self.foveated else 'non-foveated' - return '"FovVideoVDP v{}, {:.4g} [pix/deg], Lpeak={:.5g}, Lblack={:.4g} [cd/m^2], {}{}"'.format(self.version, self.pix_per_deg, self.display_photometry.get_peak_luminance(), self.display_photometry.get_black_level(), fv_mode, standard_str) + return '"ColourVideoVDP v{}, {:.4g} [pix/deg], Lpeak={:.5g}, Lblack={:.4g} [cd/m^2], {}{}"'.format(self.version, self.pix_per_deg, self.display_photometry.get_peak_luminance(), self.display_photometry.get_black_level(), fv_mode, standard_str) def write_features_to_json(self, stats, dest_fname): Q_per_ch = stats['Q_per_ch'] # quality per channel [cc,ff,bb] diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index a8dbeeb..759ba02 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -2,11 +2,12 @@ from pycvvdp.utils import PU from pycvvdp.video_source import * +from pycvvdp.vq_metric import * """ PU21-PSNR-Y metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ -class pu_psnr_y: +class pu_psnr_y(vq_metric): def __init__(self, device=None): # Use GPU if available if device is None: @@ -20,36 +21,10 @@ def __init__(self, device=None): self.pu = PU() self.colorspace = 'Y' - ''' - Videos/images are encoded using perceptually uniform PU21 before computing PSNR. - - test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. - Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. - The two supported datatypes are float16 and uint8. - dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote - B - batch - C - colour channel - F - frame - H - height - W - width - Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video - The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. - frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the - first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: - 'replicate' - replicate the first frame - 'circular' - tile the video in the front, so that the last frame is used for frame 0. - 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... - ''' - def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): - - test_vs = video_source_array( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) - - return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) - ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' - def predict_video_source(self, vid_source, fixation_point=None, frame_padding="replicate"): + def predict_video_source(self, vid_source, frame_padding="replicate"): # T_vid and R_vid are the tensors of the size (1,1,N,H,W) # where: @@ -79,16 +54,16 @@ def psnr_fn(self, img1, img2): return 20*torch.log10( self.pu.peak/torch.sqrt(mse) ) def short_name(self): - return "PU21-PSNR" + return "PU21-PSNR-Y" def quality_unit(self): return "dB" - def get_info_string(self): - return None - class pu_psnr_rgb2020: def __init__(self, device=None): super().__init__(device) self.colorspace = 'RGB2020' + def short_name(self): + return "PU21-PSNR-RGB2020" + diff --git a/pycvvdp/vq_metric.py b/pycvvdp/vq_metric.py new file mode 100644 index 0000000..6949697 --- /dev/null +++ b/pycvvdp/vq_metric.py @@ -0,0 +1,52 @@ +import abc + +from pycvvdp.video_source import * + +# A base class for the video quality metrtics + +class vq_metric: + + ''' + test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. + Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. + The two supported datatypes are float16 and uint8. + dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote + B - batch + C - colour channel + F - frame + H - height + W - width + Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video + The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. + frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the + first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: + 'replicate' - replicate the first frame + 'circular' - tile the video in the front, so that the last frame is used for frame 0. + 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... + ''' + def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, frame_padding="replicate"): + + test_vs = video_source_array( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) + + return self.predict_video_source(test_vs, frame_padding=frame_padding) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + @abc.abstractmethod + def predict_video_source(self, vid_source, frame_padding="replicate"): + pass + + @abc.abstractmethod + def short_name(self): + pass + + @abc.abstractmethod + def quality_unit(self): + pass + + def set_display_model(self, display_name="standard_4k", display_photometry=None, display_geometry=None): + pass + + def get_info_string(self): + return None From a93592423bc8c3a7927407124426c4451d8c11ad Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sun, 8 Jan 2023 02:39:03 +0000 Subject: [PATCH 13/67] increased memory usage estimate when training --- pycvvdp/cvvdp_metric.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 00460ab..d6ed8f8 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -223,7 +223,7 @@ def predict_video_source(self, vid_source): #mem_per_frame = pix_cnt*4*3*2 + pix_cnt*4*all_ch*2 + int(pix_cnt*4*all_ch*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*1.33) if self.use_checkpoints: # More memory required when training. TODO: better way to detect when running with require_grad - mem_per_frame = pix_cnt*500 # Estimated memory required per frame + mem_per_frame = pix_cnt*700 # Estimated memory required per frame else: mem_per_frame = pix_cnt*350 # Estimated memory required per frame From e7e49231ffcbada3b35dac879376abdf5b5017bb Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sun, 8 Jan 2023 11:25:28 +0000 Subject: [PATCH 14/67] Fixed --- pycvvdp/pupsnr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index 759ba02..9438e98 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -59,7 +59,7 @@ def short_name(self): def quality_unit(self): return "dB" -class pu_psnr_rgb2020: +class pu_psnr_rgb2020(pu_psnr_y): def __init__(self, device=None): super().__init__(device) self.colorspace = 'RGB2020' From aaa824e31523441e0678d2454576a26515177071 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Sun, 8 Jan 2023 17:07:28 +0000 Subject: [PATCH 15/67] ITP metric updated --- pycvvdp/colorspace.py | 7 +++++ pycvvdp/e_itp.py | 66 ++++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/pycvvdp/colorspace.py b/pycvvdp/colorspace.py index ba0c677..c5414c5 100644 --- a/pycvvdp/colorspace.py +++ b/pycvvdp/colorspace.py @@ -12,6 +12,11 @@ (1.000000000000000, -2.311130179947035, 0), (-1.000000000000000, -1.000000000000000, 50.977571328718781) ) +XYZ_to_LMShpe = ( + ( 0.4002, 0.7075, -0.0807 ), + (-0.2280, 1.1500, 0.0612 ), + ( 0, 0, 0.9184 ) ) + XYZ_to_RGB2020 = ( (1.716502508360628, -0.355584689096764, -0.253375213570850), \ (-0.666625609145029, 1.616446566522207, 0.015775479726511), \ (0.017655211703087, -0.042810696059636, 0.942089263920533) ) @@ -51,6 +56,8 @@ def rgb2colourspace(self, RGB_lin, colorspace): rgb2abc = torch.as_tensor( XYZ_to_LMS2006, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="DKLd65": rgb2abc = torch.as_tensor( LMS2006_to_DKLd65, dtype=RGB_lin.dtype, device=RGB_lin.device) @ torch.as_tensor( XYZ_to_LMS2006, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz + elif colorspace=="LMShpe": + rgb2abc = torch.as_tensor( XYZ_to_LMShpe, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="RGB709": rgb2abc = torch.as_tensor( XYZ_to_RGB709, dtype=RGB_lin.dtype, device=RGB_lin.device) @ rgb2xyz elif colorspace=="RGB2020": diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py index c4034e0..34ce129 100644 --- a/pycvvdp/e_itp.py +++ b/pycvvdp/e_itp.py @@ -2,11 +2,12 @@ from pycvvdp.utils import PU from pycvvdp.video_source import * +from pycvvdp.vq_metric import * """ E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ -class e_itp: +class e_itp(vq_metric): def __init__(self, device=None): # Use GPU if available if device is None: @@ -17,32 +18,7 @@ def __init__(self, device=None): else: self.device = device - - ''' - Videos/images are encoded using perceptually uniform PU21 before computing PSNR. - - test_cont and reference_cont can be either numpy arrays or PyTorch tensors with images or video frames. - Depending on the display model (display_photometry), the pixel values should be either display encoded, or absolute linear. - The two supported datatypes are float16 and uint8. - dim_order - a string with the order of dimensions of test_cont and reference_cont. The individual characters denote - B - batch - C - colour channel - F - frame - H - height - W - width - Examples: "HW" - gray-scale image (column-major pixel order); "HWC" - colour image; "FCHW" - colour video - The default order is "BCFHW". The processing can be a bit faster if data is provided in that order. - frame_padding - the metric requires at least 250ms of video for temporal processing. Because no previous frames exist in the - first 250ms of video, the metric must pad those first frames. This options specifies the type of padding to use: - 'replicate' - replicate the first frame - 'circular' - tile the video in the front, so that the last frame is used for frame 0. - 'pingpong' - the video frames are mirrored so that frames -1, -2, ... correspond to frames 0, 1, ... - ''' - def predict(self, test_cont, reference_cont, dim_order="BCFHW", frames_per_second=0, fixation_point=None, frame_padding="replicate"): - - test_vs = fvvdp_video_source_array_itp( test_cont, reference_cont, frames_per_second, dim_order=dim_order, display_photometry=self.display_photometry, color_space_name=self.color_space ) - - return self.predict_video_source(test_vs, fixation_point=fixation_point, frame_padding=frame_padding) + self.colorspace = 'LMShpe' ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. @@ -62,12 +38,38 @@ def predict_video_source(self, vid_source, fixation_point=None, frame_padding="r eitp = 0.0 for ff in range(N_frames): - T = vid_source.get_test_frame(ff, device=self.device) - R = vid_source.get_reference_frame(ff, device=self.device) - - eitp = eitp + self.eitp_fn(T, R) / N_frames + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # LMS_HPE to LMS_HPE_Lin + T_lms_lin = self.lmshpe_to_lmshpelin(T) + R_lms_lin = self.lmshpe_to_lmshpelin(R) + + # LMS_HPE_Lin to ITP + T_itp = self.lmshpelin_to_itp(T_lms_lin) + R_itp = self.lmshpelin_to_itp(R_lms_lin) + + eitp = eitp + self.eitp_fn(T_itp, R_itp) / N_frames return eitp, None - + + def lmshpe_to_lmshpelin(img) + lms_lin_pos = img**0.43 + lms_lin_neg = -(-img)**0.43 + condition = torch.less(img, 0) + lms_lin = torch.where(condition, lms_lin_neg, lms_lin_pos) + return lms_lin + + def lmshpelin_to_itp(img) + LMShpelin_to_itp = ( + (0.4, 0.4, 0.2), + (4.455, -4.851, 0.396), + (0.8056, 0.3572, -1.1628) ) + mat = torch.as_tensor( LMShpelin_to_itp, dtype=img.dtype, device=img.device) + ITP = torch.empty_like(img) + for cc in range(3): + ITP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return ITP + def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) return 20*torch.log10( torch.sqrt(mse) ) From 1734712cd7a8561fbeeb0c8f56112d5d27f32cf5 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sun, 8 Jan 2023 22:31:04 +0000 Subject: [PATCH 16/67] Updated mem requirements --- pycvvdp/cvvdp_metric.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index d6ed8f8..546cf79 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -223,7 +223,7 @@ def predict_video_source(self, vid_source): #mem_per_frame = pix_cnt*4*3*2 + pix_cnt*4*all_ch*2 + int(pix_cnt*4*all_ch*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*2*1.33) + int(pix_cnt*4*1.33) if self.use_checkpoints: # More memory required when training. TODO: better way to detect when running with require_grad - mem_per_frame = pix_cnt*700 # Estimated memory required per frame + mem_per_frame = pix_cnt*2000 # Estimated memory required per frame else: mem_per_frame = pix_cnt*350 # Estimated memory required per frame @@ -334,6 +334,7 @@ def predict_video_source(self, vid_source): if self.debug and hasattr(self,"mem_allocated_peak"): logging.debug( f"Allocated at start: {self.mem_allocated_start/1e9} GB" ) logging.debug( f"Max allocated: {self.mem_allocated_peak/1e9} GB" ) + logging.debug( f"Resolution: {width}x{height} = {width*height/1e6} Mpixels" ) pix_cnt = width*height # sw_buf mem_const = pix_cnt*4*3*2*(fl-1) From 5a573d0ea86540501dcdeb35e8d9c889f3f6ad4b Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Sun, 8 Jan 2023 23:46:36 +0000 Subject: [PATCH 17/67] Fixed issue with stack that failed when params were not tensors --- pycvvdp/cvvdp_metric.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 546cf79..690e340 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -481,9 +481,9 @@ def mask_func_perc_norm(self, G, G_mask ): # Masking on perceptually normalized quantities (as in Daly's VDP) p = self.mask_p if G_mask.shape[0]==3: # image - q = torch.stack( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust] ).view(3,1,1,1) + q = torch.as_tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust], device=self.device ).view(3,1,1,1) else: # video - q = torch.stack( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust, self.mask_q_trans] ).view(4,1,1,1) + q = torch.as_tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust, self.mask_q_trans], device=self.device ).view(4,1,1,1) R = torch.div(torch.pow(G,p), 1. + torch.pow(G_mask, q)) return R From 323920cc2acc7760ec54d4cd5d97e2e7163d8850 Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Mon, 9 Jan 2023 11:32:42 +0000 Subject: [PATCH 18/67] E_ITP tested with example video --- pycvvdp/__init__.py | 1 + pycvvdp/e_itp.py | 10 +-- pycvvdp/video_source.py | 162 +--------------------------------------- test_on_local_file.py | 68 +++++++++++++++++ 4 files changed, 75 insertions(+), 166 deletions(-) create mode 100644 test_on_local_file.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 1892b84..2c14b55 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,5 +1,6 @@ from pycvvdp.cvvdp_metric import cvvdp from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 +from pycvvdp.e_itp import e_itp from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py index 34ce129..1a86297 100644 --- a/pycvvdp/e_itp.py +++ b/pycvvdp/e_itp.py @@ -23,7 +23,7 @@ def __init__(self, device=None): ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' - def predict_video_source(self, vid_source, fixation_point=None, frame_padding="replicate"): + def predict_video_source(self, vid_source, frame_padding="replicate"): # T_vid and R_vid are the tensors of the size (1,3,N,H,W) # where: @@ -52,14 +52,14 @@ def predict_video_source(self, vid_source, fixation_point=None, frame_padding="r eitp = eitp + self.eitp_fn(T_itp, R_itp) / N_frames return eitp, None - def lmshpe_to_lmshpelin(img) + def lmshpe_to_lmshpelin(self, img): lms_lin_pos = img**0.43 - lms_lin_neg = -(-img)**0.43 + lms_lin_neg = -1*(-img)**0.43 condition = torch.less(img, 0) lms_lin = torch.where(condition, lms_lin_neg, lms_lin_pos) return lms_lin - def lmshpelin_to_itp(img) + def lmshpelin_to_itp(self, img): LMShpelin_to_itp = ( (0.4, 0.4, 0.2), (4.455, -4.851, 0.396), @@ -69,7 +69,7 @@ def lmshpelin_to_itp(img) for cc in range(3): ITP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) return ITP - + def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) return 20*torch.log10( torch.sqrt(mse) ) diff --git a/pycvvdp/video_source.py b/pycvvdp/video_source.py index 604cc33..4cd1076 100644 --- a/pycvvdp/video_source.py +++ b/pycvvdp/video_source.py @@ -286,164 +286,4 @@ def _get_frame(self, from_array, idx, device): # Convert to grayscale L = L[:,0:1,:,:,:]*self.color_to_luminance[0] + L[:,1:2,:,:,:]*self.color_to_luminance[1] + L[:,2:3,:,:,:]*self.color_to_luminance[2] - return L - - - -""" -This video_source uses a photometric display model to convert input content (e.g. sRGB) to ITP -""" -class fvvdp_video_source_dm_itp( fvvdp_video_source ): - - def __init__( self, display_photometry='standard_hdr', color_space_name='sRGB' ): - - colorspaces_file = os.path.join(os.path.dirname(__file__), "fvvdp_data/color_spaces.json") - #colorspaces_file = utils.config_files.find( "color_spaces.json" ) - colorspaces = utils.json2dict(colorspaces_file) - - if not color_space_name in colorspaces: - raise RuntimeError( "Unknown color space: \"" + color_space_name + "\"" ) - - self.color_to_L= colorspaces[color_space_name]['RGB2L'] - self.color_to_M= colorspaces[color_space_name]['RGB2M'] - self.color_to_S= colorspaces[color_space_name]['RGB2S'] - self.LMS_to_I= colorspaces[color_space_name]['LMS2I'] - self.LMS_to_T= colorspaces[color_space_name]['LMS2T'] - self.LMS_to_P= colorspaces[color_space_name]['LMS2P'] - - if isinstance( display_photometry, str ): - self.dm_photometry = fvvdp_display_photometry.load(display_photometry) - elif isinstance( display_photometry, fvvdp_display_photometry ): - self.dm_photometry = display_photometry - else: - raise RuntimeError( "display_model must be a string or fvvdp_display_photometry subclass" ) - - -""" -This video source supplies frames from either Pytorch tensors and Numpy arrays. It also applies a photometric display model. - -A batch of videos should be stored as a tensor or numpy array. Ideally, the tensor should have the dimensions BCFHW (batch, colour, frame, height, width).If tensor is stored in another formay, you can pass the order of dimsions as "dim_order" parameter. If any dimension is missing, it will -be added as a singleton dimension. - -This class is for display-encoded (gamma-encoded) content that will be processed by a display model to produce vidoes in ITP color coordinates -""" -class fvvdp_video_source_array_itp( fvvdp_video_source_dm_itp ): - - # test_video, reference video - tensor with test and reference video frames. See the class description above for the explanation of dimensions of those tensors. - # fps - frames per second. Must be 0 for images - # dim_order - a string with the order of the dimensions. 'BCFHW' is the default. - # display_model - object that implements fvvdp_display_photometry - # class - # color_space_name - name of the colour space (see - # fvvdp_data/color_spaces.json) - def __init__( self, test_video, reference_video, fps, dim_order='BCFHW', display_photometry='sdr_4k_30', color_space_name='sRGB' ): - - super().__init__(display_photometry=display_photometry, color_space_name=color_space_name) - - if test_video.shape != reference_video.shape: - raise RuntimeError( 'Test and reference image/video tensors must be exactly the same shape' ) - - if len(dim_order) != len(test_video.shape): - raise RuntimeError( 'Input tensor much have exactly as many dimensions as there are characters in the "dims" parameter' ) - - # Convert numpy arrays to tensors. Note that we do not upload to device or change dtype at this point (to save GPU memory) - if isinstance( test_video, np.ndarray ): - if test_video.dtype == np.uint16: - # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. - # This will be efficiently transferred and unpacked on the GPU. - # logging.info('Test has datatype uint16, packing into int16') - test_video = test_video.astype(np.int16) - test_video = torch.tensor(test_video) - if isinstance( reference_video, np.ndarray ): - if reference_video.dtype == np.uint16: - # Torch does not natively support uint16. A workaround is to pack uint16 values into int16. - # This will be efficiently transferred and unpacked on the GPU. - # logging.info('Reference has datatype uint16, packing into int16') - reference_video = reference_video.astype(np.int16) - reference_video = torch.tensor(reference_video) - - # Change the order of dimension to match BFCHW - batch, frame, colour, height, width - test_video = reshuffle_dims( test_video, in_dims=dim_order, out_dims="BCFHW" ) - reference_video = reshuffle_dims( reference_video, in_dims=dim_order, out_dims="BCFHW" ) - - B, C, F, H, W = test_video.shape - - if fps==0 and F>1: - raise RuntimeError( 'When passing video sequences, you must set ''frames_per_second'' parameter' ) - - if C!=3 and C!=1: - raise RuntimeError( 'The content must have either 1 or 3 colour channels.' ) - - self.fps = fps - self.is_video = (fps>0) - self.is_color = (C==3) - self.test_video = test_video - self.reference_video = reference_video - - - def get_frames_per_second(self): - return self.fps - - # Return a [height width frames] vector with the resolution and - # the number of frames in the video clip. [height width 1] is - # returned for an image. - def get_video_size(self): - - sh = self.test_video.shape - return (sh[3], sh[4], sh[2]) - - # % Get a test video frame as a single-precision luminance map - # % scaled in absolute inits of cd/m^2. 'frame' is the frame index, - # % starting from 0. If use_gpu==true, the function should return a - # % gpuArray. - - def get_test_frame( self, frame, device=torch.device('cpu') ): - return self._get_frame(self.test_video, frame, device ) - - def get_reference_frame( self, frame, device=torch.device('cpu') ): - return self._get_frame(self.reference_video, frame, device ) - - def _get_frame( self, from_array, frame, device ): - # Determine the maximum value of the data type storing the - # image/video - - if from_array.dtype is torch.float32: - frame = from_array[:,:,frame:(frame+1),:,:].to(device) - elif from_array.dtype is torch.int16: - # Use int16 to losslessly pack uint16 values - # Unpack from int16 by bit masking as described in this thread: - # https://stackoverflow.com/a/20766900 - # logging.info('Found int16 datatype, unpack into uint16') - max_value = 2**16 - 1 - # Cast to int32 to store values >= 2**15 - frame_int32 = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.int32) - frame_uint16 = frame_int32 & max_value - # Finally convert to float in the range [0,1] - frame = frame_uint16.to(torch.float32) / max_value - elif from_array.dtype is torch.uint8: - frame = from_array[:,:,frame:(frame+1),:,:].to(device).to(torch.float32)/255 - else: - raise RuntimeError( "Only uint8, uint16 and float32 is currently supported" ) - - if self.is_color: - # Convert RGB to LMS - RGB = frame; - LMS[:,0:1,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_L[0] + RGB[:,1:2,:,:,:]*self.color_to_L[1] + RGB[:,2:3,:,:,:]*self.color_to_L[2] - LMS[:,1:2,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_M[0] + RGB[:,1:2,:,:,:]*self.color_to_M[1] + RGB[:,2:3,:,:,:]*self.color_to_M[2] - LMS[:,2:3,:,:,:]= RGB[:,0:1,:,:,:]*self.color_to_S[0] + RGB[:,1:2,:,:,:]*self.color_to_S[1] + RGB[:,2:3,:,:,:]*self.color_to_S[2] - else: - LMS = frame*self.color_to_L[0] + frame*self.color_to_L[1] + frame*self.color_to_L[2] - - # Apply PQ curve - LMS_p = self.dm_photometry.forward( LMS ) - - if self.is_color: - # Convert LMS' to ITP - ITP[:,0:1,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_I[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_I[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_I[2] - ITP[:,1:2,:,:,:]= 0.5*LMS_p[:,0:1,:,:,:]*self.LMS_to_T[0] + 0.5*LMS_p[:,1:2,:,:,:]*self.LMS_to_T[1] + 0.5*LMS_p[:,2:3,:,:,:]*self.LMS_to_T[2] - ITP[:,2:3,:,:,:]= LMS_p[:,0:1,:,:,:]*self.LMS_to_P[0] + LMS_p[:,1:2,:,:,:]*self.LMS_to_P[1] + LMS_p[:,2:3,:,:,:]*self.LMS_to_P[2] - else: - ITP = frame*self.LMS_to_I[0] + frame*self.LMS_to_I[1] + frame*self.LMS_to_I[2] - - - return ITP + return L \ No newline at end of file diff --git a/test_on_local_file.py b/test_on_local_file.py new file mode 100644 index 0000000..4e00b31 --- /dev/null +++ b/test_on_local_file.py @@ -0,0 +1,68 @@ +# This example shows how to use python interface to run FovVideoVDP directly on video files +import os +import glob +import time + +import pycvvdp +import logging + +display_name = 'standard_4k' + +# media_folder = 'S:\\Datasets\\XR-DAVID\\cache' +# ref_file = os.path.join(media_folder, 'Bonfire_reference_1920x1080_10b_444_709_30fps.yuv') +# TST_FILEs = glob.glob(os.path.join(media_folder, 'Bonfire_Blur_*.yuv')) + +media_folder = '../color_metric_videos/' +# ref_file = os.path.join(media_folder, 'Business_reference_Level001.mp4') +# TST_FILEs = glob.glob(os.path.join(media_folder, 'Business_WGNU_Level003.mp4')) + +ref_file = os.path.join(media_folder, 'Bonfire_reference_Level001.mp4') +TST_FILEs = glob.glob(os.path.join(media_folder, 'Bonfire_Blur_Level003.mp4')) + +# media_folder = 'S:\\Datasets\\LIVEHDR\\train' +# ref_file = os.path.join(media_folder, '4k_ref_CenterPanorama.mp4') +# TST_FILEs = glob.glob(os.path.join(media_folder, '4k_3M_CenterPanorama.mp4')) + + +logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG) + +""" +print('CVVDP test') +cvvdp = pycvvdp.cvvdp(display_name=display_name) +cvvdp.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=120 ) + + start = time.time() + Q_JOD_static, stats_static = cvvdp.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) +""" + +print('PU PSNR test') +psnr = pycvvdp.pu_psnr_y() +psnr.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) + + start = time.time() + Q_JOD_static, stats_static = psnr.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + +print('E_ITP test') +eitp = pycvvdp.e_itp() +eitp.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) + + start = time.time() + Q_JOD_static, stats_static = eitp.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) From dee58b8f869e99f7e05e8103390dcaf4dd8a0308 Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Mon, 9 Jan 2023 13:27:46 +0000 Subject: [PATCH 19/67] SCIELab implementation added --- pycvvdp/__init__.py | 1 + pycvvdp/e_sitp.py | 107 ++++++++++++++++++++++ pycvvdp/utils.py | 203 +++++++++++++++++++++++++++++++++++++++++- test_on_local_file.py | 20 ++++- 4 files changed, 328 insertions(+), 3 deletions(-) create mode 100644 pycvvdp/e_sitp.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 2c14b55..48daa7a 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,6 +1,7 @@ from pycvvdp.cvvdp_metric import cvvdp from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 from pycvvdp.e_itp import e_itp +from pycvvdp.e_sitp import e_sitp from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py new file mode 100644 index 0000000..88e6341 --- /dev/null +++ b/pycvvdp/e_sitp.py @@ -0,0 +1,107 @@ +import torch +import numpy as np + +from pycvvdp.utils import SCIELAB_filter +from pycvvdp.video_source import * +from pycvvdp.vq_metric import * +from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry + +""" +E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class e_sitp(vq_metric): + def __init__(self, device=None,display_name=None,display_geometry=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.sitp = SCIELAB_filter() + self.colorspace = 'LMShpe' + + if display_geometry is None: + self.display_geometry = vvdp_display_geometry.load(display_name) + else: + self.display_geometry = display_geometry + + self.pix_per_deg = self.display_geometry.get_ppd() + #print('ppd: %d degrees' %self.pix_per_deg) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + eitp = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # LMS_HPE to LMS_HPE_Lin + T_lms_lin = self.lmshpe_to_lmshpelin(T) + R_lms_lin = self.lmshpe_to_lmshpelin(R) + + # LMS_HPE_Lin to ITP + T_itp = self.lmshpelin_to_itp(T_lms_lin) + R_itp = self.lmshpelin_to_itp(R_lms_lin) + + # ITP to Spatial ITP + T_sitp = self.itp_to_sitp(T_itp, self.pix_per_deg) + R_sitp = self.itp_to_sitp(R_itp, self.pix_per_deg) + + eitp = eitp + self.eitp_fn(T_sitp, R_sitp) / N_frames + return eitp, None + + def lmshpe_to_lmshpelin(self, img): + lms_lin_pos = img**0.43 + lms_lin_neg = -1*(-img)**0.43 + condition = torch.less(img, 0) + lms_lin = torch.where(condition, lms_lin_neg, lms_lin_pos) + return lms_lin + + def lmshpelin_to_itp(self, img): + LMShpelin_to_itp = ( + (0.4, 0.4, 0.2), + (4.455, -4.851, 0.396), + (0.8056, 0.3572, -1.1628) ) + mat = torch.as_tensor( LMShpelin_to_itp, dtype=img.dtype, device=img.device) + ITP = torch.empty_like(img) + for cc in range(3): + ITP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return ITP + + def itp_to_sitp(self, img, ppd): + S_ITP = torch.empty_like(img) + [k1, k2, k3] = self.sitp.separableFilters(ppd) + S_ITP[...,0:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_ITP) + S_ITP[...,1:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_ITP) + S_ITP[...,2:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_ITP) + return S_ITP + + def eitp_fn(self, img1, img2): + mse = torch.mean(torch.sum( (img1 - img2)**2 )) + return 20*torch.log10( torch.sqrt(mse) ) + + def short_name(self): + return "E-ITP" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index e85db9e..d98883a 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -3,7 +3,8 @@ import numpy as np import json import torch.nn.functional as Func -#from PIL import Image +from PIL import Image +from scipy.signal import convolve2d from pycvvdp.third_party.loadmat import loadmat @@ -200,3 +201,203 @@ def decode(self, V): V_p = ((V/self.p[6] + self.p[5]).clip(min=0))**(1/self.p[4]) Y = ((V_p - self.p[0]).clip(min=0)/(self.p[1] - self.p[2]*V_p))**(1/self.p[3]) return Y + +class SCIELAB_filter(): + # apply S-CIELAB filtering + + def gauss(self, halfWidth, width): + # Returns a 1D Gaussian vector. The gaussian sums to one. + # The halfWidth must be greater than one. + # The halfwidth specifies the width of the gaussian between the points + # where it obtains half of its maximum value. The width indicates the gaussians width in pixels. + + alpha = 2 * np.sqrt(np.log(2)) / (halfWidth - 1) + x = np.linspace(1, width, width) + x = x - np.round(width / 2) + + t = x ** 2 + g = np.exp(-alpha ** 2 * t) + g = g / np.sum(g) + return g + + def resize(self, orig, newSize, align=[0, 0], padding=0): + # result = resize(orig, newSize, align, padding) + # + # if newSize is larger than orig size, pad with padding + # if newSize is smaller than orig size, truncate to fit. + # align specifies alignment. 0=centered + # -1=left (up) aligned + # 1=right (down) aligned + # For example, align=[0 -1] centers on rows (y) and left align on columns (x). + # align=1 aligns left on columns and top on rows. + + if len(newSize) == 1: + newSize = [newSize, newSize] + if len(align) == 1: + align = [align, align] + + if len(orig.shape) == 1: # 1D array + orig = orig.reshape(-1, 1) # make it to (mx1) array + + [m1, n1] = orig.shape + m2 = newSize[0] + n2 = newSize[1] + m = np.minimum(m1, m2) + n = np.minimum(n1, n2) + + result = np.ones((m2, n2)) * padding + + start1 = np.array([np.floor((m1 - m) / 2 * (1 + align[0])), np.floor((n1 - n) / 2 * (1 + align[1]))]) + 1 + start2 = np.array([np.floor((m2 - m) / 2 * (1 + align[0])), np.floor((n2 - n) / 2 * (1 + align[1]))]) + 1 + + t1 = np.int_(np.linspace(start2[0], start2[0] + m - 1, m) - 1) + t2 = np.int_(np.linspace(start2[1], start2[1] + n - 1, n) - 1) + t3 = np.int_(np.linspace(start1[0], start1[0] + m - 1, m) - 1) + t4 = np.int_(np.linspace(start1[1], start1[1] + n - 1, n) - 1) + + result[t1[:,np.newaxis],t2] = orig[t3[:,np.newaxis],t4] + # trickly to broadcast 2D matrix + # https://towardsdatascience.com/numpy-indexing-explained-c376abb2440d + + # result[np.int_(np.linspace(start2[0], start2[0] + m - 1, m) - 1), np.int_( + # np.linspace(start2[1], start2[1] + n - 1, n) - 1)] = \ + # orig[np.int_(np.linspace(start1[0], start1[0] + m - 1, m) - 1), np.int_( + # np.linspace(start1[1], start1[1] + n - 1, n) - 1)] + + return result + + def conv2(self, x, y, mode='full'): + # While Matlab's conv2 results in artifacts on the bottom and right of an image, + # scipy.signal.convolve2d has the same artifacts on the top and left of an image. + return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 2) + + def separableFilters(self, sampPerDeg): + # not full implementation but correct for S-CIELAB usage. + # Please refer to original Matlab version + + # if sampPerDeg is smaller than minSAMPPERDEG, need to upsample image data before filtering. + # This can be done equivalently by convolving filters with the upsampling matrix, then downsample it. + minSAMPPERDEG = 224 + dimension=3 + + if sampPerDeg < minSAMPPERDEG: + uprate = int(np.ceil(minSAMPPERDEG / sampPerDeg)) + sampPerDeg = sampPerDeg * uprate + else: + uprate = 1 + + # these are the same filter parameters, except that the weights are normalized to sum to 1 + # This eliminates the need to normalize after the filters are generated + x1 = np.array([0.05, 1.00327, 0.225, 0.114416, 7.0, -0.117686]) + x2 = np.array([0.0685, 0.616725, 0.826, 0.383275]) + x3 = np.array([0.0920, 0.567885, 0.6451, 0.432115]) + + # Convert the unit of halfwidths from visual angle to pixels. + x1[[0, 2, 4]] = x1[[0, 2, 4]] * sampPerDeg + x2[[0, 2]] = x2[[0, 2]] * sampPerDeg + x3[[0, 2]] = x3[[0, 2]] * sampPerDeg + + # Limit filter width to 1-degree visual angle, and odd number of sampling points + # (so that the gaussians generated from Rick's gauss routine are symmetric). + width = int(np.ceil(sampPerDeg / 2) * 2 - 1) + + # Generate the filters + # These Gaussians are used in the row and col separable convolutions. + k1 = np.array([self.gauss(x1[0], width) * np.sqrt(np.abs(x1[1])) * np.sign(x1[1]), + self.gauss(x1[2], width) * np.sqrt(np.abs(x1[3])) * np.sign(x1[3]), + self.gauss(x1[4], width) * np.sqrt(np.abs(x1[5])) * np.sign(x1[5])]) + + # These are the two 1-d kernels used by red/green + k2 = np.array([self.gauss(x2[0], width) * np.sqrt(np.abs(x2[1])) * np.sign(x2[1]), + self.gauss(x2[2], width) * np.sqrt(np.abs(x2[3])) * np.sign(x2[3])]) + + # These are the two 1-d kernels used by blue/yellow + k3 = np.array([self.gauss(x3[0], width) * np.sqrt(np.abs(x3[1])) * np.sign(x3[1]), + self.gauss(x3[2], width) * np.sqrt(np.abs(x3[3])) * np.sign(x3[3])]) + + # upsample and downsample + if uprate > 1: + upcol = np.concatenate((np.linspace(1, uprate, uprate), np.linspace(uprate - 1, 1, uprate - 1))) / uprate + s = len(upcol) + upcol = upcol.reshape(1, -1) # 1xm matrix + upcol = self.resize(upcol, [1, s + width - 1]) + # upcol = resize(upcol, [1 s + width - 1]); + + up1 = self.conv2(k1, upcol, 'same') + up2 = self.conv2(k2, upcol, 'same') + up3 = self.conv2(k3, upcol, 'same') + + mid = np.ceil(up1.shape[1] / 2) + downs = np.int_(np.concatenate( + (np.flip(np.arange(mid, 0, -uprate)), np.arange(mid + uprate, up1.shape[1] + 1, uprate)) + ) - 1) + + k1 = up1[:, downs] + k2 = up2[:, downs] + k3 = up3[:, downs] + + return [k1, k2, k3] + + def separableConv(self, im, xkernels, ykernels): + # Two-dimensional convolution with X-Y separable kernels. + # + # im is the input matric. im is reflected on all sides before convolution. + # xkernels and ykernels are both row vectors. + # If xkernels and ykernels are matrices, each row is taken as + # one convolution kernel and convolved with the image, and the + # sum of the results is returned. + + w1 = self.pad4conv(im, xkernels.shape[1], 2) + + result = np.zeros_like(im) + for j in range(xkernels.shape[0]): + # first convovle in the horizontal direction + p = self.conv2(w1, xkernels[j,:].reshape(1,-1)) + p = self.resize(p, im.shape) + + # then the vertical direction + w2 = self.pad4conv(p, ykernels.shape[1], 1) + p = self.conv2(w2, ykernels[j,:].reshape(-1,1)) + p = self.resize(p, im.shape) + + # result is sum of several separable convolutions + result = result + p + return result + + def pad4conv(self, im, kernelsize, dim): + # Pad the input image ready for convolution. The edges of the image are reflected on all sides. + # kernelsize -- size of the convolution kernel in the format + # [numRows numCol]. If one number is given, assume numRows=numCols. + # dim -- when set at 1, pad extra rows, but leave number of columns unchanged; + # when set at 2, pad extra columns, leave number of rows unchanged; + + newim = np.copy(im) + [m, n] = np.int_(im.shape) + if not isinstance(kernelsize, list): + kernelsize = [kernelsize, kernelsize] + + # If kernel is larger than image, than just pad all side with half + # the image size, otherwise pad with half the kernel size + if kernelsize[0] >= m: + h = int(np.floor(m / 2)) + else: + h = int(np.floor(kernelsize[0] / 2)) + + if kernelsize[1] >= n: + w = int(np.floor(n / 2)) + else: + w = int(np.floor(kernelsize[1] / 2)) + + # first reflect the upper and lower edges + if h != 0 and dim != 2: + im1 = np.flipud(newim[0:h, :]) + im2 = np.flipud(newim[m - h:m, :]) + newim = np.concatenate((im1, newim, im2), axis=0) + + # then reflect the left and right sides + if w != 0 and dim != 1: + im1 = np.fliplr(newim[:, 0:w]) + im2 = np.fliplr(newim[:, n - w:n]) + newim = np.concatenate((im1, newim, im2), axis=1) + + return newim \ No newline at end of file diff --git a/test_on_local_file.py b/test_on_local_file.py index 4e00b31..5bedd91 100644 --- a/test_on_local_file.py +++ b/test_on_local_file.py @@ -26,20 +26,21 @@ logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG) +""" """ print('CVVDP test') cvvdp = pycvvdp.cvvdp(display_name=display_name) cvvdp.debug = False for tst_fname in TST_FILEs: - vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=120 ) + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) start = time.time() Q_JOD_static, stats_static = cvvdp.predict_video_source( vs ) end = time.time() print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) -""" + print('PU PSNR test') psnr = pycvvdp.pu_psnr_y() @@ -54,6 +55,7 @@ print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + print('E_ITP test') eitp = pycvvdp.e_itp() eitp.debug = False @@ -66,3 +68,17 @@ end = time.time() print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + + +print('E_Spatial ITP test') +esitp = pycvvdp.e_sitp(display_name=display_name) +esitp.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) + + start = time.time() + Q_JOD_static, stats_static = esitp.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) From 87bc4805cf3479f99a947e73045309d4029d5add Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Mon, 9 Jan 2023 20:51:05 +0000 Subject: [PATCH 20/67] Delta E2000 code added --- pycvvdp/__init__.py | 1 + pycvvdp/de2000.py | 87 +++++++++++++++++++++++++++++++++++++++++++++ pycvvdp/e_sitp.py | 10 +++--- pycvvdp/utils.py | 67 +++++++++++++++++++++++++++++++++- 4 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 pycvvdp/de2000.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 48daa7a..fcff681 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -2,6 +2,7 @@ from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp +from pycvvdp.de2000 import de2000 from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py new file mode 100644 index 0000000..29c3a2b --- /dev/null +++ b/pycvvdp/de2000.py @@ -0,0 +1,87 @@ +import torch +import numpy as np + +from pycvvdp.utils import CIE_DeltaE +from pycvvdp.video_source import * +from pycvvdp.vq_metric import * + +""" +DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class de2000(vq_metric): + def __init__(self, device=None,display_name=None,display_geometry=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.de = CIE_DeltaE() + # D65 White point + self.w = (0.9505, 1.0000, 1.0888) + self.colorspace = 'XYZ' + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + e00 = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # XYZ to Lab + T_lab = self.xyz_to_lab(T, self.w) + R_lab = self.xyz_to_lab(R, self.w) + + # Meancdm of Per-pixel DE2000 + e00 = e00 + self.e00_fn(T_lab, R_lab) / N_frames + return e00, None + + def xyz_to_lab(self, img, W) + Lab = torch.empty_like(img) + Lab[...,0:,:,:] = 116*self.lab_fn(img[...,1,:,:,:]/W[1])-16 + Lab[...,1:,:,:] = 500*(self.lab_fn(img[...,0,:,:,:]/W[0]) - self.lab_fn(img[...,1,:,:,:]/W[1])) + Lab[...,2:,:,:] = 200*(self.lab_fn(img[...,1,:,:,:]/W[1]) - self.lab_fn(img[...,2,:,:,:]/W[2])) + return Lab + + def lab_fn(self, x) + y = torch.empty_like(x) + sigma = (6/29) + y_1 = x**(1/3) + y_2 = (x/(3*(sigma**2)))+(4/29) + condition = torch.less(x, sigma**3) + y = torch.where(condition, y_2, y_1) + return y + + def e00_fn(self, img1, img2): + #sz = torch.numel(torch.squeeze(img[...,0,:,:,:])) + img1_row = torch.cat(torch.reshape(img1[...,0,:,:,:], (-1,)), torch.reshape(img1[...,1,:,:,:], (-1,)), torch.reshape(img1[...,2,:,:,:], (-1,)), 0) + img2_row = torch.cat(torch.reshape(img2[...,0,:,:,:], (-1,)), torch.reshape(img2[...,1,:,:,:], (-1,)), torch.reshape(img2[...,2,:,:,:], (-1,)), 0) + e00 = de.deltaE00(img1_row, img2_row) + e00_mean = torch.mean(e00) + return 20*torch.log10( e00_mean ) + + def short_name(self): + return "dE 2000" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index 88e6341..9b7e867 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -7,7 +7,7 @@ from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry """ -E-ITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +E-SITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ class e_sitp(vq_metric): def __init__(self, device=None,display_name=None,display_geometry=None): @@ -47,7 +47,7 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): _, _, N_frames = vid_source.get_video_size() - eitp = 0.0 + esitp = 0.0 for ff in range(N_frames): T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) @@ -64,8 +64,8 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): T_sitp = self.itp_to_sitp(T_itp, self.pix_per_deg) R_sitp = self.itp_to_sitp(R_itp, self.pix_per_deg) - eitp = eitp + self.eitp_fn(T_sitp, R_sitp) / N_frames - return eitp, None + esitp = esitp + self.eitp_fn(T_sitp, R_sitp) / N_frames + return esitp, None def lmshpe_to_lmshpelin(self, img): lms_lin_pos = img**0.43 @@ -98,7 +98,7 @@ def eitp_fn(self, img1, img2): return 20*torch.log10( torch.sqrt(mse) ) def short_name(self): - return "E-ITP" + return "E-SITP" def quality_unit(self): return "dB" diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index d98883a..322af01 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -400,4 +400,69 @@ def pad4conv(self, im, kernelsize, dim): im2 = np.fliplr(newim[:, n - w:n]) newim = np.concatenate((im1, newim, im2), axis=1) - return newim \ No newline at end of file + return newim + +class CIE_DeltaE() + + def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): + + kL = paramFctr[0]; kC = paramFctr[1]; kH = paramFctr[2] + + #a1 = np.power(Lab1[1,:],2) + #b1 = np.power(Lab1[2,:],2) + #c1 = a1 + b1 + + # CIELAB Chroma + C1 = np.sqrt( np.power(Lab1[1,:],2) + np.power(Lab1[2,:],2) ) + C2 = np.sqrt( np.power(Lab2[1,:],2) + np.power(Lab2[2,:],2) ) + + # Lab Prime + mC = np.add(C1,C2)/2 + G = 0.5*( 1 - np.sqrt( np.divide( np.power(mC,7) , np.power(mC,7)+25**7 ) )) + LabP1 = np.vstack( (Lab1[0,:], Lab1[1,:]*(1+G), Lab1[2,:]) ) + LabP2 = np.vstack( (Lab2[0,:], Lab2[1,:]*(1+G), Lab2[2,:]) ) + + # Chroma + CP1 = np.sqrt( np.power(LabP1[1,:],2) + np.power(LabP1[2,:],2) ) + CP2 = np.sqrt( np.power(LabP2[1,:],2) + np.power(LabP2[2,:],2) ) + + # Hue Angle + hP1 = np.arctan2( LabP1[2,:],LabP1[1,:] ) * 180/np.pi # varies from -180 to +180 degree + hP2 = np.arctan2( LabP2[2,:],LabP2[1,:] ) * 180/np.pi # varies from -180 to +180 degree + hP1[hP1<0] = hP1[hP1<0] + 360 # varies from 0 to +360 degree + hP2[hP2<0] = hP2[hP2<0] + 360 # varies from 0 to +360 degree + + + # Delta Values + DLP = LabP1[0,:] - LabP2[0,:] + DCP = CP1 - CP2 + DhP = hP1 - hP2; DhP[DhP>180] = DhP[DhP>180]-360; DhP[DhP<-180] = DhP[DhP<-180]+360 + DHP = np.multiply( 2*np.sqrt(np.multiply(CP1,CP2)), np.sin( DhP/2.*np.pi/180. ) ) + + # Arithmetic mean of LCh' values + mLP = ( LabP1[0,:]+LabP2[0,:] )/2 + mCP = (CP1+CP2)/2 + mhP = np.zeros_like(mCP) + for k in range(0,mhP.size): + if abs(hP1[k]-hP2[k])<=180: + mhP[k] = (hP1[k]+hP2[k])/2 + elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]<360: + mhP[k] = (hP1[k]+hP2[k]+360)/2 + elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]>=360: + mhP[k] = (hP1[k]+hP2[k]-360)/2 + + # Weighting Functions + SL = 1 + np.divide( 0.015*np.power(mLP-50,2), np.sqrt( 20+np.power(mLP-50,2) ) ) + SC = 1+0.045*mCP + T = 1-0.17*np.cos((mhP-30)*np.pi/180.)+0.24*np.cos((2*mhP)*np.pi/180.)+0.32*np.cos((3*mhP+6)*np.pi/180.)-0.2*np.cos((4*mhP-63)*np.pi/180.) + SH = 1+0.015*np.multiply(mCP,T) + + # Rotation function + RC = 2 * np.sqrt(np.divide( np.power(mCP,7), np.power(mCP,7)+25**7 )) + # DTheta = 30.*exp(-((mhP-275)./25).^2) + DTheta = 30 * np.exp(-np.power( (mhP-275)/25,2 )) + RT = np.multiply( -np.sin(2*DTheta*np.pi/180.), RC ) + + dE00 = np.sqrt( np.power( np.divide(DLP,kL*SL) ,2) + np.power( np.divide(DCP,kC*SC) ,2) + np.power( np.divide(DHP,kH*SH) ,2) + + np.multiply(RT, np.multiply( np.divide(DCP,kC*SC), np.divide(DHP,kH*SH) ) )) + return dE00 \ No newline at end of file From b66304af643459a35a1a8ec1e8437b9ca6745f9d Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Mon, 9 Jan 2023 21:49:11 +0000 Subject: [PATCH 21/67] DE2000 without spatial filtering added --- pycvvdp/de2000.py | 15 ++++++++------- pycvvdp/utils.py | 2 +- test_on_local_file.py | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py index 29c3a2b..c1f34e5 100644 --- a/pycvvdp/de2000.py +++ b/pycvvdp/de2000.py @@ -53,14 +53,14 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): e00 = e00 + self.e00_fn(T_lab, R_lab) / N_frames return e00, None - def xyz_to_lab(self, img, W) + def xyz_to_lab(self, img, W): Lab = torch.empty_like(img) Lab[...,0:,:,:] = 116*self.lab_fn(img[...,1,:,:,:]/W[1])-16 Lab[...,1:,:,:] = 500*(self.lab_fn(img[...,0,:,:,:]/W[0]) - self.lab_fn(img[...,1,:,:,:]/W[1])) Lab[...,2:,:,:] = 200*(self.lab_fn(img[...,1,:,:,:]/W[1]) - self.lab_fn(img[...,2,:,:,:]/W[2])) return Lab - def lab_fn(self, x) + def lab_fn(self, x): y = torch.empty_like(x) sigma = (6/29) y_1 = x**(1/3) @@ -70,11 +70,12 @@ def lab_fn(self, x) return y def e00_fn(self, img1, img2): - #sz = torch.numel(torch.squeeze(img[...,0,:,:,:])) - img1_row = torch.cat(torch.reshape(img1[...,0,:,:,:], (-1,)), torch.reshape(img1[...,1,:,:,:], (-1,)), torch.reshape(img1[...,2,:,:,:], (-1,)), 0) - img2_row = torch.cat(torch.reshape(img2[...,0,:,:,:], (-1,)), torch.reshape(img2[...,1,:,:,:], (-1,)), torch.reshape(img2[...,2,:,:,:], (-1,)), 0) - e00 = de.deltaE00(img1_row, img2_row) - e00_mean = torch.mean(e00) + sz = torch.numel(img1[...,0,:,:,:]) + img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) + img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) + e00 = self.de.deltaE00(img1_row, img2_row) + e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) + e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) return 20*torch.log10( e00_mean ) def short_name(self): diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 322af01..3810463 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -402,7 +402,7 @@ def pad4conv(self, im, kernelsize, dim): return newim -class CIE_DeltaE() +class CIE_DeltaE(): def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): diff --git a/test_on_local_file.py b/test_on_local_file.py index 5bedd91..060c9ce 100644 --- a/test_on_local_file.py +++ b/test_on_local_file.py @@ -82,3 +82,17 @@ end = time.time() print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + + +print('DE2000 test') +de00 = pycvvdp.de2000(display_name=display_name) +de00.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) + + start = time.time() + Q_JOD_static, stats_static = de00.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) \ No newline at end of file From 14535702bc080bed81ed79cb4cadc3ef85bf4856 Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Mon, 9 Jan 2023 22:19:50 +0000 Subject: [PATCH 22/67] Spatial DE2000 implemented and tested --- pycvvdp/__init__.py | 1 + pycvvdp/de2000_spatial.py | 129 ++++++++++++++++++++++++++++++++++++++ pycvvdp/utils.py | 19 ++++++ test_on_local_file.py | 20 +++++- 4 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 pycvvdp/de2000_spatial.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index fcff681..c2eef05 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -3,6 +3,7 @@ from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp from pycvvdp.de2000 import de2000 +from pycvvdp.de2000_spatial import s_de2000 from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py new file mode 100644 index 0000000..5ee0c3e --- /dev/null +++ b/pycvvdp/de2000_spatial.py @@ -0,0 +1,129 @@ +import torch +import numpy as np + +from pycvvdp.utils import CIE_DeltaE +from pycvvdp.utils import SCIELAB_filter +from pycvvdp.video_source import * +from pycvvdp.vq_metric import * +from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry + +""" +Spatial DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +""" +class s_de2000(vq_metric): + def __init__(self, device=None,display_name=None,display_geometry=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.slab = SCIELAB_filter() + self.de = CIE_DeltaE() + # D65 White point + self.w = (0.9505, 1.0000, 1.0888) + self.colorspace = 'XYZ' + + if display_geometry is None: + self.display_geometry = vvdp_display_geometry.load(display_name) + else: + self.display_geometry = display_geometry + + self.pix_per_deg = self.display_geometry.get_ppd() + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + e_s00 = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # XYZ to Opp + T_opp = self.slab.xyz_to_opp(T) + R_opp = self.slab.xyz_to_opp(R) + + # Spatially filtered opponent colour images + T_s_opp = self.opp_to_sopp(T_opp, self.pix_per_deg) + R_s_opp = self.opp_to_sopp(R_opp, self.pix_per_deg) + + # S-OPP to S-XYZ + T_s_xyz = self.slab.opp_to_xyz(T_s_opp) + R_s_xyz = self.slab.opp_to_xyz(R_s_opp) + + # S-XYZ to S-Lab + T_s_lab = self.xyz_to_lab(T_s_xyz, self.w) + R_s_lab = self.xyz_to_lab(R_s_xyz, self.w) + + # Meancdm of Per-pixel DE2000 + e_s00 = e_s00 + self.e00_fn(T_s_lab, R_s_lab) / N_frames + return e00, None + + def xyz_to_opp(self, img): + XYZ_to_opp = ( + (0.2787,0.7218,-0.1066), + (-0.4488,0.2898,0.0772), + (0.0860,-0.5900,0.5011) ) + mat = torch.as_tensor( XYZ_to_opp, dtype=img.dtype, device=img.device) + OPP = torch.empty_like(img) + for cc in range(3): + OPP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return OPP + + def opp_to_sopp(self, img, ppd): + S_OPP = torch.empty_like(img) + [k1, k2, k3] = self.slab.separableFilters(ppd) + S_OPP[...,0:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_OPP) + S_OPP[...,1:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_OPP) + S_OPP[...,2:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_OPP) + return S_OPP + + def xyz_to_lab(self, img, W): + Lab = torch.empty_like(img) + Lab[...,0:,:,:] = 116*self.lab_fn(img[...,1,:,:,:]/W[1])-16 + Lab[...,1:,:,:] = 500*(self.lab_fn(img[...,0,:,:,:]/W[0]) - self.lab_fn(img[...,1,:,:,:]/W[1])) + Lab[...,2:,:,:] = 200*(self.lab_fn(img[...,1,:,:,:]/W[1]) - self.lab_fn(img[...,2,:,:,:]/W[2])) + return Lab + + def lab_fn(self, x): + y = torch.empty_like(x) + sigma = (6/29) + y_1 = x**(1/3) + y_2 = (x/(3*(sigma**2)))+(4/29) + condition = torch.less(x, sigma**3) + y = torch.where(condition, y_2, y_1) + return y + + def e00_fn(self, img1, img2): + sz = torch.numel(img1[...,0,:,:,:]) + img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) + img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) + e00 = self.de.deltaE00(img1_row, img2_row) + e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) + e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) + return 20*torch.log10( e00_mean ) + + def short_name(self): + return "dE 2000" + + def quality_unit(self): + return "dB" + + def get_info_string(self): + return None \ No newline at end of file diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 3810463..9a306df 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -205,6 +205,25 @@ def decode(self, V): class SCIELAB_filter(): # apply S-CIELAB filtering + XYZ_to_opp = ( + (0.2787,0.7218,-0.1066), + (-0.4488,0.2898,0.0772), + (0.0860,-0.5900,0.5011) ) + + def xyz_to_opp(self, img): + mat = torch.as_tensor( self.XYZ_to_opp, dtype=img.dtype, device=img.device) + OPP = torch.empty_like(img) + for cc in range(3): + OPP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return OPP + + def opp_to_xyz(self, img): + mat = torch.as_tensor( np.linalg.inv(self.XYZ_to_opp), dtype=img.dtype, device=img.device) + XYZ = torch.empty_like(img) + for cc in range(3): + XYZ[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return XYZ + def gauss(self, halfWidth, width): # Returns a 1D Gaussian vector. The gaussian sums to one. # The halfWidth must be greater than one. diff --git a/test_on_local_file.py b/test_on_local_file.py index 060c9ce..232adef 100644 --- a/test_on_local_file.py +++ b/test_on_local_file.py @@ -27,7 +27,7 @@ logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG) """ -""" + print('CVVDP test') cvvdp = pycvvdp.cvvdp(display_name=display_name) cvvdp.debug = False @@ -95,4 +95,20 @@ Q_JOD_static, stats_static = de00.predict_video_source( vs ) end = time.time() - print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) \ No newline at end of file + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + + """ + +print('Spatial DE2000 test') +s_de00 = pycvvdp.s_de2000(display_name=display_name) +s_de00.debug = False +for tst_fname in TST_FILEs: + + vs = pycvvdp.video_source_file( tst_fname, ref_file, display_photometry=display_name, frames=10 ) + + start = time.time() + Q_JOD_static, stats_static = s_de00.predict_video_source( vs ) + end = time.time() + + print( 'Quality for {}: {:.3f} JOD (took {:.4f} secs to compute)'.format(tst_fname, Q_JOD_static, end-start) ) + \ No newline at end of file From e86d43c28df581aa0e760e9dfd320e932cfd422e Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Mon, 9 Jan 2023 22:23:10 +0000 Subject: [PATCH 23/67] Fixed typo and removed redundant function --- pycvvdp/de2000_spatial.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index 5ee0c3e..e7ae619 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -73,18 +73,7 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # Meancdm of Per-pixel DE2000 e_s00 = e_s00 + self.e00_fn(T_s_lab, R_s_lab) / N_frames - return e00, None - - def xyz_to_opp(self, img): - XYZ_to_opp = ( - (0.2787,0.7218,-0.1066), - (-0.4488,0.2898,0.0772), - (0.0860,-0.5900,0.5011) ) - mat = torch.as_tensor( XYZ_to_opp, dtype=img.dtype, device=img.device) - OPP = torch.empty_like(img) - for cc in range(3): - OPP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) - return OPP + return e_s00, None def opp_to_sopp(self, img, ppd): S_OPP = torch.empty_like(img) From fc3f2dc68112433ce7e9c95197051ee22e04eccb Mon Sep 17 00:00:00 2001 From: Param Hanji Date: Tue, 10 Jan 2023 00:11:31 +0000 Subject: [PATCH 24/67] Added HDR-FLIP and PU21-LPIPS --- pycvvdp/__init__.py | 2 + pycvvdp/flip.py | 667 ++++++++++++++++++++++++++++++++++++++++++++ pycvvdp/pu_lpips.py | 51 ++++ 3 files changed, 720 insertions(+) create mode 100644 pycvvdp/flip.py create mode 100644 pycvvdp/pu_lpips.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index c2eef05..bb34a99 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -4,6 +4,8 @@ from pycvvdp.e_sitp import e_sitp from pycvvdp.de2000 import de2000 from pycvvdp.de2000_spatial import s_de2000 +from pycvvdp.flip import flip +from pycvvdp.pu_lpips import pu_lpips from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/flip.py b/pycvvdp/flip.py new file mode 100644 index 0000000..da1cab8 --- /dev/null +++ b/pycvvdp/flip.py @@ -0,0 +1,667 @@ +import numpy as np +import torch +import torch.nn as nn + +from pycvvdp.vq_metric import vq_metric + +""" +HDR-FLIP +""" +class flip(vq_metric): + def __init__(self, device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.ppd = None + self.flip = HDRFLIPLoss() + self.colorspace = 'RGB2020' + + def predict_video_source(self, vid_source, frame_padding="replicate"): + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + quality = 0.0 + for ff in range(N_frames): + # TODO: Batched processing + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # Input required in shape (B,C,H,W) + quality += self.flip(T.squeeze(2), R.squeeze(2), self.ppd) / N_frames + return quality, None + + def set_display_model(self, display_photometry, display_geometry): + self.ppd = display_geometry.get_ppd() + + +""" +FLIP metric +Reference: https://github.com/NVlabs/flip/tree/main/python +""" +class HDRFLIPLoss(nn.Module): + """ Class for computing HDR-FLIP """ + + def __init__(self): + """ Init """ + super().__init__() + self.qc = 0.7 + self.qf = 0.5 + self.pc = 0.4 + self.pt = 0.95 + self.tmax = 0.85 + self.tmin = 0.85 + self.eps = 1e-15 + + def forward(self, test, reference, pixels_per_degree, tone_mapper="aces", start_exposure=None, stop_exposure=None): + """ + Computes the HDR-FLIP error map between two HDR images, + assuming the images are observed at a certain number of + pixels per degree of visual angle + :param test: test tensor (with NxCxHxW layout with nonnegative values) + :param reference: reference tensor (with NxCxHxW layout with nonnegative values) + :param pixels_per_degree: float describing the number of pixels per degree of visual angle of the observer, + default corresponds to viewing the images on a 0.7 meters wide 4K monitor at 0.7 meters from the display + :param tone_mapper: (optional) string describing what tone mapper HDR-FLIP should assume + :param start_exposure: (optional tensor (with Nx1x1x1 layout) with start exposures corresponding to each HDR reference/test pair + :param stop_exposure: (optional) tensor (with Nx1x1x1 layout) with stop exposures corresponding to each HDR reference/test pair + :return: float containing the mean FLIP error (in the range [0,1]) between the HDR reference and test images in the batch + """ + if pixels_per_degree is None: + pixels_per_degree = (0.7 * 3840 / 0.7) * np.pi / 180 + + # HDR-FLIP expects nonnegative and non-NaN values in the input + reference = torch.clamp(reference, 0, 65536.0) + test = torch.clamp(test, 0, 65536.0) + + # Compute start and stop exposures, if they are not given + if start_exposure is None or stop_exposure is None: + c_start, c_stop = compute_start_stop_exposures(reference, tone_mapper, self.tmax, self.tmin) + if start_exposure is None: + start_exposure = c_start + if stop_exposure is None: + stop_exposure = c_stop + + # Compute number of exposures + num_exposures = torch.max(torch.tensor([2.0], requires_grad=False).cuda(), torch.ceil(stop_exposure - start_exposure)) + most_exposures = int(torch.amax(num_exposures, dim=0).item()) + + # Compute exposure step size + step_size = (stop_exposure - start_exposure) / torch.max(num_exposures - 1, torch.tensor([1.0], requires_grad=False).cuda()) + + # Set the depth of the error tensor to the number of exposures given by the largest exposure range any reference image yielded. + # This allows us to do one loop for each image in our batch, while not affecting the HDR-FLIP error, as we fill up the error tensor with 0s. + # Note that the step size still depends on num_exposures and is therefore independent of most_exposures + dim = reference.size() + all_errors = torch.zeros(size=(dim[0], most_exposures, dim[2], dim[3])).cuda() + + # Loop over exposures and compute LDR-FLIP for each pair of LDR reference and test + for i in range(0, most_exposures): + exposure = start_exposure + i * step_size + + reference_tone_mapped = tone_map(reference, tone_mapper, exposure) + test_tone_mapped = tone_map(test, tone_mapper, exposure) + + reference_opponent = color_space_transform(reference_tone_mapped, 'linrgb2ycxcz') + test_opponent = color_space_transform(test_tone_mapped, 'linrgb2ycxcz') + + all_errors[:, i, :, :] = compute_ldrflip( + test_opponent, reference_opponent, pixels_per_degree, + self.qc, self.qf, self.pc, self.pt, self.eps + ).squeeze(1) + + # Take per-pixel maximum over all LDR-FLIP errors to get HDR-FLIP + hdrflip_error = torch.amax(all_errors, dim=1, keepdim=True) + return torch.mean(hdrflip_error) + + +def tone_map(img, tone_mapper, exposure): + """ + Applies exposure compensation and tone mapping. + Refer to the Visualizing Errors in Rendered High Dynamic Range Images + paper for details about the formulas. + :param img: float tensor (with NxCxHxW layout) containing nonnegative values + :param tone_mapper: string describing the tone mapper to apply + :param exposure: float tensor (with Nx1x1x1 layout) describing the exposure compensation factor + """ + # Exposure compensation + x = (2 ** exposure) * img + + # Set tone mapping coefficients depending on tone_mapper + if tone_mapper == "reinhard": + lum_coeff_r = 0.2126 + lum_coeff_g = 0.7152 + lum_coeff_b = 0.0722 + + Y = x[:, 0:1, :, :] * lum_coeff_r + x[:, 1:2, :, :] * lum_coeff_g + x[:, 2:3, :, :] * lum_coeff_b + return torch.clamp(torch.div(x, 1 + Y), 0.0, 1.0) + + if tone_mapper == "hable": + # Source: https://64.github.io/tonemapping/ + A = 0.15 + B = 0.50 + C = 0.10 + D = 0.20 + E = 0.02 + F = 0.30 + k0 = A * F - A * E + k1 = C * B * F - B * E + k2 = 0 + k3 = A * F + k4 = B * F + k5 = D * F * F + + W = 11.2 + nom = k0 * torch.pow(W, torch.tensor([2.0]).cuda()) + k1 * W + k2 + denom = k3 * torch.pow(W, torch.tensor([2.0]).cuda()) + k4 * W + k5 + white_scale = torch.div(denom, nom) # = 1 / (nom / denom) + + # Include white scale and exposure bias in rational polynomial coefficients + k0 = 4 * k0 * white_scale + k1 = 2 * k1 * white_scale + k2 = k2 * white_scale + k3 = 4 * k3 + k4 = 2 * k4 + # k5 = k5 # k5 is not changed + else: + # Source: ACES approximation: https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + # Include pre-exposure cancelation in constants + k0 = 0.6 * 0.6 * 2.51 + k1 = 0.6 * 0.03 + k2 = 0 + k3 = 0.6 * 0.6 * 2.43 + k4 = 0.6 * 0.59 + k5 = 0.14 + + x2 = torch.pow(x, 2) + nom = k0 * x2 + k1 * x + k2 + denom = k3 * x2 + k4 * x + k5 + denom = torch.where(torch.isinf(denom), torch.Tensor([1.0]).cuda(), denom) # if denom is inf, then so is nom => nan. Pixel is very bright. It becomes inf here, but 1 after clamp below + y = torch.div(nom, denom) + return torch.clamp(y, 0.0, 1.0) + + +def compute_start_stop_exposures(reference, tone_mapper, tmax, tmin): + """ + Computes start and stop exposure for HDR-FLIP based on given tone mapper and reference image. + Refer to the Visualizing Errors in Rendered High Dynamic Range Images + paper for details about the formulas + :param reference: float tensor (with NxCxHxW layout) containing reference images (nonnegative values) + :param tone_mapper: string describing which tone mapper should be assumed + :param tmax: float describing the t value used to find the start exposure + :param tmin: float describing the t value used to find the stop exposure + :return: two float tensors (with Nx1x1x1 layout) containing start and stop exposures, respectively, to use for HDR-FLIP + """ + if tone_mapper == "reinhard": + k0 = 0 + k1 = 1 + k2 = 0 + k3 = 0 + k4 = 1 + k5 = 1 + + x_max = tmax * k5 / (k1 - tmax * k4) + x_min = tmin * k5 / (k1 - tmin * k4) + elif tone_mapper == "hable": + # Source: https://64.github.io/tonemapping/ + A = 0.15 + B = 0.50 + C = 0.10 + D = 0.20 + E = 0.02 + F = 0.30 + k0 = A * F - A * E + k1 = C * B * F - B * E + k2 = 0 + k3 = A * F + k4 = B * F + k5 = D * F * F + + W = 11.2 + nom = k0 * torch.pow(W, torch.tensor([2.0]).cuda()) + k1 * W + k2 + denom = k3 * torch.pow(W, torch.tensor([2.0]).cuda()) + k4 * W + k5 + white_scale = torch.div(denom, nom) # = 1 / (nom / denom) + + # Include white scale and exposure bias in rational polynomial coefficients + k0 = 4 * k0 * white_scale + k1 = 2 * k1 * white_scale + k2 = k2 * white_scale + k3 = 4 * k3 + k4 = 2 * k4 + # k5 = k5 # k5 is not changed + + c0 = (k1 - k4 * tmax) / (k0 - k3 * tmax) + c1 = (k2 - k5 * tmax) / (k0 - k3 * tmax) + x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + + c0 = (k1 - k4 * tmin) / (k0 - k3 * tmin) + c1 = (k2 - k5 * tmin) / (k0 - k3 * tmin) + x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + else: + # Source: ACES approximation: https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + # Include pre-exposure cancelation in constants + k0 = 0.6 * 0.6 * 2.51 + k1 = 0.6 * 0.03 + k2 = 0 + k3 = 0.6 * 0.6 * 2.43 + k4 = 0.6 * 0.59 + k5 = 0.14 + + c0 = (k1 - k4 * tmax) / (k0 - k3 * tmax) + c1 = (k2 - k5 * tmax) / (k0 - k3 * tmax) + x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + + c0 = (k1 - k4 * tmin) / (k0 - k3 * tmin) + c1 = (k2 - k5 * tmin) / (k0 - k3 * tmin) + x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + + # Convert reference to luminance + lum_coeff_r = 0.2126 + lum_coeff_g = 0.7152 + lum_coeff_b = 0.0722 + Y_reference = reference[:, 0:1, :, :] * lum_coeff_r + reference[:, 1:2, :, :] * lum_coeff_g + reference[:, 2:3, :, :] * lum_coeff_b + + # Compute start exposure + Y_hi = torch.amax(Y_reference, dim=(2, 3), keepdim=True) + start_exposure = torch.log2(x_max / Y_hi) + + # Compute stop exposure + dim = Y_reference.size() + Y_ref = Y_reference.view(dim[0], dim[1], dim[2]*dim[3]) + Y_lo = torch.median(Y_ref, dim=2).values.unsqueeze(2).unsqueeze(3) + stop_exposure = torch.log2(x_min / Y_lo) + + return start_exposure, stop_exposure + + +def compute_ldrflip(test, reference, pixels_per_degree, qc, qf, pc, pt, eps): + """ + Computes the LDR-FLIP error map between two LDR images, + assuming the images are observed at a certain number of + pixels per degree of visual angle + :param reference: reference tensor (with NxCxHxW layout with values in the YCxCz color space) + :param test: test tensor (with NxCxHxW layout with values in the YCxCz color space) + :param pixels_per_degree: float describing the number of pixels per degree of visual angle of the observer, + default corresponds to viewing the images on a 0.7 meters wide 4K monitor at 0.7 meters from the display + :param qc: float describing the q_c exponent in the LDR-FLIP color pipeline (see FLIP paper for details) + :param qf: float describing the q_f exponent in the LDR-FLIP feature pipeline (see FLIP paper for details) + :param pc: float describing the p_c exponent in the LDR-FLIP color pipeline (see FLIP paper for details) + :param pt: float describing the p_t exponent in the LDR-FLIP color pipeline (see FLIP paper for details) + :param eps: float containing a small value used to improve training stability + :return: tensor containing the per-pixel FLIP errors (with Nx1xHxW layout and values in the range [0, 1]) between LDR reference and test images + """ + # --- Color pipeline --- + # Spatial filtering + s_a, radius_a = generate_spatial_filter(pixels_per_degree, 'A') + s_rg, radius_rg = generate_spatial_filter(pixels_per_degree, 'RG') + s_by, radius_by = generate_spatial_filter(pixels_per_degree, 'BY') + radius = max(radius_a, radius_rg, radius_by) + filtered_reference = spatial_filter(reference, s_a, s_rg, s_by, radius) + filtered_test = spatial_filter(test, s_a, s_rg, s_by, radius) + + # Perceptually Uniform Color Space + preprocessed_reference = hunt_adjustment(color_space_transform(filtered_reference, 'linrgb2lab')) + preprocessed_test = hunt_adjustment(color_space_transform(filtered_test, 'linrgb2lab')) + + # Color metric + deltaE_hyab = hyab(preprocessed_reference, preprocessed_test, eps) + power_deltaE_hyab = torch.pow(deltaE_hyab, qc) + hunt_adjusted_green = hunt_adjustment(color_space_transform(torch.tensor([[[0.0]], [[1.0]], [[0.0]]]).unsqueeze(0), 'linrgb2lab')) + hunt_adjusted_blue = hunt_adjustment(color_space_transform(torch.tensor([[[0.0]], [[0.0]], [[1.0]]]).unsqueeze(0), 'linrgb2lab')) + cmax = torch.pow(hyab(hunt_adjusted_green, hunt_adjusted_blue, eps), qc).item() + deltaE_c = redistribute_errors(power_deltaE_hyab, cmax, pc, pt) + + # --- Feature pipeline --- + # Extract and normalize Yy component + ref_y = (reference[:, 0:1, :, :] + 16) / 116 + test_y = (test[:, 0:1, :, :] + 16) / 116 + + # Edge and point detection + edges_reference = feature_detection(ref_y, pixels_per_degree, 'edge') + points_reference = feature_detection(ref_y, pixels_per_degree, 'point') + edges_test = feature_detection(test_y, pixels_per_degree, 'edge') + points_test = feature_detection(test_y, pixels_per_degree, 'point') + + # Feature metric + deltaE_f = torch.max( + torch.abs(torch.norm(edges_reference, dim=1, keepdim=True) - torch.norm(edges_test, dim=1, keepdim=True)), + torch.abs(torch.norm(points_test, dim=1, keepdim=True) - torch.norm(points_reference, dim=1, keepdim=True)) + ) + deltaE_f = torch.clamp(deltaE_f, min=eps) # clamp to stabilize training + deltaE_f = torch.pow(((1 / np.sqrt(2)) * deltaE_f), qf) + + # --- Final error --- + return torch.pow(deltaE_c, 1 - deltaE_f) + + +def generate_spatial_filter(pixels_per_degree, channel): + """ + Generates spatial contrast sensitivity filters with width depending on + the number of pixels per degree of visual angle of the observer + :param pixels_per_degree: float indicating number of pixels per degree of visual angle + :param channel: string describing what filter should be generated + :yield: Filter kernel corresponding to the spatial contrast sensitivity function of the given channel and kernel's radius + """ + a1_A = 1 + b1_A = 0.0047 + a2_A = 0 + b2_A = 1e-5 # avoid division by 0 + a1_rg = 1 + b1_rg = 0.0053 + a2_rg = 0 + b2_rg = 1e-5 # avoid division by 0 + a1_by = 34.1 + b1_by = 0.04 + a2_by = 13.5 + b2_by = 0.025 + if channel == "A": # Achromatic CSF + a1 = a1_A + b1 = b1_A + a2 = a2_A + b2 = b2_A + elif channel == "RG": # Red-Green CSF + a1 = a1_rg + b1 = b1_rg + a2 = a2_rg + b2 = b2_rg + elif channel == "BY": # Blue-Yellow CSF + a1 = a1_by + b1 = b1_by + a2 = a2_by + b2 = b2_by + + # Determine evaluation domain + max_scale_parameter = max([b1_A, b2_A, b1_rg, b2_rg, b1_by, b2_by]) + r = np.ceil(3 * np.sqrt(max_scale_parameter / (2 * np.pi**2)) * pixels_per_degree) + r = int(r) + deltaX = 1.0 / pixels_per_degree + x, y = np.meshgrid(range(-r, r + 1), range(-r, r + 1)) + z = (x * deltaX)**2 + (y * deltaX)**2 + + # Generate weights + g = a1 * np.sqrt(np.pi / b1) * np.exp(-np.pi**2 * z / b1) + a2 * np.sqrt(np.pi / b2) * np.exp(-np.pi**2 * z / b2) + g = g / np.sum(g) + g = torch.Tensor(g).unsqueeze(0).unsqueeze(0).cuda() + + return g, r + + +def spatial_filter(img, s_a, s_rg, s_by, radius): + """ + Filters an image with channel specific spatial contrast sensitivity functions + and clips result to the unit cube in linear RGB + :param img: image tensor to filter (with NxCxHxW layout in the YCxCz color space) + :param s_a: spatial filter matrix for the achromatic channel + :param s_rg: spatial filter matrix for the red-green channel + :param s_by: spatial filter matrix for the blue-yellow channel + :return: input image (with NxCxHxW layout) transformed to linear RGB after filtering with spatial contrast sensitivity functions + """ + dim = img.size() + # Prepare image for convolution + img_pad = torch.zeros((dim[0], dim[1], dim[2] + 2 * radius, dim[3] + 2 * radius), device='cuda') + img_pad[:, 0:1, :, :] = nn.functional.pad(img[:, 0:1, :, :], (radius, radius, radius, radius), mode='replicate') + img_pad[:, 1:2, :, :] = nn.functional.pad(img[:, 1:2, :, :], (radius, radius, radius, radius), mode='replicate') + img_pad[:, 2:3, :, :] = nn.functional.pad(img[:, 2:3, :, :], (radius, radius, radius, radius), mode='replicate') + + # Apply Gaussian filters + img_tilde_opponent = torch.zeros((dim[0], dim[1], dim[2], dim[3]), device='cuda') + img_tilde_opponent[:, 0:1, :, :] = nn.functional.conv2d(img_pad[:, 0:1, :, :], s_a.cuda(), padding=0) + img_tilde_opponent[:, 1:2, :, :] = nn.functional.conv2d(img_pad[:, 1:2, :, :], s_rg.cuda(), padding=0) + img_tilde_opponent[:, 2:3, :, :] = nn.functional.conv2d(img_pad[:, 2:3, :, :], s_by.cuda(), padding=0) + + # Transform to linear RGB for clamp + img_tilde_linear_rgb = color_space_transform(img_tilde_opponent, 'ycxcz2linrgb') + + # Clamp to RGB box + return torch.clamp(img_tilde_linear_rgb, 0.0, 1.0) + + +def hunt_adjustment(img): + """ + Applies Hunt-adjustment to an image + :param img: image tensor to adjust (with NxCxHxW layout in the L*a*b* color space) + :return: Hunt-adjusted image tensor (with NxCxHxW layout in the Hunt-adjusted L*A*B* color space) + """ + # Extract luminance component + L = img[:, 0:1, :, :] + + # Apply Hunt adjustment + img_h = torch.zeros(img.size(), device='cuda') + img_h[:, 0:1, :, :] = L + img_h[:, 1:2, :, :] = torch.mul((0.01 * L), img[:, 1:2, :, :]) + img_h[:, 2:3, :, :] = torch.mul((0.01 * L), img[:, 2:3, :, :]) + + return img_h + + +def hyab(reference, test, eps): + """ + Computes the HyAB distance between reference and test images + :param reference: reference image tensor (with NxCxHxW layout in the standard or Hunt-adjusted L*A*B* color space) + :param test: test image tensor (with NxCxHxW layout in the standard or Hunt-adjusted L*a*b* color space) + :param eps: float containing a small value used to improve training stability + :return: image tensor (with Nx1xHxW layout) containing the per-pixel HyAB distances between reference and test images + """ + delta = reference - test + root = torch.sqrt(torch.clamp(torch.pow(delta[:, 0:1, :, :], 2), min=eps)) + delta_norm = torch.norm(delta[:, 1:3, :, :], dim=1, keepdim=True) + return root + delta_norm # alternative abs to stabilize training + + +def redistribute_errors(power_deltaE_hyab, cmax, pc, pt): + """ + Redistributes exponentiated HyAB errors to the [0,1] range + :param power_deltaE_hyab: float tensor (with Nx1xHxW layout) containing the exponentiated HyAb distance + :param cmax: float containing the exponentiated, maximum HyAB difference between two colors in Hunt-adjusted L*A*B* space + :param pc: float containing the cmax multiplier p_c (see FLIP paper) + :param pt: float containing the target value, p_t, for p_c * cmax (see FLIP paper) + :return: image tensor (with Nx1xHxW layout) containing redistributed per-pixel HyAB distances (in range [0,1]) + """ + # Re-map error to 0-1 range. Values between 0 and + # pccmax are mapped to the range [0, pt], + # while the rest are mapped to the range (pt, 1] + deltaE_c = torch.zeros(power_deltaE_hyab.size(), device='cuda') + pccmax = pc * cmax + deltaE_c = torch.where(power_deltaE_hyab < pccmax, (pt / pccmax) * power_deltaE_hyab, pt + ((power_deltaE_hyab - pccmax) / (cmax - pccmax)) * (1.0 - pt)) + + return deltaE_c + + +def feature_detection(img_y, pixels_per_degree, feature_type): + """ + Detects edges and points (features) in the achromatic image + :param imgy: achromatic image tensor (with Nx1xHxW layout, containing normalized Y-values from YCxCz) + :param pixels_per_degree: float describing the number of pixels per degree of visual angle of the observer + :param feature_type: string indicating the type of feature to detect + :return: image tensor (with Nx2xHxW layout, with values in range [0,1]) containing large values where features were detected + """ + # Set peak to trough value (2x standard deviations) of human edge + # detection filter + w = 0.082 + + # Compute filter radius + sd = 0.5 * w * pixels_per_degree + radius = int(np.ceil(3 * sd)) + + # Compute 2D Gaussian + [x, y] = np.meshgrid(range(-radius, radius+1), range(-radius, radius+1)) + g = np.exp(-(x ** 2 + y ** 2) / (2 * sd * sd)) + + if feature_type == 'edge': # Edge detector + # Compute partial derivative in x-direction + Gx = np.multiply(-x, g) + else: # Point detector + # Compute second partial derivative in x-direction + Gx = np.multiply(x ** 2 / (sd * sd) - 1, g) + + # Normalize positive weights to sum to 1 and negative weights to sum to -1 + negative_weights_sum = -np.sum(Gx[Gx < 0]) + positive_weights_sum = np.sum(Gx[Gx > 0]) + Gx = torch.Tensor(Gx) + Gx = torch.where(Gx < 0, Gx / negative_weights_sum, Gx / positive_weights_sum) + Gx = Gx.unsqueeze(0).unsqueeze(0).cuda() + + # Detect features + featuresX = nn.functional.conv2d(nn.functional.pad(img_y, (radius, radius, radius, radius), mode='replicate'), Gx, padding=0) + featuresY = nn.functional.conv2d(nn.functional.pad(img_y, (radius, radius, radius, radius), mode='replicate'), torch.transpose(Gx, 2, 3), padding=0) + return torch.cat((featuresX, featuresY), dim=1) + + +def color_space_transform(input_color, fromSpace2toSpace): + """ + Transforms inputs between different color spaces + :param input_color: tensor of colors to transform (with NxCxHxW layout) + :param fromSpace2toSpace: string describing transform + :return: transformed tensor (with NxCxHxW layout) + """ + dim = input_color.size() + + # Assume D65 standard illuminant + reference_illuminant = torch.tensor([[[0.950428545]], [[1.000000000]], [[1.088900371]]]).cuda() + inv_reference_illuminant = torch.tensor([[[1.052156925]], [[1.000000000]], [[0.918357670]]]).cuda() + + if fromSpace2toSpace == "srgb2linrgb": + limit = 0.04045 + transformed_color = torch.where( + input_color > limit, + torch.pow((torch.clamp(input_color, min=limit) + 0.055) / 1.055, 2.4), + input_color / 12.92 + ) # clamp to stabilize training + + elif fromSpace2toSpace == "linrgb2srgb": + limit = 0.0031308 + transformed_color = torch.where( + input_color > limit, + 1.055 * torch.pow(torch.clamp(input_color, min=limit), (1.0 / 2.4)) - 0.055, + 12.92 * input_color + ) + + elif fromSpace2toSpace in ["linrgb2xyz", "xyz2linrgb"]: + # Source: https://www.image-engineering.de/library/technotes/958-how-to-convert-between-srgb-and-ciexyz + # Assumes D65 standard illuminant + if fromSpace2toSpace == "linrgb2xyz": + a11 = 10135552 / 24577794 + a12 = 8788810 / 24577794 + a13 = 4435075 / 24577794 + a21 = 2613072 / 12288897 + a22 = 8788810 / 12288897 + a23 = 887015 / 12288897 + a31 = 1425312 / 73733382 + a32 = 8788810 / 73733382 + a33 = 70074185 / 73733382 + else: + # Constants found by taking the inverse of the matrix + # defined by the constants for linrgb2xyz + a11 = 3.241003275 + a12 = -1.537398934 + a13 = -0.498615861 + a21 = -0.969224334 + a22 = 1.875930071 + a23 = 0.041554224 + a31 = 0.055639423 + a32 = -0.204011202 + a33 = 1.057148933 + A = torch.Tensor([[a11, a12, a13], + [a21, a22, a23], + [a31, a32, a33]]) + + input_color = input_color.view(dim[0], dim[1], dim[2]*dim[3]).cuda() # NC(HW) + + transformed_color = torch.matmul(A.cuda(), input_color) + transformed_color = transformed_color.view(dim[0], dim[1], dim[2], dim[3]) + + elif fromSpace2toSpace == "xyz2ycxcz": + input_color = torch.mul(input_color, inv_reference_illuminant) + y = 116 * input_color[:, 1:2, :, :] - 16 + cx = 500 * (input_color[:, 0:1, :, :] - input_color[:, 1:2, :, :]) + cz = 200 * (input_color[:, 1:2, :, :] - input_color[:, 2:3, :, :]) + transformed_color = torch.cat((y, cx, cz), 1) + + elif fromSpace2toSpace == "ycxcz2xyz": + y = (input_color[:, 0:1, :, :] + 16) / 116 + cx = input_color[:, 1:2, :, :] / 500 + cz = input_color[:, 2:3, :, :] / 200 + + x = y + cx + z = y - cz + transformed_color = torch.cat((x, y, z), 1) + + transformed_color = torch.mul(transformed_color, reference_illuminant) + + elif fromSpace2toSpace == "xyz2lab": + input_color = torch.mul(input_color, inv_reference_illuminant) + delta = 6 / 29 + delta_square = delta * delta + delta_cube = delta * delta_square + factor = 1 / (3 * delta_square) + + clamped_term = torch.pow(torch.clamp(input_color, min=delta_cube), 1.0 / 3.0).to(dtype=input_color.dtype) + div = (factor * input_color + (4 / 29)).to(dtype=input_color.dtype) + input_color = torch.where(input_color > delta_cube, clamped_term, div) # clamp to stabilize training + + L = 116 * input_color[:, 1:2, :, :] - 16 + a = 500 * (input_color[:, 0:1, :, :] - input_color[:, 1:2, :, :]) + b = 200 * (input_color[:, 1:2, :, :] - input_color[:, 2:3, :, :]) + + transformed_color = torch.cat((L, a, b), 1) + + elif fromSpace2toSpace == "lab2xyz": + y = (input_color[:, 0:1, :, :] + 16) / 116 + a = input_color[:, 1:2, :, :] / 500 + b = input_color[:, 2:3, :, :] / 200 + + x = y + a + z = y - b + + xyz = torch.cat((x, y, z), 1) + delta = 6 / 29 + delta_square = delta * delta + factor = 3 * delta_square + xyz = torch.where(xyz > delta, torch.pow(xyz, 3), factor * (xyz - 4 / 29)) + + transformed_color = torch.mul(xyz, reference_illuminant) + + elif fromSpace2toSpace == "srgb2xyz": + transformed_color = color_space_transform(input_color, 'srgb2linrgb') + transformed_color = color_space_transform(transformed_color, 'linrgb2xyz') + elif fromSpace2toSpace == "srgb2ycxcz": + transformed_color = color_space_transform(input_color, 'srgb2linrgb') + transformed_color = color_space_transform(transformed_color, 'linrgb2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2ycxcz') + elif fromSpace2toSpace == "linrgb2ycxcz": + transformed_color = color_space_transform(input_color, 'linrgb2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2ycxcz') + elif fromSpace2toSpace == "srgb2lab": + transformed_color = color_space_transform(input_color, 'srgb2linrgb') + transformed_color = color_space_transform(transformed_color, 'linrgb2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2lab') + elif fromSpace2toSpace == "linrgb2lab": + transformed_color = color_space_transform(input_color, 'linrgb2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2lab') + elif fromSpace2toSpace == "ycxcz2linrgb": + transformed_color = color_space_transform(input_color, 'ycxcz2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2linrgb') + elif fromSpace2toSpace == "lab2srgb": + transformed_color = color_space_transform(input_color, 'lab2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2linrgb') + transformed_color = color_space_transform(transformed_color, 'linrgb2srgb') + elif fromSpace2toSpace == "ycxcz2lab": + transformed_color = color_space_transform(input_color, 'ycxcz2xyz') + transformed_color = color_space_transform(transformed_color, 'xyz2lab') + else: + raise NotImplemented('Error: The color transform %s is not defined!' % fromSpace2toSpace) + + return transformed_color diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py new file mode 100644 index 0000000..9ac9be1 --- /dev/null +++ b/pycvvdp/pu_lpips.py @@ -0,0 +1,51 @@ +import torch +from lpips import LPIPS + +from pycvvdp.utils import PU +from pycvvdp.vq_metric import vq_metric + +""" +PU21 + LPIPS +First install LPIPS with "pip install lpips" +""" +class pu_lpips(vq_metric): + def __init__(self, device=None, net='vgg'): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.pu = PU() + self.lpips = LPIPS(net=net) + self.lpips.to(self.device) + self.colorspace = 'RGB2020' + + def predict_video_source(self, vid_source, frame_padding="replicate"): + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + quality = 0.0 + for ff in range(N_frames): + # TODO: Batched processing + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # Apply PU and reshape to (1,C,H,W) + # Input pixels shoulb lie in [0,1] + T_enc = self.pu.encode(T).squeeze(2) / 255. + R_enc = self.pu.encode(R).squeeze(2) / 255. + + quality += self.lpips(T_enc, R_enc) / N_frames + return quality, None From 0d62457a8554e9d19666574a263baa2f285679f6 Mon Sep 17 00:00:00 2001 From: Param Hanji Date: Tue, 10 Jan 2023 00:26:29 +0000 Subject: [PATCH 25/67] Added names to flip and lpips --- pycvvdp/flip.py | 3 +++ pycvvdp/pu_lpips.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/pycvvdp/flip.py b/pycvvdp/flip.py index da1cab8..028fa12 100644 --- a/pycvvdp/flip.py +++ b/pycvvdp/flip.py @@ -47,6 +47,9 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): def set_display_model(self, display_photometry, display_geometry): self.ppd = display_geometry.get_ppd() + def short_name(self): + return 'HDR-FLIP' + """ FLIP metric diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py index 9ac9be1..d975d30 100644 --- a/pycvvdp/pu_lpips.py +++ b/pycvvdp/pu_lpips.py @@ -49,3 +49,6 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): quality += self.lpips(T_enc, R_enc) / N_frames return quality, None + + def short_name(self): + return 'PU21-LPIPS' From b129ca171e70d444b5fc9921ec372d730d395e9a Mon Sep 17 00:00:00 2001 From: Param Hanji Date: Tue, 10 Jan 2023 00:51:00 +0000 Subject: [PATCH 26/67] Fixed LPIPS --- pycvvdp/pu_lpips.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py index d975d30..b9a22ad 100644 --- a/pycvvdp/pu_lpips.py +++ b/pycvvdp/pu_lpips.py @@ -1,5 +1,4 @@ import torch -from lpips import LPIPS from pycvvdp.utils import PU from pycvvdp.vq_metric import vq_metric @@ -10,6 +9,7 @@ """ class pu_lpips(vq_metric): def __init__(self, device=None, net='vgg'): + from lpips import LPIPS # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -43,9 +43,9 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) # Apply PU and reshape to (1,C,H,W) - # Input pixels shoulb lie in [0,1] - T_enc = self.pu.encode(T).squeeze(2) / 255. - R_enc = self.pu.encode(R).squeeze(2) / 255. + # Input pixels shoulb lie in [-1,1] + T_enc = self.pu.encode(T).squeeze(2) / 255. * 2 - 1 + R_enc = self.pu.encode(R).squeeze(2) / 255. * 2 - 1 quality += self.lpips(T_enc, R_enc) / N_frames return quality, None From f3d7a3a242dca37555b3eaf0035331b65986bcfc Mon Sep 17 00:00:00 2001 From: Param Hanji Date: Tue, 10 Jan 2023 04:41:11 +0000 Subject: [PATCH 27/67] Added Dolby ICTCP; TODO check implementation --- pycvvdp/__init__.py | 1 + pycvvdp/dolby_ictcp.py | 79 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 pycvvdp/dolby_ictcp.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index bb34a99..73ff910 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -6,6 +6,7 @@ from pycvvdp.de2000_spatial import s_de2000 from pycvvdp.flip import flip from pycvvdp.pu_lpips import pu_lpips +from pycvvdp.dolby_ictcp import ictcp from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/dolby_ictcp.py b/pycvvdp/dolby_ictcp.py new file mode 100644 index 0000000..7d02d77 --- /dev/null +++ b/pycvvdp/dolby_ictcp.py @@ -0,0 +1,79 @@ +import numpy as np +import torch +import torch.nn as nn + +from pycvvdp.vq_metric import vq_metric + +""" +Dolby color metric +Reference: https://professional.dolby.com/siteassets/pdfs/dolby-vision-measuring-perceptual-color-volume-v7.1.pdf +""" +class ictcp(vq_metric): + def __init__(self, device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.colorspace = 'XYZ' + self.XYZ2LMS = torch.tensor(((0.3593, -0.1921, 0.0071), + (0.6976, 1.1005, 0.0748), + (-0.0359, 0.0754, 0.8433)), device=self.device) + self.LMS2ICTCP = torch.tensor(((2048, 2048, 0), + (6610, -13613, 7003), + (17933, -17390, -543)), device=self.device).T/4096 + self.jnd_scaling = torch.tensor((720, 360, 720), device=self.device).view(1,3,1,1,1) + # ICTCP = bsxfun(@times, invEOTF(XYZ * XYZ2LMSmat) * LMS2ICTCPmat, [720, 360, 720]); + + def predict_video_source(self, vid_source, frame_padding="replicate"): + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + quality = 0.0 + for ff in range(N_frames): + # TODO: Batched processing + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + T_lms_prime = self.invEOTF(self.colorspace_conversion(T, self.XYZ2LMS)) + R_lms_prime = self.invEOTF(self.colorspace_conversion(R, self.XYZ2LMS)) + + T_ictcp = self.colorspace_conversion(T_lms_prime, self.LMS2ICTCP) * self.jnd_scaling + R_ictcp = self.colorspace_conversion(R_lms_prime, self.LMS2ICTCP) * self.jnd_scaling + + quality += self.delta_itp(T_ictcp, R_ictcp) / N_frames + return quality, None + + def invEOTF(self, lin): + return (((3424/4096)+(2413/128)*(lin.clip(min=0)/10000)**(2610/16384)) / \ + (1+(2392/128)*(lin.clip(min=0)/10000)**(2610/16384)))**(2523/32) + + def colorspace_conversion(self, img, M): + ABC = torch.empty_like(img) # ABC represents any linear colour space + # To avoid permute (slow), perform separate dot products + for cc in range(3): + ABC[...,cc,:,:,:] = torch.sum(img*(M[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return ABC + + """ + Reference: https://kb.portrait.com/help/ictcp-color-difference-metric + """ + def delta_itp(self, img1, img2): + return 720 * torch.sqrt((img1[...,0,:,:,:] - img2[...,0,:,:,:])**2 + + 0.25 * (img1[...,1,:,:,:] - img2[...,1,:,:,:])**2 + + (img1[...,2,:,:,:] - img2[...,2,:,:,:])**2).mean() + + def short_name(self): + return 'Dolby-ICTCP' From f9f1edab8a61e77442e5be2dd6df8198a9872e90 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Tue, 10 Jan 2023 17:16:33 +0000 Subject: [PATCH 28/67] Updated units --- pycvvdp/de2000.py | 4 ++-- pycvvdp/de2000_spatial.py | 4 ++-- pycvvdp/e_itp.py | 4 ++-- pycvvdp/e_sitp.py | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py index c1f34e5..43fc15a 100644 --- a/pycvvdp/de2000.py +++ b/pycvvdp/de2000.py @@ -76,13 +76,13 @@ def e00_fn(self, img1, img2): e00 = self.de.deltaE00(img1_row, img2_row) e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) - return 20*torch.log10( e00_mean ) + return e00_mean def short_name(self): return "dE 2000" def quality_unit(self): - return "dB" + return "Delta E2000" def get_info_string(self): return None \ No newline at end of file diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index e7ae619..02e6db3 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -106,13 +106,13 @@ def e00_fn(self, img1, img2): e00 = self.de.deltaE00(img1_row, img2_row) e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) - return 20*torch.log10( e00_mean ) + return e00_mean def short_name(self): return "dE 2000" def quality_unit(self): - return "dB" + return "Delta E2000" def get_info_string(self): return None \ No newline at end of file diff --git a/pycvvdp/e_itp.py b/pycvvdp/e_itp.py index 1a86297..7f51724 100644 --- a/pycvvdp/e_itp.py +++ b/pycvvdp/e_itp.py @@ -72,13 +72,13 @@ def lmshpelin_to_itp(self, img): def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) - return 20*torch.log10( torch.sqrt(mse) ) + return torch.sqrt(mse) def short_name(self): return "E-ITP" def quality_unit(self): - return "dB" + return "RMSE" def get_info_string(self): return None \ No newline at end of file diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index 9b7e867..e80fcd0 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -95,13 +95,13 @@ def itp_to_sitp(self, img, ppd): def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) - return 20*torch.log10( torch.sqrt(mse) ) + return torch.sqrt(mse) def short_name(self): return "E-SITP" def quality_unit(self): - return "dB" + return "RMSE" def get_info_string(self): return None \ No newline at end of file From 72545273e0f87a97196c3ae9f766f3b6971d8f6a Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Tue, 10 Jan 2023 19:02:25 +0000 Subject: [PATCH 29/67] White point for de2000 --- pycvvdp/de2000.py | 15 ++++++++++++++- pycvvdp/de2000_spatial.py | 13 +++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py index 43fc15a..65d0b72 100644 --- a/pycvvdp/de2000.py +++ b/pycvvdp/de2000.py @@ -4,12 +4,13 @@ from pycvvdp.utils import CIE_DeltaE from pycvvdp.video_source import * from pycvvdp.vq_metric import * +from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_absolute, vvdp_display_photo_eotf """ DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ class de2000(vq_metric): - def __init__(self, device=None,display_name=None,display_geometry=None): + def __init__(self, device=None,display_name=None,display_geometry=None,display_photometry=None): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -24,6 +25,18 @@ def __init__(self, device=None,display_name=None,display_geometry=None): self.w = (0.9505, 1.0000, 1.0888) self.colorspace = 'XYZ' + if display_photometry is None: + self.display_photometry = vvdp_display_photo_absolute.load(display_name) + else: + self.display_photometry = display_photometry + + self.max_L = self.display_photometry.get_peak_luminance() + # print('Max lum') + #print(self.max_L) + self.max_L = np.where( self.max_L < 300, self.max_L, 300) + #print(self.max_L) + self.w = self.max_L*self.w + ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index 02e6db3..75d45cb 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -5,13 +5,13 @@ from pycvvdp.utils import SCIELAB_filter from pycvvdp.video_source import * from pycvvdp.vq_metric import * -from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry +from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry, vvdp_display_photo_absolute """ Spatial DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ class s_de2000(vq_metric): - def __init__(self, device=None,display_name=None,display_geometry=None): + def __init__(self, device=None,display_name=None,display_geometry=None,display_photometry=None): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -34,6 +34,15 @@ def __init__(self, device=None,display_name=None,display_geometry=None): self.pix_per_deg = self.display_geometry.get_ppd() + if display_photometry is None: + self.display_photometry = vvdp_display_photo_absolute.load(display_name) + else: + self.display_photometry = display_photometry + + self.max_L = self.display_photometry.get_peak_luminance() + self.max_L = np.where( self.max_L < 300, self.max_L, 300) + self.w = self.max_L*self.w + ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' From e9d068da4a93c24d107ac752d7cea46454930ab5 Mon Sep 17 00:00:00 2001 From: Param Date: Wed, 11 Jan 2023 05:34:12 +0000 Subject: [PATCH 30/67] Fixed some metrics to run on GPU --- pycvvdp/de2000.py | 30 ++++++++------------ pycvvdp/de2000_spatial.py | 50 +++++++++++++-------------------- pycvvdp/e_sitp.py | 27 ++++++++---------- pycvvdp/utils.py | 59 +++++++++++++++++++++------------------ 4 files changed, 75 insertions(+), 91 deletions(-) diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py index 65d0b72..2a56939 100644 --- a/pycvvdp/de2000.py +++ b/pycvvdp/de2000.py @@ -25,18 +25,6 @@ def __init__(self, device=None,display_name=None,display_geometry=None,display_p self.w = (0.9505, 1.0000, 1.0888) self.colorspace = 'XYZ' - if display_photometry is None: - self.display_photometry = vvdp_display_photo_absolute.load(display_name) - else: - self.display_photometry = display_photometry - - self.max_L = self.display_photometry.get_peak_luminance() - # print('Max lum') - #print(self.max_L) - self.max_L = np.where( self.max_L < 300, self.max_L, 300) - #print(self.max_L) - self.w = self.max_L*self.w - ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' @@ -59,8 +47,9 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) # XYZ to Lab - T_lab = self.xyz_to_lab(T, self.w) - R_lab = self.xyz_to_lab(R, self.w) + w = self.max_L*self.w + T_lab = self.xyz_to_lab(T, w) + R_lab = self.xyz_to_lab(R, w) # Meancdm of Per-pixel DE2000 e00 = e00 + self.e00_fn(T_lab, R_lab) / N_frames @@ -87,15 +76,20 @@ def e00_fn(self, img1, img2): img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) e00 = self.de.deltaE00(img1_row, img2_row) - e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) - e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) + # e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) + # e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) + e00_mean = torch.mean(e00) return e00_mean def short_name(self): - return "dE 2000" + return "DE-2000" def quality_unit(self): return "Delta E2000" def get_info_string(self): - return None \ No newline at end of file + return None + + def set_display_model(self, display_photometry, display_geometry): + self.max_L = display_photometry.get_peak_luminance() + self.max_L = np.where( self.max_L < 300, self.max_L, 300) diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index 75d45cb..7ef4e4c 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -3,9 +3,7 @@ from pycvvdp.utils import CIE_DeltaE from pycvvdp.utils import SCIELAB_filter -from pycvvdp.video_source import * from pycvvdp.vq_metric import * -from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry, vvdp_display_photo_absolute """ Spatial DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). @@ -27,22 +25,6 @@ def __init__(self, device=None,display_name=None,display_geometry=None,display_p self.w = (0.9505, 1.0000, 1.0888) self.colorspace = 'XYZ' - if display_geometry is None: - self.display_geometry = vvdp_display_geometry.load(display_name) - else: - self.display_geometry = display_geometry - - self.pix_per_deg = self.display_geometry.get_ppd() - - if display_photometry is None: - self.display_photometry = vvdp_display_photo_absolute.load(display_name) - else: - self.display_photometry = display_photometry - - self.max_L = self.display_photometry.get_peak_luminance() - self.max_L = np.where( self.max_L < 300, self.max_L, 300) - self.w = self.max_L*self.w - ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' @@ -69,16 +51,17 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): R_opp = self.slab.xyz_to_opp(R) # Spatially filtered opponent colour images - T_s_opp = self.opp_to_sopp(T_opp, self.pix_per_deg) - R_s_opp = self.opp_to_sopp(R_opp, self.pix_per_deg) + T_s_opp = self.opp_to_sopp(T_opp, self.ppd) + R_s_opp = self.opp_to_sopp(R_opp, self.ppd) # S-OPP to S-XYZ T_s_xyz = self.slab.opp_to_xyz(T_s_opp) R_s_xyz = self.slab.opp_to_xyz(R_s_opp) # S-XYZ to S-Lab - T_s_lab = self.xyz_to_lab(T_s_xyz, self.w) - R_s_lab = self.xyz_to_lab(R_s_xyz, self.w) + w = self.max_L*self.w + T_s_lab = self.xyz_to_lab(T_s_xyz, w) + R_s_lab = self.xyz_to_lab(R_s_xyz, w) # Meancdm of Per-pixel DE2000 e_s00 = e_s00 + self.e00_fn(T_s_lab, R_s_lab) / N_frames @@ -86,10 +69,11 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): def opp_to_sopp(self, img, ppd): S_OPP = torch.empty_like(img) + img = img.cpu().numpy() [k1, k2, k3] = self.slab.separableFilters(ppd) - S_OPP[...,0:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_OPP) - S_OPP[...,1:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_OPP) - S_OPP[...,2:,:,:] = torch.from_numpy(self.slab.separableConv(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_OPP) + S_OPP[...,0:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_OPP) + S_OPP[...,1:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_OPP) + S_OPP[...,2:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_OPP) return S_OPP def xyz_to_lab(self, img, W): @@ -113,15 +97,21 @@ def e00_fn(self, img1, img2): img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) e00 = self.de.deltaE00(img1_row, img2_row) - e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) - e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) - return e00_mean + # e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) + # e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) + e00_mean = torch.mean(e00) + return e00_mean def short_name(self): - return "dE 2000" + return "S-DE-2000" def quality_unit(self): return "Delta E2000" def get_info_string(self): - return None \ No newline at end of file + return None + + def set_display_model(self, display_photometry, display_geometry): + self.ppd = display_geometry.get_ppd() + self.max_L = display_photometry.get_peak_luminance() + self.max_L = np.where( self.max_L < 300, self.max_L, 300) diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index e80fcd0..6eb6631 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -4,13 +4,12 @@ from pycvvdp.utils import SCIELAB_filter from pycvvdp.video_source import * from pycvvdp.vq_metric import * -from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_geometry """ E-SITP metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). """ class e_sitp(vq_metric): - def __init__(self, device=None,display_name=None,display_geometry=None): + def __init__(self, device=None): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -23,14 +22,6 @@ def __init__(self, device=None,display_name=None,display_geometry=None): self.sitp = SCIELAB_filter() self.colorspace = 'LMShpe' - if display_geometry is None: - self.display_geometry = vvdp_display_geometry.load(display_name) - else: - self.display_geometry = display_geometry - - self.pix_per_deg = self.display_geometry.get_ppd() - #print('ppd: %d degrees' %self.pix_per_deg) - ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' @@ -61,8 +52,8 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): R_itp = self.lmshpelin_to_itp(R_lms_lin) # ITP to Spatial ITP - T_sitp = self.itp_to_sitp(T_itp, self.pix_per_deg) - R_sitp = self.itp_to_sitp(R_itp, self.pix_per_deg) + T_sitp = self.itp_to_sitp(T_itp, self.ppd) + R_sitp = self.itp_to_sitp(R_itp, self.ppd) esitp = esitp + self.eitp_fn(T_sitp, R_sitp) / N_frames return esitp, None @@ -87,10 +78,11 @@ def lmshpelin_to_itp(self, img): def itp_to_sitp(self, img, ppd): S_ITP = torch.empty_like(img) + img = img.cpu().numpy() [k1, k2, k3] = self.sitp.separableFilters(ppd) - S_ITP[...,0:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_ITP) - S_ITP[...,1:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_ITP) - S_ITP[...,2:,:,:] = torch.from_numpy(self.sitp.separableConv(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_ITP) + S_ITP[...,0:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_ITP) + S_ITP[...,1:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_ITP) + S_ITP[...,2:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_ITP) return S_ITP def eitp_fn(self, img1, img2): @@ -104,4 +96,7 @@ def quality_unit(self): return "RMSE" def get_info_string(self): - return None \ No newline at end of file + return None + + def set_display_model(self, display_photometry, display_geometry): + self.ppd = display_geometry.get_ppd() diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 9a306df..52d27d0 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -432,22 +432,22 @@ def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): #c1 = a1 + b1 # CIELAB Chroma - C1 = np.sqrt( np.power(Lab1[1,:],2) + np.power(Lab1[2,:],2) ) - C2 = np.sqrt( np.power(Lab2[1,:],2) + np.power(Lab2[2,:],2) ) + C1 = torch.sqrt( torch.pow(Lab1[1,:],2) + torch.pow(Lab1[2,:],2) ) + C2 = torch.sqrt( torch.pow(Lab2[1,:],2) + torch.pow(Lab2[2,:],2) ) # Lab Prime - mC = np.add(C1,C2)/2 - G = 0.5*( 1 - np.sqrt( np.divide( np.power(mC,7) , np.power(mC,7)+25**7 ) )) - LabP1 = np.vstack( (Lab1[0,:], Lab1[1,:]*(1+G), Lab1[2,:]) ) - LabP2 = np.vstack( (Lab2[0,:], Lab2[1,:]*(1+G), Lab2[2,:]) ) + mC = torch.add(C1,C2)/2 + G = 0.5*( 1 - torch.sqrt( torch.divide( torch.pow(mC,7) , torch.pow(mC,7)+25**7 ) )) + LabP1 = torch.vstack( (Lab1[0,:], Lab1[1,:]*(1+G), Lab1[2,:]) ) + LabP2 = torch.vstack( (Lab2[0,:], Lab2[1,:]*(1+G), Lab2[2,:]) ) # Chroma - CP1 = np.sqrt( np.power(LabP1[1,:],2) + np.power(LabP1[2,:],2) ) - CP2 = np.sqrt( np.power(LabP2[1,:],2) + np.power(LabP2[2,:],2) ) + CP1 = torch.sqrt( torch.pow(LabP1[1,:],2) + torch.pow(LabP1[2,:],2) ) + CP2 = torch.sqrt( torch.pow(LabP2[1,:],2) + torch.pow(LabP2[2,:],2) ) # Hue Angle - hP1 = np.arctan2( LabP1[2,:],LabP1[1,:] ) * 180/np.pi # varies from -180 to +180 degree - hP2 = np.arctan2( LabP2[2,:],LabP2[1,:] ) * 180/np.pi # varies from -180 to +180 degree + hP1 = torch.arctan2( LabP1[2,:],LabP1[1,:] ) * 180/torch.pi # varies from -180 to +180 degree + hP2 = torch.arctan2( LabP2[2,:],LabP2[1,:] ) * 180/torch.pi # varies from -180 to +180 degree hP1[hP1<0] = hP1[hP1<0] + 360 # varies from 0 to +360 degree hP2[hP2<0] = hP2[hP2<0] + 360 # varies from 0 to +360 degree @@ -456,32 +456,37 @@ def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): DLP = LabP1[0,:] - LabP2[0,:] DCP = CP1 - CP2 DhP = hP1 - hP2; DhP[DhP>180] = DhP[DhP>180]-360; DhP[DhP<-180] = DhP[DhP<-180]+360 - DHP = np.multiply( 2*np.sqrt(np.multiply(CP1,CP2)), np.sin( DhP/2.*np.pi/180. ) ) + DHP = torch.multiply( 2*torch.sqrt(torch.multiply(CP1,CP2)), torch.sin( DhP/2.*torch.pi/180. ) ) # Arithmetic mean of LCh' values mLP = ( LabP1[0,:]+LabP2[0,:] )/2 mCP = (CP1+CP2)/2 - mhP = np.zeros_like(mCP) - for k in range(0,mhP.size): - if abs(hP1[k]-hP2[k])<=180: - mhP[k] = (hP1[k]+hP2[k])/2 - elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]<360: - mhP[k] = (hP1[k]+hP2[k]+360)/2 - elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]>=360: - mhP[k] = (hP1[k]+hP2[k]-360)/2 + mhP = torch.zeros_like(mCP) + # for k in range(0,mhP.numel()): + # if abs(hP1[k]-hP2[k])<=180: + # mhP[k] = (hP1[k]+hP2[k])/2 + # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]<360: + # mhP[k] = (hP1[k]+hP2[k]+360)/2 + # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]>=360: + # mhP[k] = (hP1[k]+hP2[k]-360)/2 + mask1 = torch.abs(hP1-hP2) <= 180 + mhP[mask1] = (hP1+hP2)[mask1]/2 + mask2 = (hP1+hP2) < 360 + mhP[torch.logical_and(torch.logical_not(mask1), mask2)] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), mask2)]+360)/2 + mhP[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))]-360)/2 # Weighting Functions - SL = 1 + np.divide( 0.015*np.power(mLP-50,2), np.sqrt( 20+np.power(mLP-50,2) ) ) + SL = 1 + torch.divide( 0.015*torch.pow(mLP-50,2), torch.sqrt( 20+torch.pow(mLP-50,2) ) ) SC = 1+0.045*mCP - T = 1-0.17*np.cos((mhP-30)*np.pi/180.)+0.24*np.cos((2*mhP)*np.pi/180.)+0.32*np.cos((3*mhP+6)*np.pi/180.)-0.2*np.cos((4*mhP-63)*np.pi/180.) - SH = 1+0.015*np.multiply(mCP,T) + T = 1-0.17*torch.cos((mhP-30)*torch.pi/180.)+0.24*torch.cos((2*mhP)*torch.pi/180.)+0.32*torch.cos((3*mhP+6)*torch.pi/180.)-0.2*torch.cos((4*mhP-63)*torch.pi/180.) + SH = 1+0.015*torch.multiply(mCP,T) # Rotation function - RC = 2 * np.sqrt(np.divide( np.power(mCP,7), np.power(mCP,7)+25**7 )) + RC = 2 * torch.sqrt(torch.divide( torch.pow(mCP,7), torch.pow(mCP,7)+25**7 )) # DTheta = 30.*exp(-((mhP-275)./25).^2) - DTheta = 30 * np.exp(-np.power( (mhP-275)/25,2 )) - RT = np.multiply( -np.sin(2*DTheta*np.pi/180.), RC ) + DTheta = 30 * torch.exp(-torch.pow( (mhP-275)/25,2 )) + RT = torch.multiply( -torch.sin(2*DTheta*torch.pi/180.), RC ) - dE00 = np.sqrt( np.power( np.divide(DLP,kL*SL) ,2) + np.power( np.divide(DCP,kC*SC) ,2) + np.power( np.divide(DHP,kH*SH) ,2) - + np.multiply(RT, np.multiply( np.divide(DCP,kC*SC), np.divide(DHP,kH*SH) ) )) + dE00 = torch.sqrt( torch.pow( torch.divide(DLP,kL*SL) ,2) + torch.pow( torch.divide(DCP,kC*SC) ,2) + torch.pow( torch.divide(DHP,kH*SH) ,2) + + torch.multiply(RT, torch.multiply( torch.divide(DCP,kC*SC), torch.divide(DHP,kH*SH) ) )) return dE00 \ No newline at end of file From ee8fd75b046281beb6e87578a96d9d03e40d378b Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Wed, 11 Jan 2023 21:14:39 +0000 Subject: [PATCH 31/67] separableFilters_torch function --- pycvvdp/utils.py | 135 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 52d27d0..eb95a8b 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -238,6 +238,21 @@ def gauss(self, halfWidth, width): g = np.exp(-alpha ** 2 * t) g = g / np.sum(g) return g + + def gauss_torch(self, halfWidth, width): + # Returns a 1D Gaussian vector. The gaussian sums to one. + # The halfWidth must be greater than one. + # The halfwidth specifies the width of the gaussian between the points + # where it obtains half of its maximum value. The width indicates the gaussians width in pixels. + + alpha = 2 * np.sqrt(np.log(2)) / (halfWidth - 1) + x = torch.linspace(1, width, width) + x = x - torch.round(width / 2) + + t = x ** 2 + g = torch.exp(-alpha ** 2 * t) + g = g / torch.sum(g) + return g def resize(self, orig, newSize, align=[0, 0], padding=0): # result = resize(orig, newSize, align, padding) @@ -285,10 +300,62 @@ def resize(self, orig, newSize, align=[0, 0], padding=0): return result + def resize_torch(self, orig, newSize, align=[0, 0], padding=0): + # result = resize(orig, newSize, align, padding) + # + # if newSize is larger than orig size, pad with padding + # if newSize is smaller than orig size, truncate to fit. + # align specifies alignment. 0=centered + # -1=left (up) aligned + # 1=right (down) aligned + # For example, align=[0 -1] centers on rows (y) and left align on columns (x). + # align=1 aligns left on columns and top on rows. + + if len(newSize) == 1: + newSize = [newSize, newSize] + if len(align) == 1: + align = [align, align] + + if len(orig.shape) == 1: # 1D array + orig = orig.reshape(-1, 1) # make it to (mx1) array + + [m1, n1] = orig.shape + m2 = newSize[0] + n2 = newSize[1] + m = np.minimum(m1, m2) + n = np.minimum(n1, n2) + + result = np.ones((m2, n2)) * padding + + start1 = np.array([np.floor((m1 - m) / 2 * (1 + align[0])), np.floor((n1 - n) / 2 * (1 + align[1]))]) + 1 + start2 = np.array([np.floor((m2 - m) / 2 * (1 + align[0])), np.floor((n2 - n) / 2 * (1 + align[1]))]) + 1 + + t1 = np.int_(np.linspace(start2[0], start2[0] + m - 1, m) - 1) + t2 = np.int_(np.linspace(start2[1], start2[1] + n - 1, n) - 1) + t3 = np.int_(np.linspace(start1[0], start1[0] + m - 1, m) - 1) + t4 = np.int_(np.linspace(start1[1], start1[1] + n - 1, n) - 1) + + result[t1[:,np.newaxis],t2] = orig[t3[:,np.newaxis],t4] + # trickly to broadcast 2D matrix + # https://towardsdatascience.com/numpy-indexing-explained-c376abb2440d + + # result[np.int_(np.linspace(start2[0], start2[0] + m - 1, m) - 1), np.int_( + # np.linspace(start2[1], start2[1] + n - 1, n) - 1)] = \ + # orig[np.int_(np.linspace(start1[0], start1[0] + m - 1, m) - 1), np.int_( + # np.linspace(start1[1], start1[1] + n - 1, n) - 1)] + + return result + def conv2(self, x, y, mode='full'): # While Matlab's conv2 results in artifacts on the bottom and right of an image, # scipy.signal.convolve2d has the same artifacts on the top and left of an image. return np.rot90(convolve2d(np.rot90(x, 2), np.rot90(y, 2), mode=mode), 2) + + def conv2_torch(self, x, y, mode='full'): + # While Matlab's conv2 results in artifacts on the bottom and right of an image, + # scipy.signal.convolve2d has the same artifacts on the top and left of an image. + # Tried tensor.nn.conv2d: Doesn't support the "full" discrete linear convolution mode + return torch.rot90(torch.as_tensor(convolve2d(torch.rot90(x, 2), torch.rot90(y, 2), mode=mode)), 2) def separableFilters(self, sampPerDeg): # not full implementation but correct for S-CIELAB usage. @@ -356,6 +423,74 @@ def separableFilters(self, sampPerDeg): k3 = up3[:, downs] return [k1, k2, k3] + + def separableFilters_torch(self, sampPerDeg): + # not full implementation but correct for S-CIELAB usage. + # Please refer to original Matlab version + + # if sampPerDeg is smaller than minSAMPPERDEG, need to upsample image data before filtering. + # This can be done equivalently by convolving filters with the upsampling matrix, then downsample it. + minSAMPPERDEG = 224 + dimension=3 + + if sampPerDeg < minSAMPPERDEG: + uprate = int(np.ceil(minSAMPPERDEG / sampPerDeg)) + sampPerDeg = sampPerDeg * uprate + else: + uprate = 1 + + # these are the same filter parameters, except that the weights are normalized to sum to 1 + # This eliminates the need to normalize after the filters are generated + x1 = torch.as_tensor([0.05, 1.00327, 0.225, 0.114416, 7.0, -0.117686]) + x2 = torch.as_tensor([0.0685, 0.616725, 0.826, 0.383275]) + x3 = torch.as_tensor([0.0920, 0.567885, 0.6451, 0.432115]) + + # Convert the unit of halfwidths from visual angle to pixels. + x1[[0, 2, 4]] = x1[[0, 2, 4]] * sampPerDeg + x2[[0, 2]] = x2[[0, 2]] * sampPerDeg + x3[[0, 2]] = x3[[0, 2]] * sampPerDeg + + # Limit filter width to 1-degree visual angle, and odd number of sampling points + # (so that the gaussians generated from Rick's gauss routine are symmetric). + width = torch.as_tensor(int(np.ceil(sampPerDeg / 2) * 2 - 1)) + + # Generate the filters + # These Gaussians are used in the row and col separable convolutions. + + k1 = torch.stack([self.gauss_torch(x1[0], width) * torch.sqrt(torch.abs(x1[1])) * torch.sign(x1[1]), + self.gauss_torch(x1[2], width) * torch.sqrt(torch.abs(x1[3])) * torch.sign(x1[3]), + self.gauss_torch(x1[4], width) * torch.sqrt(torch.abs(x1[5])) * torch.sign(x1[5])]) + + # These are the two 1-d kernels used by red/green + k2 = torch.stack([self.gauss_torch(x2[0], width) * torch.sqrt(np.abs(x2[1])) * torch.sign(x2[1]), + self.gauss_torch(x2[2], width) * torch.sqrt(np.abs(x2[3])) * torch.sign(x2[3])]) + + # These are the two 1-d kernels used by blue/yellow + k3 = torch.stack([self.gauss_torch(x3[0], width) * torch.sqrt(torch.abs(x3[1])) * torch.sign(x3[1]), + self.gauss_torch(x3[2], width) * torch.sqrt(torch.abs(x3[3])) * torch.sign(x3[3])]) + + # upsample and downsample + if uprate > 1: + upcol = torch.concatenate((torch.linspace(1, uprate, uprate), torch.linspace(uprate - 1, 1, uprate - 1))) / uprate + s = len(upcol) + upcol = torch.reshape(upcol, (1, -1)) # 1xm matrix + upcol = torch.as_tensor(self.resize(upcol, [1, s + width - 1])) + # upcol = resize(upcol, [1 s + width - 1]); + + up1 = self.conv2_torch(k1, upcol, 'same') + up2 = self.conv2_torch(k2, upcol, 'same') + up3 = self.conv2_torch(k3, upcol, 'same') + + mid = np.ceil(up1.shape[1] / 2) + downs = np.int_(np.concatenate( + (np.flip(np.arange(mid, 0, -uprate)), np.arange(mid + uprate, up1.shape[1] + 1, uprate)) + ) - 1) + + k1 = up1[:, downs] + k2 = up2[:, downs] + k3 = up3[:, downs] + + return [k1, k2, k3] def separableConv(self, im, xkernels, ykernels): # Two-dimensional convolution with X-Y separable kernels. From f12799be65b324ce1f0f25ddd9b52f847acef711 Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Fri, 13 Jan 2023 13:08:06 +0000 Subject: [PATCH 32/67] Fixed dolbyitp metric. We can use this as the E_ITP metric --- pycvvdp/dolby_ictcp.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/pycvvdp/dolby_ictcp.py b/pycvvdp/dolby_ictcp.py index 7d02d77..25a5bf9 100644 --- a/pycvvdp/dolby_ictcp.py +++ b/pycvvdp/dolby_ictcp.py @@ -22,10 +22,10 @@ def __init__(self, device=None): self.colorspace = 'XYZ' self.XYZ2LMS = torch.tensor(((0.3593, -0.1921, 0.0071), (0.6976, 1.1005, 0.0748), - (-0.0359, 0.0754, 0.8433)), device=self.device) + (-0.0359, 0.0754, 0.8433)), device=self.device).T self.LMS2ICTCP = torch.tensor(((2048, 2048, 0), (6610, -13613, 7003), - (17933, -17390, -543)), device=self.device).T/4096 + (17933, -17390, -543)), device=self.device)/4096 self.jnd_scaling = torch.tensor((720, 360, 720), device=self.device).view(1,3,1,1,1) # ICTCP = bsxfun(@times, invEOTF(XYZ * XYZ2LMSmat) * LMS2ICTCPmat, [720, 360, 720]); @@ -46,13 +46,22 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # TODO: Batched processing T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) - + + print('Y scale') + print(torch.max(T[...,0,:,:,:] )) + T_lms_prime = self.invEOTF(self.colorspace_conversion(T, self.XYZ2LMS)) R_lms_prime = self.invEOTF(self.colorspace_conversion(R, self.XYZ2LMS)) - - T_ictcp = self.colorspace_conversion(T_lms_prime, self.LMS2ICTCP) * self.jnd_scaling - R_ictcp = self.colorspace_conversion(R_lms_prime, self.LMS2ICTCP) * self.jnd_scaling - + + print('LMS lin scale') + print(torch.max(T_lms_prime[...,0,:,:,:] )) + + T_ictcp = self.colorspace_conversion(T_lms_prime, self.LMS2ICTCP) + R_ictcp = self.colorspace_conversion(R_lms_prime, self.LMS2ICTCP) + + print('I scale') + print(torch.max(T_ictcp[...,0,:,:,:] )) + quality += self.delta_itp(T_ictcp, R_ictcp) / N_frames return quality, None @@ -71,8 +80,10 @@ def colorspace_conversion(self, img, M): Reference: https://kb.portrait.com/help/ictcp-color-difference-metric """ def delta_itp(self, img1, img2): + print('I scale') + print(torch.max(img1[...,0,:,:,:] )) return 720 * torch.sqrt((img1[...,0,:,:,:] - img2[...,0,:,:,:])**2 + - 0.25 * (img1[...,1,:,:,:] - img2[...,1,:,:,:])**2 + + 0.5 * (img1[...,1,:,:,:] - img2[...,1,:,:,:])**2 + (img1[...,2,:,:,:] - img2[...,2,:,:,:])**2).mean() def short_name(self): From 7f31f0713c3f26844f7ac165bc3568c5a697ebfb Mon Sep 17 00:00:00 2001 From: MalihaAshraf Date: Fri, 13 Jan 2023 19:09:44 +0000 Subject: [PATCH 33/67] Separable convolution converted to pytorch --- pycvvdp/de2000_spatial.py | 10 +++--- pycvvdp/dolby_ictcp.py | 11 ------ pycvvdp/utils.py | 75 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 78 insertions(+), 18 deletions(-) diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index 7ef4e4c..f982a1f 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -69,11 +69,11 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): def opp_to_sopp(self, img, ppd): S_OPP = torch.empty_like(img) - img = img.cpu().numpy() - [k1, k2, k3] = self.slab.separableFilters(ppd) - S_OPP[...,0:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_OPP) - S_OPP[...,1:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_OPP) - S_OPP[...,2:,:,:] = torch.from_numpy(self.slab.separableConv(np.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_OPP) + #img = img.cpu().numpy() + [k1, k2, k3] = self.slab.separableFilters_torch(ppd) + S_OPP[...,0:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1)) + S_OPP[...,1:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2)) + S_OPP[...,2:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3)) return S_OPP def xyz_to_lab(self, img, W): diff --git a/pycvvdp/dolby_ictcp.py b/pycvvdp/dolby_ictcp.py index 25a5bf9..bd30df4 100644 --- a/pycvvdp/dolby_ictcp.py +++ b/pycvvdp/dolby_ictcp.py @@ -46,22 +46,13 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # TODO: Batched processing T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) - - print('Y scale') - print(torch.max(T[...,0,:,:,:] )) T_lms_prime = self.invEOTF(self.colorspace_conversion(T, self.XYZ2LMS)) R_lms_prime = self.invEOTF(self.colorspace_conversion(R, self.XYZ2LMS)) - print('LMS lin scale') - print(torch.max(T_lms_prime[...,0,:,:,:] )) - T_ictcp = self.colorspace_conversion(T_lms_prime, self.LMS2ICTCP) R_ictcp = self.colorspace_conversion(R_lms_prime, self.LMS2ICTCP) - print('I scale') - print(torch.max(T_ictcp[...,0,:,:,:] )) - quality += self.delta_itp(T_ictcp, R_ictcp) / N_frames return quality, None @@ -80,8 +71,6 @@ def colorspace_conversion(self, img, M): Reference: https://kb.portrait.com/help/ictcp-color-difference-metric """ def delta_itp(self, img1, img2): - print('I scale') - print(torch.max(img1[...,0,:,:,:] )) return 720 * torch.sqrt((img1[...,0,:,:,:] - img2[...,0,:,:,:])**2 + 0.5 * (img1[...,1,:,:,:] - img2[...,1,:,:,:])**2 + (img1[...,2,:,:,:] - img2[...,2,:,:,:])**2).mean() diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index eb95a8b..5135329 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -317,7 +317,7 @@ def resize_torch(self, orig, newSize, align=[0, 0], padding=0): align = [align, align] if len(orig.shape) == 1: # 1D array - orig = orig.reshape(-1, 1) # make it to (mx1) array + orig = torch.reshape(orig,(-1, 1)) # make it to (mx1) array [m1, n1] = orig.shape m2 = newSize[0] @@ -325,7 +325,7 @@ def resize_torch(self, orig, newSize, align=[0, 0], padding=0): m = np.minimum(m1, m2) n = np.minimum(n1, n2) - result = np.ones((m2, n2)) * padding + result = torch.ones((m2, n2), dtype=torch.double) * padding start1 = np.array([np.floor((m1 - m) / 2 * (1 + align[0])), np.floor((n1 - n) / 2 * (1 + align[1]))]) + 1 start2 = np.array([np.floor((m2 - m) / 2 * (1 + align[0])), np.floor((n2 - n) / 2 * (1 + align[1]))]) + 1 @@ -518,6 +518,33 @@ def separableConv(self, im, xkernels, ykernels): result = result + p return result + def separableConv_torch(self, im, xkernels, ykernels): + # Two-dimensional convolution with X-Y separable kernels. + # + # im is the input matric. im is reflected on all sides before convolution. + # xkernels and ykernels are both row vectors. + # If xkernels and ykernels are matrices, each row is taken as + # one convolution kernel and convolved with the image, and the + # sum of the results is returned. + + w1 = self.pad4conv_torch(im, xkernels.shape[1], 2) + + + result = torch.empty_like(im) + for j in range(xkernels.shape[0]): + # first convovle in the horizontal direction + p = self.conv2_torch(w1, xkernels[j,:].reshape(1,-1)) + p = self.resize_torch(p, im.shape) + + # then the vertical direction + w2 = self.pad4conv_torch(p, ykernels.shape[1], 1) + p = self.conv2_torch(w2, ykernels[j,:].reshape(-1,1)) + p = self.resize_torch(p, im.shape) + + # result is sum of several separable convolutions + result = result + p + return result + def pad4conv(self, im, kernelsize, dim): # Pad the input image ready for convolution. The edges of the image are reflected on all sides. # kernelsize -- size of the convolution kernel in the format @@ -556,6 +583,50 @@ def pad4conv(self, im, kernelsize, dim): return newim + def pad4conv_torch(self, im, kernelsize, dim): + # Pad the input image ready for convolution. The edges of the image are reflected on all sides. + # kernelsize -- size of the convolution kernel in the format + # [numRows numCol]. If one number is given, assume numRows=numCols. + # dim -- when set at 1, pad extra rows, but leave number of columns unchanged; + # when set at 2, pad extra columns, leave number of rows unchanged; + + newim = torch.clone(im) + [m, n] = np.int_(im.shape) + #print('is list or not') + #print(isinstance(kernelsize, list)) + #print('kernel type before') + #print(type(kernelsize)) + if not isinstance(kernelsize, list): + kernelsize = [kernelsize, kernelsize] + #print('kernel type after') + #print(type(kernelsize)) + + # If kernel is larger than image, than just pad all side with half + # the image size, otherwise pad with half the kernel size + if kernelsize[0] >= m: + h = int(np.floor(m / 2)) + else: + h = int(np.floor(kernelsize[0] / 2)) + + if kernelsize[1] >= n: + w = int(np.floor(n / 2)) + else: + w = int(np.floor(kernelsize[1] / 2)) + + # first reflect the upper and lower edges + if h != 0 and dim != 2: + im1 = torch.flipud(newim[0:h, :]) + im2 = torch.flipud(newim[m - h:m, :]) + newim = torch.concatenate((im1, newim, im2), axis=0) + + # then reflect the left and right sides + if w != 0 and dim != 1: + im1 = torch.fliplr(newim[:, 0:w]) + im2 = torch.fliplr(newim[:, n - w:n]) + newim = torch.concatenate((im1, newim, im2), axis=1) + + return newim + class CIE_DeltaE(): def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): From 8dc76a2ee6779d6af04baa98b3b5e41db39455de Mon Sep 17 00:00:00 2001 From: param Date: Fri, 13 Jan 2023 22:52:43 +0000 Subject: [PATCH 34/67] Fixed gradient propagation for mask_q --- pycvvdp/cvvdp_metric.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 690e340..431dc2f 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -480,11 +480,13 @@ def phase_uncertainty(self, M): def mask_func_perc_norm(self, G, G_mask ): # Masking on perceptually normalized quantities (as in Daly's VDP) p = self.mask_p + q_sust = self.torch_scalar(self.mask_q_sust) + q_trans = self.torch_scalar(self.mask_q_trans) if G_mask.shape[0]==3: # image - q = torch.as_tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust], device=self.device ).view(3,1,1,1) + q = torch.stack( [q_sust, q_sust, q_sust] ).view(3,1,1,1) else: # video - q = torch.as_tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust, self.mask_q_trans], device=self.device ).view(4,1,1,1) - R = torch.div(torch.pow(G,p), 1. + torch.pow(G_mask, q)) + q = torch.stack( [q_sust, q_sust, q_sust, q_trans] ).view(4,1,1,1) + R = torch.div(torch.pow(G, p), 1. + torch.pow(G_mask, q)) return R From f2abe0cc5385977c857d4bd28a4e8071ea18046f Mon Sep 17 00:00:00 2001 From: param Date: Sat, 14 Jan 2023 02:17:07 +0000 Subject: [PATCH 35/67] Fixed pytorch separable filter; added vmaf --- pycvvdp/__init__.py | 1 + pycvvdp/de2000.py | 9 +-- pycvvdp/de2000_spatial.py | 24 +++--- pycvvdp/e_sitp.py | 10 +-- pycvvdp/pu_vmaf.py | 134 ++++++++++++++++++++++++++++++ pycvvdp/utils.py | 166 ++++++++++++++++++++------------------ 6 files changed, 241 insertions(+), 103 deletions(-) create mode 100644 pycvvdp/pu_vmaf.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 73ff910..f95ac7f 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -7,6 +7,7 @@ from pycvvdp.flip import flip from pycvvdp.pu_lpips import pu_lpips from pycvvdp.dolby_ictcp import ictcp +from pycvvdp.pu_vmaf import pu_vmaf from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_photo_absolute, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/de2000.py b/pycvvdp/de2000.py index 2a56939..ddafeda 100644 --- a/pycvvdp/de2000.py +++ b/pycvvdp/de2000.py @@ -1,10 +1,8 @@ import torch import numpy as np -from pycvvdp.utils import CIE_DeltaE -from pycvvdp.video_source import * -from pycvvdp.vq_metric import * -from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_absolute, vvdp_display_photo_eotf +from pycvvdp.utils import deltaE00 +from pycvvdp.vq_metric import vq_metric """ DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). @@ -20,7 +18,6 @@ def __init__(self, device=None,display_name=None,display_geometry=None,display_p else: self.device = device - self.de = CIE_DeltaE() # D65 White point self.w = (0.9505, 1.0000, 1.0888) self.colorspace = 'XYZ' @@ -75,7 +72,7 @@ def e00_fn(self, img1, img2): sz = torch.numel(img1[...,0,:,:,:]) img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) - e00 = self.de.deltaE00(img1_row, img2_row) + e00 = deltaE00(img1_row, img2_row) # e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) # e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) e00_mean = torch.mean(e00) diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index f982a1f..75577af 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -1,9 +1,8 @@ import torch import numpy as np -from pycvvdp.utils import CIE_DeltaE -from pycvvdp.utils import SCIELAB_filter -from pycvvdp.vq_metric import * +from pycvvdp.utils import SCIELAB_filter, deltaE00 +from pycvvdp.vq_metric import vq_metric """ Spatial DE2000 metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). @@ -19,8 +18,7 @@ def __init__(self, device=None,display_name=None,display_geometry=None,display_p else: self.device = device - self.slab = SCIELAB_filter() - self.de = CIE_DeltaE() + self.slab = SCIELAB_filter(device=device) # D65 White point self.w = (0.9505, 1.0000, 1.0888) self.colorspace = 'XYZ' @@ -66,14 +64,14 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # Meancdm of Per-pixel DE2000 e_s00 = e_s00 + self.e00_fn(T_s_lab, R_s_lab) / N_frames return e_s00, None - + def opp_to_sopp(self, img, ppd): S_OPP = torch.empty_like(img) - #img = img.cpu().numpy() - [k1, k2, k3] = self.slab.separableFilters_torch(ppd) - S_OPP[...,0:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, np.abs(k1)) - S_OPP[...,1:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, np.abs(k2)) - S_OPP[...,2:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, np.abs(k3)) + # Filters are low-dimensional; construct using np + [k1, k2, k3] = [torch.as_tensor(filter).to(img) for filter in self.slab.separableFilters(ppd)] + S_OPP[...,0:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, torch.abs(k1)) + S_OPP[...,1:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, torch.abs(k2)) + S_OPP[...,2:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, torch.abs(k3)) return S_OPP def xyz_to_lab(self, img, W): @@ -84,7 +82,7 @@ def xyz_to_lab(self, img, W): return Lab def lab_fn(self, x): - y = torch.empty_like(x) + # y = torch.empty_like(x) sigma = (6/29) y_1 = x**(1/3) y_2 = (x/(3*(sigma**2)))+(4/29) @@ -96,7 +94,7 @@ def e00_fn(self, img1, img2): sz = torch.numel(img1[...,0,:,:,:]) img1_row = torch.cat((torch.reshape(img1[...,0,:,:,:], (1,sz)), torch.reshape(img1[...,1,:,:,:], (1,sz)), torch.reshape(img1[...,2,:,:,:], (1,sz))), 0) img2_row = torch.cat((torch.reshape(img2[...,0,:,:,:], (1,sz)), torch.reshape(img2[...,1,:,:,:], (1,sz)), torch.reshape(img2[...,2,:,:,:], (1,sz))), 0) - e00 = self.de.deltaE00(img1_row, img2_row) + e00 = deltaE00(img1_row, img2_row) # e00_mean = torch.empty_like(torch.reshape(img1[...,0,:,:,:], (1,sz))) # e00_mean = torch.mean(torch.from_numpy(e00).to(e00_mean)) e00_mean = torch.mean(e00) diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index 6eb6631..9277428 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -78,11 +78,11 @@ def lmshpelin_to_itp(self, img): def itp_to_sitp(self, img, ppd): S_ITP = torch.empty_like(img) - img = img.cpu().numpy() - [k1, k2, k3] = self.sitp.separableFilters(ppd) - S_ITP[...,0:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,0,:,:,:]), k1, np.abs(k1))).to(S_ITP) - S_ITP[...,1:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,1,:,:,:]), k2, np.abs(k2))).to(S_ITP) - S_ITP[...,2:,:,:] = torch.from_numpy(self.sitp.separableConv(np.squeeze(img[...,2,:,:,:]), k3, np.abs(k3))).to(S_ITP) + # Filters are low-dimensional; construct using np + [k1, k2, k3] = [torch.as_tensor(filter).to(img) for filter in self.sitp.separableFilters(ppd)] + S_ITP[...,0:,:,:] = self.sitp.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, torch.abs(k1)) + S_ITP[...,1:,:,:] = self.sitp.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, torch.abs(k2)) + S_ITP[...,2:,:,:] = self.sitp.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, torch.abs(k3)) return S_ITP def eitp_fn(self, img1, img2): diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py new file mode 100644 index 0000000..df1e644 --- /dev/null +++ b/pycvvdp/pu_vmaf.py @@ -0,0 +1,134 @@ +import json +import os, os.path as osp +import torch + +from pycvvdp.utils import PU +from pycvvdp.video_source import * +from pycvvdp.vq_metric import * + +""" +PU21-VMAF metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +Required: ffmpeg compiled with libvmaf (https://github.com/Netflix/vmaf/blob/master/resource/doc/ffmpeg.md) +""" +class pu_vmaf(vq_metric): + def __init__(self, ffmpeg_bin, cache_ref_loc='.', device=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + self.pu = PU() + assert osp.isdir(cache_ref_loc), f'Please create the directory to cache: {cache_ref_loc}' + self.T_enc_path = osp.join(cache_ref_loc, 'temp_test.yuv') + self.R_enc_path = osp.join(cache_ref_loc, 'temp_ref.yuv') + self.output_file = osp.join(cache_ref_loc, 'vmaf_output.json') + + self.T_enc_file = open(self.T_enc_path,'w') + self.R_enc_file = open(self.R_enc_path,'w') + self.colorspace = 'RGB709' + self.ffmpeg_bin = ffmpeg_bin + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,1,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + h, w, N_frames = vid_source.get_video_size() + + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # Apply PU + T_enc = self.pu.encode(T) / self.pu.encode(self.max_L) + T_enc_np = T_enc.squeeze().permute(1,2,0).cpu().numpy() + R_enc = self.pu.encode(R) / self.pu.encode(self.max_L) + R_enc_np = R_enc.squeeze().permute(1,2,0).cpu().numpy() + + # Save the output as yuv file + self.write_yuv_frame(T_enc_np, bit_depth=10, type='T') + self.write_yuv_frame(R_enc_np, bit_depth=10, type='R') + + self.T_enc_file.close() + self.R_enc_file.close() + + pix_fmt = 'yuv444p10le' + ffmpeg_cmd = f'{self.ffmpeg_bin} -hide_banner -loglevel error ' \ + f'-s {w}x{h} -pix_fmt {pix_fmt} -i {self.T_enc_path} ' \ + f'-s {w}x{h} -pix_fmt {pix_fmt} -i {self.R_enc_path} ' \ + f'-lavfi libvmaf=\"log_fmt=json:log_path={self.output_file}:n_threads=4\" -f null -' + os.system(ffmpeg_cmd) + + with open(self.output_file) as f: + results = json.load(f) + quality = results['pooled_metrics']['vmaf']['mean'] + + os.remove(self.T_enc_path) + os.remove(self.T_enc_path) + os.remove(self.output_file) + return torch.tensor(quality), None + + def short_name(self): + return 'PU21-VMAF' + + def set_display_model(self, display_photometry, display_geometry): + self.max_L = display_photometry.get_peak_luminance() + self.max_L = np.where( self.max_L < 300, self.max_L, 300) + + # This function takes into input an encoded RGB709 frame and saves it as a yuv file (it operates only on numpy arrays) + def write_yuv_frame( self, RGB ,bit_depth=10,type = 'T'): + _rgb2ycbcr_rec709 = np.array([[0.2126 , 0.7152 , 0.0722],\ + [-0.114572 , -0.385428 , 0.5],\ + [0.5 , -0.454153 , -0.045847]], dtype=np.float32) + + YUV = (np.reshape( RGB, (-1, 3), order='F' ) @ _rgb2ycbcr_rec709.transpose()).reshape( (RGB.shape), order='F' ) + + YUV_fixed = self.float2fixed( YUV, bit_depth ) + + Y = YUV_fixed[:,:,0] + u = YUV_fixed[:,:,1] + v = YUV_fixed[:,:,2] + + if type == 'T': + Y.tofile(self.T_enc_file) + u.tofile(self.T_enc_file) + v.tofile(self.T_enc_file) + elif type == 'R': + Y.tofile(self.R_enc_file) + u.tofile(self.R_enc_file) + v.tofile(self.R_enc_file) + + # For now this code operates only on array vectors (Because there is no available torch.uint16) + def float2fixed(self,YCbCr,nbit): + + offset = (2**(nbit-8))*16 + weight = (2**(nbit-8))*219 + max_lum = (2**nbit)-1 + + if nbit<=8: + dtype = np.uint8 + else: + dtype = np.uint16 + + Y = np.round(weight*YCbCr[:,:,0]+offset).clip(0,max_lum).astype(dtype) + + offset = (2**(nbit-8)) * 128 + weight = (2**(nbit-8)) * 224 + + U = np.round(weight*YCbCr[:,:,1]+offset).clip(0,max_lum).astype(dtype) + V = np.round(weight*YCbCr[:,:,2]+offset).clip(0,max_lum).astype(dtype) + + return np.concatenate( (Y[:,:,np.newaxis], U[:,:,np.newaxis], V[:,:,np.newaxis]), axis=2 ) \ No newline at end of file diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 5135329..b8e3f3c 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -202,26 +202,30 @@ def decode(self, V): Y = ((V_p - self.p[0]).clip(min=0)/(self.p[1] - self.p[2]*V_p))**(1/self.p[3]) return Y -class SCIELAB_filter(): +class SCIELAB_filter: # apply S-CIELAB filtering - XYZ_to_opp = ( + XYZ_to_opp_mat = ( (0.2787,0.7218,-0.1066), (-0.4488,0.2898,0.0772), (0.0860,-0.5900,0.5011) ) - + + def __init__(self, device): + # Since the matrices are needed for multiple calls, move it to device only once + self.XYZ_to_opp_mat = torch.as_tensor(self.XYZ_to_opp_mat, device=device) + self.opp_to_XYZ_mat = torch.inverse(self.XYZ_to_opp_mat) + self.device = device + def xyz_to_opp(self, img): - mat = torch.as_tensor( self.XYZ_to_opp, dtype=img.dtype, device=img.device) OPP = torch.empty_like(img) for cc in range(3): - OPP[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + OPP[...,cc,:,:,:] = torch.sum(img*(self.XYZ_to_opp_mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) return OPP def opp_to_xyz(self, img): - mat = torch.as_tensor( np.linalg.inv(self.XYZ_to_opp), dtype=img.dtype, device=img.device) XYZ = torch.empty_like(img) for cc in range(3): - XYZ[...,cc,:,:,:] = torch.sum(img*(mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + XYZ[...,cc,:,:,:] = torch.sum(img*(self.opp_to_XYZ_mat[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) return XYZ def gauss(self, halfWidth, width): @@ -325,7 +329,7 @@ def resize_torch(self, orig, newSize, align=[0, 0], padding=0): m = np.minimum(m1, m2) n = np.minimum(n1, n2) - result = torch.ones((m2, n2), dtype=torch.double) * padding + result = torch.ones((m2, n2), device=orig.device) * padding start1 = np.array([np.floor((m1 - m) / 2 * (1 + align[0])), np.floor((n1 - n) / 2 * (1 + align[1]))]) + 1 start2 = np.array([np.floor((m2 - m) / 2 * (1 + align[0])), np.floor((n2 - n) / 2 * (1 + align[1]))]) + 1 @@ -354,8 +358,15 @@ def conv2(self, x, y, mode='full'): def conv2_torch(self, x, y, mode='full'): # While Matlab's conv2 results in artifacts on the bottom and right of an image, # scipy.signal.convolve2d has the same artifacts on the top and left of an image. - # Tried tensor.nn.conv2d: Doesn't support the "full" discrete linear convolution mode - return torch.rot90(torch.as_tensor(convolve2d(torch.rot90(x, 2), torch.rot90(y, 2), mode=mode)), 2) + # Ignore these differences, they are much smaller than inaccuracy between torch and scipy + + # torch.nn.functional.conv2d actually computes cross-correlation + # flip the kernel to get convolution + # Order of errors (w.r.t scipy) is ~5e-7 when the input values are in range(0, 170). + # TODO: Investigate further if precision is important + x = x.view(1,1,*x.shape) + y = y.flip(dims=(0,1)).view(1,1,*y.shape) + return torch.nn.functional.conv2d(x, y, padding=[dim-1 for dim in y.shape[-2:]]).squeeze() def separableFilters(self, sampPerDeg): # not full implementation but correct for S-CIELAB usage. @@ -529,8 +540,7 @@ def separableConv_torch(self, im, xkernels, ykernels): w1 = self.pad4conv_torch(im, xkernels.shape[1], 2) - - result = torch.empty_like(im) + result = torch.zeros_like(im) for j in range(xkernels.shape[0]): # first convovle in the horizontal direction p = self.conv2_torch(w1, xkernels[j,:].reshape(1,-1)) @@ -627,72 +637,70 @@ def pad4conv_torch(self, im, kernelsize, dim): return newim -class CIE_DeltaE(): +def deltaE00(Lab1, Lab2, paramFctr = [1,1,1]): - def deltaE00(self, Lab1, Lab2, paramFctr = [1,1,1]): + kL = paramFctr[0]; kC = paramFctr[1]; kH = paramFctr[2] - kL = paramFctr[0]; kC = paramFctr[1]; kH = paramFctr[2] - - #a1 = np.power(Lab1[1,:],2) - #b1 = np.power(Lab1[2,:],2) - #c1 = a1 + b1 - - # CIELAB Chroma - C1 = torch.sqrt( torch.pow(Lab1[1,:],2) + torch.pow(Lab1[2,:],2) ) - C2 = torch.sqrt( torch.pow(Lab2[1,:],2) + torch.pow(Lab2[2,:],2) ) - - # Lab Prime - mC = torch.add(C1,C2)/2 - G = 0.5*( 1 - torch.sqrt( torch.divide( torch.pow(mC,7) , torch.pow(mC,7)+25**7 ) )) - LabP1 = torch.vstack( (Lab1[0,:], Lab1[1,:]*(1+G), Lab1[2,:]) ) - LabP2 = torch.vstack( (Lab2[0,:], Lab2[1,:]*(1+G), Lab2[2,:]) ) - - # Chroma - CP1 = torch.sqrt( torch.pow(LabP1[1,:],2) + torch.pow(LabP1[2,:],2) ) - CP2 = torch.sqrt( torch.pow(LabP2[1,:],2) + torch.pow(LabP2[2,:],2) ) - - # Hue Angle - hP1 = torch.arctan2( LabP1[2,:],LabP1[1,:] ) * 180/torch.pi # varies from -180 to +180 degree - hP2 = torch.arctan2( LabP2[2,:],LabP2[1,:] ) * 180/torch.pi # varies from -180 to +180 degree - hP1[hP1<0] = hP1[hP1<0] + 360 # varies from 0 to +360 degree - hP2[hP2<0] = hP2[hP2<0] + 360 # varies from 0 to +360 degree - - - # Delta Values - DLP = LabP1[0,:] - LabP2[0,:] - DCP = CP1 - CP2 - DhP = hP1 - hP2; DhP[DhP>180] = DhP[DhP>180]-360; DhP[DhP<-180] = DhP[DhP<-180]+360 - DHP = torch.multiply( 2*torch.sqrt(torch.multiply(CP1,CP2)), torch.sin( DhP/2.*torch.pi/180. ) ) - - # Arithmetic mean of LCh' values - mLP = ( LabP1[0,:]+LabP2[0,:] )/2 - mCP = (CP1+CP2)/2 - mhP = torch.zeros_like(mCP) - # for k in range(0,mhP.numel()): - # if abs(hP1[k]-hP2[k])<=180: - # mhP[k] = (hP1[k]+hP2[k])/2 - # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]<360: - # mhP[k] = (hP1[k]+hP2[k]+360)/2 - # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]>=360: - # mhP[k] = (hP1[k]+hP2[k]-360)/2 - mask1 = torch.abs(hP1-hP2) <= 180 - mhP[mask1] = (hP1+hP2)[mask1]/2 - mask2 = (hP1+hP2) < 360 - mhP[torch.logical_and(torch.logical_not(mask1), mask2)] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), mask2)]+360)/2 - mhP[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))]-360)/2 - - # Weighting Functions - SL = 1 + torch.divide( 0.015*torch.pow(mLP-50,2), torch.sqrt( 20+torch.pow(mLP-50,2) ) ) - SC = 1+0.045*mCP - T = 1-0.17*torch.cos((mhP-30)*torch.pi/180.)+0.24*torch.cos((2*mhP)*torch.pi/180.)+0.32*torch.cos((3*mhP+6)*torch.pi/180.)-0.2*torch.cos((4*mhP-63)*torch.pi/180.) - SH = 1+0.015*torch.multiply(mCP,T) - - # Rotation function - RC = 2 * torch.sqrt(torch.divide( torch.pow(mCP,7), torch.pow(mCP,7)+25**7 )) - # DTheta = 30.*exp(-((mhP-275)./25).^2) - DTheta = 30 * torch.exp(-torch.pow( (mhP-275)/25,2 )) - RT = torch.multiply( -torch.sin(2*DTheta*torch.pi/180.), RC ) - - dE00 = torch.sqrt( torch.pow( torch.divide(DLP,kL*SL) ,2) + torch.pow( torch.divide(DCP,kC*SC) ,2) + torch.pow( torch.divide(DHP,kH*SH) ,2) - + torch.multiply(RT, torch.multiply( torch.divide(DCP,kC*SC), torch.divide(DHP,kH*SH) ) )) - return dE00 \ No newline at end of file + #a1 = np.power(Lab1[1,:],2) + #b1 = np.power(Lab1[2,:],2) + #c1 = a1 + b1 + + # CIELAB Chroma + C1 = torch.sqrt( torch.pow(Lab1[1,:],2) + torch.pow(Lab1[2,:],2) ) + C2 = torch.sqrt( torch.pow(Lab2[1,:],2) + torch.pow(Lab2[2,:],2) ) + + # Lab Prime + mC = torch.add(C1,C2)/2 + G = 0.5*( 1 - torch.sqrt( torch.divide( torch.pow(mC,7) , torch.pow(mC,7)+25**7 ) )) + LabP1 = torch.vstack( (Lab1[0,:], Lab1[1,:]*(1+G), Lab1[2,:]) ) + LabP2 = torch.vstack( (Lab2[0,:], Lab2[1,:]*(1+G), Lab2[2,:]) ) + + # Chroma + CP1 = torch.sqrt( torch.pow(LabP1[1,:],2) + torch.pow(LabP1[2,:],2) ) + CP2 = torch.sqrt( torch.pow(LabP2[1,:],2) + torch.pow(LabP2[2,:],2) ) + + # Hue Angle + hP1 = torch.arctan2( LabP1[2,:],LabP1[1,:] ) * 180/torch.pi # varies from -180 to +180 degree + hP2 = torch.arctan2( LabP2[2,:],LabP2[1,:] ) * 180/torch.pi # varies from -180 to +180 degree + hP1[hP1<0] = hP1[hP1<0] + 360 # varies from 0 to +360 degree + hP2[hP2<0] = hP2[hP2<0] + 360 # varies from 0 to +360 degree + + + # Delta Values + DLP = LabP1[0,:] - LabP2[0,:] + DCP = CP1 - CP2 + DhP = hP1 - hP2; DhP[DhP>180] = DhP[DhP>180]-360; DhP[DhP<-180] = DhP[DhP<-180]+360 + DHP = torch.multiply( 2*torch.sqrt(torch.multiply(CP1,CP2)), torch.sin( DhP/2.*torch.pi/180. ) ) + + # Arithmetic mean of LCh' values + mLP = ( LabP1[0,:]+LabP2[0,:] )/2 + mCP = (CP1+CP2)/2 + mhP = torch.zeros_like(mCP) + # for k in range(0,mhP.numel()): + # if abs(hP1[k]-hP2[k])<=180: + # mhP[k] = (hP1[k]+hP2[k])/2 + # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]<360: + # mhP[k] = (hP1[k]+hP2[k]+360)/2 + # elif abs(hP1[k]-hP2[k])>180 and hP1[k]+hP2[k]>=360: + # mhP[k] = (hP1[k]+hP2[k]-360)/2 + mask1 = torch.abs(hP1-hP2) <= 180 + mhP[mask1] = (hP1+hP2)[mask1]/2 + mask2 = (hP1+hP2) < 360 + mhP[torch.logical_and(torch.logical_not(mask1), mask2)] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), mask2)]+360)/2 + mhP[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))] = ((hP1+hP2)[torch.logical_and(torch.logical_not(mask1), torch.logical_not(mask2))]-360)/2 + + # Weighting Functions + SL = 1 + torch.divide( 0.015*torch.pow(mLP-50,2), torch.sqrt( 20+torch.pow(mLP-50,2) ) ) + SC = 1+0.045*mCP + T = 1-0.17*torch.cos((mhP-30)*torch.pi/180.)+0.24*torch.cos((2*mhP)*torch.pi/180.)+0.32*torch.cos((3*mhP+6)*torch.pi/180.)-0.2*torch.cos((4*mhP-63)*torch.pi/180.) + SH = 1+0.015*torch.multiply(mCP,T) + + # Rotation function + RC = 2 * torch.sqrt(torch.divide( torch.pow(mCP,7), torch.pow(mCP,7)+25**7 )) + # DTheta = 30.*exp(-((mhP-275)./25).^2) + DTheta = 30 * torch.exp(-torch.pow( (mhP-275)/25,2 )) + RT = torch.multiply( -torch.sin(2*DTheta*torch.pi/180.), RC ) + + dE00 = torch.sqrt( torch.pow( torch.divide(DLP,kL*SL) ,2) + torch.pow( torch.divide(DCP,kC*SC) ,2) + torch.pow( torch.divide(DHP,kH*SH) ,2) + + torch.multiply(RT, torch.multiply( torch.divide(DCP,kC*SC), torch.divide(DHP,kH*SH) ) )) + return dE00 \ No newline at end of file From d53cb0780c5cad1e54e16d2b0b13f61b35a3ed90 Mon Sep 17 00:00:00 2001 From: Param Date: Wed, 1 Feb 2023 22:34:24 +0000 Subject: [PATCH 36/67] Updated luminance clipping for some metrics --- pycvvdp/pu_lpips.py | 8 ++++++-- pycvvdp/pu_vmaf.py | 20 ++++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py index b9a22ad..eb2e27e 100644 --- a/pycvvdp/pu_lpips.py +++ b/pycvvdp/pu_lpips.py @@ -44,11 +44,15 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # Apply PU and reshape to (1,C,H,W) # Input pixels shoulb lie in [-1,1] - T_enc = self.pu.encode(T).squeeze(2) / 255. * 2 - 1 - R_enc = self.pu.encode(R).squeeze(2) / 255. * 2 - 1 + T_enc = self.pu.encode(T.clip(0, self.max_L)).squeeze(2) / 255. * 2 - 1 + R_enc = self.pu.encode(R.clip(0, self.max_L)).squeeze(2) / 255. * 2 - 1 quality += self.lpips(T_enc, R_enc) / N_frames return quality, None def short_name(self): return 'PU21-LPIPS' + + def set_display_model(self, display_photometry, display_geometry): + self.max_L = display_photometry.get_peak_luminance() + self.max_L = min(self.max_L, 300) diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index df1e644..e75e9a2 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -1,5 +1,6 @@ import json import os, os.path as osp +from tqdm import trange import torch from pycvvdp.utils import PU @@ -22,13 +23,13 @@ def __init__(self, ffmpeg_bin, cache_ref_loc='.', device=None): self.device = device self.pu = PU() - assert osp.isdir(cache_ref_loc), f'Please create the directory to cache: {cache_ref_loc}' + if not osp.isdir(cache_ref_loc): + os.makedirs(cache_ref_loc) + self.T_enc_path = osp.join(cache_ref_loc, 'temp_test.yuv') self.R_enc_path = osp.join(cache_ref_loc, 'temp_ref.yuv') self.output_file = osp.join(cache_ref_loc, 'vmaf_output.json') - self.T_enc_file = open(self.T_enc_path,'w') - self.R_enc_file = open(self.R_enc_path,'w') self.colorspace = 'RGB709' self.ffmpeg_bin = ffmpeg_bin @@ -48,14 +49,17 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): h, w, N_frames = vid_source.get_video_size() - for ff in range(N_frames): + self.T_enc_file = open(self.T_enc_path,'w') + self.R_enc_file = open(self.R_enc_path,'w') + + for ff in trange(N_frames, leave=False): T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) # Apply PU - T_enc = self.pu.encode(T) / self.pu.encode(self.max_L) + T_enc = self.pu.encode(T.clip(0, self.max_L)) T_enc_np = T_enc.squeeze().permute(1,2,0).cpu().numpy() - R_enc = self.pu.encode(R) / self.pu.encode(self.max_L) + R_enc = self.pu.encode(R.clip(0, self.max_L)) R_enc_np = R_enc.squeeze().permute(1,2,0).cpu().numpy() # Save the output as yuv file @@ -77,7 +81,7 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): quality = results['pooled_metrics']['vmaf']['mean'] os.remove(self.T_enc_path) - os.remove(self.T_enc_path) + os.remove(self.R_enc_path) os.remove(self.output_file) return torch.tensor(quality), None @@ -86,7 +90,7 @@ def short_name(self): def set_display_model(self, display_photometry, display_geometry): self.max_L = display_photometry.get_peak_luminance() - self.max_L = np.where( self.max_L < 300, self.max_L, 300) + self.max_L = min(self.max_L, 300) # This function takes into input an encoded RGB709 frame and saves it as a yuv file (it operates only on numpy arrays) def write_yuv_frame( self, RGB ,bit_depth=10,type = 'T'): From 089f6b4954ced9aad88b56ecad6177eaf10e49c6 Mon Sep 17 00:00:00 2001 From: param Date: Tue, 14 Feb 2023 16:14:22 +0000 Subject: [PATCH 37/67] Added cvvdp with RNN pooling --- pycvvdp/__init__.py | 1 + pycvvdp/cvvdp_metric.py | 4 +-- pycvvdp/cvvdp_rnn_metric.py | 69 +++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 pycvvdp/cvvdp_rnn_metric.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index f95ac7f..9186f17 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,4 +1,5 @@ from pycvvdp.cvvdp_metric import cvvdp +from pycvvdp.cvvdp_rnn_metric import cvvdp_rnn from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 431dc2f..1861a46 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -318,7 +318,7 @@ def predict_video_source(self, vid_source): Q_per_ch[:,ff:(ff+Q_per_ch_block.shape[1]),:] = Q_per_ch_block rho_band = self.lpyr.get_freqs() - Q_jod = self.do_pooling_and_jods(Q_per_ch, rho_band[0:-1]) + Q_jod = self.do_pooling_and_jods(Q_per_ch, rho_band[-1]) stats = {} stats['Q_per_ch'] = Q_per_ch.detach().cpu().numpy() # the quality per channel and per frame @@ -344,7 +344,7 @@ def predict_video_source(self, vid_source): return (Q_jod.squeeze(), stats) # Perform pooling with per-band weights and map to JODs - def do_pooling_and_jods(self, Q_per_ch, rho_band): + def do_pooling_and_jods(self, Q_per_ch, base_rho_band): # Q_per_ch[channel,frame,sp_band] # Weights for the two temporal channels diff --git a/pycvvdp/cvvdp_rnn_metric.py b/pycvvdp/cvvdp_rnn_metric.py new file mode 100644 index 0000000..5bdf8b8 --- /dev/null +++ b/pycvvdp/cvvdp_rnn_metric.py @@ -0,0 +1,69 @@ +from pycvvdp import cvvdp +import torch + +""" +ColourVideoVDP metric. Refer to pytorch_examples for examples on how to use this class. +""" +class cvvdp_rnn(cvvdp): + input_dims = 36 # 9 bands x 4 bands per channel + rho_dims = 1 # Condition on base rho band + + def __init__(self, display_name="standard_4k", display_photometry=None, display_geometry=None, color_space="sRGB", foveated=False, heatmap=None, quiet=False, device=None, temp_padding="replicate", use_checkpoints=False, + hidden_dims=8, num_layers=2, dropout=0.2, pooling='gru', pretrained_net=None): + super().__init__(display_name, display_photometry, display_geometry, color_space, foveated, heatmap, quiet, device, temp_padding, use_checkpoints) + assert pooling in ('base', 'lstm', 'gru') + self.pooling = pooling + rnn_type = {'lstm': torch.nn.LSTM, 'gru': torch.nn.GRU} + if pooling in ('lstm', 'gru'): + recurrent_net = rnn_type[pooling](self.input_dims, hidden_dims, num_layers, dropout=dropout) + linear = torch.nn.Sequential( + torch.nn.Linear(hidden_dims + self.rho_dims, 1), # rho_band appended here + torch.nn.Sigmoid() + ) + self.pooling_net = torch.nn.Sequential(recurrent_net, linear) + + # Load network weights + if pretrained_net is not None: + checkpoint = torch.load(pretrained_net) + self.pooling_net.load_state_dict(checkpoint['state_dict']) + + self.pooling_net.to(self.device) + self.pooling_net.eval() + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, features_provided=False): + if not features_provided: + return super().predict_video_source(vid_source) + else: + Q_jod = self.do_pooling_and_jods(*vid_source) + + stats = {} + return (Q_jod.squeeze(), stats) + + # Perform pooling with per-band weights and map to JODs + def do_pooling_and_jods(self, Q_per_ch, base_rho_band): + if self.pooling == 'base': + return super().do_pooling_and_jods(Q_per_ch, base_rho_band) + # Q_per_ch[channel,frame,sp_band] + feat_in = Q_per_ch.permute(1, 0, 2).flatten(start_dim=1) + feat_intermediate, _ = self.pooling_net[0](feat_in) + feat_intermediate = torch.cat((feat_intermediate[-1], base_rho_band.unsqueeze(0))) + Q = self.pooling_net[1](feat_intermediate).squeeze() * 10 + return Q + + def short_name(self): + return "cvvdp_rnn" + + def quality_unit(self): + return "JOD" + + def get_info_string(self): + if self.display_name.startswith('standard_'): + #append this if are using one of the standard displays + standard_str = ', (' + self.display_name + ')' + else: + standard_str = '' + fv_mode = 'foveated' if self.foveated else 'non-foveated' + return '"ColourVideoVDP with {} v{}, {:.4g} [pix/deg], Lpeak={:.5g}, Lblack={:.4g} [cd/m^2], {}{}"'.format(self.pooling, self.version, self.pix_per_deg, self.display_photometry.get_peak_luminance(), self.display_photometry.get_black_level(), fv_mode, standard_str) From 79baab6953c193d98a62c25688108701d4b6674e Mon Sep 17 00:00:00 2001 From: param Date: Fri, 17 Feb 2023 12:27:08 +0000 Subject: [PATCH 38/67] Added MLP masking model --- pycvvdp/__init__.py | 2 +- ...cvvdp_rnn_metric.py => cvvdp_nn_metric.py} | 59 +++++++++++++++---- 2 files changed, 50 insertions(+), 11 deletions(-) rename pycvvdp/{cvvdp_rnn_metric.py => cvvdp_nn_metric.py} (56%) diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 9186f17..0acb936 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,5 +1,5 @@ from pycvvdp.cvvdp_metric import cvvdp -from pycvvdp.cvvdp_rnn_metric import cvvdp_rnn +from pycvvdp.cvvdp_nn_metric import cvvdp_nn from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp diff --git a/pycvvdp/cvvdp_rnn_metric.py b/pycvvdp/cvvdp_nn_metric.py similarity index 56% rename from pycvvdp/cvvdp_rnn_metric.py rename to pycvvdp/cvvdp_nn_metric.py index 5bdf8b8..f340e43 100644 --- a/pycvvdp/cvvdp_rnn_metric.py +++ b/pycvvdp/cvvdp_nn_metric.py @@ -1,31 +1,46 @@ from pycvvdp import cvvdp import torch +from torchvision.ops import MLP + +def load_ckpt(ckpt_path, net): + # Load network weights + if ckpt_path is not None: + checkpoint = torch.load(ckpt_path) + net.load_state_dict(checkpoint['state_dict']) + return net """ ColourVideoVDP metric. Refer to pytorch_examples for examples on how to use this class. """ -class cvvdp_rnn(cvvdp): - input_dims = 36 # 9 bands x 4 bands per channel - rho_dims = 1 # Condition on base rho band +class cvvdp_nn(cvvdp): + input_dims_masking = 6 # T, R, S, T*S, R*S, abs(T-R)*S + input_dims_pooling = 36 # 9 bands x 4 bands per channel + rho_dims = 1 # Condition on base rho band def __init__(self, display_name="standard_4k", display_photometry=None, display_geometry=None, color_space="sRGB", foveated=False, heatmap=None, quiet=False, device=None, temp_padding="replicate", use_checkpoints=False, - hidden_dims=8, num_layers=2, dropout=0.2, pooling='gru', pretrained_net=None): + hidden_dims=8, num_layers=2, dropout=0.2, masking='base', masking_ckpt=None, pooling='base', pooling_ckpt=None): super().__init__(display_name, display_photometry, display_geometry, color_space, foveated, heatmap, quiet, device, temp_padding, use_checkpoints) + + assert masking in ('base', 'mlp') + self.masking = masking + if masking == 'mlp': + # Separate args (hidden_dims, dropout, num_layers, etc) for masking net + self.masking_net = MLP(self.input_dims_masking, [hidden_dims]*num_layers + [1], activation_layer=torch.nn.ReLU, dropout=dropout) + self.masking_net = load_ckpt(masking_ckpt, self.masking_net) + self.masking_net.to(self.device) + self.masking_net.eval() + assert pooling in ('base', 'lstm', 'gru') self.pooling = pooling rnn_type = {'lstm': torch.nn.LSTM, 'gru': torch.nn.GRU} if pooling in ('lstm', 'gru'): - recurrent_net = rnn_type[pooling](self.input_dims, hidden_dims, num_layers, dropout=dropout) + recurrent_net = rnn_type[pooling](self.input_dims_pooling, hidden_dims, num_layers, dropout=dropout) linear = torch.nn.Sequential( torch.nn.Linear(hidden_dims + self.rho_dims, 1), # rho_band appended here torch.nn.Sigmoid() ) self.pooling_net = torch.nn.Sequential(recurrent_net, linear) - - # Load network weights - if pretrained_net is not None: - checkpoint = torch.load(pretrained_net) - self.pooling_net.load_state_dict(checkpoint['state_dict']) + self.pooling_net = load_ckpt(pooling_ckpt, self.pooling_net) self.pooling_net.to(self.device) self.pooling_net.eval() @@ -42,6 +57,18 @@ def predict_video_source(self, vid_source, features_provided=False): stats = {} return (Q_jod.squeeze(), stats) + def apply_masking_model(self, T, R, S): + if self.masking == 'base': + return super().apply_masking_model(T, R, S) + else: + c, _, h, w = T.shape + if S.dim() == 0: + S = torch.full_like(T, S) + T, R, S = T.flatten(), R.flatten(), S.flatten() + feat_in = torch.stack((T, R, S, T*S, R*S, torch.abs(T - R)*S), dim=-1) + D = self.masking_net(feat_in).reshape(c, 1, h, w) + return D + # Perform pooling with per-band weights and map to JODs def do_pooling_and_jods(self, Q_per_ch, base_rho_band): if self.pooling == 'base': @@ -67,3 +94,15 @@ def get_info_string(self): standard_str = '' fv_mode = 'foveated' if self.foveated else 'non-foveated' return '"ColourVideoVDP with {} v{}, {:.4g} [pix/deg], Lpeak={:.5g}, Lblack={:.4g} [cd/m^2], {}{}"'.format(self.pooling, self.version, self.pix_per_deg, self.display_photometry.get_peak_luminance(), self.display_photometry.get_black_level(), fv_mode, standard_str) + + def train(self): + if self.masking == 'mlp': + self.masking_net.train() + if self.pooling in ('lstm', 'gru'): + self.pooling_net.train() + + def eval(self): + if self.masking == 'mlp': + self.masking_net.eval() + if self.pooling in ('lstm', 'gru'): + self.pooling_net.eval() From fee6cfd4183e92fc4a40bf4e6d10b53ec52d8e83 Mon Sep 17 00:00:00 2001 From: Param Date: Fri, 17 Feb 2023 18:07:33 +0000 Subject: [PATCH 39/67] Minor fixes to run other metrics --- pycvvdp/e_sitp.py | 2 +- pycvvdp/pu_vmaf.py | 4 ++++ pycvvdp/utils.py | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index 9277428..5b34c7d 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -19,7 +19,7 @@ def __init__(self, device=None): else: self.device = device - self.sitp = SCIELAB_filter() + self.sitp = SCIELAB_filter(device=device) self.colorspace = 'LMShpe' ''' diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index e75e9a2..c229114 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -32,6 +32,10 @@ def __init__(self, ffmpeg_bin, cache_ref_loc='.', device=None): self.colorspace = 'RGB709' self.ffmpeg_bin = ffmpeg_bin + + # Empty constructor to retrieve name + def __init__(self): + pass ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index b8e3f3c..afa04e5 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -627,13 +627,13 @@ def pad4conv_torch(self, im, kernelsize, dim): if h != 0 and dim != 2: im1 = torch.flipud(newim[0:h, :]) im2 = torch.flipud(newim[m - h:m, :]) - newim = torch.concatenate((im1, newim, im2), axis=0) + newim = torch.cat((im1, newim, im2), axis=0) # then reflect the left and right sides if w != 0 and dim != 1: im1 = torch.fliplr(newim[:, 0:w]) im2 = torch.fliplr(newim[:, n - w:n]) - newim = torch.concatenate((im1, newim, im2), axis=1) + newim = torch.cat((im1, newim, im2), axis=1) return newim @@ -703,4 +703,4 @@ def deltaE00(Lab1, Lab2, paramFctr = [1,1,1]): dE00 = torch.sqrt( torch.pow( torch.divide(DLP,kL*SL) ,2) + torch.pow( torch.divide(DCP,kC*SC) ,2) + torch.pow( torch.divide(DHP,kH*SH) ,2) + torch.multiply(RT, torch.multiply( torch.divide(DCP,kC*SC), torch.divide(DHP,kH*SH) ) )) - return dE00 \ No newline at end of file + return dE00 From c1d312a09b7802a9fb59708ddca07d19b7800258 Mon Sep 17 00:00:00 2001 From: Param Date: Sat, 4 Mar 2023 16:45:36 +0000 Subject: [PATCH 40/67] Minor changes to run metrics --- pycvvdp/pu_lpips.py | 1 + pycvvdp/pu_vmaf.py | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py index eb2e27e..9c5a017 100644 --- a/pycvvdp/pu_lpips.py +++ b/pycvvdp/pu_lpips.py @@ -20,6 +20,7 @@ def __init__(self, device=None, net='vgg'): self.device = device self.pu = PU() + # Default versions uses VGG net self.lpips = LPIPS(net=net) self.lpips.to(self.device) self.colorspace = 'RGB2020' diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index c229114..d37897c 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -12,7 +12,11 @@ Required: ffmpeg compiled with libvmaf (https://github.com/Netflix/vmaf/blob/master/resource/doc/ffmpeg.md) """ class pu_vmaf(vq_metric): - def __init__(self, ffmpeg_bin, cache_ref_loc='.', device=None): + def __init__(self, ffmpeg_bin=None, cache_ref_loc='.', device=None): + if ffmpeg_bin is None: + # Empty constructor to retrieve name + pass + # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -32,10 +36,6 @@ def __init__(self, ffmpeg_bin, cache_ref_loc='.', device=None): self.colorspace = 'RGB709' self.ffmpeg_bin = ffmpeg_bin - - # Empty constructor to retrieve name - def __init__(self): - pass ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. From 9ac4d43f3478af8579759f08e32ec0af34a4b8b8 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Tue, 7 Mar 2023 20:52:26 +0000 Subject: [PATCH 41/67] PSNR MSE function added --- pycvvdp/__init__.py | 2 +- pycvvdp/pupsnr.py | 46 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 0acb936..5ec68f3 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,6 +1,6 @@ from pycvvdp.cvvdp_metric import cvvdp from pycvvdp.cvvdp_nn_metric import cvvdp_nn -from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020 +from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020, pu_psnr_mse_y from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp from pycvvdp.de2000 import de2000 diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index 9438e98..743a0bc 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -49,10 +49,6 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames return psnr, None - def psnr_fn(self, img1, img2): - mse = torch.mean( (img1 - img2)**2 ) - return 20*torch.log10( self.pu.peak/torch.sqrt(mse) ) - def short_name(self): return "PU21-PSNR-Y" @@ -66,4 +62,46 @@ def __init__(self, device=None): def short_name(self): return "PU21-PSNR-RGB2020" + +class pu_psnr_mse_y(pu_psnr_y): + def __init__(self, device=None): + super().__init__(device) + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,1,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + mse = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # Apply PU + T_enc = self.pu.encode(T) + R_enc = self.pu.encode(R) + + mse = mse + self.mse_fn(T_enc, R_enc) / N_frames + + psnr = 20*torch.log10( self.pu.peak/torch.sqrt(mse) ) + + return psnr, None + + def mse_fn(self, img1, img2): + return torch.mean( (img1 - img2)**2 ) + + def short_name(self): + return "PU21-PSNR-MSE-Y" + From b573e28034568a9a030c470669f384972914589d Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Wed, 8 Mar 2023 19:22:26 +0000 Subject: [PATCH 42/67] Function definition for psnr mse --- pycvvdp/__init__.py | 2 +- pycvvdp/pupsnr.py | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 5ec68f3..039f239 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,6 +1,6 @@ from pycvvdp.cvvdp_metric import cvvdp from pycvvdp.cvvdp_nn_metric import cvvdp_nn -from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020, pu_psnr_mse_y +from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020, pu_psnr_mse_y, pu_psnr_mse_rgb2020 from pycvvdp.e_itp import e_itp from pycvvdp.e_sitp import e_sitp from pycvvdp.de2000 import de2000 diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index 743a0bc..a1c0197 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -45,10 +45,19 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # Apply PU T_enc = self.pu.encode(T) R_enc = self.pu.encode(R) - - psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames + + if torch.sum(T_enc != R_enc): + psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames + else: # If T_enc and R_enc are the same, psnr value is set to zero + psnr = psnr + 0 + + #psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames return psnr, None - + + def psnr_fn(self, img1, img2): + mse = torch.mean( (img1 - img2)**2 ) + return 20*torch.log10( self.pu.peak/torch.sqrt(mse) ) + def short_name(self): return "PU21-PSNR-Y" @@ -104,4 +113,10 @@ def mse_fn(self, img1, img2): def short_name(self): return "PU21-PSNR-MSE-Y" - +class pu_psnr_mse_rgb2020(pu_psnr_mse_y): + def __init__(self, device=None): + super().__init__(device) + self.colorspace = 'RGB2020' + + def short_name(self): + return "PU21-PSNR-MSE-RGB2020" \ No newline at end of file From a76bdcf4a1b64a8d520418a436de7333dba45e9d Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Tue, 21 Mar 2023 17:38:30 +0000 Subject: [PATCH 43/67] Updated spatial E-ITP --- pycvvdp/e_sitp.py | 59 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/pycvvdp/e_sitp.py b/pycvvdp/e_sitp.py index 5b34c7d..7cc7b19 100644 --- a/pycvvdp/e_sitp.py +++ b/pycvvdp/e_sitp.py @@ -20,7 +20,16 @@ def __init__(self, device=None): self.device = device self.sitp = SCIELAB_filter(device=device) - self.colorspace = 'LMShpe' + #self.colorspace = 'LMShpe' + self.colorspace = 'XYZ' + self.XYZ2LMS = torch.tensor(((0.3593, -0.1921, 0.0071), + (0.6976, 1.1005, 0.0748), + (-0.0359, 0.0754, 0.8433)), device=self.device).T + self.LMS2ICTCP = torch.tensor(((2048, 2048, 0), + (6610, -13613, 7003), + (17933, -17390, -543)), device=self.device)/4096 + self.jnd_scaling = torch.tensor((720, 360, 720), device=self.device).view(1,3,1,1,1) + # ICTCP = bsxfun(@times, invEOTF(XYZ * XYZ2LMSmat) * LMS2ICTCPmat, [720, 360, 720]); ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. @@ -43,21 +52,42 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) - # LMS_HPE to LMS_HPE_Lin - T_lms_lin = self.lmshpe_to_lmshpelin(T) - R_lms_lin = self.lmshpe_to_lmshpelin(R) + ## LMS_HPE to LMS_HPE_Lin + #T_lms_lin = self.lmshpe_to_lmshpelin(T) + #R_lms_lin = self.lmshpe_to_lmshpelin(R) - # LMS_HPE_Lin to ITP - T_itp = self.lmshpelin_to_itp(T_lms_lin) - R_itp = self.lmshpelin_to_itp(R_lms_lin) + ## LMS_HPE_Lin to ITP + #T_itp = self.lmshpelin_to_itp(T_lms_lin) + #R_itp = self.lmshpelin_to_itp(R_lms_lin) - # ITP to Spatial ITP - T_sitp = self.itp_to_sitp(T_itp, self.ppd) - R_sitp = self.itp_to_sitp(R_itp, self.ppd) + ## ITP to Spatial ITP + #T_sitp = self.itp_to_sitp(T_itp, self.ppd) + #R_sitp = self.itp_to_sitp(R_itp, self.ppd) - esitp = esitp + self.eitp_fn(T_sitp, R_sitp) / N_frames + T_lms_prime = self.invEOTF(self.colorspace_conversion(T, self.XYZ2LMS)) + R_lms_prime = self.invEOTF(self.colorspace_conversion(R, self.XYZ2LMS)) + + T_ictcp = self.colorspace_conversion(T_lms_prime, self.LMS2ICTCP) + R_ictcp = self.colorspace_conversion(R_lms_prime, self.LMS2ICTCP) + + # ICTCP to Spatial ICTCP + T_sitp = self.itp_to_sitp(T_ictcp, self.ppd) + R_sitp = self.itp_to_sitp(R_ictcp, self.ppd) + + esitp = esitp + self.delta_itp(T_sitp, R_sitp) / N_frames return esitp, None + def invEOTF(self, lin): + return (((3424/4096)+(2413/128)*(lin.clip(min=0)/10000)**(2610/16384)) / \ + (1+(2392/128)*(lin.clip(min=0)/10000)**(2610/16384)))**(2523/32) + + def colorspace_conversion(self, img, M): + ABC = torch.empty_like(img) # ABC represents any linear colour space + # To avoid permute (slow), perform separate dot products + for cc in range(3): + ABC[...,cc,:,:,:] = torch.sum(img*(M[cc,:].view(1,3,1,1,1)), dim=-4, keepdim=True) + return ABC + def lmshpe_to_lmshpelin(self, img): lms_lin_pos = img**0.43 lms_lin_neg = -1*(-img)**0.43 @@ -84,7 +114,12 @@ def itp_to_sitp(self, img, ppd): S_ITP[...,1:,:,:] = self.sitp.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, torch.abs(k2)) S_ITP[...,2:,:,:] = self.sitp.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, torch.abs(k3)) return S_ITP - + + def delta_itp(self, img1, img2): + return 720 * torch.sqrt((img1[...,0,:,:,:] - img2[...,0,:,:,:])**2 + + 0.5 * (img1[...,1,:,:,:] - img2[...,1,:,:,:])**2 + + (img1[...,2,:,:,:] - img2[...,2,:,:,:])**2).mean() + def eitp_fn(self, img1, img2): mse = torch.mean(torch.sum( (img1 - img2)**2 )) return torch.sqrt(mse) From b5ed8a64fbdc0fd61ec11648060ad2db2e5c9845 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Wed, 5 Apr 2023 19:03:57 +0100 Subject: [PATCH 44/67] S-DE-2000 pytorch implementation --- pycvvdp/de2000_spatial.py | 20 +++++++++++++++----- pycvvdp/utils.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/pycvvdp/de2000_spatial.py b/pycvvdp/de2000_spatial.py index 75577af..9b75e2f 100644 --- a/pycvvdp/de2000_spatial.py +++ b/pycvvdp/de2000_spatial.py @@ -67,11 +67,21 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): def opp_to_sopp(self, img, ppd): S_OPP = torch.empty_like(img) - # Filters are low-dimensional; construct using np - [k1, k2, k3] = [torch.as_tensor(filter).to(img) for filter in self.slab.separableFilters(ppd)] - S_OPP[...,0:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, torch.abs(k1)) - S_OPP[...,1:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, torch.abs(k2)) - S_OPP[...,2:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, torch.abs(k3)) + ## Filters are low-dimensional; construct using np + #[k1, k2, k3] = [torch.as_tensor(filter).to(img) for filter in self.slab.separableFilters_torch(ppd)] + #S_OPP[...,0:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,0,:,:,:]), k1, torch.abs(k1)) + #S_OPP[...,1:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,1,:,:,:]), k2, torch.abs(k2)) + #S_OPP[...,2:,:,:] = self.slab.separableConv_torch(torch.squeeze(img[...,2,:,:,:]), k3, torch.abs(k3)) + + # Simpler SCIELAB filters implementation + [k1, k2, k3] = self.slab.generateSCIELABfiltersParams(ppd) + # Limit filter width to 1-degree visual angle, and odd number of sampling points + # (so that the gaussians generated from Rick's gauss routine are symmetric). + width = int(np.ceil(ppd / 2) * 2 - 1) + S_OPP[...,0:,:,:] = self.slab.applyGaussFilter(img[...,0,:,:,:], width, k1) + S_OPP[...,1:,:,:] = self.slab.applyGaussFilter(img[...,1,:,:,:], width, k2) + S_OPP[...,2:,:,:] = self.slab.applyGaussFilter(img[...,2,:,:,:], width, k3) + return S_OPP def xyz_to_lab(self, img, W): diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index afa04e5..f9b8a37 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -3,6 +3,8 @@ import numpy as np import json import torch.nn.functional as Func +import torchvision.transforms.functional as gaussFilter + from PIL import Image from scipy.signal import convolve2d @@ -502,7 +504,40 @@ def separableFilters_torch(self, sampPerDeg): k3 = up3[:, downs] return [k1, k2, k3] + + def generateSCIELABfiltersParams(self, sampPerDeg): + # not full implementation but correct for S-CIELAB usage. + # Please refer to original Matlab version + + # if sampPerDeg is smaller than minSAMPPERDEG, need to upsample image data before filtering. + # This can be done equivalently by convolving filters with the upsampling matrix, then downsample it. + dimension=3 + + # these are the same filter parameters, except that the weights are normalized to sum to 1 + # This eliminates the need to normalize after the filters are generated + x1 = np.array([0.05, 1.00327, 0.225, 0.114416, 7.0, -0.117686]) + x2 = np.array([0.0685, 0.616725, 0.826, 0.383275]) + x3 = np.array([0.0920, 0.567885, 0.6451, 0.432115]) + + # Convert the unit of halfwidths from visual angle to pixels. + x1[[0, 2, 4]] = x1[[0, 2, 4]] * sampPerDeg + x2[[0, 2]] = x2[[0, 2]] * sampPerDeg + x3[[0, 2]] = x3[[0, 2]] * sampPerDeg + + return [x1, x2, x3] + + def applyGaussFilter(self, im, width, kernels): + # Apply pytorch Gaussian blur and sum for each channel + result = torch.zeros_like(im) + for j in range(int((kernels.shape[0])/2)): + p = kernels[j*2 + 1]*gaussFilter.gaussian_blur(im, width, kernels[j*2]) + + # result is sum of several separable convolutions + result = result + p + + return result + def separableConv(self, im, xkernels, ykernels): # Two-dimensional convolution with X-Y separable kernels. # From 4832d6cf2cf79c662f340f913e449d272a2aab31 Mon Sep 17 00:00:00 2001 From: Param Date: Mon, 17 Apr 2023 16:05:17 +0100 Subject: [PATCH 45/67] File renamed to work with latest metric_calibration --- pycvvdp/{run_fvvdp.py => run_cvvdp.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pycvvdp/{run_fvvdp.py => run_cvvdp.py} (100%) diff --git a/pycvvdp/run_fvvdp.py b/pycvvdp/run_cvvdp.py similarity index 100% rename from pycvvdp/run_fvvdp.py rename to pycvvdp/run_cvvdp.py From 44a78b023815338dbdf7f645713ba676d9489c8a Mon Sep 17 00:00:00 2001 From: param Date: Mon, 17 Apr 2023 19:36:37 +0100 Subject: [PATCH 46/67] Ported ffmpeg fix for reading long videos --- pycvvdp/video_source_file.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pycvvdp/video_source_file.py b/pycvvdp/video_source_file.py index 4053ae5..0b15880 100644 --- a/pycvvdp/video_source_file.py +++ b/pycvvdp/video_source_file.py @@ -97,10 +97,11 @@ def _setup_ffmpeg(self, vidfile, resize_fn, resize_height, resize_width, verbose self.frame_bytes = int(self.width * self.height * self.bpp) - stream = ffmpeg.output(stream, 'pipe:', format='rawvideo', pix_fmt=out_pix_fmt) + log_level = 'info' if verbose else 'quiet' + stream = ffmpeg.output(stream, 'pipe:', format='rawvideo', pix_fmt=out_pix_fmt).global_args( '-loglevel', log_level ) #.global_args('-hwaccel', 'cuda', '-hwaccel_output_format', 'cuda') - no effect on decoding speed #.global_args( '-loglevel', 'info' ) - self.process = ffmpeg.run_async(stream, pipe_stdout=True, quiet=not verbose) + self.process = ffmpeg.run_async(stream, pipe_stdout=True) def get_frame(self): in_bytes = self.process.stdout.read(self.frame_bytes ) @@ -204,8 +205,9 @@ def _setup_ffmpeg(self, vidfile, resize_fn, resize_height, resize_width, verbose self.resize_width = resize_width stream = ffmpeg.input(vidfile) - stream = ffmpeg.output(stream, 'pipe:', format='rawvideo', pix_fmt=out_pix_fmt) - self.process = ffmpeg.run_async(stream, pipe_stdout=True, quiet=True) + log_level = 'info' if verbose else 'quiet' + stream = ffmpeg.output(stream, 'pipe:', format='rawvideo', pix_fmt=out_pix_fmt).global_args( '-loglevel', log_level ) + self.process = ffmpeg.run_async(stream, pipe_stdout=True) def unpack(self, x, device): Y = x[:self.y_pixels] From 3f37ae695a88c884061c838e5bc230a0d54a17b5 Mon Sep 17 00:00:00 2001 From: param Date: Mon, 17 Apr 2023 20:47:13 +0100 Subject: [PATCH 47/67] Introduced batching and fixed device handling for flip --- pycvvdp/flip.py | 87 ++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 38 deletions(-) diff --git a/pycvvdp/flip.py b/pycvvdp/flip.py index 028fa12..97ed6b3 100644 --- a/pycvvdp/flip.py +++ b/pycvvdp/flip.py @@ -8,7 +8,7 @@ HDR-FLIP """ class flip(vq_metric): - def __init__(self, device=None): + def __init__(self, device=None, block_size=32): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -19,8 +19,9 @@ def __init__(self, device=None): self.device = device self.ppd = None - self.flip = HDRFLIPLoss() + self.flip = HDRFLIPLoss(device=device) self.colorspace = 'RGB2020' + self.block_size = block_size def predict_video_source(self, vid_source, frame_padding="replicate"): # T_vid and R_vid are the tensors of the size (1,3,N,H,W) @@ -35,13 +36,22 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): _, _, N_frames = vid_source.get_video_size() quality = 0.0 - for ff in range(N_frames): + for ff in range(N_frames//self.block_size + 1): # TODO: Batched processing - T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) - R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) - - # Input required in shape (B,C,H,W) - quality += self.flip(T.squeeze(2), R.squeeze(2), self.ppd) / N_frames + T = [] + R = [] + for bb in range(self.block_size): + if ff*self.block_size + bb == N_frames: + break + T.append(vid_source.get_test_frame(ff*self.block_size + bb, device=self.device, colorspace=self.colorspace)) + R.append(vid_source.get_reference_frame(ff*self.block_size + bb, device=self.device, colorspace=self.colorspace)) + + if len(R) != 0: + T = torch.cat(T, dim=0) + R = torch.cat(R, dim=0) + + # Input required in shape (B,C,H,W) + quality += self.flip(T.squeeze(2), R.squeeze(2), self.ppd) / N_frames * T.shape[0] return quality, None def set_display_model(self, display_photometry, display_geometry): @@ -58,7 +68,7 @@ def short_name(self): class HDRFLIPLoss(nn.Module): """ Class for computing HDR-FLIP """ - def __init__(self): + def __init__(self, device): """ Init """ super().__init__() self.qc = 0.7 @@ -68,6 +78,7 @@ def __init__(self): self.tmax = 0.85 self.tmin = 0.85 self.eps = 1e-15 + self.device = device def forward(self, test, reference, pixels_per_degree, tone_mapper="aces", start_exposure=None, stop_exposure=None): """ @@ -99,17 +110,17 @@ def forward(self, test, reference, pixels_per_degree, tone_mapper="aces", start_ stop_exposure = c_stop # Compute number of exposures - num_exposures = torch.max(torch.tensor([2.0], requires_grad=False).cuda(), torch.ceil(stop_exposure - start_exposure)) + num_exposures = torch.max(torch.tensor([2.0], requires_grad=False).to(self.device), torch.ceil(stop_exposure - start_exposure)) most_exposures = int(torch.amax(num_exposures, dim=0).item()) # Compute exposure step size - step_size = (stop_exposure - start_exposure) / torch.max(num_exposures - 1, torch.tensor([1.0], requires_grad=False).cuda()) + step_size = (stop_exposure - start_exposure) / torch.max(num_exposures - 1, torch.tensor([1.0], requires_grad=False).to(self.device)) # Set the depth of the error tensor to the number of exposures given by the largest exposure range any reference image yielded. # This allows us to do one loop for each image in our batch, while not affecting the HDR-FLIP error, as we fill up the error tensor with 0s. # Note that the step size still depends on num_exposures and is therefore independent of most_exposures dim = reference.size() - all_errors = torch.zeros(size=(dim[0], most_exposures, dim[2], dim[3])).cuda() + all_errors = torch.zeros(size=(dim[0], most_exposures, dim[2], dim[3])).to(self.device) # Loop over exposures and compute LDR-FLIP for each pair of LDR reference and test for i in range(0, most_exposures): @@ -168,8 +179,8 @@ def tone_map(img, tone_mapper, exposure): k5 = D * F * F W = 11.2 - nom = k0 * torch.pow(W, torch.tensor([2.0]).cuda()) + k1 * W + k2 - denom = k3 * torch.pow(W, torch.tensor([2.0]).cuda()) + k4 * W + k5 + nom = k0 * torch.pow(W, torch.tensor([2.0]).to(img.device)) + k1 * W + k2 + denom = k3 * torch.pow(W, torch.tensor([2.0]).to(img.device)) + k4 * W + k5 white_scale = torch.div(denom, nom) # = 1 / (nom / denom) # Include white scale and exposure bias in rational polynomial coefficients @@ -192,7 +203,7 @@ def tone_map(img, tone_mapper, exposure): x2 = torch.pow(x, 2) nom = k0 * x2 + k1 * x + k2 denom = k3 * x2 + k4 * x + k5 - denom = torch.where(torch.isinf(denom), torch.Tensor([1.0]).cuda(), denom) # if denom is inf, then so is nom => nan. Pixel is very bright. It becomes inf here, but 1 after clamp below + denom = torch.where(torch.isinf(denom), torch.Tensor([1.0]).to(img.device), denom) # if denom is inf, then so is nom => nan. Pixel is very bright. It becomes inf here, but 1 after clamp below y = torch.div(nom, denom) return torch.clamp(y, 0.0, 1.0) @@ -234,8 +245,8 @@ def compute_start_stop_exposures(reference, tone_mapper, tmax, tmin): k5 = D * F * F W = 11.2 - nom = k0 * torch.pow(W, torch.tensor([2.0]).cuda()) + k1 * W + k2 - denom = k3 * torch.pow(W, torch.tensor([2.0]).cuda()) + k4 * W + k5 + nom = k0 * torch.pow(W, torch.tensor([2.0]).to(reference.device)) + k1 * W + k2 + denom = k3 * torch.pow(W, torch.tensor([2.0]).to(reference.device)) + k4 * W + k5 white_scale = torch.div(denom, nom) # = 1 / (nom / denom) # Include white scale and exposure bias in rational polynomial coefficients @@ -248,11 +259,11 @@ def compute_start_stop_exposures(reference, tone_mapper, tmax, tmin): c0 = (k1 - k4 * tmax) / (k0 - k3 * tmax) c1 = (k2 - k5 * tmax) / (k0 - k3 * tmax) - x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).to(reference.device) * c0) ** 2) - c1) c0 = (k1 - k4 * tmin) / (k0 - k3 * tmin) c1 = (k2 - k5 * tmin) / (k0 - k3 * tmin) - x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).to(reference.device) * c0) ** 2) - c1) else: # Source: ACES approximation: https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ # Include pre-exposure cancelation in constants @@ -265,11 +276,11 @@ def compute_start_stop_exposures(reference, tone_mapper, tmax, tmin): c0 = (k1 - k4 * tmax) / (k0 - k3 * tmax) c1 = (k2 - k5 * tmax) / (k0 - k3 * tmax) - x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + x_max = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).to(reference.device) * c0) ** 2) - c1) c0 = (k1 - k4 * tmin) / (k0 - k3 * tmin) c1 = (k2 - k5 * tmin) / (k0 - k3 * tmin) - x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).cuda() * c0) ** 2) - c1) + x_min = - 0.5 * c0 + torch.sqrt(((torch.tensor([0.5]).to(reference.device) * c0) ** 2) - c1) # Convert reference to luminance lum_coeff_r = 0.2126 @@ -308,9 +319,9 @@ def compute_ldrflip(test, reference, pixels_per_degree, qc, qf, pc, pt, eps): """ # --- Color pipeline --- # Spatial filtering - s_a, radius_a = generate_spatial_filter(pixels_per_degree, 'A') - s_rg, radius_rg = generate_spatial_filter(pixels_per_degree, 'RG') - s_by, radius_by = generate_spatial_filter(pixels_per_degree, 'BY') + s_a, radius_a = generate_spatial_filter(pixels_per_degree, 'A', reference.device) + s_rg, radius_rg = generate_spatial_filter(pixels_per_degree, 'RG', reference.device) + s_by, radius_by = generate_spatial_filter(pixels_per_degree, 'BY', reference.device) radius = max(radius_a, radius_rg, radius_by) filtered_reference = spatial_filter(reference, s_a, s_rg, s_by, radius) filtered_test = spatial_filter(test, s_a, s_rg, s_by, radius) @@ -350,7 +361,7 @@ def compute_ldrflip(test, reference, pixels_per_degree, qc, qf, pc, pt, eps): return torch.pow(deltaE_c, 1 - deltaE_f) -def generate_spatial_filter(pixels_per_degree, channel): +def generate_spatial_filter(pixels_per_degree, channel, device): """ Generates spatial contrast sensitivity filters with width depending on the number of pixels per degree of visual angle of the observer @@ -397,7 +408,7 @@ def generate_spatial_filter(pixels_per_degree, channel): # Generate weights g = a1 * np.sqrt(np.pi / b1) * np.exp(-np.pi**2 * z / b1) + a2 * np.sqrt(np.pi / b2) * np.exp(-np.pi**2 * z / b2) g = g / np.sum(g) - g = torch.Tensor(g).unsqueeze(0).unsqueeze(0).cuda() + g = torch.Tensor(g).unsqueeze(0).unsqueeze(0).to(device) return g, r @@ -414,16 +425,16 @@ def spatial_filter(img, s_a, s_rg, s_by, radius): """ dim = img.size() # Prepare image for convolution - img_pad = torch.zeros((dim[0], dim[1], dim[2] + 2 * radius, dim[3] + 2 * radius), device='cuda') + img_pad = torch.zeros((dim[0], dim[1], dim[2] + 2 * radius, dim[3] + 2 * radius), device=img.device) img_pad[:, 0:1, :, :] = nn.functional.pad(img[:, 0:1, :, :], (radius, radius, radius, radius), mode='replicate') img_pad[:, 1:2, :, :] = nn.functional.pad(img[:, 1:2, :, :], (radius, radius, radius, radius), mode='replicate') img_pad[:, 2:3, :, :] = nn.functional.pad(img[:, 2:3, :, :], (radius, radius, radius, radius), mode='replicate') # Apply Gaussian filters - img_tilde_opponent = torch.zeros((dim[0], dim[1], dim[2], dim[3]), device='cuda') - img_tilde_opponent[:, 0:1, :, :] = nn.functional.conv2d(img_pad[:, 0:1, :, :], s_a.cuda(), padding=0) - img_tilde_opponent[:, 1:2, :, :] = nn.functional.conv2d(img_pad[:, 1:2, :, :], s_rg.cuda(), padding=0) - img_tilde_opponent[:, 2:3, :, :] = nn.functional.conv2d(img_pad[:, 2:3, :, :], s_by.cuda(), padding=0) + img_tilde_opponent = torch.zeros((dim[0], dim[1], dim[2], dim[3]), device=img.device) + img_tilde_opponent[:, 0:1, :, :] = nn.functional.conv2d(img_pad[:, 0:1, :, :], s_a.to(img.device), padding=0) + img_tilde_opponent[:, 1:2, :, :] = nn.functional.conv2d(img_pad[:, 1:2, :, :], s_rg.to(img.device), padding=0) + img_tilde_opponent[:, 2:3, :, :] = nn.functional.conv2d(img_pad[:, 2:3, :, :], s_by.to(img.device), padding=0) # Transform to linear RGB for clamp img_tilde_linear_rgb = color_space_transform(img_tilde_opponent, 'ycxcz2linrgb') @@ -442,7 +453,7 @@ def hunt_adjustment(img): L = img[:, 0:1, :, :] # Apply Hunt adjustment - img_h = torch.zeros(img.size(), device='cuda') + img_h = torch.zeros(img.size(), device=img.device) img_h[:, 0:1, :, :] = L img_h[:, 1:2, :, :] = torch.mul((0.01 * L), img[:, 1:2, :, :]) img_h[:, 2:3, :, :] = torch.mul((0.01 * L), img[:, 2:3, :, :]) @@ -476,7 +487,7 @@ def redistribute_errors(power_deltaE_hyab, cmax, pc, pt): # Re-map error to 0-1 range. Values between 0 and # pccmax are mapped to the range [0, pt], # while the rest are mapped to the range (pt, 1] - deltaE_c = torch.zeros(power_deltaE_hyab.size(), device='cuda') + deltaE_c = torch.zeros(power_deltaE_hyab.size(), device=power_deltaE_hyab.device) pccmax = pc * cmax deltaE_c = torch.where(power_deltaE_hyab < pccmax, (pt / pccmax) * power_deltaE_hyab, pt + ((power_deltaE_hyab - pccmax) / (cmax - pccmax)) * (1.0 - pt)) @@ -515,7 +526,7 @@ def feature_detection(img_y, pixels_per_degree, feature_type): positive_weights_sum = np.sum(Gx[Gx > 0]) Gx = torch.Tensor(Gx) Gx = torch.where(Gx < 0, Gx / negative_weights_sum, Gx / positive_weights_sum) - Gx = Gx.unsqueeze(0).unsqueeze(0).cuda() + Gx = Gx.unsqueeze(0).unsqueeze(0).to(img_y.device) # Detect features featuresX = nn.functional.conv2d(nn.functional.pad(img_y, (radius, radius, radius, radius), mode='replicate'), Gx, padding=0) @@ -533,8 +544,8 @@ def color_space_transform(input_color, fromSpace2toSpace): dim = input_color.size() # Assume D65 standard illuminant - reference_illuminant = torch.tensor([[[0.950428545]], [[1.000000000]], [[1.088900371]]]).cuda() - inv_reference_illuminant = torch.tensor([[[1.052156925]], [[1.000000000]], [[0.918357670]]]).cuda() + reference_illuminant = torch.tensor([[[0.950428545]], [[1.000000000]], [[1.088900371]]]).to(input_color.device) + inv_reference_illuminant = torch.tensor([[[1.052156925]], [[1.000000000]], [[0.918357670]]]).to(input_color.device) if fromSpace2toSpace == "srgb2linrgb": limit = 0.04045 @@ -581,9 +592,9 @@ def color_space_transform(input_color, fromSpace2toSpace): [a21, a22, a23], [a31, a32, a33]]) - input_color = input_color.view(dim[0], dim[1], dim[2]*dim[3]).cuda() # NC(HW) + input_color = input_color.view(dim[0], dim[1], dim[2]*dim[3]).to(input_color.device) # NC(HW) - transformed_color = torch.matmul(A.cuda(), input_color) + transformed_color = torch.matmul(A.to(input_color.device), input_color) transformed_color = transformed_color.view(dim[0], dim[1], dim[2], dim[3]) elif fromSpace2toSpace == "xyz2ycxcz": From 4215c53f6daacb35f680679f44695a1105144fea Mon Sep 17 00:00:00 2001 From: param Date: Sat, 22 Apr 2023 20:20:39 +0100 Subject: [PATCH 48/67] Fixed vmaf --- pycvvdp/pu_vmaf.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index d37897c..71f8b1e 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -61,10 +61,10 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) # Apply PU - T_enc = self.pu.encode(T.clip(0, self.max_L)) - T_enc_np = T_enc.squeeze().permute(1,2,0).cpu().numpy() - R_enc = self.pu.encode(R.clip(0, self.max_L)) - R_enc_np = R_enc.squeeze().permute(1,2,0).cpu().numpy() + T_enc = self.pu.encode(T.clip(0, self.max_L.item())) + T_enc_np = T_enc.squeeze().permute(1,2,0).cpu().numpy() / self.pu.encode(self.max_L) + R_enc = self.pu.encode(R.clip(0, self.max_L.item())) + R_enc_np = R_enc.squeeze().permute(1,2,0).cpu().numpy() / self.pu.encode(self.max_L) # Save the output as yuv file self.write_yuv_frame(T_enc_np, bit_depth=10, type='T') @@ -94,7 +94,7 @@ def short_name(self): def set_display_model(self, display_photometry, display_geometry): self.max_L = display_photometry.get_peak_luminance() - self.max_L = min(self.max_L, 300) + self.max_L = np.array(min(self.max_L, 300)) # This function takes into input an encoded RGB709 frame and saves it as a yuv file (it operates only on numpy arrays) def write_yuv_frame( self, RGB ,bit_depth=10,type = 'T'): From 9af03e3ecd7ed8c7cd4a7fa2203965706414aa16 Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Mon, 15 May 2023 18:36:56 +0100 Subject: [PATCH 49/67] Update pupsnr.py --- pycvvdp/pupsnr.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index c63327b..34a2189 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -91,21 +91,11 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): # Apply PU T_enc = self.pu.encode(T) R_enc = self.pu.encode(R) -<<<<<<< HEAD - - if torch.sum(T_enc != R_enc): - psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames - else: # If T_enc and R_enc are the same, psnr value is set to zero - psnr = psnr + 0 - - #psnr = psnr + self.psnr_fn(T_enc, R_enc) / N_frames -======= mse += torch.mean( (T_enc - R_enc)**2 ) psnr = 20*torch.log10( self.max_I/torch.sqrt(mse/N_frames) ) ->>>>>>> origin/main return psnr, None def psnr_fn(self, img1, img2): @@ -174,4 +164,4 @@ def __init__(self, device=None): self.colorspace = 'RGB2020' def short_name(self): - return "PU21-PSNR-MSE-RGB2020" \ No newline at end of file + return "PU21-PSNR-MSE-RGB2020" From 416d3155cadbd07502809ae38799dd9e778fb46e Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Thu, 18 May 2023 19:38:15 +0100 Subject: [PATCH 50/67] HyAB metric added --- pycvvdp/__init__.py | 1 + pycvvdp/hyab.py | 89 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 pycvvdp/hyab.py diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 403a6d1..662d1a2 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -9,6 +9,7 @@ from pycvvdp.pu_lpips import pu_lpips from pycvvdp.dolby_ictcp import ictcp from pycvvdp.pu_vmaf import pu_vmaf +from pycvvdp.hyab import hyab from pycvvdp.video_source_file import video_source_file, load_image_as_array from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/hyab.py b/pycvvdp/hyab.py new file mode 100644 index 0000000..1617a9b --- /dev/null +++ b/pycvvdp/hyab.py @@ -0,0 +1,89 @@ +import torch +import numpy as np + +from pycvvdp.vq_metric import vq_metric + +""" +HyAB metric. Usage is same as the FovVideoVDP metric (see pytorch_examples). +Abasi, S., Amani Tehran, M., & Fairchild, M. D. (2020). Distance metrics for very large color differences. +Color Research & Application, 45(2), 208–223. https://doi.org/10.1002/col.22451 +""" +class hyab(vq_metric): + def __init__(self, device=None,display_name=None,display_geometry=None,display_photometry=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + + # D65 White point + self.w = (0.9505, 1.0000, 1.0888) + self.colorspace = 'XYZ' + + ''' + The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. + ''' + def predict_video_source(self, vid_source, frame_padding="replicate"): + + # T_vid and R_vid are the tensors of the size (1,3,N,H,W) + # where: + # N - the number of frames + # H - height in pixels + # W - width in pixels + # Both images must contain linear absolute luminance values in cd/m^2 + # + # We assume the pytorch default NCDHW layout + + _, _, N_frames = vid_source.get_video_size() + + ehyab = 0.0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) + R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) + + # XYZ to Lab + w = self.max_L*self.w + T_lab = self.xyz_to_lab(T, w) + R_lab = self.xyz_to_lab(R, w) + + # Meancdm of Per-pixel DE2000 + ehyab = ehyab + self.hyab_fn(T_lab, R_lab) / N_frames + return ehyab, None + + def xyz_to_lab(self, img, W): + Lab = torch.empty_like(img) + Lab[...,0:,:,:] = 116*self.lab_fn(img[...,1,:,:,:]/W[1])-16 + Lab[...,1:,:,:] = 500*(self.lab_fn(img[...,0,:,:,:]/W[0]) - self.lab_fn(img[...,1,:,:,:]/W[1])) + Lab[...,2:,:,:] = 200*(self.lab_fn(img[...,1,:,:,:]/W[1]) - self.lab_fn(img[...,2,:,:,:]/W[2])) + return Lab + + def lab_fn(self, x): + y = torch.empty_like(x) + sigma = (6/29) + y_1 = x**(1/3) + y_2 = (x/(3*(sigma**2)))+(4/29) + condition = torch.less(x, sigma**3) + y = torch.where(condition, y_2, y_1) + return y + + def hyab_fn(self, img1, img2): + del_L = torch.absolute(img1[...,0,:,:,:]-img2[...,0,:,:,:]) + del_ab = torch.sqrt((img1[...,1,:,:,:]-img2[...,1,:,:,:])**2 + (img1[...,2,:,:,:]-img2[...,2,:,:,:])**2) + hyab_mean = torch.mean(del_L+del_ab) + return hyab_mean + + def short_name(self): + return "HyAB" + + def quality_unit(self): + return "Hybrid Delta E Lab" + + def get_info_string(self): + return None + + def set_display_model(self, display_photometry, display_geometry): + self.max_L = display_photometry.get_peak_luminance() + self.max_L = np.where( self.max_L < 300, self.max_L, 300) From d14c86da3371b6af7127adef7bf7404af40bbe28 Mon Sep 17 00:00:00 2001 From: param Date: Thu, 18 May 2023 20:03:07 +0100 Subject: [PATCH 51/67] Updated vmaf --- pycvvdp/pu_vmaf.py | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index 71f8b1e..c7dc330 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -15,7 +15,7 @@ class pu_vmaf(vq_metric): def __init__(self, ffmpeg_bin=None, cache_ref_loc='.', device=None): if ffmpeg_bin is None: # Empty constructor to retrieve name - pass + return # Use GPU if available if device is None: @@ -26,7 +26,6 @@ def __init__(self, ffmpeg_bin=None, cache_ref_loc='.', device=None): else: self.device = device - self.pu = PU() if not osp.isdir(cache_ref_loc): os.makedirs(cache_ref_loc) @@ -34,7 +33,6 @@ def __init__(self, ffmpeg_bin=None, cache_ref_loc='.', device=None): self.R_enc_path = osp.join(cache_ref_loc, 'temp_ref.yuv') self.output_file = osp.join(cache_ref_loc, 'vmaf_output.json') - self.colorspace = 'RGB709' self.ffmpeg_bin = ffmpeg_bin ''' @@ -57,18 +55,12 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): self.R_enc_file = open(self.R_enc_path,'w') for ff in trange(N_frames, leave=False): - T = vid_source.get_test_frame(ff, device=self.device, colorspace=self.colorspace) - R = vid_source.get_reference_frame(ff, device=self.device, colorspace=self.colorspace) - - # Apply PU - T_enc = self.pu.encode(T.clip(0, self.max_L.item())) - T_enc_np = T_enc.squeeze().permute(1,2,0).cpu().numpy() / self.pu.encode(self.max_L) - R_enc = self.pu.encode(R.clip(0, self.max_L.item())) - R_enc_np = R_enc.squeeze().permute(1,2,0).cpu().numpy() / self.pu.encode(self.max_L) + T = vid_source.get_test_frame(ff, device=self.device, colorspace='display_encoded_01').squeeze().permute(1,2,0).cpu().numpy() + R = vid_source.get_reference_frame(ff, device=self.device, colorspace='display_encoded_01').squeeze().permute(1,2,0).cpu().numpy() # Save the output as yuv file - self.write_yuv_frame(T_enc_np, bit_depth=10, type='T') - self.write_yuv_frame(R_enc_np, bit_depth=10, type='R') + self.write_yuv_frame(T, bit_depth=10, type='T') + self.write_yuv_frame(R, bit_depth=10, type='R') self.T_enc_file.close() self.R_enc_file.close() @@ -78,6 +70,7 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): f'-s {w}x{h} -pix_fmt {pix_fmt} -i {self.T_enc_path} ' \ f'-s {w}x{h} -pix_fmt {pix_fmt} -i {self.R_enc_path} ' \ f'-lavfi libvmaf=\"log_fmt=json:log_path={self.output_file}:n_threads=4\" -f null -' + os.system(ffmpeg_cmd) with open(self.output_file) as f: @@ -92,10 +85,6 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): def short_name(self): return 'PU21-VMAF' - def set_display_model(self, display_photometry, display_geometry): - self.max_L = display_photometry.get_peak_luminance() - self.max_L = np.array(min(self.max_L, 300)) - # This function takes into input an encoded RGB709 frame and saves it as a yuv file (it operates only on numpy arrays) def write_yuv_frame( self, RGB ,bit_depth=10,type = 'T'): _rgb2ycbcr_rec709 = np.array([[0.2126 , 0.7152 , 0.0722],\ From 576994e43c332ac5f3604818fd4cd8dca213f4ad Mon Sep 17 00:00:00 2001 From: Maliha Ashraf Date: Fri, 19 May 2023 15:20:05 +0100 Subject: [PATCH 52/67] Video encoding class added for STRRED --- pycvvdp/utils.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pycvvdp/utils.py b/pycvvdp/utils.py index 61e9199..477014a 100644 --- a/pycvvdp/utils.py +++ b/pycvvdp/utils.py @@ -99,6 +99,44 @@ def fovdots_load_condition(content_id, condition_id, device, data_res="full"): ncdhw_tensor = torch.unsqueeze(torch.unsqueeze(dhw_tensor, 0), 0) return ncdhw_tensor +class YUV_encoding: + def write_yuv_frame_444( self, RGB ,bit_depth=10): + _rgb2ycbcr_rec709 = np.array([[0.2126 , 0.7152 , 0.0722],\ + [-0.114572 , -0.385428 , 0.5],\ + [0.5 , -0.454153 , -0.045847]], dtype=np.float32) + + YUV = (np.reshape( RGB, (-1, 3), order='F' ) @ _rgb2ycbcr_rec709.transpose()).reshape( (RGB.shape), order='F' ) + + YUV_fixed = self.float2fixed( YUV, bit_depth ) + + Y = YUV_fixed[:,:,0] + u = YUV_fixed[:,:,1] + v = YUV_fixed[:,:,2] + + return Y, u, v + + +# For now this code operates only on array vectors (Because there is no available torch.uint16) + def float2fixed(self,YCbCr,nbit): + + offset = (2**(nbit-8))*16 + weight = (2**(nbit-8))*219 + max_lum = (2**nbit)-1 + + if nbit<=8: + dtype = np.uint8 + else: + dtype = np.uint16 + + Y = np.round(weight*YCbCr[:,:,0]+offset).clip(0,max_lum).astype(dtype) + + offset = (2**(nbit-8)) * 128 + weight = (2**(nbit-8)) * 224 + + U = np.round(weight*YCbCr[:,:,1]+offset).clip(0,max_lum).astype(dtype) + V = np.round(weight*YCbCr[:,:,2]+offset).clip(0,max_lum).astype(dtype) + + return np.concatenate( (Y[:,:,np.newaxis], U[:,:,np.newaxis], V[:,:,np.newaxis]), axis=2 ) class ImGaussFilt(): def __init__(self, sigma, device): From ceb439e2e6e2f2112b7854e33b7d98b8f5936f61 Mon Sep 17 00:00:00 2001 From: param Date: Sun, 21 May 2023 17:56:29 +0100 Subject: [PATCH 53/67] Added script to time metrics --- generate_timings.py | 95 +++++++++++++++++++++++++++++++++++++++++ pycvvdp/cvvdp_metric.py | 4 +- 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 generate_timings.py diff --git a/generate_timings.py b/generate_timings.py new file mode 100644 index 0000000..72b99c3 --- /dev/null +++ b/generate_timings.py @@ -0,0 +1,95 @@ +import numpy as np +import pandas as pd +import pycvvdp +from time import time +import torch +from tqdm import tqdm, trange + +class DummyVS: + def __init__(self, num_frames, height, width, fps=30, device='cuda'): + self.n = num_frames + self.h = height + self.w = width + self.fps = fps + self.frame = torch.randn(1,3,1,height,width, device=device) + + def __len__(self): + return self.n + + def get_video_size(self): + return self.h, self.w, self.n + + def get_frames_per_second(self): + return self.fps + + def get_reference_frame(self, i, device=None, colorspace=None): + return self.frame[:,:1] if colorspace == 'Y' else self.frame + + def get_test_frame(self, i, device=None, colorspace=None): + return self.get_reference_frame(i, device, colorspace) + + def to(self, device): + self.frame = self.frame.to(device) + +metrics = ['cvvdp', 'cvvdp-cpu', 'fvvdp', 'PSNR-RGB'] +device = torch.device('cuda') +dims = ((1080, 1920), (720, 1280), (1440, 2560), (2160, 3840), (4320, 7680)) +# h, w = 1080, 1920 +# n = (30, 60, 120, 240, 480) +num_frames = 1 +num_samples = 5 + +# VMAF paths set for Param's PC +ffmpeg_path = '../vmaf/ffmpeg-6.0-amd64-static/ffmpeg' +vmaf_cache = '/local/scratch/pmh64/tmp' + +timings = pd.DataFrame(columns=['metric', 'num_frames', 'height', 'width', 'time']) +timings = [] +# for num_frames in tqdm(n): +for h, w in tqdm(dims): + vs = DummyVS(num_frames, h, w, device=device) + pbar = tqdm(metrics, leave=False) + for metric in pbar: + pbar.set_description(f'N={num_frames}, metric={metric}') + if metric.endswith('cpu'): + vs.to('cpu') + else: + vs.to(device) + + if metric == 'cvvdp': + metric = pycvvdp.cvvdp(quiet=True, device=device, temp_padding='replicate', heatmap=None) + elif metric == 'cvvdp-cpu': + metric = pycvvdp.cvvdp(quiet=True, device=torch.device('cpu'), temp_padding='replicate', heatmap=None) + elif metric == 'fvvdp': + from pyfvvdp import fvvdp + # Add argument "colorspace='Y'" while retriving frames to run on images + # Lines 233 and 244 in commit 5bf67f92341604d238ebe72fdeeb4ad825db5485 + metric = fvvdp(quiet=True, device=device, temp_padding='replicate', heatmap=None) + elif metric == 'PSNR-RGB': + metric = pycvvdp.psnr_rgb(device=device) + elif metric == 'FLIP': + metric = pycvvdp.flip(device=device) + elif metric == 'PU21-VMAF': + metric = pycvvdp.pu_vmaf(ffmpeg_path, vmaf_cache, device=device) + else: + raise RuntimeError( f'Unknown metric {metric}' ) + + with torch.no_grad(): + metric.predict_video_source(vs) # dummy run + + times = [] + for _ in trange(num_samples, leave=False): + start = time() + metric.predict_video_source(vs) + times.append(time() - start) + + timings.append({'name': metric.short_name(), + 'num_samples': num_samples, + 'num_frames': num_frames, + 'height': h, + 'width': w, + 'time_mean': np.mean(times), + 'time_std': np.std(times)}) + +df = pd.DataFrame(timings) +df.to_csv('timings.csv', index=False) diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 52f5cb2..7de3b6a 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -599,8 +599,8 @@ def phase_uncertainty(self, M): def mask_func_perc_norm(self, G, G_mask ): # Masking on perceptually normalized quantities (as in Daly's VDP) p = self.mask_p - q_sust = self.torch_scalar(self.mask_q_sust) - q_trans = self.torch_scalar(self.mask_q_trans) + # q_sust = self.torch_scalar(self.mask_q_sust) + # q_trans = self.torch_scalar(self.mask_q_trans) if G_mask.shape[0]==3: # image #q = torch.as_tensor( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust], device=self.device ).view(3,1,1,1) q = torch.stack( [self.mask_q_sust, self.mask_q_sust, self.mask_q_sust], dim=0 ).view(3,1,1,1) From 2401e466e85a5d3f198ff26eb11b6577e82a616b Mon Sep 17 00:00:00 2001 From: param Date: Tue, 23 May 2023 08:05:30 +0100 Subject: [PATCH 54/67] Added vmaf to timing script --- generate_timings.py | 54 +++++++++++++++++++++++---------------------- pycvvdp/pu_vmaf.py | 23 +++++++++++++------ 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/generate_timings.py b/generate_timings.py index 72b99c3..3495b20 100644 --- a/generate_timings.py +++ b/generate_timings.py @@ -4,6 +4,7 @@ from time import time import torch from tqdm import tqdm, trange +import logging class DummyVS: def __init__(self, num_frames, height, width, fps=30, device='cuda'): @@ -31,59 +32,60 @@ def get_test_frame(self, i, device=None, colorspace=None): def to(self, device): self.frame = self.frame.to(device) -metrics = ['cvvdp', 'cvvdp-cpu', 'fvvdp', 'PSNR-RGB'] +debug = False +metrics = ['PU21-VMAF', 'cvvdp', 'fvvdp'] device = torch.device('cuda') -dims = ((1080, 1920), (720, 1280), (1440, 2560), (2160, 3840), (4320, 7680)) -# h, w = 1080, 1920 -# n = (30, 60, 120, 240, 480) -num_frames = 1 +# dims = ((720, 1280), (1080, 1920), (1440, 2560), (2160, 3840), (4320, 7680)) +h, w = 1080, 1920 +n = (30, 60, 120, 240, 480) +# num_frames = 120 num_samples = 5 # VMAF paths set for Param's PC ffmpeg_path = '../vmaf/ffmpeg-6.0-amd64-static/ffmpeg' vmaf_cache = '/local/scratch/pmh64/tmp' -timings = pd.DataFrame(columns=['metric', 'num_frames', 'height', 'width', 'time']) +logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG if debug else logging.INFO) + timings = [] -# for num_frames in tqdm(n): -for h, w in tqdm(dims): +for num_frames in tqdm(n): +# for h, w in tqdm(dims): vs = DummyVS(num_frames, h, w, device=device) pbar = tqdm(metrics, leave=False) - for metric in pbar: - pbar.set_description(f'N={num_frames}, metric={metric}') - if metric.endswith('cpu'): - vs.to('cpu') - else: - vs.to(device) + for metric_type in pbar: + pbar.set_description(f'N={num_frames}, h={h}, w={w}, metric={metric_type}') - if metric == 'cvvdp': + if metric_type == 'cvvdp': metric = pycvvdp.cvvdp(quiet=True, device=device, temp_padding='replicate', heatmap=None) - elif metric == 'cvvdp-cpu': - metric = pycvvdp.cvvdp(quiet=True, device=torch.device('cpu'), temp_padding='replicate', heatmap=None) - elif metric == 'fvvdp': + if debug: + metric.debug = True + elif metric_type == 'fvvdp': from pyfvvdp import fvvdp # Add argument "colorspace='Y'" while retriving frames to run on images # Lines 233 and 244 in commit 5bf67f92341604d238ebe72fdeeb4ad825db5485 metric = fvvdp(quiet=True, device=device, temp_padding='replicate', heatmap=None) - elif metric == 'PSNR-RGB': + elif metric_type == 'PSNR-RGB': metric = pycvvdp.psnr_rgb(device=device) - elif metric == 'FLIP': + elif metric_type == 'FLIP': metric = pycvvdp.flip(device=device) - elif metric == 'PU21-VMAF': + elif metric_type == 'PU21-VMAF': metric = pycvvdp.pu_vmaf(ffmpeg_path, vmaf_cache, device=device) else: - raise RuntimeError( f'Unknown metric {metric}' ) + raise RuntimeError( f'Unknown metric {metric_type}' ) with torch.no_grad(): metric.predict_video_source(vs) # dummy run times = [] for _ in trange(num_samples, leave=False): - start = time() - metric.predict_video_source(vs) - times.append(time() - start) + if metric_type == 'PU21-VMAF': + times.append(metric.predict_video_source(vs, record_time=True)) + else: + start = time() + metric.predict_video_source(vs) + times.append(time() - start) - timings.append({'name': metric.short_name(), + timings.append({'name': metric_type, 'num_samples': num_samples, 'num_frames': num_frames, 'height': h, diff --git a/pycvvdp/pu_vmaf.py b/pycvvdp/pu_vmaf.py index c7dc330..1ee6b55 100644 --- a/pycvvdp/pu_vmaf.py +++ b/pycvvdp/pu_vmaf.py @@ -1,5 +1,6 @@ import json import os, os.path as osp +from time import time from tqdm import trange import torch @@ -38,7 +39,7 @@ def __init__(self, ffmpeg_bin=None, cache_ref_loc='.', device=None): ''' The same as `predict` but takes as input fvvdp_video_source_* object instead of Numpy/Pytorch arrays. ''' - def predict_video_source(self, vid_source, frame_padding="replicate"): + def predict_video_source(self, vid_source, frame_padding="replicate", record_time=False): # T_vid and R_vid are the tensors of the size (1,1,N,H,W) # where: @@ -51,6 +52,10 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): h, w, N_frames = vid_source.get_video_size() + if osp.isfile(self.T_enc_path): os.remove(self.T_enc_path) + if osp.isfile(self.R_enc_path): os.remove(self.R_enc_path) + if osp.isfile(self.output_file): os.remove(self.output_file) + self.T_enc_file = open(self.T_enc_path,'w') self.R_enc_file = open(self.R_enc_path,'w') @@ -71,16 +76,20 @@ def predict_video_source(self, vid_source, frame_padding="replicate"): f'-s {w}x{h} -pix_fmt {pix_fmt} -i {self.R_enc_path} ' \ f'-lavfi libvmaf=\"log_fmt=json:log_path={self.output_file}:n_threads=4\" -f null -' - os.system(ffmpeg_cmd) - - with open(self.output_file) as f: - results = json.load(f) - quality = results['pooled_metrics']['vmaf']['mean'] + if record_time: + start = time() + os.system(ffmpeg_cmd) + time_taken = time() - start + else: + os.system(ffmpeg_cmd) + with open(self.output_file) as f: + results = json.load(f) + quality = results['pooled_metrics']['vmaf']['mean'] os.remove(self.T_enc_path) os.remove(self.R_enc_path) os.remove(self.output_file) - return torch.tensor(quality), None + return time_taken if record_time else (torch.tensor(quality), None) def short_name(self): return 'PU21-VMAF' From b1c4fe42b2a066aebad3a8285ea3ca9f4659bf37 Mon Sep 17 00:00:00 2001 From: param Date: Tue, 23 May 2023 09:32:28 +0100 Subject: [PATCH 55/67] Updated timing script --- generate_timings.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/generate_timings.py b/generate_timings.py index 3495b20..c268ae1 100644 --- a/generate_timings.py +++ b/generate_timings.py @@ -32,13 +32,13 @@ def get_test_frame(self, i, device=None, colorspace=None): def to(self, device): self.frame = self.frame.to(device) -debug = False +debug = True metrics = ['PU21-VMAF', 'cvvdp', 'fvvdp'] device = torch.device('cuda') -# dims = ((720, 1280), (1080, 1920), (1440, 2560), (2160, 3840), (4320, 7680)) -h, w = 1080, 1920 -n = (30, 60, 120, 240, 480) -# num_frames = 120 +dims = ((720, 1280), (1080, 1920), (1440, 2560), (2160, 3840)) +# h, w = 1080, 1920 +# n = (30, 60, 120, 240, 480) +num_frames = 50 num_samples = 5 # VMAF paths set for Param's PC @@ -48,8 +48,8 @@ def to(self, device): logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG if debug else logging.INFO) timings = [] -for num_frames in tqdm(n): -# for h, w in tqdm(dims): +# for num_frames in tqdm(n): +for h, w in tqdm(dims): vs = DummyVS(num_frames, h, w, device=device) pbar = tqdm(metrics, leave=False) for metric_type in pbar: From a2092ad76c42446106460089b51532804e86be4a Mon Sep 17 00:00:00 2001 From: param Date: Wed, 2 Aug 2023 10:18:52 +0100 Subject: [PATCH 56/67] Fixed pupsnr to ruhandle "config_paths" --- pycvvdp/pupsnr.py | 8 ++++---- pycvvdp/vq_metric.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pycvvdp/pupsnr.py b/pycvvdp/pupsnr.py index 46efe9f..923ba1a 100644 --- a/pycvvdp/pupsnr.py +++ b/pycvvdp/pupsnr.py @@ -13,7 +13,7 @@ """ class psnr_rgb(vq_metric): - def __init__(self, display_name="standard_4k", display_photometry=None, color_space="sRGB", device=None): + def __init__(self, display_name="standard_4k", display_photometry=None, color_space="sRGB", device=None, config_paths=[]): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -23,7 +23,7 @@ def __init__(self, display_name="standard_4k", display_photometry=None, color_sp else: self.device = device - self.set_display_model( display_name=display_name, display_photometry=display_photometry ) + self.set_display_model( display_name=display_name, display_photometry=display_photometry, config_paths=config_paths ) self.color_space = color_space # input content colour space @@ -59,7 +59,7 @@ def quality_unit(self): """ class pu_psnr_y(vq_metric): - def __init__(self, display_name="standard_4k", display_photometry=None, color_space="sRGB", device=None): + def __init__(self, display_name="standard_4k", display_photometry=None, color_space="sRGB", device=None, config_paths=[]): # Use GPU if available if device is None: if torch.cuda.is_available() and torch.cuda.device_count()>0: @@ -69,7 +69,7 @@ def __init__(self, display_name="standard_4k", display_photometry=None, color_sp else: self.device = device - self.set_display_model( display_name=display_name, display_photometry=display_photometry ) + self.set_display_model( display_name=display_name, display_photometry=display_photometry, config_paths=config_paths ) self.color_space = color_space # input content colour space self.pu = PU() diff --git a/pycvvdp/vq_metric.py b/pycvvdp/vq_metric.py index faf8fc2..ba8642e 100644 --- a/pycvvdp/vq_metric.py +++ b/pycvvdp/vq_metric.py @@ -48,9 +48,9 @@ def quality_unit(self): def get_info_string(self): return None - def set_display_model(self, display_name="standard_4k", display_photometry=None, display_geometry=None): + def set_display_model(self, display_name="standard_4k", display_photometry=None, display_geometry=None, config_paths=[]): if display_photometry is None: - self.display_photometry = vvdp_display_photometry.load(display_name) + self.display_photometry = vvdp_display_photometry.load(display_name, config_paths) self.display_name = display_name else: self.display_photometry = display_photometry From 12848d89514faddc638fd5c338b64171cefb2b43 Mon Sep 17 00:00:00 2001 From: param Date: Mon, 14 Aug 2023 23:15:20 +0100 Subject: [PATCH 57/67] Added support for different fps for reference and test videos --- pycvvdp/__init__.py | 2 +- pycvvdp/video_source_file.py | 37 +++++++++++++++++++++++++----------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index 662d1a2..413e0c8 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -10,6 +10,6 @@ from pycvvdp.dolby_ictcp import ictcp from pycvvdp.pu_vmaf import pu_vmaf from pycvvdp.hyab import hyab -from pycvvdp.video_source_file import video_source_file, load_image_as_array +from pycvvdp.video_source_file import video_source_file, load_image_as_array, video_source_video_file from pycvvdp.display_model import vvdp_display_photometry, vvdp_display_photo_eotf, vvdp_display_geometry from pycvvdp.video_source_yuv import video_source_yuv_file diff --git a/pycvvdp/video_source_file.py b/pycvvdp/video_source_file.py index 20cba05..1d33844 100644 --- a/pycvvdp/video_source_file.py +++ b/pycvvdp/video_source_file.py @@ -7,6 +7,7 @@ import torch import ffmpeg import re +import functools import logging from video_source import * @@ -59,7 +60,7 @@ def load_image_as_array(imgfile): class video_reader: - def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_width=-1, verbose=False): + def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_width=-1, verbose=False, fps=-1): try: probe = ffmpeg.probe(vidfile) except: @@ -68,6 +69,7 @@ def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_ # select the first video stream video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None) + self.file_name = vidfile self.width = int(video_stream['width']) self.src_width = self.width self.height = int(video_stream['height']) @@ -75,9 +77,18 @@ def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_ self.color_space = video_stream['color_space'] if ('color_space' in video_stream) else 'unknown' self.color_transfer = video_stream['color_transfer'] if ('color_transfer' in video_stream) else 'unknown' self.in_pix_fmt = video_stream['pix_fmt'] - num_frames = int(video_stream['nb_frames']) - avg_fps_num, avg_fps_denom = [float(x) for x in video_stream['r_frame_rate'].split("/")] - self.avg_fps = avg_fps_num/avg_fps_denom + + avg_fps_num, avg_fps_denom = map(float, video_stream['r_frame_rate'].split('/')) + self.avg_fps = avg_fps_num/avg_fps_denom if fps == -1 else fps + try: + num_frames = int(video_stream['nb_frames']) + except KeyError: + # Metadata may not contain total number of frames + duration_text = video_stream['tags']['DURATION'] + hrs, mins, secs = map(float, duration_text.split(':')) + duration = (hrs * 60 + mins) * 60 + secs + + num_frames = int(np.floor(duration * self.avg_fps)) if frames==-1: self.frames = num_frames @@ -101,6 +112,7 @@ def _setup_ffmpeg(self, vidfile, resize_fn, resize_height, resize_width, verbose self.dtype = np.uint8 stream = ffmpeg.input(vidfile) + stream = ffmpeg.filter(stream, 'fps', fps=self.avg_fps) if (resize_fn is not None) and (resize_width!=self.width or resize_height!=self.height): resize_mode = resize_fn if resize_fn != 'nearest' else 'neighbor' stream = ffmpeg.filter(stream, 'scale', resize_width, resize_height, flags=resize_mode) @@ -168,8 +180,8 @@ def __exit__(self, type, value, tb): Decode frames to Yuv, perform upsampling and colour conversion with pytorch (on the GPU) ''' class video_reader_yuv_pytorch(video_reader): - def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_width=-1, verbose=False): - super().__init__(vidfile, frames, resize_fn, resize_height, resize_width, verbose) + def __init__(self, vidfile, frames=-1, resize_fn=None, resize_height=-1, resize_width=-1, verbose=False, fps=-1): + super().__init__(vidfile, frames, resize_fn, resize_height, resize_width, verbose, fps) y_channel_pixels = int(self.width*self.height) self.y_pixels = y_channel_pixels @@ -216,6 +228,7 @@ def _setup_ffmpeg(self, vidfile, resize_fn, resize_height, resize_width, verbose self.resize_width = resize_width stream = ffmpeg.input(vidfile) + stream = ffmpeg.filter(stream, 'fps', fps=self.avg_fps) log_level = 'info' if verbose else 'quiet' stream = ffmpeg.output(stream, 'pipe:', format='rawvideo', pix_fmt=out_pix_fmt).global_args( '-loglevel', log_level ) self.process = ffmpeg.run_async(stream, pipe_stdout=True) @@ -286,13 +299,15 @@ def _fixed2float_upscale(self, Y, u, v, device): ''' class video_source_video_file(video_source_dm): - def __init__( self, test_fname, reference_fname, display_photometry='sdr_4k_30', config_paths=[], frames=-1, full_screen_resize=None, resize_resolution=None, ffmpeg_cc=False, verbose=False ): + def __init__( self, test_fname, reference_fname, display_photometry='sdr_4k_30', config_paths=[], frames=-1, full_screen_resize=None, resize_resolution=None, ffmpeg_cc=False, verbose=False, match_fps=False ): fs_width = -1 if full_screen_resize is None else resize_resolution[0] fs_height = -1 if full_screen_resize is None else resize_resolution[1] - self.reader = video_reader if ffmpeg_cc else video_reader_yuv_pytorch - self.reference_vidr = self.reader(reference_fname, frames, resize_fn=full_screen_resize, resize_width=fs_width, resize_height=fs_height, verbose=verbose) - self.test_vidr = self.reader(test_fname, frames, resize_fn=full_screen_resize, resize_width=fs_width, resize_height=fs_height, verbose=verbose) + reader_class = video_reader if ffmpeg_cc else video_reader_yuv_pytorch + reader = functools.partial(reader_class, frames=frames, resize_fn=full_screen_resize, resize_width=fs_width, resize_height=fs_height, verbose=verbose) + self.reference_vidr = reader(vidfile=reference_fname) + fps = self.reference_vidr.avg_fps if match_fps else -1 + self.test_vidr = reader(vidfile=test_fname, fps=fps) self.frames = self.test_vidr.frames if frames==-1 else frames @@ -341,7 +356,7 @@ def get_video_size(self): # Return the frame rate of the video def get_frames_per_second(self) -> int: return self.test_vidr.avg_fps - + # Get a pair of test and reference video frames as a single-precision luminance map # scaled in absolute inits of cd/m^2. 'frame' is the frame index, # starting from 0. From 74665c1c79d4de65049f6b58c5542482533a8584 Mon Sep 17 00:00:00 2001 From: param Date: Tue, 29 Aug 2023 17:09:31 +0100 Subject: [PATCH 58/67] Added cvvdp-image --- pycvvdp/__init__.py | 2 +- pycvvdp/cvvdp_metric.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/pycvvdp/__init__.py b/pycvvdp/__init__.py index ba249e6..fb6c1b6 100644 --- a/pycvvdp/__init__.py +++ b/pycvvdp/__init__.py @@ -1,4 +1,4 @@ -from pycvvdp.cvvdp_metric import cvvdp +from pycvvdp.cvvdp_metric import cvvdp, cvvdp_image from pycvvdp.cvvdp_nn_metric import cvvdp_nn from pycvvdp.pupsnr import pu_psnr_y, pu_psnr_rgb2020, psnr_rgb from pycvvdp.e_itp import e_itp diff --git a/pycvvdp/cvvdp_metric.py b/pycvvdp/cvvdp_metric.py index 807d59f..eb57e2a 100644 --- a/pycvvdp/cvvdp_metric.py +++ b/pycvvdp/cvvdp_metric.py @@ -838,4 +838,40 @@ def export_distogram(self, stats, fname, jod_max=None, base_size=6): # plt.waitforbuttonpress() +class cvvdp_image(vq_metric): + def __init__(self, display_name="standard_4k", display_photometry=None, display_geometry=None, config_paths=[], heatmap=None, quiet=False, device=None, temp_padding="replicate", use_checkpoints=False, calibrated_ckpt=None): + # Use GPU if available + if device is None: + if torch.cuda.is_available() and torch.cuda.device_count()>0: + self.device = torch.device('cuda:0') + else: + self.device = torch.device('cpu') + else: + self.device = device + # Create a dummy display photometry object that does not change input frame + self.cvvdp_metric = cvvdp(display_name, None, None, config_paths, heatmap, quiet, self.device, temp_padding, use_checkpoints, calibrated_ckpt) + + def set_display_model(self, display_name="standard_4k", display_photometry=None, display_geometry=None, config_paths=[]): + self.linear_dm = vvdp_display_photo_eotf(display_photometry.Y_peak, contrast=display_photometry.contrast, source_colorspace='BT.2020-linear', E_ambient=display_photometry.E_ambient, k_refl=display_photometry.k_refl) + self.cvvdp_metric.set_display_model(display_photometry=self.linear_dm, display_geometry=display_geometry) + + def predict_video_source(self, vid_source): + + _, _, N_frames = vid_source.get_video_size() + + avg = 0 + for ff in range(N_frames): + T = vid_source.get_test_frame(ff, device=self.device, colorspace='RGB2020') + R = vid_source.get_reference_frame(ff, device=self.device, colorspace='RGB2020') + test_vs = video_source_array( T, R, fps=0, display_photometry=self.linear_dm ) + Q, _ = self.cvvdp_metric.predict_video_source(test_vs) + avg += Q / N_frames + + return avg, None + + def short_name(self): + return "cvvdp-image" + + def quality_unit(self): + return "JOD" From 25181981e000e976056a4dfe3171ad18292f3b11 Mon Sep 17 00:00:00 2001 From: Param Date: Mon, 25 Sep 2023 14:29:03 +0100 Subject: [PATCH 59/67] Fixed LPIPS colorspace --- pycvvdp/pu_lpips.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/pu_lpips.py b/pycvvdp/pu_lpips.py index 9c5a017..f4fa260 100644 --- a/pycvvdp/pu_lpips.py +++ b/pycvvdp/pu_lpips.py @@ -23,7 +23,7 @@ def __init__(self, device=None, net='vgg'): # Default versions uses VGG net self.lpips = LPIPS(net=net) self.lpips.to(self.device) - self.colorspace = 'RGB2020' + self.colorspace = 'display_encoded_100nit' def predict_video_source(self, vid_source, frame_padding="replicate"): # T_vid and R_vid are the tensors of the size (1,3,N,H,W) From d5618ed5bdf5322dca97cee6a5f69ae681dab4c4 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Tue, 5 Sep 2023 16:58:50 +0100 Subject: [PATCH 60/67] Updated files for v0.3 --- ChangeLog.md | 5 +++ README.md | 51 ++++++++++++------------- pycvvdp/vvdp_data/cvvdp_parameters.json | 4 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index ac9346d..381c2cf 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,8 @@ +# v0.3 (05/09/2023) +* Added value range checks when the metric is running on HDR data (to avoid passing relative values) +* Added SSIM as an alternative metric +* Better handling of paths to configuration files + # v0.2 * Updated ColourVideoVDP model with cross-channel masking and more advanced pooling, different calibration and better prediction accuracy. * Added distograms diff --git a/README.md b/README.md index fa56d28..d50a52e 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,18 @@ -# ColourVideoVDP: A visible difference predictor for colour images and videos +# ColorVideoVDP: A visible difference predictor for colour images and videos **[BETA RELEASE]** -> **[in the Meta version we have some beta disclaimers]** -ColourVideoVDP is a full-reference visual quality metric that predicts the perceptual difference between pairs of images or videos. Similar to popular metrics like PSNR, SSIM, and DeltaE 2000 it is aimed at comparing a ground truth reference against a distorted (e.g. blurry, noisy, color-shifted) version. +ColorVideoVDP is a full-reference visual quality metric that predicts the perceptual difference between pairs of images or videos. Similar to popular metrics like PSNR, SSIM, and DeltaE 2000 it is aimed at comparing a ground truth reference against a distorted (e.g. blurry, noisy, color-shifted) version. This metric is unique because it is the first color-aware metric that accounts for spatial and temporal aspects of vision. The main features: -* models chromatic and achromatic contrast sensitivity using a novel contrast sensitivity model, allowing us to predict distortions in colour and luminance; +* models chromatic and achromatic contrast sensitivity using a novel contrast sensitivity model (castleCSF), allowing us to predict distortions in color and luminance; * models spatio-temporal sensitivity so that it can predict visibility of artifacts like waveguide nonuniformity and other temporally varying artifacts; * works with colorimetrically calibrated content, both SDR and HDR (any colour space); -* can predict a single number quality correlate or a distortion map. +* can predict a single number quality correlate, a distortion map or a visualization of an error over time and visual channels (distogram). -ColourVideoVDP is implemented in PyTorch and can be run efficiently on a CUDA-enabled GPU. It can also run on a CPU, but the processing times will be much longer, especially for video. Its usage is described [below](#example-usage). +ColorVideoVDP is implemented in PyTorch and can be run efficiently on a CUDA-enabled GPU. It can also run on a CPU, but the processing times will be much longer, especially for video. Its usage is described [below](#example-usage). The details of the metric will be available in our upcoming paper: @@ -21,12 +20,10 @@ The details of the metric will be available in our upcoming paper: > Rafal K. Mantiuk, Param Hanji, Maliha Ashraf, Yuta Asano, Alexandre Chapiro. > Paper in preparation. -**[TODO:]** Link to project page - If you use the metric in your research, please cite the paper above. ## PyTorch quickstart -1. Start by installing [anaconda](https://docs.anaconda.com/anaconda/install/index.html) or [miniconda](https://docs.conda.io/en/latest/miniconda.html). Then, create a new environment for ColourVideoVDP and activate it: +1. Start by installing [anaconda](https://docs.anaconda.com/anaconda/install/index.html) or [miniconda](https://docs.conda.io/en/latest/miniconda.html). Then, create a new environment for ColorVideoVDP and activate it: ```bash conda create -n cvvdp python=3.10 conda activate cvvdp @@ -41,15 +38,15 @@ conda install ffmpeg 4. Obtain the ColourVDP codebase, by extracting a `.zip` file provided or cloning from Github: ```bash -git clone git@github.com:mantiuk/ColourVideoVDP.git # skip if a .zip is provided or you use Github GUI +git clone git@github.com:gfxdisp/ColorVideoVDP.git # skip if a .zip is provided or you use Github GUI ``` -5. Finally, install ColourVideoVDP with PyPI: +5. Finally, install ColorVideoVDP with PyPI: ```bash -cd ColourVideoVDP +cd ColorVideoVDP pip install -e . ``` -*Note:* The "-e/--editable" option to `pip` is optional and should be used only if you intend to change the ColourVideoVDP code. +*Note:* The "-e/--editable" option to `pip` is optional and should be used only if you intend to change the ColorVideoVDP code. After installation, run `cvvdp` directly from the command line: @@ -58,7 +55,7 @@ cvvdp --test test_file --ref ref_file --display standard_fhd ``` The test and reference files can be images or videos. The option `--display` specifies a display on which the content is viewed. See [vvdp_data/display_models.json](pycvvdp/vvdp_data/display_models.json) for the available displays. -See [Command line interface](#command-line-interface) for further details. ColourVideoVDP can be also run directly from Python - see [Low-level Python interface](#low-level-python-interface). +See [Command line interface](#command-line-interface) for further details. ColorVideoVDP can be also run directly from Python - see [Low-level Python interface](#low-level-python-interface). **Table of contents** - [Display specification](#display-specification) @@ -75,19 +72,17 @@ See [Command line interface](#command-line-interface) for further details. Colou ## Display specification -Unlike most image quality metrics, ColourVideoVDP needs physical specification of the display (e.g. its size, resolution, peak brightness) and viewing conditions (viewing distance, ambient light) to compute accurate predictions. The specifications of the displays are stored in [vvdp_data/display_models.json](pycvvdp/vvdp_data/display_models.json). You can add the exact specification of your display to this file, or create a new JSON file and pass the directory it is located in as `--config-paths` parameter (see [Configuration files](#configuration-files)). If the display specification is unknown to you, you are encouraged to use one of the standard display specifications listed on the top of that file, for example `standard_4k`, or `standard_fhd`. If you use one of the standard displays, there is a better chance that your results will be comparable with other studies. +Unlike most image quality metrics, ColorVideoVDP needs physical specification of the display (e.g. its size, resolution, peak brightness) and viewing conditions (viewing distance, ambient light) to compute accurate predictions. The specifications of the displays are stored in [vvdp_data/display_models.json](pycvvdp/vvdp_data/display_models.json). You can add the exact specification of your display to this file, or create a new JSON file and pass the directory it is located in as `--config-paths` parameter (see [Configuration files](#configuration-files)). If the display specification is unknown to you, you are encouraged to use one of the standard display specifications listed on the top of that file, for example `standard_4k`, or `standard_fhd`. If you use one of the standard displays, there is a better chance that your results will be comparable with other studies. You specify the display by passing `--display` argument to `cvvdp`. Note the the specification in `display_models.json` is for the display and not the image. If you select to use `standard_4k` with the resolution of 3840x2160 for your display and pass a 1920x1080 image, the metric will assume that the image occupies one quarter of that display (the central portion). If you want to enlarge the image to the full resolution of the display, pass `--full-screen-resize {fast_bilinear,bilinear,bicubic,lanczos}` option (for now it works with video only). -The command line version of ColourVideoVDP can take as input HDR video streams encoded using the PQ transfer function. To correctly model HDR content, it is necessary to pass a display model with correct color space and transfer function (with the field `colorspace="BT.2020-PQ"`), for example `standard_hdr_pq`. - -The display specification is documented in [vvdp_data/README.md](pycvvdp/vvdp_data/README.md). +The command line version of ColorVideoVDP can take as input HDR video streams encoded using the PQ transfer function. To correctly model HDR content, it is necessary to pass a display model with correct color space and transfer function (with the field `colorspace="BT.2020-PQ"`), for example `standard_hdr_pq`. ### Custom display specification -If you run the metric from the command line, we recommend that you create a directory with a copy of `display_models.json`, add a new display specification in that file and then add to the command line `--config-paths --display `. +If you run the metric from the command line, we recommend that you create a directory with a copy of `display_models.json`, add a new display specification in that file and then add to the command line `--config-paths --display `. The format of `display_models.json` is explained [vvdp_data/README.md](here). If you run the metric from Python code, the display photometry and geometry can be specified by passing `display_name` parameter to the metric. Alternatively, if you need more flexibility in specifying display geometry (size, viewing distance) and its colorimetry, you can instead pass objects of the classes `vvdp_display_geometry`, `vvdp_display_photo_gog` for most SDR displays, and `vvdp_display_photo_absolute` for HDR displays. You can also create your own subclasses of those classes for custom display specification. @@ -110,12 +105,12 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/conda/miniconda3/lib ### Reporting metric results When reporting the results of the metric, please include the string returned by the metric, such as: -`"ColourVideoVDP v0.1, 75.4 [pix/deg], Lpeak=200, Lblack=0.5979 [cd/m^2], (standard_4k)"` +`"ColorVideoVDP v0.3, 75.4 [pix/deg], Lpeak=200, Lblack=0.5979 [cd/m^2], (standard_4k)"` This is to ensure that you provide enough details to reproduce your results. ### Predicted quality scores -ColourVideoVDP reports image/video quality in the JOD (Just-Objectionable-Difference) units. The highest quality (no difference) is reported as 10 and lower values are reported for distorted content. In case of very strong distortion, or when comparing two unrelated images, the quality value can drop below 0. +ColorVideoVDP reports image/video quality in the JOD (Just-Objectionable-Difference) units. The highest quality (no difference) is reported as 10 and lower values are reported for distorted content. In case of very strong distortion, or when comparing two unrelated images, the quality value can drop below 0. The main advantage of JODs is that they (a) should be linearly related to the perceived magnitude of the distortion and (b) the difference of JODs can be interpreted as the preference prediction across the population. For example, if method A produces a video with the quality score of 8 JOD and method B gives the quality score of 9 JOD, it means that 75% of the population will choose method B over A. The plots below show the mapping from the difference between two conditions in JOD units to the probability of selecting the condition with the higher JOD score (black numbers on the left) and the percentage increase in preference (blue numbers on the right). @@ -133,16 +128,16 @@ The main advantage of JODs is that they (a) should be linearly related to the pe ## Example usage ### Command line interface -The main script to run the model on a set of images or videos is [run_cvvdp.py](pycvvdp/run_cvvdp.py), from which the binary `cvvdp` is created . Run `cvvdp --help` for detailed usage information. +The main script to run the model on a set of images or videos is [run_cvvdp.py](pycvvdp/run_cvvdp.py), from which the binary `cvvdp` is created. Run `cvvdp --help` for detailed usage information. -For the first example, we will compare the performance of ColourVideoVDP to the popular Delta E 2000 color metric. A video was degraded with 3 different color artifacts using ffmpeg: +For the first example, we will compare the performance of ColorVideoVDP to the popular Delta E 2000 color metric. A video was degraded with 3 different color artifacts using ffmpeg: 1. Gaussian noise: `ffmpeg ... -vf noise=alls=28.55:allf=t+u ...` 1. Increased saturation: `ffmpeg ... -vf eq=saturation=2.418 ...` 1. Colorbalance: `ffmpeg ... -vf colorbalance=rm=0.3:gm=0.3:bm=0.3:rs=0.15:gs=0.2:bs=0.2` The magnitude of each degradation was adjusted so that the predicted maximum **Delta E 2000 = 33.5**. As Delta E 2000 is not sensitive to spatial or temporal components of the content, it is unable to distinguish between these cases. -To predict quality with ColourVideoVDP (shown below), run: +To predict quality with ColorVideoVDP (shown below), run: ```bash cvvdp --test example_media/structure/ferris-test-*.mp4 --ref example_media/structure/ferris-ref.mp4 --display standard_fhd --heatmap supra-threshold --distogram @@ -156,7 +151,7 @@ cvvdp --test example_media/structure/ferris-test-*.mp4 --ref example_media/struc ### Visualization -In addition to the single-valued quality scored in the JOD units, ColourVideoVDP can generate a heatmap (video or image) and a distogram. The heatmap is generated when `--heatmap` command argument is passed with one of the following options: +In addition to the single-valued quality scored in the JOD units, ColorVideoVDP can generate a heatmap (video or image) and a distogram. The heatmap is generated when `--heatmap` command argument is passed with one of the following options: * `supra-threshold` - the difference values between 0 and 3 will be mapped to blue to yellow colors (visualizes large differences) * `threshold` - the difference values between 0 and 1 will be mapped to green to red colors (visualizes small differences) * `raw` - the difference values between 0 and 10 will be mapped to back to white @@ -182,7 +177,7 @@ To check which `display_models.json` file is used, run `cvvdp` with `--display ? To check which `cvvdp_parameters.json` file is used, run `cvvdp` with `--verbose`. ### Low-level Python interface -ColourVideoVDP can also be run through the Python interface by instatiating the `pycvvdp.cvvdp` class. +ColorVideoVDP can also be run through the Python interface by instatiating the `pycvvdp.cvvdp` class. ```python import pycvvdp @@ -194,7 +189,7 @@ cvvdp = pycvvdp.cvvdp(display_name='standard_4k', heatmap='threshold') JOD, m_stats = cvvdp.predict( I_test, I_ref, dim_order="HWC" ) ``` -Below, we show an example comparing ColourVideoVDP to the popular SSIM metric. While SSIM is aware of the structure of the content, it operates on luminance only, and is unable to accurately represent the degradation of a color-based artifact like chroma subsampling. +Below, we show an example comparing ColorVideoVDP to the popular SSIM metric. While SSIM is aware of the structure of the content, it operates on luminance only, and is unable to accurately represent the degradation of a color-based artifact like chroma subsampling. ![chroma_ss](imgs/chroma_ss.png) @@ -202,6 +197,8 @@ More examples can be found in these [example scripts](examples). ## Release notes +* v0.3.0 (04/Sep/2023) - First public release + * v0.1.0 - Initial internal release. The detailed list of changes can be found in [ChangeLog.md](ChangeLog.md). diff --git a/pycvvdp/vvdp_data/cvvdp_parameters.json b/pycvvdp/vvdp_data/cvvdp_parameters.json index 3769623..50e8e1d 100644 --- a/pycvvdp/vvdp_data/cvvdp_parameters.json +++ b/pycvvdp/vvdp_data/cvvdp_parameters.json @@ -1,6 +1,6 @@ { - "version": "0.2", - "__comment": "The base model prepared for SIGGRAPH Asia 2023 submission.", + "version": "0.3", + "__comment": "The base model before the final publication.", "calibration_date": "18/05/2023", "internal_model_name": "cvvdp_0_2", "mask_p": 2.316437244415283, From a9781bec40da17ffd716c9ea724b4a886f06138c Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Tue, 5 Sep 2023 17:04:12 +0100 Subject: [PATCH 61/67] Improved README.md --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index d50a52e..1d9fc54 100644 --- a/README.md +++ b/README.md @@ -60,9 +60,9 @@ See [Command line interface](#command-line-interface) for further details. Color **Table of contents** - [Display specification](#display-specification) - [Custom specification](#custom-display-specification) - - [HDR content](#hdr-content) - - [Reporting metric results](#reporting-metric-results) - - [Predicting quality scores](#predicted-quality-scores) +- [HDR content](#hdr-content) +- [Reporting metric results](#reporting-metric-results) +- [Predicting quality scores](#predicted-quality-scores) - [Usage](#example-usage) - [Command line interface](#command-line-interface) - [Visualization](#visualization) @@ -82,11 +82,11 @@ The command line version of ColorVideoVDP can take as input HDR video streams en ### Custom display specification -If you run the metric from the command line, we recommend that you create a directory with a copy of `display_models.json`, add a new display specification in that file and then add to the command line `--config-paths --display `. The format of `display_models.json` is explained [vvdp_data/README.md](here). +If you run the metric from the command line, we recommend that you create a directory with a copy of `display_models.json`, add a new display specification in that file and then add to the command line `--config-paths --display `. The format of `display_models.json` is explained [here](tree/main/pycvvdp/vvdp_data#readme). If you run the metric from Python code, the display photometry and geometry can be specified by passing `display_name` parameter to the metric. Alternatively, if you need more flexibility in specifying display geometry (size, viewing distance) and its colorimetry, you can instead pass objects of the classes `vvdp_display_geometry`, `vvdp_display_photo_gog` for most SDR displays, and `vvdp_display_photo_absolute` for HDR displays. You can also create your own subclasses of those classes for custom display specification. -### HDR content +## HDR content (Python command line only) You can use the metric to compare: @@ -102,13 +102,13 @@ pip install pyexr export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/conda/miniconda3/lib ``` -### Reporting metric results +## Reporting metric results When reporting the results of the metric, please include the string returned by the metric, such as: `"ColorVideoVDP v0.3, 75.4 [pix/deg], Lpeak=200, Lblack=0.5979 [cd/m^2], (standard_4k)"` This is to ensure that you provide enough details to reproduce your results. -### Predicted quality scores +## Predicted quality scores ColorVideoVDP reports image/video quality in the JOD (Just-Objectionable-Difference) units. The highest quality (no difference) is reported as 10 and lower values are reported for distorted content. In case of very strong distortion, or when comparing two unrelated images, the quality value can drop below 0. @@ -125,9 +125,9 @@ The main advantage of JODs is that they (a) should be linearly related to the pe -## Example usage +# Example usage -### Command line interface +## Command line interface The main script to run the model on a set of images or videos is [run_cvvdp.py](pycvvdp/run_cvvdp.py), from which the binary `cvvdp` is created. Run `cvvdp --help` for detailed usage information. For the first example, we will compare the performance of ColorVideoVDP to the popular Delta E 2000 color metric. A video was degraded with 3 different color artifacts using ffmpeg: @@ -149,7 +149,7 @@ cvvdp --test example_media/structure/ferris-test-*.mp4 --ref example_media/struc | Saturation | ![saturation](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-sat.gif) | DE00 = 33.5
CVVDP = 6.8960 | ![sat-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-sat-supra.gif) | | Colorbalance | ![wb](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-wb.gif) | DE00 = 33.5
CVVDP = 7.1682 | ![wb-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-wb-supra.gif) | -### Visualization +## Visualization In addition to the single-valued quality scored in the JOD units, ColorVideoVDP can generate a heatmap (video or image) and a distogram. The heatmap is generated when `--heatmap` command argument is passed with one of the following options: * `supra-threshold` - the difference values between 0 and 3 will be mapped to blue to yellow colors (visualizes large differences) @@ -160,7 +160,7 @@ The `--distogram` command line argument can be followed by a floating point valu Both distogram and heatmap will be saved in the current directory and the filename will contain the name of the test image/video. To change the directory in which those files are saved, pass `--output-dir` option. -### Configuration files +## Configuration files Configuration files contain a list of available display models (`display_models.json`), colour spaces (`color_spaces.json`) and the parameters of the metric (`cvvdp_parameters.json`). Those are located by default in `pycvvdp/vvdp_data` folder. Different locations could be specified with the `--config-paths` argument or the `CVVDP_PATH` environment variable. @@ -176,7 +176,7 @@ To check which `display_models.json` file is used, run `cvvdp` with `--display ? To check which `cvvdp_parameters.json` file is used, run `cvvdp` with `--verbose`. -### Low-level Python interface +## Low-level Python interface ColorVideoVDP can also be run through the Python interface by instatiating the `pycvvdp.cvvdp` class. ```python @@ -195,7 +195,7 @@ Below, we show an example comparing ColorVideoVDP to the popular SSIM metric. Wh More examples can be found in these [example scripts](examples). -## Release notes +# Release notes * v0.3.0 (04/Sep/2023) - First public release From afe6860a91f3717dad0d40898db3cc993fc79af6 Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Tue, 19 Sep 2023 15:46:24 +0100 Subject: [PATCH 62/67] Fixed typo --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 45dc232..afa8199 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ 'scipy>=1.7.0', 'ffmpeg-python>=0.2.0', 'torch>=1.8.2', - 'torchvision>=0.9.2' + 'torchvision>=0.9.2', 'ffmpeg>=1.4', 'imageio>=2.19.5', ], From 5b0f6230fc8e7d88eadd92ca249799e2cee545ff Mon Sep 17 00:00:00 2001 From: Rafal Mantiuk Date: Tue, 19 Sep 2023 21:37:16 +0100 Subject: [PATCH 63/67] Updated packages to fix vulnerability issues --- requirements.txt | 4 ++-- setup.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index d9fd5a0..39c7d78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ numpy==1.23.1 -scipy==1.8.1 +scipy==1.10.0 ffmpeg-python==0.2.0 -torch==1.12.0 +torch==1.13.1 ffmpeg==1.4 imageio==2.19.5 matplotlib==3.5.3 diff --git a/setup.py b/setup.py index afa8199..0eb97e0 100644 --- a/setup.py +++ b/setup.py @@ -19,9 +19,9 @@ package_data={'pycvvdp': ['csf_cache/*.mat', 'vvdp_data/*.json']}, include_package_data=True, install_requires=['numpy>=1.17.3', - 'scipy>=1.7.0', + 'scipy>=1.10.0', 'ffmpeg-python>=0.2.0', - 'torch>=1.8.2', + 'torch>=1.13.1', 'torchvision>=0.9.2', 'ffmpeg>=1.4', 'imageio>=2.19.5', From 0911dd511f89bc1844e7bc12e27284760fc8f122 Mon Sep 17 00:00:00 2001 From: param Date: Mon, 2 Oct 2023 12:43:58 +0100 Subject: [PATCH 64/67] Recoded white-balance example with hevc --- README.md | 6 +++--- example_media/structure/ferris-test-wb.mp4 | Bin 718861 -> 395615 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1d9fc54..f567214 100644 --- a/README.md +++ b/README.md @@ -145,9 +145,9 @@ cvvdp --test example_media/structure/ferris-test-*.mp4 --ref example_media/struc |Original | ![ferris wheel](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-ref.gif) | Quality | **TODO:** adjust heatmaps | | :---: | :---: | :---: | :---: | -| Gaussian noise | ![noise](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-noise.gif) | DE00 = 33.5
CVVDP = 8.6842 | ![noise-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-noise-supra.gif) | -| Saturation | ![saturation](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-sat.gif) | DE00 = 33.5
CVVDP = 6.8960 | ![sat-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-sat-supra.gif) | -| Colorbalance | ![wb](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-wb.gif) | DE00 = 33.5
CVVDP = 7.1682 | ![wb-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-wb-supra.gif) | +| Gaussian noise | ![noise](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-noise.gif) | DE00 = 33.5
CVVDP = 9.2140 | ![noise-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-noise-supra.gif) | +| Saturation | ![saturation](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-sat.gif) | DE00 = 33.5
CVVDP = 5.4020 | ![sat-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-sat-supra.gif) | +| Colorbalance | ![wb](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/ferris-wb.gif) | DE00 = 33.5
CVVDP = 5.6020 | ![wb-heatmap](https://www.cl.cam.ac.uk/research/rainbow/projects/fovvideovdp/html_reports/github_examples/cvvdp/heatmaps/ferris-wb-supra.gif) | ## Visualization diff --git a/example_media/structure/ferris-test-wb.mp4 b/example_media/structure/ferris-test-wb.mp4 index f1f73e4566c646498be20f44809716a4291ecd2c..803bc63226f6dfd947716aab46a309035dd7b902 100644 GIT binary patch literal 395615 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�Qhls^raQ%3GQg`k=rsBS z<3zH|LZJ-WSL#17kcM>8hC*icqA0z9tyLS~S?ao8{!wkM5X4vRi?6_upgCN#qN)O>@Bnh>ZJ>Cq26UI| z)REgUH$tLbXTsvV=r?9zadvv3|50lYyOe#}|14_?gPWMjt}!3$EEjF2lg2(O zo|cZ#vUF-bnDSfoozwp@3N^Dm%GNX5pfq^8bo&wY67*7Z&m?JX+XQ6PH%47Ah zMJa5yEktKL5%M04pg*|IQWn8Z7)U~LW=^(+&M(H!9#0`eYy`iouBu>=q9_dMau#+zW+YXubE^(A;1-aVBO;gty); z;*7?;!uszR)^D)&NFblTh{O@k_T$-F7wW@^sM`?KS7qE$%%mINnfnH?W zB9Q#=+Y+sQ1J%_`aASQg1&x2%+v-Je)pbNY5iNvQ5q7HHs7PhxY%QYRz3Kw*(T?3F ze&XiKQZXyO{y@y&vjUU&aup@op0sM$ksz7TW(K`N0J?eUMsZ551K&Mk(s%=P&R{89 z$R68uUL8Y_!DK?&QF&av3`Nt9AMq16s=2_OZ8F|C?~?lV5&qM?dipi1tNIkv)tZSk z4f>8!bA7_V)e{h5&gOqIW0czy6WEd23R{rdS7_n@-U)#~dT5@5?Dso38)K+tjwnwZ z{SJJY`y<6C1Na=sq-yyn)wJ{+vomC5{2l+4rp1(No%gX7^VJJK!!xxa^75}ui3 zHQO7x&JmhUbEFxG==}Xv#YxK!vQIBrn^{BNQJ`j3ZB%1&B-&?#IXHQQMEHcZ&NS}v^MWVSZ~UD_DB1R%1vWTruZunf Zik7^f7S7ds3F^)LB1ARS4<^FBwUm0m?xDzKV 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
l#Cw8UU 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
    D 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

    `wuKqsvXRji(JV?(u7V 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 literal 718861 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 z

    (Tf5Likb5)K2*a|AIi$_wcn&9Od`*=7=gZb7}6fnZ=FEH&7 z|Aj6d*-uGk`ma*~3VFy^1c(vbhq(Z31fWeGxiB!Id7-ni-t2mRUo!qc7jfg0&8%b> zTvX;(T)zM^Hw%+E)f>gG8)vnZK#*y{&Fa4HUs>9O92KvM`{n`4s-tHXkH?6b9UUG` zQUA7nbSk}9;STXdy&By*h7lUu{`K7nR-dIxlYRODEtcW zXL#{>iXv07m7#MfTUF2YmAx=1?@K}9C&}?u7kJK|@w;iQs%QW*(Ot=_(z&r}#L!1W zoVkPkE8!DeR)g9N)q+Bg)!m7u1v9?XzBD%RN_vG&PpcOOP(C?^4m>!_JBd&>d$fq5Bu7xi%(~B ztrTlFngfm~Js%hr?Ly<|`Sso^$p(BOg65o|H%%h<%DcqV_CmbqfiU@>@zH+?DzG6= zw{?2v?4cMPGO3X! zHE8pi+Tzq99)~-=@T?Do>=tq0!W=%UWg$dY=)NN2CYBW;>i`5r&_rud&mV>CBO&DTEJVlA0;&NZygG#Ts&~-#^Ki2Sr1Y5S7!vm zV}%n^YO3GUiWu`KknW_Z6xCk2R9z^y_Dnd8K(9u-1nETNeSchL?3xZM;Rc<(&n;ySQ99tho?Z-*D#(EZ= z7Y4KQ9Ylv;7Dvo~7~$~fIFpx*q_m+B4)d)|qlHmmN)(~OebA3+F*e6l{aUMZim<5# zI4i#^1}Jg3sy9s0yDYudFWP1j;y$+PI3#$r2_=ebpB2w=JFPoLt3H_KxGQ)q5q+vE z(&vW#X`3d`{93O>hvLFqiWz;Jcm}l)dp}fpOv$xBY4@oqsk^vGYU-%s z8H)nh)vb2SKg3FxObxZ{6L#KJ4j`2*U=9sMbQh=7lk|oPp;3C0#MPJW!xa~}33B-h zv>^&ZBBh6s6!SN!qH4xoraBBk?|e%tcf|!*U%7mC^1b}-k<tEuw(Ufb0vEVBgDOmrSo$O6Q^P-4c3v3(tTu9cip7aLnY=8COf4nKVsuh9550I?zEXH z5O$MEbF7G+SHph?2{YGCH5B^KgpXfNQL)q+lbV9_B--Z#f{I9i9@EfamB_EfK>AFd z*pD)L5Gm!Zb9eRzk+X>TDjFNG;0?BgZ&@^H!lw1+>ptB0?jG#vIjcCKOp;rzYjGMf zb_HShi|i5!=iO80+94;Nm*Dz_R09D z^8$NG7&&tbgwPKu#dgpF^K6EoN+&SGuHD>y-TJ(t3fN-()p=lZMQcIg9XJrEtF{+U zrrk8(TFmz2B~@P|Jd2b%*pk7P6V#)kEhsBw;E}F%gmT}d^>pG9*p7ib-{MnSAL}}b86u#!s6(ICVd*0! z_+db5Md@x=W$X>sSELr2n^Zojd`_^4i}&e4tR2o(b6fYu=C#)mMBc&lQDl@$^kGY3 zBh-YWn<`hs7c3HGSvRA4iB$%*#kem6vQ^_703uq>eLzih1^fY84uP{8UD78%wiJ$4 zLS>;JZVsM9#ivMs}(ghM3<57Z=#jfiWxO)3ZbOS`GP z)W?st?Mj5}5e*%wh3{{dFd1vYNKOVqMlQmURxSK;TWSO=D+>{s_627|gE_l71BM3L zDTo~lfjxtl*~wg_VyO!k4MB)4ye5= ze;6be#4vD%RcvRv&fsiR6 zHOfB*#mRD+a{x5JglQ~rKzWsW4IV-sR2uB-`BTl+3E1b_R+(u>xoa5oj^eZYU=~|ObrirAEoWFDJwW?Q@5HTYn6{*%%D7J+a;0E=TQz(7_9=a} z*e}$8@-`@UbU6eaLGbJdufPaAR z+cRxW{>dd!$kD*zpFi~XV6 z4IjB*^N+bjnv|uY5(>@~I-Co#^d5vE06Rd$zp#xT7=*c+JoMSfsy@v0h=Mxn`^#$6 zYII=8g2L6^xeUkBTy63c1l{w7{e2X)<3bT#W;__xdbo*4khAc!i{OLLCW3!{qFx-7 zwrI=!U-Iu^mlgb1uss)h>)3q-eVeaVe5J2oUA$UNPzJ&qX~<922M1LJt3(eeh0#>W zY^zfbno)AhcTotI)R7ZugIeyZ)8iabJKhm+x``@vp3No?6Z&BwPM|5*v4fTvIj|v& zt+laxjf_E%8-Wj1-poF7L+%%U8-id`Wi}}LkSoTc$|41BD-tG{qU_<+!CUY+4t+QV zgZ`oooq3)R?0<=xilIvq%Q=#x)&9|oruRL%pE7&k%DkLoL}3hC#(np|9aTas<^jk` zGJiIgUe!lHT_r1kyZl5$K2?IPl0%>k1i`+wTP89$GxcIDhMmY|M7!oIXoSo6=uz8B z_NdhJ^Ctz;+m>fg07lM?1P!?zMl%ub#wkf#DWgLOv={4*&;ii)=SH|$MpnrE@x1L0cmeM;x*l%c;A2Lkl1 z?vhk*{C3PXjsp*_P?7{fFoXOS?8=6(QgT4C#)5;NT}S8l@I(YKdIRrqgA7|>)@~@d zjCf_Fn3>hD8LbPuPX0I~iIzfxA1`QZA9%WiL};l1OefF|O}CY#GZG3h40c>YpYbz_ zSHbc_!8S9PT=cTe-7ZWCF<8m}{05?L0I7K?GS`V73EtdK6`NYifRkZOn7Rm-w=knH z5xE60`GeD1VM4vj%cfG}y>)Co*4RKX;FA5EC&SOI(9rr;j*U-1I@Wps{55PWYKKgj z9h!M(A}?f!ZLqca8uM)sJ+)8-e~Z10U2h$X(WdBxLiKQJmlvCR8{q_cU@6meqT|j6 zoV*w5!JGNoZ`$V1b2dGkGoFHRbn-sxI2y0F9KU=(v8-lhqlJ!1Be`;%tX~#jj2Q`| zW$bdGi&xu|%)zF#+ls2y9x8`r8JiDT!))AdxL`!XIa)va;NnQ}ivDx;i~x?6U!{A9 zErk;-507x}f-@!ZvZ%EFq*YtC3XcGcq-OTD0{zFp*I45!-Gbaeb_S~^*>HUO;0s%R z6=k#^wd~cPC*S8f$sJvfylR9%nT?u#*sJLodW=FH_v>w)E^SJ}oK{;CqxagWmFBmi zzqN!pHZW+xbx*iWtdOX}TL?LSkvqf9$e|*CBNznd0D!u9x1~obF*(C<4om$)>@PnF0_Tbqs zT8JW1IfpxG>X3KJcBT6P1>yFwp{kpzu|#TpMo{SeDN94R_* zhP!XfMMhjJMvgUt!TOM#H_OkI%G;vKJPN*@H_4#ft5JzfK>#lg@w`6{b_ZrMpb0HA z1j|TK0IP?PV_y`^IUV;q6RC?**_yn=q`<@Re$ z(xURQNQ%JoHVtc8jWBM?e05Kqb{NMW+kb{%Vx;GqMo!^aM~SZxB){Ce;#_ zv4N@X^-C&^m6=jxkseAA7x=sOBQc+~-mu?gy&@5~>Makhay{N^A8Dj~gq()dY({wq zJlIc4lBS(Hfo$0}`AN7z0dy{!0vQal)j~r%-?&YkxceFb#|^>>O0sB7gOjL-lQ5%& ztbtkrgYr*6Y{iG-?<{607`(KQ z6+LVUBFfBfSV?#*jNO1-OkCysUwCwjSFG6@IRJ6Y2nE`jP|oO(WdsG_RR4-YLu*`f zk(wVY1}D!v4hlr5{Id(`h!cKKd_*QO(!7J^6y0BaAN7Zb@--{h5P;fr$Qo0%2!zQ1 zIL%{V?&U0TF-98aEr{0je*}B^qD{!5|DJOxm@RKFA%aWd#FWGCcJCuoA-Fsuq|+J7 zU94Bd*4VFjhj@$QF1CKisIM~tyVMLpBj}EDOzTvO0c-QX^PEhQbP(39v#I0Tp@LQb z+>qNo*`|m-T73SkEV0GtB)QZzK%nN z2|$tG3YG5<)iqc`pN@+B+M7F_BbUv@Mv*S0gIY7~0$OY@4IqjwDu9~$a8*oz_7-Kg z^t4HTG!fOlXQb!08OfqXVnTZ#=B7%&PpL_(p$~%TJ79b}5wXRw9N<*yFDIL0rf()} zViO_4dei>C7nr+_dEV)8AjrfyF$JN^>-Up>X=(?r3zv+J?MS+^ElOE!9Whiol#kH1 z7Qm23lr|>7oTyY{pko&>+!m{KmbAzV?(|~tj%s7+(5`c$;U+jYUd~1H1c8U$_I*+(m$Wj(Ow;R)c-9_u+2Aj64%Ce(0H$Vk5zD=CoBHA z=jBe8F#{tOIng49}dmayQPxnGye) zO_FCmwXvMuY5eFSbQWvD<0D`4!36_t$a<}@4H1o$Qv zD33)0SUdLZ9OLXWan*+mA?hA{7=-g;gKEs@|M&^C{VDIu0Id+mfRiuKS*bTyMBq-) z7ahsI220w7(fk{~I%#-Owbc6*@_GTt9&+?LM7)yv$SXd00L5W8T5hIF()3H_d)Z1J zv#^T>IeXLLAXN$O*SGAd<=^F?Vc*<9rv>jZ30q?BB_pijlU1eC5rtIAsHhoJhIZ+Bo7XMG%2@kH2Cva&;Lc_otC+HMl0y^pzH(_=M_Sb zNsj`YaLj(KIl!@z*pb`+;UrajtIs4`6W3p@4(kCL<;W6{_ro&j=ks$Q)J)5=h7BM| zc*HXN8Z~_XJ864Ny{jUcGGFzI>v_&~L3#pctc5fj*-3m6Ehljp3E7T_&FpW^micLtBQXOqo;G_e!Y9%7$B4 z9}eCgP?=Bte{ZVg-PIGIr&J@qaOlw&%0!WwZivP2z%Fls#Vu-j)i=}jB9o@Woo46y z*1n6DuO9FFy&i5y^+7f&g`nft1ys%_PZIs1qD`&xO%s+P@KYcLJ7d@h?M-he5PqpX zjko|G-jGWI!iC>%X@oskcRLOqnkcQCP0&FXctOY+lj6TFZ?Z(Y0E3yiC@xvi&B3<53SPoF#lTHnB;al&abw-cGQ^;MFcnYp zBdMJ!5}+5Nf>jwVjpdtQ8gP3@cbSUFs+y53S4^ZC;SYxlFBmu~^V~*qdSEju5)riD zrRy&E%9jh-b1xH@qB1|TqXI$nVnJT6uz$$EGs{RhWc}8MWz|VgA z6d_k7GI&Qx83kNDRq)DrOQaPELzaL8sJ7i;S#kp!$7~uK0d+Dr{|p84II>E(-PDsd zcG8fLgIOUURLF)C}RTJo|>yoLFkKj_`eOLrl4UrnY5MF;vw z5N@hBWeQR{Uw4@mWoi{n737-4mv*uJ`*^gXTlNFf6UP*uvU1bm{KJ1HUG%_otppY~ zil4lb(~Y34sdQlAtWzy2JkSEZT=1#R@kjqh>xKH@J1=fiwNYo9?~f{V7!(2drSkq# zdi*nj&~qfCS55Zd7CuL_N{bS+B(MG2b-4n<~B}OpiSDr01`pgmp@+uDdQdWjl2aUV@Ycg@{){BY&F9MhhhR^Zi(CcFDQho9_ zvhvSN92_Oa^iU@f$P6`!Pm2iZfmQq(#T|HDx~p*~&f1CANHgThRt|Z6>2niLBLo|} z#c87fpgm(b22$fL_3T1^r^rDY?VirhO1d45BsP8 z7dUX#-~v9sC&HTmzjS7@Hx{@k%@JA2Ab*(xuciV@w8j&bo-Y3MN9umaQFAvu3Po_o zG9rsUQ4v_9BVb%34h#gPfoH+V`B)Jb%TWi7CF;OTtWo6JOAMp3Sh~Vzt`bv69@Dyp ze;JqnaVOF&$#Qb(9O=|0HH?*o3$bN3uz~sJ@Z%_I^xd=sOR6&xlApb@9?e|k&pbWzDD0~;*oIbvtX0i^GUoc6Y|5P1E8=8++V}-;nyy9 zQrXyhX0ax&#@-*Eo5n^rAANM^AO2mxokJn6w~z7LaGSSv zMOl9({kg#Dhm{a%ZM(zQ?+oebb3dBjQIx`ChHBxkz0!|5EnYM?8P%jZix%LDM_??= z=N@8*50;;w;kqJsV&yaGuI@cLHH|g;L7b%r`ttVlWr&>)mn)m_=jn~eSAS}dJA;bV z^!K&J_jruq1DOXeXIN@<*GKWgw2glBR7-Mo_QE3K=QOX%I%asZ@J}26)IOZvxhImRIi$d=2VC8gJCE3q+`aF`y zAp5nB0K8(!h>?ybTUWF4Cf&T`IX*yPjHQAcefVT&=b;7=7#WJ|wHC(MUSuxI;3g&? zy`|STlh*FpY1?B}eEa617rGKCon#a^qk~J{#vK^#-^^DboDcWwL>TK9Z&?mtm5SC7wQc~DByOD=U?9KVI4F2l7EwS!P(C?*J zV5zeC-|K26#4CuAcn3M~0-E1Acb8u0y}o;zh#TcXFvY)=QShCv8D2{Gq17)2)K%mgiNF>K`va{QViOt1zGj8*3zm7^-IFsEJ&47mf zn#A@g)|Wa%hP1C7=@ieR$Z}YmxeQiQNzO>T${gSD7`Q(A`WgAsZ({%;bIc63}*M89;!Fa;^Snd+^mXXn9Fa0`;3DYt4+-Y%OaqBJ!B&0(<$*#C;)pT#dlsOd?YPEo458Jh`W7T?d z_1o}a(p(kPow%uXmZmcuHe6`WVXifJM=1z^Rbo}=#6X`JrzLv)w{}WDbhi z{wU9TLeFXBQTfElm1L)4(U=TI3XIV_M@|P4|H8kFN%7d>tNe5@hYClbZrWmUt1b1Jp zL7;=<6 z%kPlhbyRKUEv?_y3{+3@=vS&*Kp`t#97%}Uv^hMN$)n22Vaf*cSyy;VLw#$v*)VW+|HpTA!;gLNeEIBM4SXMrton!*7>xEkch z#V~Wuf?xf@DMLT3>#Urb^j_ZyVnwSFB_*9UPGg|Qm&}kklCV>l&me^v1SKlR{({xW(h>x>1V!3ZXwop?J;Qj>8&R~nw9j9uaK6t=r}=uq#& zXIW}i_&G!n*MF;Vux=}90F0qkGz@@mqu`<@S-5Iy8I5Onp}j+|?k2nq%YHCEpTc){ z%2o^4iuYta#dG@M*@s`FS~XCUO*oIB$z~?D?Y; z{gb60xq=_9{|Akd_7a9VrWxrPyg#o9>&pf0EinC+aVN9(cBqc&3>1dFP>#gJ?$jf8 z8GZ+aLCD{6W*8xsP-|Q8TIt}kC2@DAC?yRqEALgZ>dXoWsi^*16@N>OKIG?Qyd&G) z0EpPBuV|SKGpn0ScKjp~8Iy1g;sU1#(|1M$+&uslWBy`B51RYd4Rt4zIf>S()|}V6 zT%!H(B`9W*HM^szs#&%?LAjxVBd1|?AZ*%U1-98SG2pyU2WMm0DfH9e;=ZK;))XgL zbO3JVq&wS*eJvwi9|2-KrW8RE3O!O_3bPQsl{7v%q*jRT7>$!^08(A9`^F@uNpwsj zeV23uQQ>Kcg`2x{Ssn92nsCOOW9_?Ku*NNbXWN|d^0T3~?H7Ons%jrA7aF}lInz(Z z<&pEr`!{*iZSXay>jEnXkOZZ@V}32f!l(K~gH_IaYw3qQQ@7V{3vqLq7@EXB?<=jLJDbaNfbOvo<YKP+sm!qmd+7lUD8?s@|tzJyW!YS(+j36av0FaaRp2-Lw~z_0Wy8vAT@ zO|QTF@)qBWGncf$y+3ia8;&4Ki4sk8OgBfEcjx%fSnXP%K!9Yig8wI;X3Aro?`PRj za4O=74*e);E2fk)-ch@F%=+aBeRnu*+aAN@kN@P(0qG)C(@=s)hAk~Uk{BryD0w<# z8KVg&F=2?r7-Ycdk>zYk!8zg*-nq@~>c;|xkP>M)`h)1C-|D-^%+1?`vC>=S{xa)i zj4XZqzg3!0ekWR--&GSP@^wc=D=#+#)%KiVJrbuv4k`D<8fb<9WlRw(di<%{*Cacy zZuZij4z>ftXV<_D!y#SfUyNZ1`%WvBKU(vs43&IT)|>!fSdIFA50G@HKde*qD1wn*IbGRjt^uCko|awLit~)p+o5;; zw`@>#UD=>ur<_&*;xbapz{=NNX{!*Wo=7zy=I1$=mp8`~1SuI=&B>Z)rm+r6KT18e zbxIX=n&n+JGIW;OC6KL=cEG!%OzHA?t-zUE<@rc$$WqTzMmd#cG*2H9{pe9eAN@Y_&foooXv57}AIlaeVB6RhSixiWn-#%3b(O!Hum zW#oZ3hhB}Dj&WB-2Ko&Dk&H;+~?rc08F!K^Kj$Nt+TXxPn4Q;?T_z&1r=Ydk<6=n^%7% zp5S_cFpXpFD<2Ld#2Lazx(0idHPC} zz3<%~f+##8yNN1sNlI-`B;(R+u_77;<{V7}W&r^6RcwDwf;~v|yXr7?qc&a$2qW~h zG3d7iS?hB&8L@nAcbJ&B|2f9!Q5Vfx#(%SlU{2BFa3ROm|C$voT>sl67F*$~;5x)8 zh%24(|4*KqUn17a^i?yYsLpPsdGJBy^9|Tt&kg7ceGnN$u7spWln%~gmEFUm->>xF zVuwkOt26SkAzL@UjVaad_xqt;Rgrr6p`A~$&kzCa z7t|ymeO}Z3cz<}ibET0ybXWku-xocOF+iU=F!2Y%*y%x=Oa!Uo*Wm9YtIg_y^%Ug@Ag|98|<)Sg;m08JhBu{`1}-F^}m02 zsPsV}n;N*inRl0y$3lZA+t_aM01_xG>9P%Ehltn}EmoP3tv(LABa+OqEzMdL>Y#)k zFhOwmZ6fVx-3!0Bmyp0DEpuYT;V^#sj)opaPrYgJG0tl9ap;Me4=?G%X4x$zT2A`i zCiF+wlN9wb-jpYxW-RhAu%+0yFS0Dez)jh8pd99-5{S+mVt^|Dqz*;5j4iQmAowVuQql0OAt1o?VSY1Q6ny*c`?rQKTkaZewCp!dx4Rc3OzTv1vy)^ zFgYv@G|A5m$HS2I(H&Z9r0F6R!EQ$Lr?w56h=joew;ZW}%$UAZ0v?1eG4W<7HrWZ# zSK)wO=azF+4)HBks}Ng|0Z()Nb0VRSjsXGTUGlWR+l7?wdCx0;PMkGUG5$-V!H9MU zPdPcdn*`Rbw)2w~MM}%%e0RLA%=??O+O%&}tlJ?x7~?(yF|^0pn7!0w z5FL858q3#6B2d?@>quffbLx8|p@}WVc=Yr;I?G#Q++E^oA_X()4Cx_Jnc-J_fD$-D zFU+YExh-KEUVG18C2vc>EYx3ed-*IY03}yi+$GYR&yVK)(p>;|uVyD-v0tSJmm`8u zIf~=<%9$7@#dpqms3VZBRyY6(o>+og&`}%qsQZyhYWC4(VKHDq^mYkur4^Gt8UR z54y$sbjXeM$y$XM;>`YEzn|q4iwQQB*-m%8NcDBQ5z-AyF4xXN@NyG|`*ObuEqg$I z_x@ws3s-&)9KYJ|PW)r*>v2^_0%`*6%(`T`RgvCycrNp@YM_X!rT#hkIRQpMC?F z#tbc#{MR&a9m8Fi>p$O`s_k0$Oq&^gG5QCSV^Sg=;ILlnKYty5)*eer%+L84LZ zGjvjvWSsuEHU^4&AV-JDeT3}GSx%V0u_y(A^YfOTq3Z+hH>(xi()62TO0#f)Ny*(r z${GU3qo&&G1k%xIG=DG2DCvi+gSDAi_GQ44#O}Qgj^RtQ{RrFw7#blcyFE%@eR^qi z=T0^+n50^+KRZV0SBPkN&&1OnJBJ%8B?SI#OV3?Y;&OZ46Tz;t{sU5^I}YJ>cwBzT zG}x^14CSSUow2?!HBHS)4jk1K?xI0{#a=xtWL3)4>DaVE+%#u7?a;n+ z?RV;sJcm|EoD9xs4a|F@W9{!-3uxuQ4&Q#IF7;uK4(6pZWTne>O9p|5&s5tGB#*a- zzoeHNP9p)@vUOAvr?za&GZ0DOZaQ{@rzVK%_J1FD(a03WONQE2vxWv!?CWKI6ZwBL z0H5JbCnZj5?ltzjr0iki<3yT7GMPL;`+(*!D5AM4Cj!D-tOUai6wospNy!}hsC{Uk zLAPnGjK-)ZhG8^dwQJ!{w6c{=`apQOIGnfdw%JtcN{#r*^Z(-noxX5t6Qzdk3yIAb zw~EbhPCfK+r?&7N^)%CN^@~jNKOF5jW@T9e28PGDY^awu8sE{}fZsMR$Q+Z=%R@7Y zIa=){P^SPCoD{%6QxHshVH>%x)c>__DW4?hTqpopEsabvSJqEHgLLuFnXuKjl3j)} zALUH5%t7D2Ej06<|EL{n`^fp_l8a;JqJ23-=_b+U~|^xL`RRL=9(ns`GkhkJ9U zgnBEgCAJB=3I`T)1s55Xen*m|O3dfiZ2#lIE<%r~j+fzQgpoqou&prSP9e+&*d*V7 z&belaJD4=2g=F9{%8JeHXHKNrws<~6CW)c!E@h!WH`Dl&!gcZ4S&cIkV9GP=LQ;zOB4g6uZ4 zh8}rXx0bedcGIp%SNp^=S#`Gmr+&kTZ{Z!%)Dc0E~F!DL3ITdvW;Z zYHOGjjqkU5d6l6j=2m@Kp}S%>3I6-vt9!038P2JM|Xm3jo&gQVts zp@z`Ljij6;F^{bf;VM!j$hH9CGuF!dy%88-mQ~w4`ecbofq&f8^@5rX@ADPFNM~%; zr~8Nq!OjE^N=I>V6JFC7RWH%<9&$nXEBT=<)hAE?d|XLpfZ_M{NE;VrIL@=#V?rq! z=q0RCNHPtmYtGV_oPJqV!5LWFl{IaF6LygR01+xdo`yvcEFu5*RWqgtlWs%ow>lz} zpRtPv9#=S*I6EH`-17!P;(n_w%W*R+c^q)najOTVl`=IJ1`T$m~~%>4{$6 zkHwF=m~5)`loFG}VEYip%VjeZiyG3Q*l*_8Z*6?byFO=dC64V+$B%JX*s02C7o2xg zwDjf5<35a9n&*h%5)YHiVq-# z*6hmuKoGFC?&gVZYN%_Wa|5>Y=f!3I<%K@uX^(~s80DWM)Y+cT=2D5LB=H9v(iAP* zXH5wt<6z8AgLc*IAUCOsO}HBhv`{p&`>b!f69#Xgay+4dZ8M*jY26&AgNjo6qj=A z1HP{Mryr2uMWXt$GCa4#Tu6I!fjZjeI9yfPJ(XH%`lbBYF`OD6niUO?`#9_Z;EJG( zf%@LRjfb;L*N_k5yqT95_C2?ggSyebu0T^3dzuYfJUp%e%p3Ut9O#fK^=>Mglm08e zBR1&YNaiPo|!^=%&dLPN2iA_z`v(-<`<6+*l6uD6B`6GbE4WbX`w(XD4vRR zTpf3w17|AsJMFu=2jh#lUnDn)r*IIMgg?~D8mjCXBgMk|9poS?Hl)`s@Zb3XEbvYb zcWXa9=;fnP(ZUTb*6$(jzvW;_tMhTSwYSE%=9h8~_&S?!#>uSZz(TCnB*Sd=sTV%4 z?!|>QjzBj}m9n95EJD0EeAr;vMTM_Ar5O}ySZjadpLPG9{VJ+h!3rZrm)%upU{Psf z5d2hRT|VFeWKmW_vzB+$o- zA~nDnsf#w^X@bprR=iAL%!TygYS^hozv_zdio`O>o!X_LKYCOaJ-nEkrc`^Q# zho+ut$uA&*5s8J7#c_9VZKsCfFSOPQ*}kh%Z70T`fDA)(bLEBD&MH2e>e~@B1Sxyt zymQ|56lhlU-$`X8*s4`M_JaCT-N$vb0JDh*F^S9=-UX$=45aQvzNa10+~+0gTstV? z0SvJs>X$Fn5bW7%^4uc=iL|5FSkdzF29m0d(4JXg*L%ZmL6>|Ay@KB38{d$~_`IUQ zY}6W7P>rRR#mH-m5E8+ejySMfQViADaM1_D2aIV$ZY7X85BT}f-ILB+e_lHDSW-ae zvnNnXL1VrkxB89Kqey5xbYz=mT4^f54AUuOw zxLh;mG7d(bVy5hSmIC~Jg9VA+a zr-z($RkGSiKO#hji~QfR6Lr_i^Y75P4ruAq&iw8fS753EEbSc(nUA$F?zQyk@Jck8 z22M@>j2@NhS53RK{_+Hn$vR0uWpFl^!{<;bcY_G?wJ#DnK~V!ewlA1pmbu9j+tT)8 zGdDe*rO>V9P69ocK|*}*d`E*HK8J?AqnQ%zB2FLJ<$`^?)xfH96$-1Ri5`Yp|I!<2 z{>N8ekq&`7$g#w3tO^Xh`vl;a%0_qG(BB1wU&`5Cu|BN9uuWJ!C86pEI?<(K#cE;@rJ^yxW4 z7wmm%4l3%RYS5xcf$%ueQ(iQU3o|BI2;M*;R)1U@_B3ppdKy=HaAu>zXnLY6h!{|CzHiaTKXHdnCsYC z7JG#C_G45xAFN__Zz{o5Ls)LFscRlr%H@-{5Yf(^G|P&cVU`_BSO%{fWTTd$RQ)n& z(la%kE3n|^y&qDVdfv<{`phz!5(B__Iy5APp~%T%?zzo%>xn^s|7+~6g&e=IALnJM zOss7Ko5Ow`a$7jZH9g5J>Aj$g|I?S8sW~As=*r^r-`xx@M*5u|wT1PZ1d>N!59Q@t zl3R408!~$vih09{)Zl;ikHOj$CPA}b=>uqc{#n%%7|f0k^_zZ)(KL{~F)s9XC zrNf{VhpGrG1(t&3&Qd~2nhc*huH?Ko13Jj@xmMn{m_!pWB%_%u@S_uR_2Dt&vJ|m| zlQJ;H1gW{D`a&+*ur3KGbRAU}2JBwyy$S`5Eejx$EsD0998r`)L2@Zei6zEwlCV8| zkAWGouaH*#5eTjhD+h+ICPcS)jyEED*kaQ31pI-1lPFakBcw`9Jje!bBGd8yXprDD z3=|77VW*>mO1)wJ+~Kl0wog6~GYd)UI_`jLU)0gp%?xuOV|j?yvW@}E%qi8E%TWJG zNM!G~W8XT0@qOBlZt?S5v`L|h-lVj*(>+L|dQGuAA2ao7u&+k`4oLY^5dl5?33*d(B zJXjyv8l9HBCr)$x!^|G`qzIdrq43_hmchCF03W9=)|CdShPytRD)JZIQl1YjfjY0; z>p8MAO?RZ7Az0zT0UdfprrmO!aFUo-mzras_eG@Xg{LIjj-K!#+=y>_$dIPwWn7xv z58#NMzvaf%RXAO{ajwm34#txRJ$}21AhF;l%;~x~?N}M&+2tGy_@zh@YWqGG6=%Y? z^w0*gLV#lhxFtW-q!rG-h73fctA{a-=4a+sekXys8wO1-b0bK`#R$OMiJ@2GxAZml=Kg=p!DZ z!F>2%mml#gB1DU9AoPU^i;2)?vn-{hi{?E^Ao@f_vQNgjINE3aAq2xRGyuYGvFu0N`&eaIJ@RQ zkWZ9aS`EV7VQ7nUmWI~c2E-u0pvW;Y(iA%e507sT2m>~06Dx=*sxgNCIl@~{Yp@)L zQ&c*$GEK(?X73Q8Tt$KYs`98*biqmwntwA{&4U=7gPy|pbe|t+KeWNPS6`k0_^jyO z>JW*^eo9LC6rQKMl^lWPTUf$hao0%hCVkZaM;6@}=&B(ya20Jc8usRRQ}WIygFKW) zB(o#I8)O3KX!}7JGAwo#;}kJ^A%{TQ{oCgV%Sz6A1Vs_GAy-T>wx&W|&gVW|D z2+}J}@|E;;Iz5uSX0IlhESU#j7fR(%fs%2L(9&i>^gsRdp}ql*w2t1=tK(W##L`&! zQHemV<%*lsc5PU-#QU8miZ=MyTW4RVFe(x5ft!4`y~*3$1!Tb49**%ow%o5dZ&+&; zhZW9WeuOFK4Eb91thLTI$AfMH{>_iNum_fsVDGwAkja6%874Z(g160;u~0RjV* z#dw@Y8<+>WU(&vZgKi^=Gb02;l;k~jzV6fKpul>!LpkGHNiXmD!=kLw3Z*9F+*vl? z>bk&Z;+G2wBV<)axh0AU)}qgD(IOrj0P@OD5P&83X@&FKPexnf<4i``j0)?_e^qrj zO8Iw>196U}=a2j1rr!UIBmb^W2Bq*m5Rol%IepJ+OKi346x-c??&}ejic~)EJ1IK2 zl9GYZmx1e8Vq*{4Ougqm(H5OQ!Bo1>xKZ680D8zz&ERoxoC>e^q3%nVNP!7_d2~+A zY1`47?TjIxl@6-^f3`0kWX)9&lREzFt(I6uUxwoVry>5A=@E@yMP8XAwu#j&CyOb! z{QU?JRV*<1L)0JxVx-@!O&f6NA(_&@$)jsU-ViWH4I03-h&NgO5rR3~ax8LAs5`f3 z-X~~uD6&bC1s3bWtX{>{<{7^KI4xMYh?x_Ke?q>+v;QYN5b*2rYN%;U0&;jtM46#P zz}k}Vp6oqvH#EEAmtpRQ5+=iolZ}uw0e)Qv$d}G#O_MO|K}s*MB}L zI7Q!_NLjaUUDHXIi3YTUga?gm8zUFEr8u?edY;Fq@_lzjbh9~kX}k#Gre5)?(AX&~>?Qn`azCYi|zk0yA|CfS}-XP>yKHeOAB<;obAn@g^D`l8Aj| z4Qq$~V#6cY|2@ll7`SWrSQ(XM&zk)d7Hr-n5G+QrRo<670}ZvU&VVSU95&bF`X1%m zQ76nooTgG;;Gp)n>P`)}gbUn867L;lw&A_H#EF zt+aqtQTGv8m>6JBY+r*6{#wrNSK5@u_Ey56dWtQ;@XA>>2jaYMRQp$&GA2LpM1z?> zK=!I>@VI(DPK+;Es5u=~2oy$mzwnN@V)l(SArcxi%|-d7NM+#U>|1e7QE}fkRc72V zg!#q=p6Ff9jY?-vp~0-DPYlUZ`kE|-%7$n0innCG*XMDP{;Vs`*g-T^oh=HojAKiX)(Ua#V(KygaF=QYe%eZLCb|6Icg=i zNpuSeZMh&|Nq}FpxUpJ8Zog|iZd$}MyKJZPrrZB=$5<*5s9dF+d>w&}C&rZl!_V&o zbg?4i|C-$u8P!4Ksx>N;Fbk-kvO@_!p`R%CzgI;KTYK3;^DwlY$rPBf0N*-k><>n< zy`${xfdBvpe*vDQbV8r{ER2$S!CU&Oy?#c*YW-rHuzO78$qr6|+05W0#*NyS8)0#4 zhU4NoIjB7zllJb(1{~H8jv;jbP#s6eD~@ip=NrV!!a{~7Hg(9fiMX-L+em^YVK!BV zDGfeShLV4W_?5r3%EU@nx#iVuSd`kE*Nr;9ncd5yRv%(4KCd&wdfD29tJe89#Nn`R z<+~V>?4@WHzH>ASGJqK#NXbYsEGx{_BySFSy;&pjrgMI%Y#r3Bkalh?5y_B@5_{S? zB4|zN4=gHEfY~K_ZQJxFIw}ypQ%12S2DAFgKSouY`u9c8b85BcIj_!;cu$3y+uoUAoSi5X-qnro6Q-RQd5_i;%TvE| zds&a5TnfM%53hOZUURiPAhq&1+%K$uT&?-Cf=4t9%FY|aw9HE#hhS%T@Qr?&VgiHO zz*-28V;F+9h{{biH>1iG&;~!EL9=HL3P8y#$hRJ6^UXa zeKe!Y`+$y}g^;*6Mv!WnBH7J+IkRNuEA`W#XkOz!;PUvqq`!uhvb5u4f!Sv%;mSrf zdh?AjdfLeWzJ1%B%ilL2Esme)d{{MZSOUvVQ^7z>%rM`y_e~9ailVmFtf5bW7h9&< z2Q_})u;kNnGq`ZY>438Zd{IAq**;*U@yf2Tg>gHx5vL@Mw+{tQZ|a|rDlEn7DtySp zd6^~!a{IB5J|B{?m1Zak0d%=u8)9n#9725A2(|?VSp&|6P5dKnL+Xqy9&W=Bl*EzfukIc0gURYpeIcq`Rn=&S4Q9;i~@sn+thLJd=uW70;_ zRLzM<5W)1IHKfa0?c-qb&9D={zSAu zekiQygqi2N;FZuY7JY7sC_2ZRN9QI^F6_>0j3HRxB>}xv?7)lC#Bv)% zm`YRq!1*>* zrHFl_u4IDp3Mf(yd^A$Z1D0Yw`F`c#58YNnqpa}Q<1&0eiq~ph7i8sRtI;w^tXeC} zj&s%TFSQkg{*B{484N(vlUT0tAP4VgS<&L`GZNxnZ8~MZnuMvyq_EROIsc-dAUFfy z?qQisILsfFaJ~L5+IfAXGGe0YV4-o4G~4=1{skdzZgeRW1|%m_*kp1v>DbJp#4s=? zjxtqeGZQKbI{zm-fD}TBg?vQygqS@TN>su@#SCa2ixJZ-4&M1KYB7nL>UXzQZy+y? z#|4G$NXLQ6cm+u#giRr->bQPC2k1yE2_d#sNyu>@`&M|2Xl15%lNP-g>9Vcy<+jeK zkHWT?*8zrR;3m$FQ_gqoIx3AY7^fwFJ- z7Wy;Gur4VRANpOpP#yTeza3-&!NBzc1z1hjzg@{2@BuN06Dh$grDuNhv7^SoC6)ZJ z7wTcHKsXhLpJ-bICR@dWj1jc}1hV4_Z_z0+OA!XqZIu_J7?f1?ot#{=eJg*y46lZu z+ra4lEmo|d_!GedQY0Y_`{zFzl;=#xM207O8$zhPnRKg{~O zt7+KP16ovEVl?bSSe%ustL-YB0WY(2#Yc<{Ps)OU{Kn?u(ak5?c8SkHZK?w6_}L%E zqXvJgtkk$G*CeeH9B4E+!-lBEq?;Zq*ya-Z(J3pkRgD&7@QjZK<*kGb=*%%$L^ zuTe43U_n{(F%+=|b5iL>G{XT(jH+G8Gq6sd%=ap;UBIzXNwd>a?`#sFxFO}MsUJk6 z&&oXJhS@AP>q(+vo>5JSrSRbv^|Hqzf#T_qksH9%q*%o3q!W;rly6ek89p{BgAjoV zT$pCvA0?;wbuwfS6)jm4o{V_*ApawngNNcZgR}z^lYJty!%ST**ltr7Brg%__X$3u z1&^js*{M{yfdBvpqXC|$YC@m+G?d+lu;J~i=%8wsk150Sz4S1-1&0H(v}?sr)l>NP zl7&6sZ)(u*{MKQGLj($zt%JI|MDN^(gB=s}YoroeiYyFJMH9iUYgQ5uu|1&2eYERnT zZ|&k-TUe?84d=$FSMm`$L(#Xce=8Ww##Lqfo}v;HB;IRrvPvRfT46;2oQ+Bhx z(g*C&saAOCk8MRocmQRLR^`{OJOhtv4Lpx@<&fY=3l&(BE=VA;U>@eMvjgwIiXJ}) z8jcaj=2o~=vTX(Y|6^vK$~W$ug=F6X z%#~NJ*X59|u_na^dUD>zr?AKc^nk1u>w-r0^^0g|KJ0J@W|hM5*|5=|vZTS7bn_dvMF205i(`WZ*)o_#s4V3JYv3L}) z6>2IH2h6@Pc@F!`8Puk(-ps5e&E6FKWd1bKM7W=c&e)s-sS<|%e!|&7$vYn$L5J+mncq>^uK)p!Mxkk$=@>K{JRAg|Hw;`UPpd&Xw`l zSHZaj$^89T^$)fYqvU%5Kn~S58C7I6C!{adOFk4oK7tJGAxm4MDzzp$b=3>dNonnJ zs-04ujb%-jv!a<;j{f7vn?Uz` z&S|e6V3z%*%vhj}a&MN^O~jDiyCx}AL$lB=1!iV5o;xsx!k_Ziv4|O)X$}4ve18iX zgvU7!x05363QLyNuv94W%hQdFWF?377=!yxnQ*o%Za`ler==R2&Vjmqw08eP<2VNL zeiXrbBIl-)hEr2zq*UgZ+|6F$fkR5ml#Fs4%x;RW2RPuyk%muqTmZ zmD#e8b?fgXcPIjYkZ&Wjbq*Bba}jGNW9T*ePW-YWwl&%h2y5%G9fFO?cXcoAI^E5H z_Q{OS=43@hUi|`zE}r!)%XZN+W=SEXlciJjJj)^hH1Q60aOC$S6?;gmmiA8K0BjX` z9fqudEvAgv&*ge)k-(Ee3rO9g6~d6VikgtZ1jfeKxj!P z>+b)0Qm-@tNoC`ii53|@PTix!^apgUZkLNJ=x7XHg^9nO^mb)@0Xmfg24;`EL&UpW zBWhlUq`4znUXV4G2YuM~zZf+W5N0vvUD>&zc(O)>^MGDGFB1uZJWtf%#hTi&1V1*z zW`YkNbILi;*@gY2lhIp69+3OQ`CdkTf)Qb(+#Meko%&Ns*oym18&-y?@h(^77R3xY z^jqkVhA~XmgJ@j4BF~w!7OO9;WI9g-h@m{j5RS^g3}gy_IW1egcFf6_Eh@uTcx)CL zrwHYk+7zU-@mo%E$c~KGD0~}_&$HwfX~A#$-`CpHTWtwU@+KH)uam!^004R^L7J>d zs6lL*ObE}{8;DXBb)jB`6go`^?Utb&4ffdFXsZWsyw!qKgY|>@-2S|#OPCQD7Bnk2 z+_xGE0S)mmlJ<)byYAY6PAwi!-reJZNRj;&1teX{6N~MEHCj!FEc2M!w96<-At=0< zux(%5d5`YfD@`qE!gQE1;IroeFx?oVm(7p>@#s=ph7Js!w?`~ttDEH@fjY7{%qZ@O zm9%+<6*|}2YqC$m&b}amxbvhFhPu8acUBP0N`yBWpk+A*Y}LX46$9*rs7trj2YeU{ zt@6O$Rd5+ZU_x<}ydo%x!lJ8At;+0i~33pFT&5 zUg`dC5ZxB5tQHM}!uRk7+9xM$w@;gvTD$z4|0$Vz)%DzBL@0fjP1#)aMzF3r$_=j0Ck@-^# zi%U$&y}l_rPYV$w#S-d;NPs2Yf1d2;(=O5o!2k-N@L*CQU}uW zMLCO$AM*36GBfoUX$FgbFpPTam@N-AEJKg!h-gpo^OT7omuI!A#O^1TBBp@v(wm$k zcxiF^w0QwrX_Sx=I8{r<-9jiiHAd1_RvHn`#4Z)Y+)tSAYoV}Hvj~Y-3Xm`c0^dmy zE-Z2dAlS?-S}0(wUf9vEvq+g^ z;vrJx6wa0_*+ETYCM~Z%B!&A#6^|395Q`3P5Oi<9t>ulB=l0t@a1TAi`jl2f9`PD4Hw@e<~4>zYF1|TiN#&zMflm zi)yWaeQNG)X&X5saFatqhq)3{uu1f_w;#%CUKUC@y3(#c=C7@bwFaIO6rf?%O3e0j zfh{rZJyPfXn~QzP{T%IcsmxwzEvYuV>ZT1Qucc%5CKIk|?YxHgr5SWX037ex9v*$| zUo_3ZJ?+S?XNQnqdeIqpfpVVR^q7ykXB?4CXsioTz4Ya(nY@<1(sNYOmtHVv-BLI-2LBC0rlcXl=@w z;em6)+-U_3XbMJ+;L*+c7=ufnI< zB)lgJd*0u6O(X`}MY=Vxg&WWX{Ybqjp_&Pgg6nR8v>i4i9%mYy z2v!%Ak*O{(S`+zQ{VZ}24t{j1;NW*mpM^cW1{;1eU+~jc9V@jQ3BdU~kAp2WIM6v@ zQTjVYxS?#tDi}QuJ>@qUECHFl9n-@NO(>bdeq|ttC^dI>G%NW)Ro)cmSIi=D$Z9;V zKc*k#IB7S}hS2s`YIB1B1od6Fs_xNJe+Y!B9^K0Jfq7uUc3QOjj2@N;D9Da`%_i}A zbi=WZuT4z;&46eCSou4lm*Z>NpGc}e-hw_K8q!o}@50tFReNfijYz&~e3^2O0N0ba zNMqL4y>5(u2Z|}P=SH+?=C28?!cWwCQ(J`!_SRor{3ZH}2`Z@WG$yxtGj?Z>pc}F< zwC&n+cv}s7##W4I3fYQAswt$?ZC#eo`w6&QpaKueZelTbqQAp@7cqB1X{%MAX=fN%SC9q%Ix_2H+MqsO#q!3)0{GP7<1O!<3n~|@bOyOI z%~QQMlG*w(v_xO>SE+t^HHk6;fJz(sPQxQQ!PuzNe2_Z#Eqf@Di;luT^A0#2-$)i} z%&HM@fk$RHs{bw=4NKgh5|T(TklPy=kbaYdB(us-FfGv@hKMWsUd6?Q3xN zg2DD%Z;h?;x~ifTm;z&3NC)d<($9|EeJnvmKdw;2)A}`J4PEamhc5F70Sz`^uc>Zw zV;2-Utbo{}mBuVXbgGOU0S=OB$D`Dx7=d)`lHZnKzRmxDh`3?Kh+IGdNQcd@TEy&P zjk&*py2c4aw{U5N?~yhj#WkMuM_A<3p6)U5IUj>ELkd^ziC%^uJfC65o<6b>mEKvj zUy;DKVZ~^Gz)kzNG-_3s8bVpH&ROx1-uuAJ4*NnnVdhZ#J2<--U{^aU5G^~1AOYJ} zpGKR}GO0N8%i)UN!jOIY%)L6+S{b=rHk5a?^sP97HD?WBpNhzQQ=oA{za-W5<)iI6 z@(Cn45VCfZpLX@2)g8LX_RLUkn2swXsf3b%#^7L;K}#&EqV>hj#(mAb3+8{xV}tKr zPL^kxU{)pLR5#CQ#HbVC=?-Z?k~l2sCX$JDR_mcSBM-rgAL9N+~{jo4MgaBY@ zY)<#VLp!hUbAy&i&lU9m{euw0vdJeqfDFQ|t1eRUP+{)%zZJX%9e+Mo6EEpqu^&s= zLfdb%ZA?4S>PSW{Xd>glJ}<@r)EerEz$`Q5?M1O{lhh7)rCicV=y9Ij=-I26|$eoKTZN{}Ajm6&EfW=9S+$@) z2P+TH9Il z(|+Qjt2zbxvm=aZ;XX)6l)73hX_IZy?Og7;Lb>md@IRo_2$Q&PrTDZXt6eP}RJS9KVC2e4O3D^dbbw(7)#|hGtB*TKd%9W0aid zpJahglForv^h;5`g0^`}X!$xi3NXxXrQvh@fk;>|==DwD2>PLY4G=Tn9bo-#*AEUN z^F`Q;EiW|oEC^V+;Yuwq-Bz^SGsJR)3U(oaK{eQGOMX!$#yv*}BQV%kp`X|t`j>++ zo78Nf-a2Obu-^=f1LzupvXbjGjfq{G`9P1uXiVYNwk)*=A`ki@nl4eCO07 zD)YM#MqkE@hdP?5@-<;L13UiD5}aG5bq z>%)#Ia0$ZXDf{A|GX6x&dg51SBX`qn7dCB;4c#kLh}CEZf1j2g3gn;(0lW03F0v1g z$KYSgTHX4~OLCCX?Iqh0FSh@6a1{`7LWVB0X;>1}f3W19Adxr%{7^KXNxafpaDKIign0D+K1A z_xOaay}U>%di>8oW)ji;zTIo>92Uf%P@($Zzf*cjfJ2>nZd!K%tjEEIFJt+ymX^dh z^JaJE`vHcO<+HuVcP4}|RgT^wgy>rqQ{>*@DL^vv|HTyw|Qi%ICfps!ATB`3O z3+al#yo(Isfp1})t2|nu99y)NHz0~vobpF_Q#|xnByL*i{oY%GezZBqN12lFSp!x( z0hD7mHl2hNu8c?zf%_5ivOsHm9Ri2g}K{eH{s z8DO1I0mIGkh*?X`R48adz_sGWBx(LVDNg}L8_=X0n8xenll4-(36Mm7S$7h*aE#h^s5H5sy1OLhPFCgnw5hjzEd>{nou?EE_%PoJE-gJw2CD`(RU}&@AaNp|{ z!3I)tjy8cipAw^~CI$pp2fbj?OKM=`$7HWF3j5qE zLJUxE0g5m>4p-j-9l(aKiK&IV%4>8^!RC*kt{T~Y6N{#--s~$L_qIZ7+s}M6A(0l~ zf6mZ&d!{+k{s%|CLuYG?;FoEe`3^aidzIpTH!j^(E&}C=H`CS{O0=fN4BmXQbgM9# zV+S)SsFxdCCROX#dMZc$!i2-e8+T|iY@L4p1>(jYn4e{|x>=mDlP5WNKe!CyF4d#@&u|omVoBwE+D^_rx(s^baPnBXW%KDS9mP~b zE30xl4n9jLWej{vDcih#JxnG|cyonLZjd3p^!CDb%}Npc(Lc*(sWswuhW^Zrnh+88 z^am9)Fe8}R>28cBRBo5sK2!47#3MTP86`Ov0mU}`ThL{Mo_Kw9NS#3p{TCInhb+kK z(?dj|&w>1|37w?8hOeWu!&q#|Dd}CBIdjvvV(FK6!5bTwX8S3unhW^-@{@SvR=rS1 zV?mC$Pao;owQH3$9fTD3*cd?LQt)?Bd5vf?&K{ag@X+I)2g#AEfD!<_?piWUw0Zk# zE6O!X;dP@XMQ*KspcWB~zXz)NE&9iKfuTYZWO8WA!=5yN)M#WTrC6(dM3WD?D(KE? zkc+`apw#b7Rw6#Z;o-%isLpaG^+hM9XOH3EVid?8Fj)z4^-wY7%@T^vr)vAC@vjW;@y8DEo zR0bIYJ)UZKTEFq=Q(JA_+r~-!dzJc42STeBrzO4d#l5jLE9G^oST!&3zr|7n0(7|&&$QNGI&`bPJ~j4F`Ws|K-_kHO2& zfgb(B?Ln^Yl!Z^?x=5ad+ihNr}I5MjQ7?h-kqaZiPbyi#i5f}3@_ty zwkcQqiL*x+kkj_-6?K5HX6VRy3~s?0Rlfq0GgPfVCh5KoQNWRq6^$4|Ty1QJ3CjB6 z-s|yug3XE!e`yS`*!e=Iaz&SwktbE;6}p z5ub|i(DfI89kwZg(f)YEozxZO-2#AKxH&(l7wQee(1?71fgOdd5A5hBeF~^`QeZ`h zG4`$S%kBSqXVMfUz{PeYY{VnR;`d`e_Yg@=Q>HoLtOSw7`-7SeLa&LEF1|oQ&qq7n zyv!CGoFB8C1Rfe@K7Ee`)p(h#n>JlNrECBF4=Oz@;Z8p&D428!gj_b4gw|-iMOx&& z9cuN>LZNz4&9TyG&ifI{YFw?i>8uWg7c(b^Xp`e6PNKw!4dC8X{bLzp94g(L_lfbQ z&-d#Y5=tsDw@W9<*@o(-3}*V|-G zl{RC;kJQP_*#;{s>gc-kkp&@UYn)%E$r1Bdb2iaDcSn$m+ouHc%5!nqIcHU2iD`hv z4TAmeBwSkUmmWM$wPceBT0Jb5=csk;ozo4Q{|>F8O75y7!66ae5Rma(CL|nujaCNs z)SMd+wlcY~@D~p`+BK1_40((e{UeQ7D9-+$*smF}g+?`Q(dNGX0hpmz<&Sk-_2pA` zHQu$!n90^>!i+)d&5vAK!m;9ZOP6caT+&nwu14(bq8)Xf(^bHEU~X0;YF}Me*A~N> zM9Z~3B_o#j(wTqZrE8li*4eRtc&bRl4f&CUxAc>6^v$T_Ah#>OC{IDH_&DsOBd=iR zjc{S@xGlhPDJsc{ZvE!TklPPw^>@jX2F$a*>E`&ju7;8@7p)nvGVYS}EN%M5AIhlm zq=6A{iZoOAgE)wn;^8yCP~TxrxZHIwF|3{u3X@v7iT^r+8W2WTlqCSqWV#2t#4DWx$np5jgia;dJX0sWO>M@gb!q;x9BDFB1^ z)5tSNUYz(j&CNeT=#^fDTN%@^$f)u2reb0#L~3GlCa_)Zt3(f7?W zF?01+fEEiu_8&kjcNPb{ly*q5kze&jWdTX3w?HI9^h{-K8GH}SRKISHDJd$?bUkVUocEDdR&Y2s!ByQ%g( zq_$+ymE922h$LKr8RjsPa*#MUg@^SDvYLqnWpR=2g{?EU%tV43x6^;qE9p^** zKBlAQbf6|_Q_g|3sV9-xp0{U4$zqrdvuuw1$w_C{6eZqyI$#H^1X2FYx{uvcT{?)u zU(qw>1P2~0*uMEU?nG*UuV{b-2;q{7laxH9bWqui>Z>T#@%}O3fAgN};EK9AYma~( zD2ur@?p`Z)OTh#`m`;>83*gjIR`m_GgJnw`hKeSS9AS=G_*tH|B@^Lx=dA=?X|tAy zI{1l9K|xjLGWpa+1f>^_U>`iIIDx7(T|{HijQ_?6=!1VNmc(Zg)!OUvdXJJt@xF|6 zH~)$aM3CL>J`Xv%IO0nZr5PGL6wm1ru%`-6VO+xgt5a|gpJTme^=HurU-hM^EUQUbCk#DO(9?drmfbH#il7*CJN zmFsC%eacKpWfjHDb=i(4I%q{{?3@$2PC-9$>EYo`)X2@MQm=G=mmP$ z085Q->-gD!+8^h&7Z4A`kgLZsy(fEJ6e+?>+fOB+V-=YK3Z09&a7GQ~o`e3jgs(`B zwfaznSMoYsF5iw)eL{##ukY(OZ+vhAk^z$U#Tb|kJvQpcDq%b1M#S9S*G&q=2K39G zKMk^2mme(y6Vj4uOfp#m2s$W=3L3tto_+vvamUjMph>?AsBfFNqdP{;=nqj5w1A+B%5(2PrEVsC3%Wc}Ul42K(JYnV#e5v<6@g z`?()UZt;7-Qy^89PGN3on$54rNZv}N{#I}ZK4g*fGHJCWY7VD%EjxLy?GmFVq#{gx zPpS^kO9MK-*G`TRon-YLC0YC7nJk)56Ngj;UsZa9*D?Gltd0@fhF-)g3+h8k9OSmz zg1S4uc*)%!_v3k@5Xz<*KMP`ePab+MkMNv*)c56};-ZbcU1Uh{#SJU@THGrJE|#o-Q+2vn8%!(3;czWQG#)1d*6X)D~dovAQ*@2fAAAP{%Y0{$48nd}v&1FC&MK=H|4$0p9hisUCc)2KsNktK7tg_gNd zw+Chd)C~<9d6<@JZ^Qar0iv?gQ%*PJ4ltO+0mf-_*gvz4Eym#KU1|VJT2-TdHN}df z*o&hRv##q!K{0jO&3kFyjg)~)>rN)NOwuS{_v4JWO(F)-uG70ZpcZInMG~x=Z&4?~ zb?ret-dKoJ<@f6Z=!0s z`h63&l5UNPz9giQ;9!@tQY2tr#igFXU@0ZDbE00`iRcNC+~w-7%15^SYO-&rEE;F3 zUN-!!CB6*M zrr78VOt)J~&w8|rM=4;!9FZW0o8hj$lvk#^{nHwo(>k?$c>4YCzT8I2O#q~oBQbp( zEvMp@ByiBpaE(^XG;4ucOVY3yhJn@llU04cJK9GKTXo=}5$ zfX96p?7L>L^rz8sM=AnQ&dBig=xLb|zBmw9M3W0HeVgRwOM|^@{MzlX9(0A3R_sY4 zkr&40ot|?`X7HsMKtEkB$<)u-3}=H4lRbzw&MXsF$iae00;J#-R)@sHLvh%Rn>jJ; zfd`yUSYe{D=z9(Zl$0|i121+MxaUa;zCO?>(O}}w2!g@niRDea+^-Bntlp^^+dY!0 zyS9I)puvK*!=x}C?;?OoqSOp87diXbe$R|hy;H`1hY#P+*+rS_dQl;L=r^{ZI}KlV z0)Cv-!3Fua!{K3v4bGg$wi5ux4743>BFX+z;BKNKj)l&JXS<`op{AuFE7&PB0H?zZe+m?G zR$wQP6T|PANxTs9mC~yr*o0DslxNv4DDYAPl)}HR zc(cdAmGW3IRBz?1BPflL?wc&;bIL6c5p+0TkQs@2I%SM3#8{JcF0i_>?#4e&K0f;g z#x^lSj!{jqC)x^q5*{P|zaMyQgSZX>A|!`vaFbjVjYQAbJTgS}$WQT#S}aEVkYM9f z8*!n@2PbHdD(=3Kdp@RNV1GRxEN_M(R?(K~eLRuM|J_@n4s}5OC>?zxP(>bvT^Pm0 z|I6+$NJvvfqh+jRQRg2vHPf!o z(z~!{$(9$Z^!L^O5qeS+By?b?D!bX(OOoKvN?CQN-X$2RQN86Ul|2npa}wO!x@7#` zzSizR;Zp;xUC4=aKF{>1w=JKG;*s(_ld%YP6PFe@?|rV;LhK3M}H2|=h|6p*Zs{-p&?=Se2Gq7Vha0E zH)8cVnsZW`KhVdr`xLK9Y-v=#9zE_Zu*t^q)H$T zFrkIru8=Ct_qZ=%3y9YMD#3Bek}LKV|4B>_^8CLI$*xgSqC2R=SN9rz$S2;dbqGo9 zsRd#z(&j?!p9*3L;InP2sh{Ns$mGYuo0SCejM#-8$PlN=V|2D8+B88Ab=WFw=AFna zGI-&DU|co#QXI|Fqs1?LDtdfVX#=EpZWjQ%7rsAcx864D!8(mzo&;i~LmAdZ(@Z;h zTid~CYnk!|1Ryb#3bJ`1?Qti&4KRw97L5|_{A(}$V^`zao#L?YMHWZbZ*Ts#n!^N5cKT=Ma~E z`1VoY^2z;+y@k~s5oqhybG3H*P%Yy55`UlVlGNZt7+shN6f^5j2KQ%@JmVbfQ33vj zla{I}EV+oUN@!od>o#-i&VI*-F2L$kwfs@hO?hSr3O?3aqVG?*cJi+sB3B_)38lHT80gqpGMcMNPYrEWHOaYRfupsOPWG z?~7Z(n47^5nk4?$PjtVVV&E>^+sx&I0(H`Z*`|%=8yhbnd zW(Pxj5aNa#7kmwVCuM*Kv=>ye8PJ?5O{dl5jTs~dk#7QhnH*NU=#@TlOZim~zI-(R zPb9i`9OadQ8g{ba*jV*R*5>rIUc>+F7Lk@@u8g642)ZVd#vAA@P4)auTB^KVAliLM z9i7ZwtqQv@fOrecp_lqXY!Da`yVQOBP-dG@L8o9o!qW>H`1GSy{A9QxCERTiq z5d%L+_bOfaweuTb+5q|ze<}B-t31t?w5n8mDECh_n)J`)l*x_dg@LS?h(j|opBR7A z4n`G3^QcY#CoKM~k5Oxk-ubi-i=&=$1_R5@AKpV3$!I|HdCEm=`s>vG&le9n z&z?3AK18KfmdoPU)H)RrVfWU!DHz|NMhNomS@b5iu(a1c{R}?IhY3}+15sHN{u7$h z&OvR-1|urp!kDaUK?|OyGii6XVMLXakKHJ8a~RU#aal{SSJOgJGTV%nvs5CcL3L8Q z2PAWCA`fQNtvKl#iMG%c3kj#0pp|q^snGw7%+wd(o1HVa0tW_v;-8x*bw3*T9iF@k zW3LXAj<`(;6?`F&#Q;#)m-N7#Gyv)eL$Z?e7-uT;OVF7D(D-LzAr# z4Cs#)0lq1^tM|&{mJ%$zy~&8G!rJ!OdQ_6>c@Xf7vPjJ}$~ba)NvdaHx>5BnWn2q* zgoG90Q>z{4o~3~am^Y>v6lNwMOaBy4$tp5G;B>gCAy86%p?eEp3wwMAO`V8tGI3+S zLb&3>r17I9dUGlle2U>9336la7~0ogJM3(~w4TalhRGY|HkG(hzic-Liuo|=jxDeQ z`E)PfFHnhJmzCk4n1cvqP8p16?ROIrq})crh0P;*aPVzKejYW21Q4mbg)9+8HeX%Y zTp}t#5EZ3B=_4}5Br<6L#)`8P&0)CG;dkcBAA)5Z4;SOkY66sk*E9poH|uyJd>+*> z2YS(Amxpn#61K#ySokzrIOo^B8b7gt6+e8~6g)}d9Hj@1q(f3ZRj z(pT%x(viSq`K^{2M(prk>EYC{>=(xl*>I+E=9xX*h+;*P0!c$s^}1KrgcF5B+cLfe z+UCmkau?sET>d=avFrQ=4|XDo7_iNKa`yn!cTg<%ag?J zQl~c`Y6<==W&8I6>i#6U`GTv5ly(Nx zN_96lcd9=|P#21LBu4ZQ{fI<0SAw}m6Fs7uCdH{hlL&F$pSy{7MQ`!r$2Z}ke}&3+ zDiZ|_`V-U6Kl0HDvY9Zu))$B#e#ZMf`#xZem0{hqj6gSLo+lv5ARpL~kHfQ?X?q+3 z>l;^|kW&nkGJ}8d{=(-o^fhBo0((`5RE)VUf!AB^w7(PD3o3{*SL&-|ouO1tn>csr zkCI(s!b4`u6q2*{rW(r=Dkv>4x4|>8wEd0n2IFwt9Q02fWFddvFx}P}%4f!b1aTeVT?<`I*o^SsS!WI9HOHxyo^7jD;gt=@ZE3qeZ^v?j8zm{3` zzL^~sU*C65$dd%YEP#Gcf1vRBOoqN_XX|h2#&r8y$F|u_^EiM`8npkG-nI);#>3Pt^(uws&&P68q-_g zG~WsCh?l8R55bi<@%5+^3sKvSZ&9dOVYI*1Fw^$mZy`Zfc|T19K}#S&&OOn*X6HXa zFE-~77>#kkV$NO}gz^2#WamYa(;vFs_({}}s#q0PhgIYCV$iSgpr0MT-hXs<19zG* z%{n~!{9@4H2d@ioC|cSUT*U`Rd%cfz?c$1C=uNr;ye8(A)q zZixqJ5?wOZM+BZ6^=v@|k#%~GUgKCWktk+(&PHO6qDUZG7wyPP^bAf5%Nr_%BB=y~ z$roX4aSA|qSuB_*yjGbjt>B|!g5!qYdg*zC+DCaI7FY_2)sC7P3?l?H4M1OW6}mGL zg%3|cEs_BPts@gk$mhuvIN~Z?JJ1&(pHc5wB#N2#!-QQqd}bG>iEVywBIy&h9^Lh@IJVOlF@CIit@lUS6f|Cu_sS=2bLtnh1h9-Qg3Xw+JqYg6|4~H zK09_N*FbLf^q1{Dv2>0DnUp6a;Iwy;$+Ff@*65<&{2N7FsVYhXnc*zz$4Q1(U1O`~+rr`nPBzY(!9^BXD+H>r z(Yac>8*WX0F6`Wbgp%{ulV{u}3dqoXhDm-(s|?xBZmaeXRyJW}x4RYPR9s%vlg)V3 zU-`D-~T#y+rn z(T|768!&w>2%gwmX20fe_UYvY^Ipmdh9*#ORGg2p-c;(pGcY-!gJ zo#Y6PQ0E!FDZGt@wmhKMZf~k!!tL%F=~5bnc|XFCv)hMs#!b7m$6^kE{_tSvlY$BN zk43cm5fBDCe(JK_L10;ljU_*tf4zr^eNTa_-36VyBA<#0Z3L>S^Mv()0mU;)pm|k%~P)euqev@lT zVZ*ZTGWiCuDOffb1_gv2n3*G?YnCqs)w=q;&zu0{I-1o{M?2f1I3n}0hq`m+RBj49jbl5)w1=WhYEuf5J|u2CuJxhCM{^%b;Ln7-?&5BqNio&{BJy_L@MucP$y{Gyb6ZWb`FHo7>*lOjv z*RR@H-Qt$Idng-O?AKIx*ntNWANFC2Zq8lX3>Zn-y3W>D0?^lr8nVn_@(d>J{mJO)0ic1ECqOU#k z_xI)l(u!-HQpNibGQ#4KRIih`GL4V^0=b>U{KC1A$~a5g1c3xo(mN} zGMR5(3UACLF8NDz{%5EJ#U_gj?|M7uH@myYRUfNMwk7{j4h?$~kX2(#=V6^dlCbc> zMZC8QrN(H^*RUIj>$@DzX$0i9Tcy=CQJ}y<2hXagYkNZogMcigPQe5Lv7oUg3n;dfT>~GJFY73xH=!C> zfHo1xVh;|)(!Qfq8`KRB!iMNMu+tKq!%70nK5L=#HemCf67FtX7puW*Lf^$E42Zgd zChK)u_&-?u^zen^qH23{eMjLKm+R>aesK zQI+$OnIE6f1}027D;X&YhR7dL43j!(9O-XXk5b@@H40>QVi1hBXcyEn$6#T&W2V`3GF9Jp+>l#zD`?%WI~FtrHm z(yN|Vx2zGW;4wA}(GJ4Ts+GfFak}#r%3DLMCsemXlj;i!9baB}d=>_JPOF{$sw8r3 zVrhK;E37ufN93E7!2mBn(7%u)u+{RC8zI%`hFCzAYxUS>rdgY4oPKqy+@^ZL>=89i z6hpfH_ad07Tny~QygJKjN$mel=1F0inWL`9R!8$SQy2)&L;=H|h5a+@21JROwC$yw zDONwyrYvAIX_7g?Ri`s3FvgHv9m%FR-q9bf&n&r|Owpg3Bhy?JOU7o7>F*mRh!#b_ zXTvVlR5_FB@BeGtz9&w%`8RKrCM_l_nAi-W7C&sZ`rX5UL(m*V~79WL+i{z89Pv;Zd4{=S*IGfd(X$<59MFH;@;A8 zLq1w?%O>YFtr*VaCX1dRuSdV)J%f&nd>($0c+SoGRFLovIU|J1mDUI1<{f1hq+%O9 z5f_ZX2LrN5=yag&4Z7G!15Tezdvl80}~3&nIobl>o2}Ha!Ss- zI3HI*4QZGEN6B=Tk2$|WP5)Xacv8yAT?2u=YFf9{NMK;s;@OoJC&~crZTnCzrC*!^ zppZC2LXiKQVI=g8kJ$iB=fa)ZnJp|oXZY|}!4LwdX7(v7?4f>$3Y!jqJ7XsJ3SAFTWR@fsK_l3Q%u6k1aMz&idHU+ni+HC}N{AfWf(3yO3dZrFG+ zgZ)PK{(JsS(4wmRGTadGi5vs2eEdkhJStPizp90bx$w3o2~A6hDQg=W?Bl-+1}#UzjlG20TEV) zp}-l3J3xX0V{Mb9#?zv)Z8@7%k0dy}j^29M9qaCicOG(NV`;37cB9QW7C(2hgHt=!fjbCeko z#T8>Rm~D|_**Up}RiC*L3?Js}(C=mYvUH4*x;YoLsFEibg?81B${s8nDg363Wp{fD zYG8#3jvC=G4Wez={cfTf7PCmZYbuI!?mHDMhPfOh;ZIStApB_mM3G@7?u=$+^eg83 zNYX*0$zfVMvndoeS50S|rozQfD+FQh`Y3Kt>41MP`%A_&2Dg8YpQdIbr#5m^Taadg z!3fzO*7}fi7Dx9F%wU4{#7GAKnTlj(#DlCT5QKma*fwOynW}Oe7B-=RBprg3SOO)6 zCm)0;ne}Ee?pzyCPbJq3Gepx8g^xCAs3V>XxM_$#=H-|a7_4zhak<)gv1G5+7no8BE-0vD+<7HCBxc%HrBwQjYuzJZ<^ReoS?18n2Zm%|^ql#SZndAPS)4Ab z?kA}!j;XN?W6(qIX~wGpj+PjmE9LLOT~czRgeSxF0oXOhzK&=AC^QG-R1bVO*nQw>ZCS|&WLiD>+QErcm{MV~e+USbHR+|Mt zjQ>F)M#Q})0i>#=&PNp*%ryOne9~4XpD0u4dutZZi0rmVFu5?Y%_oT#JwJN_fTrAq zcX0PhgG8+ATWb%xzv0b5?6D$esUUaX4ZmX@tdWdS6fn>OStsyKmcM~P*$9)X3BzLv z3V2E|>doi4MFb69%xmLsSJ!cEoq6W>eT34wP!z+`06CxOV%6S0>NEjFDyh7a%TB%# zI~7`%Ysr1MZxU-~)c-WeUObrH94WeGP+03c7>cOl_Np7uv+$y30zxN}lgJAe`vJ=a z%GhccKnvezx~0ug+p^`}$tI?#I!K43GC_>QuGiLg3V75QlR2vF3*P2-I71j{gEqis zH_!UssxD;=7PB(Ptum8gy&p&kr84>hglzjDwA@*&UnRZG38uxo^@x(H1iTQ~P-!Ri z&-I98hu9ag_+mGJR$MV20yzCIM6C_&m*K$1bGzH1-o&Q_ZMYt38kcJ{_PhyPd*EJs zUUBZjvTlu4P~&eort~X#d-X zkfNKr;;jxXC9)tsOyVoRwU4=mmbVFz2>o_u{R5N@7lLbkTz8O!ti@=P1s#~e9oP!; z+E4h^BF;x~6M$|8SfXwaWlrOr%M23W;*q?y9=#8z`Q~O#T$@ztY!Z0s2Lt#Mh#IR zvn$GKSH!vcJgT;~V(?jD;m}^L)=?q|Yy$$B;k-pg%v;Pm)jtG;w%c#!6 zvTUE>C)ZDvTI3O@RE>>QhWu5BLmH%a7*$gHE1ETjPe1C=qMXs_eNu$>SbToeCnB(L z<#cA_M)}5i#7J=O9!X$tFQI&|ch|)R;B#|k3qr^cGQ5kly;gem6H|7~i4f0^>7Q*X z5ncSTSlE&tkviMdlTW54)*VbL3t`Tizld{hP*Fh*K!TMFZ7D%6I{oT@)pxM0>(Q^x z<>i0@CmrOq#G+exHFH>jki);%^~Er91Ywa;`hQhPc5V1pts|tEO#WlZ0dwCF2-kXr zQFb22s{I4$fGXbKiJa9Oi&{Co>LQzDE-@nLcnabd(}hLEO(SDunFA`E2I;f%cH9}i z%7_fHP;oG2|Ju>WkK+YF{JifWp@x(O+yy_=_CBe)Iphrm&Id2{c_`lR4cvSJ-{{(i zIhRhuf*#$uyjOFi2Qz=2%0u9^fGJm`G1-iEC<^NUB^tImWtGXw8rXdDpOc$sAV)wQ z(;f}3EwWX7n;|WT58ba`ZmD)U8F$`%Sp{S>WVTD*;UxneW*z5;v{SCPu)5%uu4b>g zQQOnjHwWbBL0(q`*4@1FS_gw1y?`kjaVRJAI_6kVMAJp2W%rK+I!LA<=0ddnM68`5 zR{3;`Zhx~RJV}2JrP}$x>aq(doMc~QV}3potyk5h_2t1cnwA3Uo*>9yWmEPB#$;0FaC1Nua48hDChC@1 z3<*JyLVUKH;G>qf#8$}V5lyBAm`W9nJ@pfoeOE1=xun{nH`+tbNz~my`tDjMPp%Dt zK-UzU;ypWE3RcM+&m_b6^_W4biTtYi`K;+hf6$TotaHjkkiS#<=K`H5lD)Vk^XK&j zFYg~`oZP$SpNq^vA=#7h{5R7`vmU}J%_D0~x@JwTUPIK*w=7orWV4AE-Gpe%Z~Pd2 zb-PCz$Cm^K(pDvb#qfGEHR~t8^Bl|T6#A?gf3oNlG}pbW_+5eBC2Bg1xCZ^1hCL^iZ)ANg z>xqkUQ;by&b#nO?Ip+B%P{ zg++E6M`4N8v_^iI7Bw=fLbznMBAg%GL$9%`>k{O$UOuSi$Zu9CDuV_!)xH+O>f`)k zN629K1$DTa)&iKck>_(XWL^Q`RW;SgA`b{_W2EwKTw#$p(yRbT|D(X4_vz342oTNn zd^8>Iv8)IzeN_Na5<;j?QlL>4E>Em8Zkl~*Skgm3<>%Sdz@Y^7dD`RP<*xW}){%Sl zae{m&mx*8>%flkDl%&f0kA}2r4Rru}-Y0q`PF;|Qhc~;LG&w`?Ci|Bv< z>&0G#ilCk^d?vQ*KjDg-r*69x15<5~U#8}oNP|7ezUQ|NJimJ(#(+#?s&I4PI*=*? ztP{9vD;F{F@X=x^$NR-KOVb~sy6K~_= zwUk9#ig4X*JqkZ}#aqG0xiGJc{k~>~$q{IPNbHO5C&OyJCO=`UcF@!!}|1N9o~st(g{N(K2d;djOt-x>JwlHO%NnSrLsm} zIT3>o)=rOV%^%QWlFjEh*|C{fu`>EQ#ZQ9nuQ96Wi>dhG)p#zk-%B)%QqlMn(q!fy z2U6jAWoA(tyK{PuHxLSUXu#i`_Gq=z3SveiuVSo}!#y4A?$iC;UH&qo-kL+fR+Y{k zy-m=+@+*+<#Rd6c$R_ zLzM#^enOXfNWqnCg!R*UR%IX}Ma<$M#IfOFi@X0-Wqqt=+n}t=eBjRzA$IaXIdau$ z)gB%h&-qZ;=3E%l|{__XVa|CJNlb6;M6z&@M2^p7mLD~*KfV>7)~oh;R^wT zjV^*S&FST2u}Z9#03FW5pVSEns~~nwe$P15y`FmzN$ix*vDn9~`vM7E$bv@VGj=g} zljk*BGU|iKPFW>YG=2ho&Dkj9uLbMoD04f{YfK~8*j!nS?zwv%s~!Pb_sIW6J}2qA zR1Tn@3dG0Anf@SZ#6F-BG4qOe1Lkk294xU`i$UiXP^Z<7AfW}LhoOg~Hun`PC(HWT z^n)GAAhf_tZE0zdEfbeB=Mh1lNR{RgUQ$2$u{BQsb$VRcG$7r;hP}=nPkm@s7JdiQ zMM0mh#=<6M1{>9%>Kfi*#2PZ9K6&QW6xZ-@|0B&R{<76inVOlRABE~V1gy4b0P)Pq zzdfWEBb;(@_#)7i`;o%FoDTPN0MP%XqL?k)Vy(+}z2nT_`@_O(AY^TDtqKOPuj)+eNoWY(mRm?>@rr6km^=2yIx|$3How0@$BUKU94_%4J(Ji3;a1oW0_`iK&>7pkV-LHe$w1{@-ef6=y` zvs+-~pxv1oVXOh~Jve; z-(N3NAJ~gda{Wb@fM}+^?TVR%|&{U&nHrtzTDK$$LX&(;JJr!^V#@6OGp4q8RY_NJq5YYlgXlj@#0;~Uw+QBpfjOAM?(+U6T@VR#e5Ly9tIKs_y|+K68^@85+TH6tOJfJ2C$2*!Mw|= zk}t8mXD0V?ffS3|#p9rE?kX`-D1h!m?n0YDu=#HT5Ly33Q|2H%Xkv;aTjiQWF zfP#Ilz;k&;M}Lm+r7>+ETeffKOLH*&LJ3qX50LdJzVQ%WV@&O`g3XtIg%36*zj19? zU6s?c4%MB**oCjc7{j7fi={eZc;XLbC2T(Q<&IW{oZ_h@Ez8>*FkjUPw~tHQeZ25`*YtY?J3?ynJaIarr2dLL#j)Ms_S?A zQXyl}+_+Hr6e0%vRcKYy!A6vg`Z=2x*5#>IClAH|3u8IUI2MVX7eqrY3U~>mP+<}9 zxRYVt+X14<@lpF5AAlr+G)l)MptepQTWSmU9pc0Dv6aGf-hR2-MBCH4XRmf06<+Vt zSSj&&_GH1_5WRT|rI=nLr5(cCka8#P$yL}74*>Lg|I1&f?DsB%F1+l7%j0w{f`4<0 zOIYuWAT3Hk8ijOg4{jien)m)Z3<~0~ZkMiw{S;6q5Mz{k!H!%K$Y(Dsv`B)4SV4uL zVW7NVjlVuHk8YvREP|_D&QbkHVpV+PfnsE^f|CF+58=Xm`uqi&O7;Etp@JJ4jhb|T zh&c8-_U`f)$quQerHRpU!v3N|X2r2Rl%aCXB4P|0%LoED_h!|ItE;cwF{G;N@^v=g z(q`_x0x0Zax6uFj&d5(O#Eyly@Y%&{Xx-_S`(#tEbl$m?AHCMK?GzV-Nird8eowC@ zp<>{eLFK55_bAL9aQWZ%iMNUgEr^0sm!E(d_OqURz-(=Hg~z`lHb_lg{Ywt=Qj)y6 znP|Hg#cu{_B~B2H^-bfw`ZLm#h?a7603b~fy}|&gRdOLPst=&*u#!0^U#RsGnAE6% zXc9>41Qw0DQ_4Y6P+X)JpmNiA(&eKi;u625*Ch06NNpk=5n8H+ZSV7?Iti*$nu^2> z-5+1i59{kqELFq7A!sqq{Gj5Q&df!*L4F57D*|oU+>DNH3#SbRb5m?>R~m}1bf!A> zu)YVm*~nTZ8*Ycy7Lw9dbq-1Tp0b!gNx0~>u%dwc%M#})vPaDhs9`o*^Ju3DG6jWS z-Ig}hq$IF6qFb&kA`p}SduezHV56efHGiHKo2iBC26F{unpb`gsj-U~sxT-U_D|55 z1y;=GJvsOmw;dIe5WTXfQv?HF;xHVwT7)?dFnpwf?P5EK9D@J{g!6@-%5WzKn{ zU=R$J$kiuJ*$HxU>sI&IEz3}{?xKDAMDPE;96~1;uEEqlHS-g7TO~(qt`()a~@T{G~o5}2bRxk z5NJCRISu2tGuMTO;PMXsm^R-Gy(W}Xa?UAY1fk|bvMBjeLC6z2k3kPui{#}=E1_R1 zDWtKL^jwF{LoBB{Sar%S&k0RChQ)qa_%Y0(rQdBaoB6~|?~`|R{8H1FWOjv5=;ydr zhEcg1p{)2vL%%stA|I4^%BtR&cO(1k&ZyY)PSIn#i&G-Ni7ti z*QMw*)sv83X zvQ{q1r?iOH-}^gxFoaiHMB$Ub({jt|(KKmLs|%`O0fP~>>t#wkmsc*zTp@>f?y;Ud z3U?weKfTGNITmc(H{4Zd$$fk1KH-h+z4aejjK+18OH`_8E<40bhU-16R}ll9iwmG- zz}=5Juf6gnkn;-7zZ2DYX0aA+T&nF>?R|)ml?9K?!bt72$7V;f0sLe_HoZz~P%#QL zHa0Y7F4r@qdh$-#$~UarkiMF`PQEkA!r0;tIm;@Co{#?o7?hTSzTk$)HvwnN?mR&* z9%1WTa{N(mKDcRyCMO1$*=Q#v0bpb(0!yuPwuqP1B!}?McR{ zX-djFDH0dzV;#$d3j3SN1ejT2c5Uj0V6(Z~;K$u-WlV}PlHz$WU802I%XZ4@yXTWr z+=-Fmu&{ytS`I%bH#*rF*Wj*eB}&$cqZ15_lEf1m^?lbWFL3?5KN%`z-fke*XmeEp zE_IGes}p9t5CG2HV!6)#9t$r3qc$Q0#^4Jt=)v~dY8c8@^ZW$B?;dQngsf#K1Y>q4 zLp~!l0%+CCh9UQi>QWV9P)fY@xmrx~ny|ssHKyFXWKC-Z7FRt>$5+MU8+@(18P&q`eFhKDo&jb{qO@W?2OoA?z{XuLSU7i7Wcd;5LlMvn~J_&~40PzT8>%DAQDN zo?XtOEx64iov6H8$2m`DZJGLz({qUYjCY878e$Nfp;Q@A7b@Q2$G@X$2!pfEc-T_4A50h8}=%WIH@b?{sG7O8AS_6?~8hyEFw@@74Iyx)CQ~u`v?;nb5Ls=>gA0 zV9SV1!;;LT#msPYG!-DAo7z;0kNx zXo!g+FCqrUZjD#U7>jwZH}6MBkLdA#NR9kpNG*yE{MSly@3FE~6@b8l@F`8cZMuS99rks2%=@9(KD%JbI|`@L@njLD3Y5=Dl=I`&3|G8 zxSGyG$(R^@+gWB4gsKDhW78+UPE9c2@XJ@WGea{^hWtaFxj>@oj=$YTn2H(m=!Y0$gWE0a+Kc_<>VAK76ts)U{}`*)ASqW#cKit}IMdq)97zF%u3T z^m_{=dspPz5p(;ZR*5^7V4*Q5xCN9jlgkOjO#^|J!gE3R`?@*@$W4Y?vU%rm_{*;E zx@&q!sF{dCMd8{QT<*?8Y>8oP8lb)m*ueqEN4O}v}vVvRZcUF z`nrBW8j`hy##EYn+efu?>Zv;h{knCD4m;4Ckcp>5!ZJN3jg@H2 zfFgmaj40G6rw>zlZ1;^_=<%Z<1Y6gA_!Lc#iaNgG_`oIpieKqcGxQZCl{ym1Qzp(h z&wx4OsdR&%Hj57qEM2aMWU-y@*$2{@`Qbr6 zt;7Y0Y~P0;4(-?5?Fni^5*z#T6Fi&WfJ7yRd>uZjl7D6BNj#F5E#OUC^E}o%-1(Ge zD4K{g+C8do+9()9QuA=_BXkbrzI^h#y?$#`VbBW>N|JS8h zb*n&ZxKsKmM#^9jzFm1(@No(19thi%i5@K~W1ZKfB`#pB$#%{-JmC{Lvu3#PdWChr z$)vPSb}~^crA;OA9-HjaJBFr$VX;PC<`v9+(y-QUMt1ZjmD2~_>sP~k*w3nbPlKEi z-iaV5wX6G2(>MM*cuJ6~0CtN}Z z)*eKM?VjWssfJ zZ1x%9cbazsv@*o=-{wk6Fs-A=RMHl+uCOrwXxjBHL)O!x0&5y;klk z>uO6O^T0fN--4nSkmE0W=}ELzUD)xW=<%DdB1As^||wMmqjqQFgN`rDK1R zDQ1OE9y{LuLsSQXI+Jm1XFhPVq*u>qixw$AhswnkWyX8c-?ogkOX~s>6+K zrL}OeLMQFXW0u(BF;eWFX$^^^AptE07$yKhI-FTaliq1@h zt2VdvnNZ~>@BS^Ak(~Uyk^rHwxo(aF6IcNMh)iI>>x0Srq|1TevFWf`#6 zik+P!4o#!^m1Q<_vl6 zq6Jk(8+2q#rnlK$HPt~KYMe7%_yy$tn$zoIozVyEt#{v;C2b8p7344>T)_Ev8SidU z^^k^G(lDM?01TK>`*{Z_oATKUgYcI#&$e)m%coBc*)FU8V~#YAlE7#N)vo5#mS4uz z?TWe=vV86H=A(fxK+HH-{ikTx(JEZ>Q}G8%!Azne|6-BjCo z+I`S~u=BW=Jbl1p_WBXG09EF=iI961ik4mAjuaEX>ve7c7@u3;C{a#|6F4`Dd5?@E zFpMg~93W!x#jj9&)yDYDwYj7NyR2%V$Kc3$Qq=*Vd!uR$Y(WYMNa#@0f z#OFZHwN;TqgbV?A{aB<|%c4>=yKB$tnFJ2RJ>gk`qY%E>N@>NJjN>qW)1v1e{!k>K zPE6WP`#1S&nd{0cSkho-AI@E6m4RR@mLhA$pb>MW{`|k;S7PQa z0h@%6QLmS!T6nu|e3Z;fx{+-u0~}O;x9I~tAIn7BvqQ}HDsE%B43e^9woGT<62skZ zZU{r)kUGBT&GbxnjuROiT0U6T_cOMk@F|w7I4Gt5@!x|$6@P>MO~dtNW>&D(h?6|j z^*tT%1eGBnZ&>*X+g}v+b|}0A93vn|d?40X4FJy-SkS9H;5*f2?Wi~V=rzAnPF&6xf#PcWEcCNhwMrZ=OPm(LEbeeIEM zS^;iU>O@8Jm0ELS*`N+iY=}`@muELq<07#aty^i;H;cupOrBZKQ);AD$|$aZAbYM7iW@mU`>-hvoLi+7qDbHdN>!hBJ~_# z@oK{J8)#hk20~~g*nGrXUL}0zVkOkZqCgjBQ|b+Jw4)C7Lm?#w^O?lW$u?@3aU<|@ z$`;11Z@#Jzz=Zb-ghtO>_u9K=JO1eFLT>aCWv&)iJ1L!tO;{Zb`V7=Eb}X{!a#*9gh=n}NMpep6TI9~)nMJEf-$M1N#tYj< zEx`H$Zl_vl;mcV$yI^3 zjo6uKfDB@&Lu zi_5WzkK&uaB8~#eZ}}iMHu5T$y7*~ES&6l5>DE9l*8y&asR_MnK`X-v;C2T1Sqn=^soYw!UbdGD9WY90m=^&Y$3TCwH~n*SlCrc`Oq1k1}=(8 z*-2iD4{fz=#gs6>^nEOrMNi9wF_RG7t5~K0OEx9d!W7=N9|<>)wv?7lqK~g`aT)7L z`PMec`QFf+(AF13m3y9&4icH^+(`S6q*ft~s<#{s=o~xk=w;Yg=OuNW&0YruupJ&vqE8 zQcoh9kp%t+D9B{C+!HjiA_dh-+}#?L!E>T2W{3BZ`7NkW#wYh#sa-Wu%f~}S23YpN zIXjjk@@fi%oL{MY>;ix#&U_q8hZ9v^CIiO*OiU&XlF_M(VU7Ts>56Zs0VEF3a@5S6 z>~(W4U|@#IZbFv5Z{1A!?q)NAO({6ESF_ha#LkIkJ!kN6*DMvE#hOux-WsvPu@*0! z|Cq&0>}>V*`(;Ucx^8S>Yy$L~ED?(TtTD(hU;v=zIl$J#l7BA}oYi`v%Gh7>MVSas zfofDfuuw!vCfH2_6@M1uJzN9lb(d}T!@S8R<^Y!jx;YOMN>V1j(#JuWZE&Kns;ZKY`ff~rj}HvD z&k}1AEf>VbWU4q>&!!ZX0K@DNDTHI0Lc&#~MDu8I$f8s8d1 zk!#;d#NJ)(?K&}++OqSh@6v&ec$kEXu z;`gPXoZ5HcdSU5AB@jKaIgqwqaR;N$*b@l~_Hs39&dNfPn@UDR()ElqxJ}FpwyN~} zw`&q609Eg1qqImc6l3vWp2DneUe@Rg^qwr2thP=T1;ZiCqkDo|oB^3I*#SfH{_wW3=weDA;LC3_vA)V!*(e99- z*SCM#l0YLR-nfug?ya6Ga1{DBi1aA3G>1%7>RIU=6#XNGtBwP6O;7g8~)n=e5kjoSq~z$Y$5+CWqu&^SFT z#^!W4!^sWB9p={`5}1Cf>`-zMJE4Dy0!kNC<&hpi`EaSVr8983zlslJ)&meBka#-2 zl3k+G4WJXJjlXfMA8hB83oBOxe&pwlF0ozA@0e`B)tyo%LUyqzuhpZJ;%_lN$WR$h3SbTRY`>w zv`kHjt8_qrePE(*buIp1618rVERPgp69;sj3Nni{!OPZWt1-kVY1n_tDg!0W^`AF- zP2~48!>kYNX?}HflCQlsvIdz#>Y5y08tO3$K?daGR@c*zzPG@~8eo;d?2B4h4mjN_(mQ`7y^H>BpXVHLAyWAT>s}U}l7@S1mpv@}JcP$nDGNjLe!>`2snG7%8;}Xm~v=7k9MP8aN z31&WiQz|^My`xv$K{|77F6--_&cAJ!-k(^aX>FoV+;_qCO1B%Q?hc=}!8ig+f%!7} z6Z;UOlx>F%8@W#K?}EmUd0Y$aB}%B+bpFE%1Cy_Z&tLR@~2z(0vUq-t`d5M*7sK_HL&$Us$_) zcB%J7z-d~i#<(3Rw_x_E+T0Wb{z8E)W%wB|#asqngw(`?ce$b&sDcaCG8!y_O{aAi$*0As(H7?N2EAY_!iD!|pX$Lz$|Du66ujx>yq$YB6&*^7oEf0#Hm!k|c zlXRm#fRZsvF(mI$B5Lc_iNdXN^_NVlBhJnK5{=-gOzG$vVZ||^oKS?58V(^D_{}t^!}nwwu4GV+ z_?mTp3ez9QlUdhRsoP+Hh~ixB+fK{pFI*7Lz`z)wEV0%J>@L?E6cqGGFz^=3&CZOm z#AjRxtNEC>;eaBjU2l2#c#oosThTd4X^j>-ciC3h35>3kas`hN&%RJg4IY85PQF#9 zR$Z$$h%UX#Axg?hSC0abx9kwAE38qx{NxGQ55OjeWf@K`iHtpDS+~l4pJJ-QrHTF$ zA|+ayOdZCftBIxPNYHx0uPKU$#hq5{h`}X6Ce0-EJf%P2#q@yDr9Xce-SqqmA&=4y z9iF#dJ$+@gp$YzA4vjbj>cLvLNodWj78!A3F6~n;n6+UdJ+FKp326yXCGgAZ(m2RU z)^$ntSXYSH`|KnOtLv;{7j8R-%ec!)F5_l4IiVH8zm3L!#GzLv*&$2FO~wr7Rdn52 zX&#A94a>er{tWmXfC-NjHN(!kviIxvA7Mdx$zZL{7#d`h&@d1v$OC|W2is(!&jI1nuZ;xC+MSxNpBN&i!S?<+7o{F9iKci5m_B$e-9yAp2kENQhe3ZIy)kgy0oLW6 zHQW3Il{r>SyiQ;&aaZmKu<*iwFS*h|Y>e!jBR!x`$=(;SP7ZeujD#}6$LjSkKYaRM z!#aMW)`4S|Eiy)WGj|-n@oW`!sO@@HoIF=YyzO+n5A`n1rJLF%cDyAz&fd-YBt4XH zl6*30t!$UZ*(7nnkv?$mva65Hj=$5u)onh=i3om(T#uHmE2cr#!SZ8rX0Ue5354|& z4rR5!>?XPDzz;2xF)`@}(Qhtk`ET&gz)yF&ZMv+9OrHf>z9;Q!sh2K_{8CU|wYu3* zj#zfavbnWe?}1qhKsBR=K6rz4o#n8)b0ByIX1d(A18i-%CF8yaf-!EBHBn5puoU8oInhprIusl>Gea* zzaQc9U7~GUFbfl^sTQ!>lOp~FtCq;T?CzN+&888B;mcpn(MR>}Y_2x}%w^&00KR(- zR4R$ZthZcrqz1^DMUW5sfQjbS&eDSnhO|;2Alx8!%fmxeqt)|`FW;z^oT^BSEF5@P zc)c4lVF34JVGMDFL0IToax2ZYz2EKb{MJisiQb`x1aVzO;cn_sTar*bGEGh&0MQRq zc_dX(sXd>TjyL^!HT|?%Pr>JL7h5E{seo0NwC>*shE+JHuA9Khf^iM7llRPZI$c-v z0cK2b?OR!6$y?bnb{d{1?lX*B#OlFi1z?o5*xyv3r)tvAB}x>r$@UX5iSh9r-rj3Q zb#4;Q-$-VS2@EvUqv;M{Zei?S+OqvE5B9);wsSn!lp$=^v9~nbc`=j!DD9MZJ zslN`p-EK%+6CK;gVUc!v|L<8O1eRVD&TWwQPFiwE#|z$cyTgh_zwMzHP?c|DK}+nQ ze)wl&k?c$yqSE|VGf%Lx&Op?e+#t`&1O)yPR_b+|l9%m%J za=I4@SSWM?8G?65xY4C*+|?eJIRDb#NNeiX_v49A;WC0X)g*1FOqadYh3Ka13UM@B zTwmAV?5*vYw`ilg#QtJu*Z7)aUz~q=n_d2d*CbdAO3Sg6T~x^9h8%`jM~+%!ZR-l@ z)p>i>&p~B*r+~rJPwXhQGdB&f4HBCy<_%oV^^{$B&DIBfn$6(34!Ci&a-6tV3^dB> zUr(nUK=)Qa&|vtY7aj-3L%psn)hR3Ns8t&siCAwkaL-Z%KDfPMze#TVA2wU}y37pi zRVNp^?u*47-!iqbxq?I=#K14z{5U;#(|T!XQ48bq;L5M&W~Gca_CpTWyN>;25c)+{ zCYAZ$dkpfwv;XP=m^?387eo=l`og6$tW`K}-rl3PkW~yx{f44jifG5&{}AErtDw(A zqJ0s{*gdDP2rjDANn1(^DYeUaIgb_sZ{TgFlQTlekZ|a{GEsVgBfxm>egom2AT`+K zRL<4mPtV>5HmMU*7f}lCSR#D%(fG$0=Pbs>RjfMz({MXr;&>$1EjnQ4j~OV!6+JqAFV1IPTVcq>G|n*rTZubD8_~u@`_8AKO7|Hw zh*?hO?D+sed;!pR)DS}eC&U#$9*P|St?cy4PxjltPPYev!Y>Lm?xci-Xi;5~Y(T0L zW(Y9jgeTcNGm4Z53t%7l#L11DJJquo#0Zxh`T8kJ^%2?J5tyM-r)v3`S$+8Sl<&<^ z5@^3%A<6b3^^VXZ`gJyLq<32w{eC+YsDb&HJk|}#$ZuTsD9Edonj#Y z&I(sM(mO9~Z5p0RWiRyl?q+2}1Y-D}%G=oJB&g;sVdde9V^s{6bvbGYla^b4h7VyK zLG=&h#q^NT>*Q)h$MZQ7wbl;=Kwz%Ds(#H_qls94%B7C4bSr+zK6JZp&iTBhe@1EI5^v||M=Bmz+H zd`A^|B*01h1lqws`wafD4S## z1n`&Fmo+an=|J8>Pm<4 z(u>f#-k_Ry*fHOwzy{z*W9euA~*-vvfp2A%cSV?78=lVD3#P{)RZTsQ&X~a0uuy~DMKcL&Mvjb z3VNk#xP5X4UHSL2=XG%n;dVMFmQ9NTJe-yChWtq;dWMG}URhfcLd_3c{r7!aunrB5 z$WOOsJT;Ib^iDZuG@huYPIzB_GqRj5hmbZ4vAqT`A�QaHlZ|0oAB%BXgG3jd_HQ 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%0A8XOs0Gn(ciE5(sk}F0O~@r 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�C@knwaRX5(iu=7O?}CS8>tZdk{y(QN<~;pCH@CAaf-61 z3*aCoC39?2r-p2h_8v**@tF>h4Ktu42;RvKdsNL)jrO9P?aQH0I^b0c__b0kYGzoA zBWDWWdLc_bUz$hv8H`|s300Y`*n&Gydennc4hra<$n5ZXdg_R+Kn_sMWm4-;-t)Bf z8pK3_#}zxbgLTYrMy?JQ87kG672=Gn4q1~Ev?bF0*`~c-0QltS zCVBtUxwowPs{p8^aABB>sMaXFe+sl&@n#$glF)_?n?+J4K}K_kTohjjbRf*`CywfK zeWyGm1cM!yQMTzgFY&`n)lY$fFHw41Jsb!w4uX*;-s6(hYE3;ga1?nmJaGqls+ z^W0JIV#~r@Rtrz?#!oKB4;n|HbLm&VO{Q|nl8}}r!=6F8g}Z(axccvrN;E5zRfyub zWh<`;a@;8zcnN$5tRj$E*NCIj@l+GArfArvR4QWM&OHs>4X;Su)mKG!+ATZZU2p8Bphbe8v-#&0%*mTUIO8 zi(h2$ZD2pg8^yj7_g8E}Xq9rP)AI&aV2QM@l$UD26B4i1pe3DdS@w5~Z#NqF9v>XX zLHzMw9C%h&FRThVlTC&MQyp^L58M5$~Uv4E6~pD0Y*st1VZHW%RH z@&HyhOib2&7j_~Dbc*arNP6^!@`aAhZ&>g{m zzdKV0GC5^oyJ|5K`QC|bf|$%|-`Q8n@CNBK8zm6X-88$#p;a)-Bo7MQz@TLGQsd|= z?@YzR!I)2l1=#?=UXV*JnenTNI~AqQvv{Uc7j#rby-YM1Pjny*v?qdqHfqS0LX(X- z0L+`cdW+3+>EVUAekLwoJxo=9%cu!fChGz~)l5ORyH7_MPFP%0n45X0$xCKedAVK0 z6yZ=x^d=R006wu?*WUAXh>Vt(gNeuc>F!Tg()4MoSiD!~r>Rk0c)!!6=`a883;#RZ zSNB1EC9jkZosFJ}3z`y^nAtSN}ZGb?}LNp(kV2srap3q zFxXGE26xryF-uZ$d40#daa^0te=- zh65&Wzvmt2$feR`AeSEG<_H-p1UG7c04{`BEupNJu;mH?Byp#Ez4?^;LK?PdZ1qg*AxY7V- zhI0osO~U^?D$g#ts6Vq*vO-jsX6tDdiUeKO&crbaz0cp6CPF!?`7j)=_S0Q(WjMZ)bX2)VlkELN95y zJObJskgXLd+I(J6qPK;1SNPOUz1yypw_IE6-L`x~g0!=Iow0%1{sXeKmEbpbS`$qR zsOw}!MZZ(6g(BK^5>0P(OTMP0QZEV;XHBRKt)Fny4)l#dbX4>68eM4~SON58OR2M$ zTHIl29Iz&}xO@4#N|ZvW+MWXsZuJAAkKi>zQU+*rx)I zK>@nYU;s%#w!hF53nr}Nt`{Phm%pY-zsd{|?-Sg70zclx*JSPod<|_KZ^cX6u3Vi! z#7~y23xZr1*{b!$s5*Cj8K8XwZDuo=K8c(J$bAAG&_T-1p}*zxJhXR`&GDsC*l>lK z%_$1JiSe%RDijRcf7Rs>o{oqzwV+Nva0(qvI^}G zzY=6!kR<)StM+~nJf4!!Pj;wuj1D)XeSZiw zB!Q?c>V51#x($l!KjERH!2`pGupV!tHd_?)*5%s)l^nL&CbvO%YNz-Kp_*99qSfT1 zm)&HI%mLbzt~c3c+2U#e=@VYimW#-=>4b zI$dgLG!bL9JkOyq-XgarBG)moW+c?Erz5bL`MKndJn`_yt?GV$VMa`L?8y-mr_?`Q z%IX~&xi9ys##W{hh3kxd)gj_|_9A>yyiDzfG?4$V!Z4UbYE1xf;0n=5rvT0oSHeMt zk}+^;rs6Yo4D*;8*&_dia1nzdx$X2bH9WT|ewhhy zvGE7}GHqT5C&P)%Q=QDD*G!J~wL7+sf2HvQ*+zlOe=rcz*WE<&<+Qv;JL9jGRmvOztv9%!eOA^IbGSm-|U$i)t^X z!mZT@i2pD>+=nB!3y1hzK(6ogB`R8{7!&1iJD9XJ05+SDy{(;Q z;j;!NXYQqBO8fACBIoeNCw7%mkv~tJ&f`=J9Z*{TrMj#t<$ zCh$8#7FPzDG9a(d0>>7?rM~e>6%OdYwVkN;1R|fV>8ChQH&rEAvJGqn1dmzfqyqLk z6Z#9V-)e=%2k(pL8hOu} zx3J=myTyVWR-kLE12H;C;30?fv7u08sa1zmVU0j3Y$m4R;p_#bjhtq#g~>ud%~F%* z?k6aaOtNkX#GuOVYUAWiPQ6o{iNmRiIvHE3n|6RZPt<=wug6H2tvFfR?Ik_kd@f$= zA(9aqwd7OMXPIoMfyK>sfIxpyS=_7peHCX|D?;96CHA_&_#rNcc#qYgY?r)rdYz+A z_`z&hxp<+@MR^AZxjvHLy)7_?O(hgeN?IC&J*~GXq0VWoEV;d7i^Pl@TBsVP6{Ds5 zI#nw!!J`?|4k6z#4?ru+@|pLp`9m~B7PEh%Q8T!$4wN4moR=LB7ezq~A5^;EdT+No z(#QFWtT{Nveh9e=HZcjiL6?RJpbi#-27`oiL*yESH#1HYDBUBd6V9E{v+kK~P z8Z)FJpZ?}Yn079n;ak_7%noNCo05cpxyw7Bkc_?ghsiG~iL31_Y1mR^OKkWSy+ih1 z8#4>r6*LI%fKjiAV~syCP<2*ABUX%O^H;`7TE$PK7&{3Rg(xT($MPPeB1?$F{jFi& zD6hLf;-`~mgyO7m)Y7(qmo4#09Ie*{B)Sz2#uTkaShc}(f~C(tzIE#1HU3WZN1_U} zE~Eq!p-RpNgf@vX+r>Rfks(l%L{4OaN0gyapP42L#tQ{!Xl=V4EG}EKC9Pse)r>I4 zc9Gtp9yJZ9l(=w~GXRX)lLw%5(#Jq9l{3N_vP_cC+ zRMR?HD)RTRc8Vli-zLeuv-JxsCj=UE6X0g`M5aC8b{zFLrI|hwrV{R{N1}8`M9H(o z8AVY&pvZIRs*~9PnFfw97r}%};U@AhLH!YF<>A9`CdbhXG6v+Bg)-KU!0AEfP!aEc znr){TXT_r=fA2#LN8r#}n&X)J8Lu!QT1T@~nK640CmKf;aXhmiO)Dej!d@9-pqd_t z;9(h5-ni3jz~;Y_;I*}aS>o6rRIQfH-{Zc+LZtN=bf z6;%|y?Y&meSs%PqEjW~THa*iH!wyBK_fxzJ+MJVGMp~k58xAISN&G8YU{I3T^xCnv7n#(u)1wyruaz6s3iLB*J zHB7;xJ;n%g-|AyVy&*du|4ZI=m8x(V{_+!kO(cM$bl+RLJf94(G-D z?O?=uh@Q3vgHaJvuXy_Dj|cC|$KR0vx3CY?ijRe==`AcT|6*3zW#0&_8T964(J);?(?o11;QE1Viy&B8rsF_X|lR}E=o z;4^pi_hN+7P|s@{efbN)Hr(XpP7=-BFk zf6~QshcQr(RKl4|tellME?gqfe~FN4lKsG~RdmxuX=Y(?ky~;>kn)O9yJpI((^pQC zyyNh)gnrbD{GtAtAuYKbG{W1Qa#DB3*iHe{L3@X7fI*>_>>}8*uMc-kKJycIkzwAG zCtL3sJ2fCh>ROcGN?pF^DB&*;nU zR3hXTHb?p+EZ{DbLpq=zp{%pMh#k8#c~jL|cfg{)q(_*({p;r(yhoQSO`BPOVl$(Q zJ!e!rI9M&_fI3fv)ni-oYCkRzf=Q0ptg6DFn%Y6+jjr7ZsG%Zb)UE*pIPhiKiEFEQ z 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

    YMLkMj#cyRi?>c4u(`4sfkUs&e9H)_bI0j7Tu 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%0DhC3hQK)%)INQM{qV5Yeh<`H;lpY%zTjfE2 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

    +z#L7_}wC9ss1m@&_<9_i*slIsF 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 Klb(r@@&5rO3;p8& From a98b34ce0f810bfbe06de6493883b693b54a85b9 Mon Sep 17 00:00:00 2001 From: param Date: Fri, 13 Oct 2023 16:46:08 +0100 Subject: [PATCH 65/67] Minor change to cvvdp_nn --- pycvvdp/cvvdp_nn_metric.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/cvvdp_nn_metric.py b/pycvvdp/cvvdp_nn_metric.py index 930b459..1769218 100644 --- a/pycvvdp/cvvdp_nn_metric.py +++ b/pycvvdp/cvvdp_nn_metric.py @@ -105,7 +105,7 @@ def do_pooling_and_jods(self, Q_per_ch, base_rho_band, fps): # Q_per_ch[channel,frame,sp_band] feat_in = Q_per_ch.permute(1, 0, 2).flatten(start_dim=1) feat_intermediate, _ = self.pooling_net[0](feat_in) - feat_intermediate = torch.cat((feat_intermediate[-1], base_rho_band.unsqueeze(0))) + feat_intermediate = torch.cat((feat_intermediate[-1], torch.as_tensor(base_rho_band, device=self.device, dtype=torch.float32).unsqueeze(0))) Q = self.pooling_net[1](feat_intermediate).squeeze() * 10 return Q From 558d51e8bbfa64efcbc0db847985064202ac28d9 Mon Sep 17 00:00:00 2001 From: param Date: Sun, 15 Oct 2023 10:55:15 +0100 Subject: [PATCH 66/67] Different fps for test and reference for YUV files --- pycvvdp/video_source_yuv.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pycvvdp/video_source_yuv.py b/pycvvdp/video_source_yuv.py index 837f22a..662f680 100644 --- a/pycvvdp/video_source_yuv.py +++ b/pycvvdp/video_source_yuv.py @@ -237,11 +237,14 @@ def __exit__(self, type, value, tb): class video_source_yuv_file(video_source_dm): - def __init__( self, test_fname, reference_fname, display_photometry='standard_4k', frames=-1, full_screen_resize=None, resize_resolution=None, retain_aspect_ratio=False, verbose=False ): + def __init__( self, test_fname, reference_fname, display_photometry='standard_4k', frames=-1, full_screen_resize=None, resize_resolution=None, retain_aspect_ratio=False, match_fps=False, verbose=False ): self.reference_vidr = YUVReader(reference_fname) self.test_vidr = YUVReader(test_fname) - self.total_frames = self.test_vidr.frame_count + self.match_fps = match_fps + if not match_fps: + assert self.test_vidr.frame_count == self.reference_vidr.frame_count + self.total_frames = self.reference_vidr.frame_count self.frames = self.total_frames if frames==-1 else min(self.total_frames, frames) self.offset = 0 # Offset for random access of a shorter subsequence @@ -293,6 +296,8 @@ def get_frames_per_second(self) -> int: # scaled in absolute inits of cd/m^2. 'frame' is the frame index, # starting from 0. def get_test_frame( self, frame, device, colorspace="Y" ) -> Tensor: + if self.match_fps: + frame = int(self.test_vidr.get_frame_count() / self.reference_vidr.get_frame_count() * frame) L = self._get_frame( self.test_vidr, frame, device, colorspace ) return L From 497f6ac7cf106496f97c8776b310f36ab253925f Mon Sep 17 00:00:00 2001 From: Param Date: Sat, 11 Nov 2023 09:56:48 +0000 Subject: [PATCH 67/67] Use reference video to check number of frames --- pycvvdp/video_source_file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pycvvdp/video_source_file.py b/pycvvdp/video_source_file.py index a2c2078..7db14a8 100644 --- a/pycvvdp/video_source_file.py +++ b/pycvvdp/video_source_file.py @@ -309,7 +309,7 @@ def __init__( self, test_fname, reference_fname, display_photometry='sdr_4k_30', fps = self.reference_vidr.avg_fps if match_fps else -1 self.test_vidr = reader(vidfile=test_fname, fps=fps) - self.frames = self.test_vidr.frames if frames==-1 else frames + self.frames = self.reference_vidr.frames if frames==-1 else frames for vr in [self.test_vidr, self.reference_vidr]: if vr == self.test_vidr:

QZj z4f#`?FY77JR@GG!hCX*%)cJ14*%8TbS-p`g$$W}FsaT;fI6jb}664T#lvRXBO_4n? z-zRBBDDDI2%Tun3mhWw=C@4b{e(#A)`#g9_DdhrisIL}=$C1ZAne5dqA-kivvqc+ZuwRLKu23vJ zOuL2d1|B(b@|m*Fqq0?biSaVja7zkxtBEQByWb_Nka)h zn(~4`G!~$t$=W+K6BIsw)oP%iW2lOR+FZKNA4XB-HeCCE*bn62#w}P4?Q#c}xsM`1 zj?uR2fcLK>6c=U0f%a^IGt7M-v{B13T2C;>kc!m)5-1RZ)gQ0ho3cl4{x@quI4wM9 zJv8Dc@(*WElbkBdzzGj1bXzjlIE|u10xED(n0s0zk~4lJ?lsk506HG4x)DJEQZV;r z4&nHUvQB<#PUeLjIn=TQSf&{?;sB0Tj>O8gOI)v^yUpu4A#^xL(^sovHfhkhX-KLC z_i4$Y_;6=iizTJ?`zOK?%`ZA^g*5m_Ufo@{f!X(u3V^O!icT$mh-ZA&|ExY%+UE)F zKoH2VlYJre=hC~W`q0Ra6_7HhD34S8thg(T@J8cl90y52ZX-yb{&T+KSb4YV<-t%* zY81ZXD}z2a_m#~%QU$Yt5t*2FUqa62<_Sm+yH3=;)7HpopVjUA`wVcaKI#pKO^~-40)UAy6 z0DTVm-piNA=$r%iY;)7u_K*ed!Ui0g2NH!VNzmSaA<;#a;)o&frC}}LHRc4iiRX|EfSSn*V$6|bQiB|U9Vkj%W;iW>W&m9pJ53e;r7jQ>+mJ> z2q4A`A#S-3TTrc!-J2jT289xc`rQpUa18|cDU%rCefc@H3UJ)jPH9;H$LcLRX%9c8 zo!Va-ZQd27M+N-1`B7b5)I)N^!NQ2c|a;jNJS+;7;0w288_V&?=VpE)aBV9JV| z&>KDWgnynxko$(jvEwwKbfv(Pg>3KU7);4y1m=K<1aL3RDj!(iCo>!oAQT_;B5t9q zxFEg0n3cx9P2u8miI=Zp09VS24)YM)l{(OV+&a?pL$8W&Qbx9>P-Q}c*FX5Kldtot zi)Tk@=wq$E8}MwytznbP8QaSF_5`GJ4S+IGK~q@?FUzh&M*4kxvHTNAy~)k61qD{i zl~fU<^JYU}^a7m@iF*LS+pFoKHm3S?4}a7c#~1&a@-=R%KfX42JN0Y^t}jxF_Zt1` zlTdDvprMB{3(BOvFcs1&_qK~{dT!KVII)2)G18L}O>EAHAf;DTDT!pJG9t9G+~(Al zor2Y+a=3KUUcMualn!HGS;Gkose6z)s%3lRJ}Nax2U5FHdRoIrwj)* z=StQc^%>{4>0EeutBoXB%c}q%V-2Su*kYPG2+%)N9C^&$M9?0ON+-R(R!)(o_8@@B8Sze6V8MnbDHVAe28+Y4cIWHkq%o z;L63!aP0gY+}B9Z;(;_A`J6;NM|a zK>wsZ-TE}Z%?Joz(KbHuYM#mSnXxE!)flJ7kf^LRb>-ANF#@>BC@4pE_I;}DoFvtI zZFgb*Y&*f>Et%e9ZT<5^zP~^8`o#=@Mz1XIB6f{g#=sKBXp3SP z3jKC#E;U@5lzCEm;wqVp#?9;9JD&5xN+~?@B&2uDRl;tZA<$rLDTc!~_ zBIjh1IeD-1uGmusccgJ{!WQGII_R1T9l}W^=SCm?fRo)_8JT#LfL{dV4kscI7ff9x zNqMde`sn{$_6oyZBs|oeW*i5(SL0Uoi;GDIo4WQM7kw#^U7)f+C(Lg+cwBmpTWx-Xyx7fApK6|NrRe(e1)pk_6|3 zDu_`8c2UL$u>RmbK(+A9_>9TipPfT2rs^t7YTQ;xQgi2n+}RdJGu!;>Pkx2Ao`hsL z7Izo@hW|=M$Z&dYf-e;e@-+s@I({6C+ny$hQ+%X-pYYl8_#drlGm|CW0z8 zwz+Nk8Fp8~ICZq9v|l6vRK9fCZ_mX3$}?ruAtp%euRU$vjr~l<{^}!uo=u6DrXa*p zkqn2LUd+W9yb*;~S-I+FSMFX$Nj;OZFauN;zNo|>>ey`b=Fu$x)$Y-mreB=R9F)!i z7+aMe#Npc^VTMO5^%DRqK$?MCi_Rh4xyb>P3$e0ZxuI-03}SUXa2mquD{c##cmqAs zF{EmbtZC}VTqgn9ct|Lc9@E)eZQTpsA{QM7@5Nni??>vJR5h`Jx{GpkD&9Vc=@uv( zplooYHE4wG+T#-kB@e-J1lU@qJRkLpD;SEf$1r1h@+Hdv6I?rG9R;wnK z?_5N~0waHHNS4!Euu-!>%}<*{sz;O0eO0GgO8i`Z=DxTRe#F^EtgRud*?Su@`*sm= zA=M^ZxK&W3XSq7`0!HTLZFA{fV6&#*O-&`M*cXUJFgsQ2R6Z+39obS3z}k8FnM1Ne z5jhGZVwM&)=Ce*k4#e`vPf}k{?Icr&n z9|tITs#aT6-1(h{)?(;%oia=zSjzneQZoGB&1?31v|JgQmF|ra&-K2HC zj;b3p=b4gU2c|g!+{VdF(S|#8Ui&Y8Qr31NYGnE)BX#c<7ZWE_PaAWq^29KKQWXVP&*j@2WfGHt7K$W(K3ft3gSp`&8RN#h0i`9zdM$IunWX0kV z&ht@AVTb!O@wKH&3=fZnl(0o+6a6vOUR0-lcDGjSPC*HhWlB(~)sN7{2wAh@;R33*q`HhYC?CB@f47c(xcQ=Kgw_Jyyjy?TS)$Re_ar`b# z4IWsPAkL4ST9nc>P7s4!lkrXT#8jj;(2zouCJCt6yk@*Um}aFPyCWhS1_ON{Rl&$q%jKJdC^bN+?~fvnJ=G8UwfBFZe?Wh_NVf%S)WjFwOk{1B_6J|A0QNv zx10hwz-U2Y19;-lt+^H1^H}yT7ktV#K+845wOxSC(1F^0YHOY`E6n~5>t2YmqvkjA zw2n-Sw1Pb}iAMU9=sDxBgb1aYQy5E7Z=?SJGqS}U&@{@&$W;=!5eIk`I?OJ?fe5TJ zYg4QslbBSnw*MM?`@PmYv?~B27m10Hc5yHMi`rBTcl*((;gl%a+UMeFDY2I=ojP|kxGIhR2_`y_9svw>&eae zzq;}7S>16X;fM|}LI3Yj$PNG5gHm}ZC z?Nf|TDEA8W;R~Mc@LuV7?KR>X#kb;Rz4m}JShFAg>A33+hwkXe z{B`f3;#T~4fkHzp0Qf1!kf&a~)O6;$He+g=@#X#NQvMUL2#j-%>Yw~e3lmmzue|E1 z{zaelqL@-%edPY=&v@gj%hx$yqyAYAcrgoh5?-|0DGP(|F!s^(vGI7Gyyp#0iIRk8 z(0AA{o28~XLw@8SFFW%r!)n^DO=F^m+co%fmR}T@&$_eELc)cUtXBJE zeDN-QFs74KvnPTR_XEGTtLRP&pcJ{_x(E}QM~0k?2@n>X_o^6G#q4VNfj@N(fO-It zWl^)}?)ZFPLkA#>8nB@lh%XcTsA4|pF(4WRHM-Z+ti(1CSXY&^O}4swCAr!ncgx1k zQv6b}tu6Ou!Y(u_mXxWLf^m|$E@n#SJp9dOrfJ=2}VD2 zWhKe>*N+x8dGY~!v}2m=pCooQA@e3vnU5)j8;$Ygmb$g!{K*DuUZ9)-yYZ@OY%n!X zqv^2&c=71T2g5HM`tlRgdQ{)MA)I&96$|I{R65&e9w7HS6kjKu*dc3ynwTTHb}FZi z_4hQH7aq+PfL5>-ovT^L=}F*{w6%7`inuJ3(T9YL{18WNaq%DY`M$Tof*6p%nnt^T zPy^JeZ%yc9%3ngUcJ$TJUA(Tye+IjRWRVbsc=v@gK@lY|OeAi_O#gL&gmM3-Mlb#E zeXL0r6l^=>t$1)6^?-08?l^S}aFb$g4i;@U9rOZu8_ZBKAyJ^_BrZ9L@<)5l_=l*F70fL#pkR+?3^{@2kqr)ZfancK|ui$smt0wc|jE*a|`+Nf+-~Wmr*>J z>(X%j3iYZ$K*O5=`A4?#+-%oBGT>~$#9f&^suM@=Jq~uu!i;a$rDj*9#t-5q=8Z5X zm+Wd6&l=*K#T_+yIq7f^P$GVRKR7~9>6DMS=hs%An4;wdrqf7%h*}?lDA$Wjt_c7PzxiH{nraFc*UtAsz7uM z|8F020^pL4$8y#;?7yUtKX-Y(<_GknzC=PsK&k1{;Pfwa+DdXNUtn?BbqyWg zBC%-)!>J(FQ_PwmtbC4eYJrHEv=mJXpKbHp;Obxi-gaJOLGxOYujatxKn7QH>Gm3w znLH$j;6s9PSF&Lp#1+&q9B_~+>tU%BxI}K?jN6`HjB5Sj{BgTvrXfR}s%_@ru2Kfy z_N5Xr4BPFVOnGDNT>3J>8+^fY#F6s;C)B7)u6SN$*n<+)xrFF3sc_ym9IyqtcOHZ< zur2QqcHZ`h&D9fgcukGF{lCih%&rIGc1~H@m2RG-NqrSXaR;a}zBX6SR@`Qj}{NH zY$59n+^t$EbOUVh&sQo%X>xb%^L;y|5Xz|ri_8R!h|-BgMO_;TY4H%~rR=b@0nLkR zy}?P9NfZ!UiuTurLgzXOW4gZxx|BJdLq?baR-`E_KBdPT9+>7I&~0j|RJ?o{5$mM7 zdttPP!VMwGf+n4c$qZ+f76($lO(!Jxf~YzV^{X(o?U16koJtb}7$@$br2rlsr$SQr zyH~X%UjWKKklj3twi5$KE6|q$3l<4MM#;h2iGU)M=JvQ@Pvlgq_NcdFZc`+9BV?oc&4@Yn<%3tN!A$kL(n_o8C+vrp{M3|_>($4-s(!WnXg6l>=j&8B{KGbPvf`9 zneU{scC^{Z+YoH~!pronnzBJOvtfgSInpT584}uDv6YLu6L9hvAdaveXu=#8xR(e| zeQCj1&2_Q#JA~{25O@`9-;(Bda*_k4LhF~`iPI(wqTriDb#yTYPTlnOF4_sTP{^P< z{vc6`CtG9EH9|QbwxZ%s6-R$K)}ouNfeL^NOJrkokGr)mS0I3~!A?g^uOBW+AEh{r z;c>oy3LjfyCIQ5nS7i=%h42>aTNC!d>PHk%U5eqRBoX1tKyow&zL`q*MI{=izM#O@ zuH&uOgoMXeA1}MJ@Um+0FFZ403y=GlU{oWD!>DTvclly%1{!NGS$-efR2eUHzXBDu z9kI^pDliq}J8l1r-AhD}DPwxtu8!hHM+&_`9|$()_rHfz#}J{kb47lEGs{^*qDuT* znf!w2ufPd=$b+@$4sJAO?=%5b9GM`%6VHg0Gga`4xFHhLd_m;MvFEel)r>P8-k~oB zVETJ$zD>Si9lfQ?z;0zc_(ISx?V3bs(n7OdEpelc=kd=8!5(X(MhwkU8S00?vlXj7 zMX)G63j<+r4QLY@P*x9#)U3*k4*Cc{?oAgo3^@{10s%ZjZ;4m>z)GB3%66QZ+Aiiwle+O)r zR)YDT`C^J0GX#J5NFyic03y#YC2BRY)}muo_UVZvT;Eo{3{v2BK`Q=vJjza=Yh-%&~c(@={KIKLc}4VOJG$Wf4SzRSorp=vvT`Ff7ZNefjCRQ#Ef5IAgbt$ z#UjYZxnjiWw#)LLxwKH7UBFcieb{jzTRW2Z!9k5Du&o&G#+Z@fU$n^ZcC?HXuAWUo*~^{I1vF})d%pS0mpknx%SngA-jeE z?-9gr?NkHm>jYL-KSlw9fy|5ZJuqKt^%L)P^WM2NzTg+)LwS}r4IJ3IwC%z-=dM2qkdqUZfhNZNP$BA2D(1%lx$rMhp|k4(DfC8 zQeI&C&Hlm35WNeY@;b}+kPV!ipXsn_*Gb9U!OOMc5%EO|+wa+SthsgRw{b zjU@@FO)tjF9;bClBLFN|Pj|NsV7qW2;JJAyQ^hDQEBT*7=t;%14zHDQCWus+O@=IxXLBD@%`cIBelLgmeFm`zg8tcM`3;e<+p(CZ0q*kfuH6N%jat> znhc&Ot1dKr4kj2}0v~Rx-j>y0R6a3zg4rD+y2Vu1%NvAVJ+sTtNxbq{3v_fN5Smiw ze(a(~MrN(;1H`Pys|iW=I-P`36X0zK4t|q*7bn*dfNHI(BD4ybHg6(a6t^HjVH&|Z z&6~`~i8@EUYoe`a4W_n^hJEO9D#8e2gT0|@@TL!9{CbM7#|sGj4HVsKKcHy?zf3F@ z%DGR`6)np+l`1)(459nW{&sjKAC*`EQl({2k1;zgqMES`Db6z8Rr1gmQP?jG-F zXd{}|QOrkI;{Xv_l~5UMZ=qJA&nA*FQ*#{ty1lYt6U#3M~Eh>*IMWv-dGiU>>1AwZo0$6Pm}!0f_)?TET#X8L3L7lJ7*_wcDtt(y;IP z*1|ud$WUC1&rLjGn4!9a5+jx+&N6tLh<}?da0Zou;uX^@q!o9vjcivW=`VQOP)s-W z>vMSIE?pl{s--29r1K2+$tt>gLU zge3Yl^C|up>b!Dc_bR0FQREHFV73l;esBc4kt=WuwN18a<5l@#1b(`ymyrfB+0Dc` zToE%bm&Dbep*l4;`c{4V8j8kr=ImE@JQ`Lz&l`&m^XL_}EK#tYvaO9!Ks~fZzZAu2 z2>z}%L>%zy88y!UT z)QQK&?I~5)$ZYqa|1;7tciQLtx1HW^dk$vSxxd>{JeRG-{F2FQn&5i_EyHaL0QB9D$@r*p(z+ zlzi?D^Y=I}&>t$vu(HoND`wwk`X&+{wF-^*twMDZgRPzt4sz)bW{qVfjT z$zKg<($YReET6>wywuvr@XJ;~N}881A6!?A@Vd|)asgyK_DMbAVG)>s)i`6 zb?llm$zawv0zJQBOEa1@4Zo<7e-APZ*XRT#idEm~Kkmde;C=M-HO-^%_drWI-C#Gs zy(1Su>sTI_+V;G2BKt}eI0**-pn6EOpph#BjI-gb3L(7S=y{BxYtY-8+e2`mf8%uH ztz44p2q@X9{$I~^*VEgyARgAybzwFAk$TBN@?MijqTWB+A&c)sy()J^ALgMn7vrc0~($i!Q`Gv4JuYf&> zn!>GibvT#44is*ykXXN*+<6ovcT2;eXP)1pa*!J4Q@mHBfMTS zNx@q*vDa2j%)K8$;xYv0!u=svviBve+AE~3&!?C9EG5{m79TNaG*$m(4)(SDmR;)N z;7+*7{vUVT$YTW&FgN~2Gq3ow^d4RQwCR}<`Exa#8V4LLtoDz^RQRR=?vZ59@0;ra zovfJSbr?pe1soU*Q7c|JE=nfFNf7@jLe6MP46JD!De`b#&~H%yl$o@pxc)Dpuqxe^ z=^ff68E&^C|1bJf5BKq>6+gY}YCY-VdjKloj-o((Q%h+Mb+bFObM5N>*D)?f3vERF z;r-T}LkjMSXxyM+>`;1XS;K|;q8=RaoP>y|XJ2Rgm3S`N6I~xJ7}c6WqVVjQ3bpFU zS`B0DF8$y0U5+`;1W%O z`npUoM?Zr551ZuxAx>J#8MP zx>jiOJRu!rt||97ufDLHcK28SxPmBZtDHC?YBa1DIV0yxwltdzlAL^-pxYX3_`DL> zX?e2nhL3jx>Syo!?-LgJ!z(hPtcyLHVQ2eIyvLT$sV9wk0@DWA@;yE2L4ZSHuh`rE zw>}3~j3}U&uM!QFEQ^iX9;)pP5#q*3b#d16xr_3L|_!ApDJMD{sgEJg9a10LqXk0@SQ#WCs`Ak|X7MMUbw zq_qnU|FLwv;v~JNGd5~*jS4>Hw<6C%YBUI5#cxS=eIE zNF=#RAVXmze21WDFF=yo$x_UkwAUyXfCeY5QD>!$NG3#}p2@xe>(UHvW4C-0X`M*t$}CD73HVw*kGDN^ zpY?_o6B36Ztw41j0Md=c0!c~`7{6yw0e2UQdNGajlE4DU>?^tN{TBStULW{f(^lI7 zSI-07m$TK6a}%&l&GV%r)|oV}CnaSEm1O?|@P)%DR3|Wz$i~j*@trC3_5*6}i_#ND z?IKk%9V|dCUz&Bca1%`m+SUvyJ`1VqypMP2S@+=N{}vDe^1qK|PS~+#L#>rf;{TqD-cp#Rh!K}}f6DTwd zcaaecM-BAi_cJ@a0(BqvjO2Un!^ER`11T4I10N3_`YK+Jfp$Kxhz79HU-Dg zn?YwIgNlR$H3Xr5>Obk2k>(aZ;K`O+=S!dp2D(p5f04N1GQ;V$)(5h`q4Mad{$q1sGgY>%zJY z$P&rmOh7R9^Tm)dl374zKBBeQH7r+DT#x-Q$g^6uQvx#eMnVB@Fdcj?uOk^GY|pyTf;FRMh4T8^mDvw> zzAyNU-jC|)eUHY-MX#^r83kn?%<+O5U;J0_%J)rS3zT8i=dgcYGthbZ>(y>|uc>`G zfUcNxIsoou>iT`G%7E_y3_v2*RXA*k5gosadD`ID4yym zi~#AwrLID-4n^4;SLhn5)uD<_=B?|FU1;J#lZJO++eH-eUo&2JjWgZkY(T*2h9*ZD ztHTq-(eO|bJ0>&k#ps4qsmOS8V< z?;TJCM>(MF%C#)&nZBdpGOR2mOkMNc+6h_PuP*6X*$`{4ZVE(y{w6LFZF(70N|y0o z6zGyH%h&QSJQg>sOi?<9($l}&m8F0=9Jz>_C?GnC%TibS$(FIfJ%qjJi(wnOkl1M> z)Qx9ae+v4dc_^JfRE(Tk_=`a9{hRB$b1LNq8Lt9wJFzjkR`0+sPXv1L0Dg$hb>rdb z&`*Y|`U7J<4)C=}6H3%_FCuZ#v69n8a!mG*vM#>N&A|xwk$WPt&hILAVvcO+qb#o; zsa1ZPr>(o9Dqkm!RRvtr@9x3n6_umNTjqhQBO~F{mig1~l#@IKGQ zxPB3%bzT;fqp>37s6p^j3Rvu~HrBTQyksNMelWzJKm?5oE($&#M+2P2MPMiIA#RtU za-~U(z5&EL|Ld-;43~D^*Xlr1H2@E$Bo5@pnS}8dByJww-U|!3ZPFEBXQa1k)COEc z$<|f!YoLI2Cz>ACUxbBpud^@k;Z3ny>?)xV7|KnEL8DuazrBTt3jyDri^S-5SoA%>z?b>W-#C-@Vxc&2y^6>S>7!I)}f?5M0mA zdwRwF2=#Sn{1&d{dc9)j6`8h9&o9dVpCx?_Vw@y(_Z*An+XiPo7#Q!qSHtXCS&@Si zCYPFw{Z@}n-Z!#gL&npHn*Lk)eoLQx2dKn)gE$Y@N9G%NO|Bvkov`g~H0_Q+Hm>_) z-vTLxGtT|GBNN{p)?a+_b~`9%#>^*U!I_HklqJgZ?eb^*jYoGxbhjyH&r=}!JO@?I zld)(rj@?18{CLI(NY?6y)hP_A-bbFrDmG>$GHI1_=s{j`!oD?N(-=fpywd z{=|IzhpHV?KHQiV3s)Z{%^vpJSg~c68hZXAn`lThL!?K!-Jicf3fjtgW%$sz45r;> z3sJ@?zfnOk@8}m<0djr(|F30O*j3t8e7|_`M z*cUr-v$C()kD2lqzfEFZOid6z8bdU%5TJ9nn6VcnXN`uIF{6IS4{G2I8T?LAG1I2y zh8r*7UbdVgiY5Hh$)FJ=Q+6sAw7o90m*JGrp+uyMVq)fWLh&?>3 z?B7PK9?d45(aq-yP(VXI=_?WUc7KLwwj~`J8!23O-onX}Z(b_pp{^^i_o4vw@W3L< zZ95XKbLx#DZnr6|49xnvSo&eTA>Xw2wYR)i52SLlOw){L*%6IElV6WEJiDNFrqV0V z@YZsypM#PsTtD+h6cNkaaw(qQ2aRjR$Dia>RX7SIQv?s~ZX8BQpdf8^hQ z4Yz~lL{6LqBBSi_t;{7W>O$_fjQ#xCRhIHLa&>b!tA;)lTSKz9cIl>?UV*1iJFllZ zN{j*NBL<+Qifx!YgM^Try4NUIE%VObu_tjA0Bl*p)$=!h!Ve}w`!C$2Wx|wDT|zo& z9Cgr>srq_m5_@wd_In`&>YXxUIFGh5J&Zg>b4;47q~Yx+U5f!)An&IUIuyTB7U7AD1^l|o+GcMmxTFTR|z$mCb+knylB!uJ0NwBma_q~Ws{aTM;M zYXM3B(V_U7!?i=Sjlz|o2s7yNPf*>69 zZyHKA-4};@)zNwjDs-j-b-XVpo6#ZbDu?sT_v7V!oAy^~@qrGo)8n!)p^q!ds&;z- z34em{pIJ!#W{|ZB_rLmz%2qE?S5%^T(FX|aWUxV`nN@xPQuR)>o&ib19kqaK zlt*zuVB;RR|Eq=yV4E^M^;ud~tj!LW*CM5?k=&nEp-G9=F^6y=GB66GokuW7?p?2u z;ky!6n*Mc;$tNt8W6C@r$&}|CBEr61hnKK04}brR73g(Qq|}mQikWA}x}Itz?nl6XW6-H&Pm1Sd3D@WPk^5joenElW7JyT1Te-v- zSLOk_Z=NymjYe9@CN&(g*iywV%x;;|ZsX>OiL+jr^cTv{SB5#KFFK%q%yc;0urduQx=x4+hPS9`r`hkIG7_5y)2 zOuV5)=m2?KI;o=X8kiyUdBn@C@SS6j+0OfX6>*r^R7M~KdJnk5!^m4qcF`+}LBm=V zkfKLLNY2cC!Mmz~MuBu^U>!>bG$A|~+7FO`K@y55`P?>b zT|+k4WT8yjH!6)|Zf8V*NRRJ&bMcz?ukGFwN{gH_-!g~Z&f2i&9P>Jk?_=q|vx-X< zwE*{r5v?!FutXXE3RQsa5J8b#A)eVkLo-YuT9|G2CQFL;&}@bHM=@@IXtQ%5q=z_^ z2zdi3nV0}_0PMJKH*CZx^{(>r1JcB#UUQge5)WSV!08)_w%;eK$6vS3AQ$wYZk6G`T0H$BP;I{{}< zl;r`e7$bbuP8}*+&0aPFlKjM?5$Jmcn#ORaSk@`(z}bQi(P%Ae$L&F}_7g(_-@25- z!@J!3#Mcj4e4D{ubxEL6A5XihXhs%B5aKIg2yg7fn-_!WlOw2wclxC)P^MVvZQGj~ z!q;{Bfvx<3aP&}0hbUeXab#tv^wlVY20&o@jS!A``(S8*Eu>J)=M{6^PR500!2*O` z>aCG@rC9Pu=8W*!xa)1lBrH#~U1DdJYW@T*F7oJauz$#+IQ$5VOr+=3RaI^Y%rUW~ zl_li=B&X!oV6vhgOq%=RJU+vg3#@3<6k>SNCw$vN$1p!%`1z;rP>NB$^@U=i{95q2 zNMD1{$b`}ar37gM<7=D(+;KT|hRZ(YkC9fbsrFwY(_-5pzN z*REk8M2;qbIy^UXKt-k>rV2;NzjXNk{?SPB4itBxy&RM2e-Thz@k3of%~e>)K!val zqUPu?qIBee;`SAyMY$lY|CtDJ9qd88VcqIn=SpOa+MxD-RI@B~NIO816%&I;biABH z|DcsnCw_a9D^4%#h>|*ygd)Pf0+|o;jBe3Ig%5(>csNxdFX?RvpmfEBb4j;qHJ{{uWf_**+`GdkvGHEnlMo(%4q}XP zl+FloCBMBDw`vkrooMFWE{{`+i5E2>1o;q4rX1g}YUs9H*d`)=Xyvwbamh~dL%%#C zDSbDco*YDeh=3%TTtq8jSTM?*4C|vEIl&ISq~L2f#@5*^kVmbL(hc8ZiP`42QkR^L zD6Hvxa-FyC#Y}2rY_?U~sm=0oc@!IAXIFwP?$s`l4?jbegaPfY^`ulHpvt$llFPE3 zbDz0JMbG@C=AU-<1sm=00FK@<1G*^iX7m{qabPGduSj|j9Dl%ntX)=656s~=WAf-Xvc8=K`j2Bgl>Q1u&lJ>8NQ>24vLBTg+cD?N&U>r6L|pHr}z zqm8hO47}M!lOQkwG?4w%{`z9X{lmuP=lc^Rgo3X)Gn*6zH>2H`f6Hl^bY@7v1q(we5>Dz(bLLDORoeNcdj|4 z>RE(p0=tr`RzUkEIu;1Zh_vO8_v)+(H00VVh(91leSU(0xWp`ym_}uRpXDZIT0ZP?ZD5I51el^5F}YO2B}@L}g9y4lhTYXso4ILll

F(HVq<`WRrxY)yuPcyzcJ$M$8SB*N^yZsnP`=eogQb{K(~AG{>B-Dz zAk-+`rnuooX+c`g5x`hJ`^=dl;iXA`A0s#8-X3}fxxW?d&d@c&nkVrEtC0SxvmHHJ zk7yVpw9l|DazW(a>OG9D6`^=NE#ip)9{K0Q!!*b;frSZPJk6=YHR(w&Axf4bB{}^j zi3WRU4a0}T)Fnw4C{FZ5p(zkZX-i&TH|NCNX{pWXK!Sb4f;%!c(0zAiWZjGI$xqVTp{1bAP<4B4m8E(0RV zrigGu0%PL&Tp!ntY`fh0SmMMT3ef^47bOcMxH7i!)0F_sPJi3*9uY$yGOvTVp>vBl zv;@zdkQLEV{oa2NLA4E>#ovd>YxWnCmc#(eY2JHQGLZY2s43Sp`EPsTfYCaor>X>Psq9KgF8`v7AsHgFSphS7?_yK#ilFAQoX{OZ9Vyx|t zUz}5(C?|5_FK#d4-j&(oKtC0{Kfgi1@%uHj86lM2B|k4uosjwkhokIF0el!eRb~uU^W5uYA4Wmv`9x9JBL2YB>v9q}! z2;<*jk0(Y&X%3`P3y^hqIi&n$XEawAV2>Y8{L}^nq);sv^1m@DVDq;3FU5#Og;%lH zI9snb($}0zihEh28sWBh6+H(el*}SNj}le)t}2ynpf6YT$!o|-7$8rN{RhDrVYEI( z=WBYOm(<%I)e{GcT61U)Hj)0>zW}Go z0AwmyOW)bfr9#s}s<|uy8I|^Z^liNHDh5G&p=aGEl_zzl+Pcy+03rnLB-*O+m6MC} zVF}v6kr{>#@ib;>MSYQ%%lNaEhVBt>+q5<+KJ??GEDD(r4@8;$|o zI@C0R@?wI1JBJ48Om~sBl8+>fKK6n~<4$8b^gh)&Hy(JtPx~0)8FW#VWw+Q222Af; z7$vIU5nj;i7?7&;^Da^Gl%CuGH&oXnJIV3mDdg82m6|+~X?ZnY{8?Daqvre9?^4IE ze4y;6p!x;&@dX_Wq6`t%7LjJ}+JWh+e7*MXqff4C(9EoVCZGOPK?{Tm zZlmjRNT@QH8=49q)tsX5D^?d1MlgptS+#y^-llM=&#fGy@<@oYYxvP1q7Es@os&dX z`IntMSW;f7jJJ9iE{kMGw{+Jn%|&e8N*6Vk=F7rmC{TAAv3)_jar}`z58;wN62Y_M zRsS@we)#?l5_kEd;_juvwY{#`{GT(csq_H2$!yjO-4E626vN5eKGg|Fl_{I#+Stbi zg)l5o_?oO)Y>+vhwq%V*?>;q}u2_ZZMnu>m0xbRcA&g){d-_rn5+W9x{uEbG%(dbM zEpiAZ(4zX?D3uF_?=Jpl+pou_T(QzaXD4r%?Mr5~sN2x$4iSd&L@ofG8N#Y5+caqw ziK7di7O)%!;uXTNz45j5QJOBYF*M*Mi`|f#h7YSAD=i{`BV@9>=%|e=<{j>~ zd8aO({`;RXYr}rEOK8X26yl>P=#~Wrs`R985>pIa36IgW=D) zUQZ)5I2oCM4^BwE6;BstwGVPyr>XxmG@)#toFV7s%bx;&F8~vXHvayxxU^|%odJYQ zIl6W`h`<30M`4r>^1S6U`o|S$Q)*xv4x+cf?c=!a) zSmN5~7pj5R)iCexR4rzRd*o3OdOtPY#Z&|KD(4`u3MSf*%`QG9BCzf7Us32x{}|H- z=-t%!bs+E4<+@)Hx94S}`c-D6C19K@>{yw|Qkej8N=Ob`OmT!!5z?2h}_zN9LvJc{VTqlBxQlcL51Ht1h^x zfV{BNB{~cO$GpFsgcF2B=t?DodDYv}`7SmmvIGfx9WBn$4A{|4OrkL>{8=%G{gMN-CcmGmYZQa^-C$sMO_9;o@1 z^H$nRY$@qDG6CF{$kvE+c>5oe%uOnG;?GrnRm~Hk$_a)o2y9rqN5l0VC?CSmCWt&k zeW{l}l>qOi{bZ;n&&Sx{ITh=k5R-0K#fd|8XVjAp zO=m0J@tFykoW4Extph#qtf!4YF-kg*0O*27>ZRD^5pL7nYvc?}%DcrR%R^Ay&h}Q>a zeb>Po%-$#O@Fk@7Ynh}1ZR1e=PhqMt;mIUe50r#6=?$|peU=EKx+y-ec`BLT=V~Yk za(KZo5qZAHr3inJ-hx!^7ok| zhmUNtZ}G3g4Jc-{o*c+G+<{-%S*{A8&?^%61d}nt!i+tRF~*>S@S>dj4iem`xXblI zmw@H)Rn?@U5w$MxK8l1s*c}fA{6h6vGG=O{H7yQvx}3AgTCN~!5w*RJ@L>79j1@PC z7Z&?9L6h*n|H(lS#iYKu@}APDH2Z25R7Pw3`L~Y-wiGM^-f0~eTmb2~JzwCBF}@aN zCml7nMBS#e-3?b296bJO=^r7UT$2(w(6*?6bi4iP|47+_T1v}_sJGN!yC)Uuq1p^% zIClS{fy(|JUTFNpVFGe2{x@x`$7@J#i zZO*hEGd0N}NMNH_4s8)kw{qs5eH zPf-P4?_7K_D$91QXlnFL4$#b064hfM2C1yTM!BkVx!)L#!Ij8Y^W~YvVkrS^-r5Hj z2+}Gz(Xy5Dz!v$H#I)55{2zNj(p#PIXGhXRyNiC-7Z;o^t*F>ej1lSv)~mV2;p*x< z{=UH=7%F=K@FBE#KYY$(7+g%M1>Z!a?5-1f3vbZSOoC55l_oRb08Lhuj3!BIJry>B zEN5`CGy)Z-p_p`gopt_jg9KQ+`;NQ@tYP48Clj-{Ky4p04d=jXh5IbWskN68M+GFA z`IKsGtKw()cF6Q(V>?R&)qJC7N9A0?wGd>}_J&K=DX#DXSxh^=_dkNEi?&o=T7=Nf;RFYR!Z{*{C5I9tMBkq|^ULB5Jxp~k?giD)u^)p1>rv`eAQ|~V z!;6!zJ`wE1RP)10n7|Wo&Q+t59dTqkK0F&~`xJDOhW4#8qGeBm)OZ*pyw#ZmqKaV(i}&ff{fG}CC@+^SMNsZAxF;<@t)XC#?dOp{haw|`tscTuQa_W&6A zvoYURz*0O|%YVYCm6hU!Kaw*Gu_Gu9oz6>Et;IP#+dqN>yl;!5-?DYAfwPBGKun_m z%SI+C0|j(>*IqaLcuo^$H>m9or=tLaDN;AWy!q+_r&-c^6cF zt6fa6tys=?REI@&ryS-KafpQwQeMB^z(mt=s(E-6|0waI7flqQrB&#b2VpGU*4R&s zky9di&MQJ<-3;@(BZT%GIi_oVM(CwWx_}brO&}isw3-d)}MRS%Pb#YUf zI=l-S^(lHvU#9Wo1aWCP0_fxKz=0FWLkdunG|UUU&*2-e@X*O7$iOubg+_y+tGFeK zuUy%WdY(m|`E&%*(+m;Y6(%5LnDytl+;->+op1L3PeRaJM-|BF;g@@{w$?UX<- z`r6}zuZeX_&I%GnSF4~4yn2AtW=feW^*I|wArC?#9xYG2{D1jwYaD`u;uCRgXD=@& zi6h*4trn|@l+AE!S;j$zE|@R=q&>0H>gaG}O2`j<`FU&>KY4b4Hw>zZ2ZR_2*gV ze{rC>(}(MOTr}3j<~*H$Jy1M0iyB9Hn4fC-l=LGpX})Z@5X)^h6pZ!d|EO&u-&wL> z1HV&ZpB7+d0yG4Z`-)2Xr?1^XokI?>6;>iwA67(AZ+jdO5OG5)TxyEAGr`VyId4o( zeyU`nIb|!R(?83;qw3RgpfhZ71;PKT+YJng9p#};Iq@x6qn=Yu#q3pt4f?SK`{B}Q z019*xrLw1mER{a((<^P(70>BWx#xhaXZU+Iw^~YJxY9l3C1#7Yx{0cJKbnO4!#y2n zm}}9}o5fU9@N3MvTndZ*g${i{13g@2jalWYyn>cv(wZPSfyx^#)?dY#cbh9+UV{-J z+K?Dn=`UN$#7D61rwi17LXrq9mxe}Jp#`0-(gyRQs4M)!3)Os5FgXWuY-P+F{Z^UQ zV2dhI=-6~Lke#lpaQPZ+?9Wg74CP`Tx?BNIi6Z*t*M^?hu2(B7JJ8QchuUCz&2ONO zj^LYg^<7Cx{*a3zy3`mf(3yFy`EvM#`YIawv?a0pURpdHFuLi3Sh{zg{mzmY)Shcu%6NnSczXw%wDa(sW|Jb(VwN6ONWITwD{l(D*FZPdltPveGs0 z^MOk-&lSEiN2WJ%qLzy>9uDe~;}Vl|GpqeqUxY9BQBe-G5+XY& z;a77OIkSghqi04<&9Lg=j*ZitV~m@ZQ!vMLNFM; zW#HU`Lkbo@;p@(s?q(;>KcE9UTzT{|&2EJS)m%v1Ji?q`qk!`nX4RGsktRv*Pc2f$ znluSCXiQ1cup&He8OGw@bcCA-!G)!RNlidluph!~FIyc|DL=g4R> zw4UVYBBSUJP3p2hBAeZkF*}v|&Q{9Wdm!Slt(%*p+lterAI+52g9aVt3fS%=<17*~ zAg%yR7m6Z@r?pb(&%g6~2W7{~UsB71@66*fgU_HCfk+S>HC0$1woOwz=L_rqFM_mf ziiYY*+>p`leYs=%=txVxDwIbJq~d3MahB1^m4IqbU6v*^;bJ53JX3y`M6+8C;muYm z5K`mwmt&X;3zMR_J^Kk6IQwPMA+Q?GD=2nuubY2SPKcxE!7EG#O&yDhWT;$oC!>8I zs6@4&%`ME1*wdq5@R&rmlrj9(f1|(&CZ)e+5nvrp!=`a^#=4=(;5L3}jb1k7Y{Qo1 z%NdH7jH&2UHEF9cS`>7(VwF|8Dp7h{L~pPZY6qu@dqAS*NejF2o}J_>%^F}NmrE(| zZ;fx#7+28YhF%4uO8(Z`KjaEr6@je^t?B$qoFzsDeV432(L%YOmILfRl2CvGY8~yk zTWy@aRPq?+AqO>#vakj_n7?N2h~n5~Yuhpz7odvnnk6VxG>5ke*O_?jss|TS_d}T= zznKIAkuUIT2D&K(|1qt!UR{G4+T=&Y zYAT1Y8s@8@QuwhKPWSiLf@<{o?@OE z(bNwacvBVra09LknATbD`R61agO%+Q$hf$04#>ShJoTqB>c+lQfR%@*hEUb#ODt?I z_<~@2!tRD%8MK|3=0LyXynOWq0&`IPU@(hjI&p&1!06}bD=*d{HDOwog-m(FDbQTyW?bea^T2a0ldmrgxM3;ij-?Gk~=@{r! zBY>N>(JHZ%czkWX6wR}Nx07B#uk3j;#di*Qm)Agw9Rt?)a|mU4OW^n3m$1;lDF1{% zKd>u|yL~~r87H`$sWAuurpsO>t01x>b5f)5j-UZ-~Iq9X_TQh0XndDtpT>lZ=){SI^i88(|0 zb7KT4_jG$w!{d}d^5;h@s1g5uZ8*dfeo)qt3T29MwW2~I3DTD3*mBh6 zI5ozGX0+G%000D|0s-S9B~n-1VJN{25(%pa4RVfA>g4eB`ZoFHcfEbc8{EgcAlUob zSqc5EGw1Lcd^I8)?5!J|n{PERt#E(?JV9yvC8}E<5A!Z(-R)e>yi%SWX^}$#52HC3 zA=8xQ=@#m)#h-&Kr$L`)vY;V67%PkicDj$6oY7aSw9Z@9x*+hzBtDg(xSOV?f}^%M zw1k>Yzef(9G-64y#s}FD@HMG8Yu;fY#^|=TKkg<8h&Zbh)gLOc|C}W}K{#RNI16#5 zH0_s`o#j^Ci0X`1^m5f#aD@Lo*fsJ#8FsJ_F~(TV+zu+ej(3^xe5i$*4f)uYoOS!P z9YWg6VdXY_(&%rOO{gbOz>w`>2!dWPq~T(<*}#=0HIx%OBu>RdYNlfe)~zenL0!?% zb>z~^w*_oNFV@_OSz4~e7ly#)@ZkgA0?ib@^J7{IOG~H<1B;epz&41w>b7F)F06ob z#3AAIdI+Vr1gfam)h2#J8H4Qo{&1nPKCn2Ys<1 z`xwRp5DCxYUcqbP2OQ?dmp;~?|JURUegPQn{%;Pm&q%nENGpX>L8B`!T4~UOb5h;Hqj6gWwp|W!M(O z&<&}enbjr4i&j6^L99@Cw8#{{F9SBPqD-l@+Pb?h8(c>=Svtwe3VQEaZan1AnHZ`n zbabYA*Txv6QaTE>hiw!Il~d|^J%H!$x#byvQ)ZAEdHGa;m$U5DwJFzCpoDd?bu=Rr z2MWS|C!%*3Xo~D&JB2APowH{?dT_diN^U2HNYzdxLM-rU##5@>`QG1pKVe6q-fWNv zm8MRQkMq~SHXgz|KvS<2#xR5X0W59};@^0}aVFs~R*cP>P@}Vie^BLu*Uj4pUNlAQ=vgPudkuQOlQ~_va!(MeE#*AJHF}w!w%H$ywFQ*Knhrr(>K#yFA4Z`*>lF##KMB5Bb zXyVd0dsOx$<>j$<{W#QPc%06cC+QahOetjw(iQS%UzHRGt#^5iD3S%djV(A7Cf$q23t>i^&uwSn^aGBqVX{5fP(ydIq00mDyNjC)56 z^_hwKj`}}`V|)gsz4xqhY>d;)&w9Sj7D@g71l`^J$o~dO+oz znkUwM*L?7CuzBd5e;QM?^5En1Z7l7;$aR3m8sB841aQ10%3abaC!C!H`ojoe>UkGY z{e(;a00Ec)0pkYs*U~I07-{vL#%87IjyCkp7D{sN;EiT$7bq17KuOWu0MNno(4h~f zcP{N@BXCVMD3T_EglCM9in#&sO-q{1&nXI35)^TH@ju4`3`4ez`~JlSuRDS41{@MRA-3l6dKfM zApnpe#PhzR*+S3CyUe!n;`MRve5C|DikkDLOrXJ5vf@e;(fGR4 z`nJgO`7RZHFCXGr6WM^b8Y*NwMxLwQN#z*j$Idy=DK9SCO5vbMGMk3c6`sF`%l5-z z+<=wO4e}<%Zmrdxxq)x%pjLI=AaJV;eJa2Pu9|?hcv{qE`OTW8e?X-VMp5Mbp%1VC z00Dgf0pmg~SN9lFFxuGUEW2XLs)X}Pm?FBf;Fq3cviJ;${M}1RnFChH7pX`UypzTf zUJLaLGhv${99vh%EJ;>*;D0YLTUIQRrPuNE+@WeZI$m zUee(0Ke9v{VbDz|#{m5XfP@e(&@Pw*Co&{vA?fllx40K+r$ADQ>R-Ic z_oVojw|VDO3@#$MJymr(=Pll$w{eG?PKqLEz~>FqV1#lMVK#fpjh5G|@oe`twO%k@ z27rvHW4i3oNl0n;D(!rM&~}HuFw^WWJ7Yv~7?Iv6n4nGF$9_vFf$=x|Xsi6REq(up_Nj}x&H1~vHCNdyiRWVrvIU4~{l*y0eeHqsKLR3zCU)-E^@iANcP zJkSuC^f1^jwb1T*00mD``Y3?o`n&p!PtNH-EyX>tFwU!o9g}CkhcsT-zN+H-wT=wh zk1F5?fE1ANiLP33$!BciP?tf#0037>0s+wYvQ<~yLjjJA7`6+h(e5tY53L!qc|7og z3h6S!N^m%wQYPG=}j-Jvnb{T!-6`JES&#-w~xPqZRP`~sB6jMX^rt~U8P@T7YrsN)71nvqFK<*b*1(`msUNdHQK&D!oJRg>-L@ z8-NdXyq1q%zi*Gr)_IXK;It!4Tl75M9Nwx~;$+D(ESj+Q#4cKoAdf%Lo2O?s$&IfZ zb)E*Fah>itBw`OpmC&30z&&m(5@A=QrhJAd)uXfl4890m zL4%{(?*_721$yXp$3rMx+TWg*ZxgZLrPtm?Ep51^94Y^X*D^~XZIDg$RdCT^9zZun z`TeDz09gOtPXZb5NdbBUvhJN>u3?$wR?C9-i-EcIW#(MPG;dngETN6gjOp*J1&QW| z7IrMS*4yx>_8RWZd=G0g-lF)| zPirS+^KZEa0$yTm7^}-zRM=jG(}pO7n5J%c_?a@b9#Xyo;bv1kRgfzz{P`_5Tn~sj z9lO*6Bqm!bjfDa7gIx)r3-xWj>~!-p%LCQ6z<=4#rSel&hc$qW5{u({vsZ3TZs5{e zvr02W6CHU>ts?t4$c)14jmW$nDDvdTk7Zd+$ypY~)Z`BqcJ#p4viMM%*8=j)YBWQmwR3X8lFeIX(kUngXN>1ntpNm?YTpuOS@{ zpW{9Phxsk87PHD6S*oVJb{TRALtB_{h#Sxhz8sxQTr%gIS^W5L%vmRuDr=y#YJ!x- zS2GGfR9b@RELUh$(znY=5+I#*f%21ze%`9nFx0`|;+@lZ+((g0Yt*C}-CKofC4q^4 zGjvfW%9f|JyMq?agPb@Q>wMr0;HOuY1%~GhSCB>GwLd|q#p>9THW#@*w4u z{O-jo+_W6f5tc5t@aUMo+7ddIMFs~NK`FiJ1sDhC&0TW4h#p|-y z(=>Z~lsX_>dxV|K@^i6?D-DSWR%n#Tiid%L1x2sJ<3nE9gZ&DgUxc13)a*>m%N!nO z;ry$jOhEulQ$Q!K|n zyCp<29Kai;ZicHzhioP7oP~lSw4t9}l?Fdy;b{hAoE60e7btOUZ&%nB^v3LBc;sDWi;V6OCPj_r&-m)U9 zObk)(qrIrYfy!9k#pgVIMO~{Gfc!LhFnd!USyV2r;El4`xV>q0WwFvYH zk&?E^db8~`a^*%{Yw6rww6E8vd`NR04(bZ7#kp1WGqH7aZJ1R4YB6?=4#(BNT`g!A zuv|4>4g6IL86MSB=Kj#UC}^25=bJ_1AD5cz_qc~u}gqOd;?@I{_GK_HPl|#YJdF-El@I5&{9J6TKLm_Q?*^^ zVFGW{@DvT_0i*n*8~Bq7n|PoMUroa==#*&eh7^#evcE4J|3UuU0<)w=D!`kF#_lllbn9BtHmGA z#RCW{!4asAm@#jO1P8E@Lhi(B;iXO;^)K#6!__h>ZP)y_Me?f8qA^Cq5Oap9v z2M=FW5F|{^G#~R>D|tYj?ME!KHLE39y4GJ@=JYuADTg!4@jJJmWj~&k_gP22S#z-s z**wOSQ*YtE0q;cW3L+@r2 zt&K*)z=j>mGx15zPUna&ztr?b?x?(+Yv(^BfW04w=?)Z#5#l~z1aWXLk{tnF?Ku|8F$~WZv)-R zF_oK{fC%35dhrq>IAI|+DkQdjCyvn--A2ujwLXeN(h7Rmg`?4Qv2)fQ^&1zq>~-x2 zQC!%j=$b6zy!VZs_?m*#GmJ#}cQE)ibwxc$4QCfxx0)q7)Vx^x7eubsz(rD_OI|bm ztfwC1>a;IC#;o8}^3Zk=y|Wq;9ghJdvgT!FwN~_GD2suohxTMkxygx-dmK-wortVn zIW5V$pT#W{Z~Ldswfm5$3L90U)2f&>`Ttb)T+;$BKyNZNx10To6M=fm2pMiB2S$Jw zlKE%uX8LyfJT|2Z0o~1Tq8~BPR+g82JDTvgX}$C^dyu-5WYQ@I@wV#rRDVVPe?8{w z`1q5YO~8!6<0th3*UNe}gt^zC6rPoeeymTF%Dfm(xREpG(y_ff;PJAaq_UQoO!G-F zR_Y6#l_TXJiKgjoQ7Q{bbV76);RR6Y{cWp+cKMI?#SvTUvzYOs8M)0Q0n^HlT6koV4#m${^tBXpx4D%J}`L@hd&}{TUYBi!;W`AVS4MmEOCw(u_0jWrIi@q9Pz{7pMIGM zndC3PI!z_u_>Zq$oVpWuWBI7R9}E{N8h4(w3~vFgs@uEW;&i3n5nU0M8F81LAmB?I zJ-0|)j1ZSNrMoynikt@DK>K#h2AnUyxhjL>gNSenb1FgySEW}?mMqb#s#aa6`EleU zqi$Xn;%iXehoYCMO3)M-NFxKY!t1ZenTjsFi>coSH?ukE@JSc_KCG|)lL~a6G#)%% zDa;*Sbx(%*nv@146wYdU=OfQa>^@yUV_Yv7^#X|HP;w!cUD%I}{WC1E;!nrPhk zOI}OkW#eRUZro{wYPJd%5L#gJadnS0Epw@b97X1YY`zXqQe1G4naku+vk~!j^J_$E zX;zzKP3acxB%bBrvZ=hJe6^S}D+`o=bfA{e;ssIodK5Rr^|1EHYCP^UG%a%=3t{H$ zJsw|DdY+ROCbG!Pj~^l5y?gQLsv%{6Pj`j1VQC6N48`?2o!m(Qs@=!;)h2RBIB~Yd zwPlHR;oF7n6puP$8DVaX681%5S1hm~hJCWFog zaI?csSQ<&xo9TGmKg}A7nfWQF(%0!+T>%9-RYxy1Yb5fs6@xAz$fG6n$Pl*pIl9th z(XHc>EXn;H`K_0G&CiZYIcQ38X9|=T9N6Jj)*rqXi!UbV#eSjD-PN^U8D)6<2~jc@ zOpFe`K~I|Ts8z=n(T7e|mxIexCJ{aeaX3&ZIv{XH(0_y+cBvjD-W>2)mVKr`#_l2E%_91=o^AqiU5c zhj_eG07`#F?Mv=*HEs2z1MfI}eJU%IS?VY2bRxi&>+c-Ua%bO|P84EXv>B)ys&0W3 z$smp6UN?|ogOkh8(nlO$+u8K@%KjgWNm~I&TW?ikB=4wI(*D)Ygb$-{{o#HsqObVb zVHv3N&vza*=(@91q=-0}W#q0i^~SpGk|CDkk|9q>ETf*ftzl>;lUvqXT6Ak#k@8E& zjiJsMTFcB&X1W|13+|+j(x6g=xG2)i-a*(%webT@8|)}gbUqH#^rGbFq`Huh=us8q z>sfNYEB!y|Z(Zu_rT#~$EitXj(u;op=@xq5CKMl=LKf<*+(r5n#X?u$h^*)_d?*QP>j@I!nHEE?+j7Q+w2Ds{m<6sM)`5t>(_3avE-@V4H z9T+(FdStmx8mae|MlU|gM4}poU9?&w+Xkeclh+&m%p_s z3x^48v(g9+3e^U-XBwKa38 z--3L%IxBFfPVfHa2_WsuPkb>St(WY0du8Gdaj^2J21FFI_7JaH(~t8d7J{Ft(9H1D zbuf)7uj5P~#xNpvqGoo>@ps5NRLad>Bs>s>DxY?ta=iu-hZ_fDZSrcsY|qa_o_^oW z%r=BLhK3iATmEcP_=!VrxO6`3(rR2jo{MDKoP>TL%Uq@~QF~Z_uz{-7%^#rCYy2Br z!xF{3Oh+S z?1ilm@tu%gbBIIY5_v9ar zsWtexLxZ*vEv?_ea(n%B@)YY)5oJ)V9ZSxT#==bp*+B!5lm~|5vOynRTE;v zeA2wc|)(1pqHj)B*rI?_UU&FmF{3TRI~+^%F>en zH9*S0wf0gF&Y41~?8EO-vVejsN{#SrgUST8#o17AJRK^l)|Xp7)bzS&h~X7_?Dh-< zxwl#tZNy4r5Ed635i;~3T%j55%f~r`1gIU|{%)=C=gq^yc+{tELx!bb;F4RUI(Umb z8Ho_)U^~`{6;mzTmjrux3>s2{F69Utr2@b=QmPb6d6!9=Vp9 z5A``&myfn!-wMUP-8u`0zh|#mZ;7PR4Ie5>#p}J!qJ=F4f@p{!`dhQp8YzeouOnfNoRRboYgRkSO~eqS{ZBKCdX8h{*$_3B;)TQkNA zcWeZA5=VLMo<*|jr!F--+9jMO+0Q+)@H4w#IMLJ@XAPJ^hjCfWLxUqxZ!0IJVTU8fuRoQPTo4JF|oaVp#}DxhR}wF)E47L}^KR^8iGi zD4m3fhWGJ0&J%z=)n_PPU~s)7rEj5Zq4d!uK8_2KTlfdwm~8q4lZ5~67@k8LTwY9a z*)l!S#Z}%J32>9@-{UR3V#1G+yw}y?2V~9W-KSQOmTnPZr9$Nd-IAT}8}rWdfu8D= znfQjT^dDA}shc^7Z!D)Ru8!Zjp)MQO(8`j+f^%cnX%K7OJi~AVG^d=X!xYA7pi3== ziUfD!!5%T&7G@Z|DEHBnliLGk>eK3?ddSC8LL~Mb{{ow<1Qcl275^<=0`-QZpl zH?w-FP-T<83@Q6Rz2&U(Wb&rijSxph3`fU~KxoxD+-TILISY(bddjwuc_K2$G_%jG z6s66!3FS6H2a9K!mhY#aKcQajhQ+8YqAi=uTUlhrbMF(`m&&<7=a;^~AthxOK%($e zS`%8Oh2?uu(Wxi^De}XZhe&{7jn+}hcV7V(&dl`3e1xV=#)1n{H9p>0Y|sc~Lue|_ zJJLpj#ewzcHJXg7=YQy3z)K^CFp%YCZY!Wc`0Or0?6Kzo_=b=3Hyq6^2(E@Fjll&r z>9f!PP={43{?R21^k<=kDe=mN7WKx022rA}w}H3&my%U2eMOVQGwo1ze|0O(M5&2^EE9gB z)O_)ACgnSf!2vCc>E`-%e?E}3QAq;yKOC8duYaPe2t1)P0Mp}v#13rq#P}tpbGAeD zKZPw%e5?tVaaPQX5QZIBHEows1L934m;u`mb5952-bsC&9^CP2554c!Ew=rWl3GZQ zX@vS~RqdXYz|J7maNeE9Vl9ds!G_qR8 z5bM5m6uD)V+J{NE-Ftg~77iK>2D)8Fwj@>EkhH5MboLup4sM5^^S;)<0x7f*E}?|- zB7=C?LJy}4NaNRDi|Q~2uD>P~_Vu-?QV**SLpE?zwNPA*~hbKQsKV z>ngs}<^4Tj5i00*3m;E*S+r4{75`Rq7~cYaYE?~UdVlTsyWWd&|EdgWi?G-!Fd~i( zLi*XzX#ToTCFpIAyQT7ut6X&W-EvX*5@grPIyDoN3W1)G#e?io#vu?6>RJm%^NG|Y!GP!dlICs!2xarKx4@tMFoj} zl1ZdlBwJbRF2FM2$}snO$t1(a0?=k8^FEzjDiy6AqF9MV+*i?uS|Knv=2X=^8`iJo z;8xpO{xXul?gXM3r3!xr3;MgDeOlJv9mDMHPm$TX4B||)X@V;~E9&3$KiWR1QRN4*6=V#2vI#=I zJJYDkUi<(J$t^9$%5^)|jqK=qONs%mpyOC{BOo?6?R+B2$?o*PC6uBryQz-*+lz)T zI}Wkm9e*~+a=V@r$>Sq$TSpVCm$xtMnA?FmdL1W;EcqM(lx10NsUj1&fc*3=BN&wW zp+W@7ccAxD^3(Iv)@{z{O<6a-!@KXL5GBzUVv#hfRqJ-8lnrvGNEV%*50n(jDD_$f zwfHMAJs56x&@qd1A_@0gU94L0=5OD2F(1sd9xxMr%k%#qcACiyd~+zy=J2~B8$q(a z;p}9F$bOzntJL+>$NEqnP`pK2e?h*DM8c4_3s(DwWcHr3N;rI;;Aiv9!7u<{IfLx- z=^uDd9Qg6#{d0@dLIPZ_{2C4)M$_8WBtfYjZ;rT?dn;1Ll)v;!cmN-f8dfFc z(0~2NW6MHl%MtzSIH(~})LNrUy=$T9^7G} z<{bG&WY1H)ZFq;DYgEGlhPfxU=|K?@14Qt>TSxzO?6nz7Ud6YS{d-ALmhXvhmZ>L% zLTrLu@ysu;L%*)cLlNo$g>(k!q%7kCHk`Ba;DRth8)v|8i1IzHy4Z&llG`St+DkzY zs~L;$wU=A;oylPZ_5~v`J{Q4Tj%-lmPa0iBHI;MW5T>F=3OixD%*ff~d6E&OFCiJd0v#0Pn;&uO5nPSGFB+Gd9-x8UdsHS+ zwSSx)h#`!|X-{viidKOk@pflYaHIDoHk*$vQnGe0abcLOXhH9#i^4G#2Faul#Dh?E3wmk;)Wx9~Z zcFJEA4htdM8g^Dz;uD-{)4#riYR#3SybBGR_K0|=EK4?{OZRO0bEIj;U2AyJk)CYT zA$2-Hz~x3=UHRbB?Ti!YiGX~IjB*SbvsEx8{3r8LV&rWo9kyJkGxZAZ+<~j*zYV{e z?vS*h(V#i}KV;OB4kPUiUo&w`8#^*dfd$B+# z2#zKvWvOHCI)OEXv#9@Bf2s}M@6Ek(qR5s;vX(Q}Qpem|XzA84e&Jl^#*UP6WmL|# z0wn6^!CJ1-Cq*{@7AG_!nHhU*r8FVm^RXjbo#U9MXRat0n{}c{dm@8P6my|ZG}x#k zVB4*Pp{j(mr;l2%BG;Kd8%Gu7En;HWIU6g6Ia13PH`gD(h5 zLxqjlSF}3Dvh}K2h&}ZcRK^LUswf+$%S04~G+QHL4|f+LH@se8H%ox@Q1xDaKI{AjEoYW?h^AR)flAUNu znt1|@y5}G<8e12z_YdU4BYV8TC5In)wDq_M&H-W?w?7({OSIjHbEi!TzHhcxPf4vN zM2SySeYEiKrJ?M&-nJ@W>H66hW48IN@+7rBJU&hh0t=qT)C3h!k|D?Vv;v_zolHI6 z)aX5y1dT=C2M7q+AJct8EP3X7*MEjEF=LQ7`YYd5w&PJ2miNfVs;jK%l@$ZmfEREQ zReiA?qS@pPE1ytbJ@@Coph=(6{`p-NYd}ury&L(VQ@IEMP;4y#wC4rb0{yL8F3;RC0PN1uUDm-=QI0r`j zcPABEaje44%1L_PW7(O8Tf{iO5<5u6Q@1vqR_$Wej6vF+2;hKdV@3``6bs()Bgq#t zlCGw(*sx}!X6-@typ8l(_oNf)gks9-6pHhuDSRqY8#?@ zB**Y}>D;bjZmL`HV@-T`S-O2EJLuDjR~LOrnDYH=oKI3M0Iux)OIR;Gb4)hR%d6d- z@a-SdS0}#31a0oEx0rjxrpJ+wgr-9LBfxf7@cM{<(F|^SBnz;z>sR)-wx&v#bpu-D zHm00>AX(y!C#)+r%SA|`pKL@F5 zDaYPliGWG1YJVeHBC?5=;L%)3@iYZf9chJ++xolta zo8@E$l5Wl@uPq=GVTG$d-3#>EqmYgV_r}-CxPhDcmDldS2{n=e))*DS+d+Fw=+d;9+|`mj5-<_Iq(?8VdVFY3Z^oeaX`*MD}GA-iE*I& zi@stherX=RQo=v@by<%;q;7ZW%ZlSg!J)nQc(^@#`fcOWx~H$4OD2gySS9#9{jml zQFmfEl(TsUAXm%cVrb$MFWd5N$asbqJ0ZY4&%BN*m*CVi0zY)J9$31vl#Nh6(CC?9 zQAj&g%O`4dUTq5}_;gym7HNx(Kx=i*2 zLUrpR_fm~NY|@eoT@Cr_$%2hxJ%bn@A3qA;jttBQNZ7_>o4!79Lg`-T#^49a$0n{; zJF%++FUioqCL!(!DCDyv<@2&IBJb?#r2D;C5pR|hX0)UJJoBs~B$qShC)Lw~=y*Oj zoO=d4{<|>|0hQ2f)-Vo!qkS?xPYnCaTm~%z^V98xczfp==D+1%T*v()wJ#ZohyYi@ z+s$=CNv2Fu8Ba*j&H3QWN68p3HcR(gXh_y=SP&^e zaTf>g^t#M@WJbO9d}Qn5J7r8!RGYjRzs_Q{pr3&z1&YQ&r5){T*IZYut9qbKBQdq2 zfZ&n;Ah8M^05As1h~VGM@>BDPgx#TFB`B0J-b;y1#>GC&^iT2NlbLtO^*)dn!n{_$o}<=5 zO{n*cw#|(}_QePEChQ*Ca~xe4rw1j4QzWk6dN~Y5eg~Iq^}s`TL8`^XuQaF|pi6UI zW$|UUir*AJlu7Tzq>am19BVp{oR-q+|1eeGH~w$mG$3+&$w~(4$MI$OnWC>ZJ@6rs zV+#4Q`~5_M5Hn#jOt{XaJi(ZI9YOqL7bY%q!{6HKFa`Ci__Gu4>#^LABrTX{;s-X4 zy*3H$niejpxDDFepXn$mBJA2ild1qB^0dLR@cJB0uMYU=r(&T{3|Rp^(7u}a*Esf~ zT*F!RP%s=i=`;F7>R>Wq+S_+be!tI#M+?>~swyz?u<^Rk-heq_Bx>HQita3(qS2jgfsF>D3yXmP zr(wpM9e8CX!nI!AuQ1FweDP0fl!K*p=cUOq06?)sXn9(Iu)w`8#>JY2pVG)b2;O*v zjk@F9hI1!CPjYJ_7xT)Hfe~>T)~aDe<4AdQx(my+eHM{dgi>b{=e38G{`Sgn=)2rV z*9J|`<1&DF^Bg+Jd7}%N%Zp)O&BWZcNM;Q8awQ2Np^(v%%GulYGYqJp9#h5sVBe4Z z>*61x(-l@14SYNUjmHNBq4~`7@5Ku7Bw#Sy7;j;I40s8wTT%=UQZR+A>ufKuA{Rp|ayK!+vx% z7VhI7;dg@lEU`%~<-g$iFi2$~&@+tVFe@+o%RSqdBNevkV!#`ArO+wp;*j=+is~5z zl!VZd*>H#161cF7UU&i(EIdH~Y<3)-sx8TF3T|p%f~$g*W)2+m@Sn3%s%;6o4ZVjx z)8k3m#?vG`QhB!Bu^5#4RFQSl&*jI4emj@{B`i_`qjATZf;P?9i^BM*oG}) z=z*O!`oA*OA7I+M_;|f%hF8Gt@x0peCCx2+CLVB8=7LTCZ@Y;5P;e+;(`KI01uyYn z7ii9Ky71Gn(p!ZzPa&_7tjRDg>rs#PAw#uPJ1j8i272TVBN3HSE{FHZ!l!MJWDkkf z$c}g2c{x|dcV$ZfpbQ|YqFBy&MH$aT_cXYct?&y)daFGKC=}Ip|DQ_vk!%lo@Q3=L zpMIE443OebCrP8EU;Z{&4L%8TGYpxGl{~lYVH{feoppHD-?RoLJfvM5&)!9LVv$_= zTvOi4)x`0g6dCvHV=mv?ef~r(UY^WUv(s)>)AgiEf#a z`Ytb}+ST#*K}Laiw@|?p;g^sr){8}?`9p*N;Gbvc{}Hu| z1%2lLcFfqE>x3FnvGH)POLd7Bf{s1Ma84a!e$4_@& zKkC4MQO|1nUELma(>1-+(1b2z0Umt6>$WexDa@O9q+i6Xw#%f4bAE?P&oF|lagFc- zRC`K*Io;KkxcuyZx7BNqp$VREyUCh)WC8xt*tCF@#sk0ke^%wYiBDOpXyR6x8+ZW5 zD;P55%lN8w*^u`%JqGPT!YLnO&~nc$eSTsyG0F)iM_p8bAQZqRJ^#5MYQDndwrqx` z;wrdgB*_XM)?;1kcG4U>xJz2?nYI_%ixE<|E(6?de7NExLq_T?8zF^Z*99uo)ws~u zo3~BZ_}HpMe{_B@eJiFQ7Y;?1?9#&Gv)Zlwo+7=%%=AQoMD>3~_O%r2i`2Q!j(hD2MY@K-PHt(`gB?n|={zqV=K6m3#^BA#B_OcA?ISRv+R8#YCM=U zLVP2FabskQ%xWcSM@Jz2vc4i$W4Ch2k=t!3?TSE07!t+;P(S*BViM!OP`%w@w-Z4? zV38VEpHc9dT?=*@$(w?gdP~^6<1c18?V6*jwbX!e_D2ummvy?*RSf5yMN{anX4l+? zjlt_|)(~4%wTw(V(}dfYzp)bF0k1wK9B^>)$2&WYn!L!Uf5Fq#gZ=4!k-7G5Pcs`y za6Lwvyl8Z;Z05ZH(#X-;4|*VnU`@l!s%ZIdc7Feq+cVI3sI9tY~qDVTf3D1LaY;sN!5?)l*DaOM610Oz=szgs4Ru5x|Jk&NcBoxt;*T2V4xYL6sw9E&4 z_Dflo7ZX%PTi%MMUN^|_D0Ym>0Xa+4L^O+JPeaAHOu-NaQOF>rW+g-6Y6yWuWK1eM zRwNIEZ>2~i`{Q2L_MKYnY2jH+p$$4=SaKY_ekK5NRLg<|=e!LJ!-pL-Tjdt!f3>8n z+dQvV$a;6!F{DH%RXhC^PfDgj&{}1>gXi(<{`FOOD>GMAg0_fA@wS_yO&wTr-hKX+ zgYWMLu{A1snR1$9)^MJD3@sHL4brGQZaWY|u<>=Tg%pThuDhGFOh4 z1#&!oaf(lEpr$-y5}n5fuu6q^P=CZkYI{?*I0n>q4mkExINCJ*5sFzjJGe8Kp*N6&R}x6K0C-mzV4FlD1$+OVBC) zoGIlqbF29%6Oi~3RiplznT>I#kQstNfyc*Jp3gZBp*&2`h0G78_BY=3aXpo2(0YKm z+B8eI8k*Dl+23$w7TIDFQBV9_=>?+Yzn1NT9%6VbfWIP`ID4Lm;~Uzkgn||1>H~!a zb!2F=3bc^PoJx;%Q+$0=m>kgBfZ8TkjnVQ_fSAbmuSXud0z{+#;~eL_Ya{NDIzwx& zW4_xkHn@i45=Bv}g{9S8%u&%H`N*YK%|3;+!<$yUOR;ShsJ^Dbqp|!5;cl*B!3`Dc zG|(FUr7DE@@Y?zOQa+VHTim%sWJJ9|UA?)f4qtqh`gNlsdMxjK;j@1T_0FEx=n=n- zTnm@aorbnj$Gtf>mAzqu3>YHDcwXW!?;gWx3rfzO-YrK!irtejwlZmsZDQd#ttu!% z9-p-f_-(h;&A^b7hvC8ik{4oQZPgU7t8TxTWBG^T8UURCv*B2l3cHT^kq1$CaeL;QB0j>9 z0jge31TuQxIWLlx6o@S)Pt&=5sc-U)cpfZ?B-&h;H)!S=v{VXUL+FZwIa=U1F)@Ff z*hbMGvm&TTAU3N-r1y6cscA*{#PX7vA@Ik#WJaJ}k!GLSK@cpfJa|ybYraD%tK%#&ZaJaW)fqX1$F4XN~8`( zCu_jG(Rp&STxVz!6@qICkQ7l{F;GihWze{E=_{8t!YY2Kc9|!_21`qL0`{QCY&*5U zoGId8HJT$|W9!4x2>DAA;3#mfUZE;H3gza#8y`-lC7CC0h7?9^U`gtAe;xz z=*Ft_4CsD@KOTh%U}Hy#(!>i8)FJRpjMhG*jK96brAq;QbWWIo0= zjr`18ZttC-M7zZ|*b-RcmgpsbqL5h29qwH*2d;}6?Mi-+KR-$j65_6*lBbb@NaV8I zCVb0aBIOVdadnXbm?)Y~N2r>eRt5I%nZt(%uBM36w0*BR;iUGrf_aVA~91?y6ukPx$eqW`R=t_eW zPdcb(u|`8YabLvdARGEABwNZ3{Rnd|JAg}kuON30=g1$zuxE7}y@wYs$+^uc^2Z>b z@sFAtC}EcdrICmst^Tayf`N&iQ|cY77KatWR~P7hZa(ItdYEOls`6d%73^je%|#@$ z_iTzIAsf&RuS=ogx#lS|uY4GK#ku)B~Qeok*IgVVj1P)gr zRL??)M`e57U3a3iPObHGKju`wuB+=K1POhiinH?;RvGZSNT)hFGCW)!1mC8s>NPR7 zZ}i_LchA!l>`POPw~ju05xfKT)RsQi4=N3=v(imxnFjIk*SB2&>rI9xJxk#Y$;RSA zN_!@QzN7yMM7ZcKtvpNdq!E`Zp~{Kx@AQhG84+17ll_a$o$T-;9vcGz*oS2CGt(jPy`1^WDwY`YJ_zj@Y>EOm^sk{`#oLtCchz!To z*JoBcvgUWBSun`5l*k^?{?s2XTTs%r@MgLAA`$IVGoZer)eQNTz=jC_*+ogbPxG{! zluW~QT>fXfRVm7)Qqf#11(54o*pHA_(NDN zt8HyuX!$-bI)1XeULd?SzzjmsEwpTTLC)-K8LYqvBATObMV?W?ZEvQsCkD-b?(4Tj-NGNfeECi_gX%7&^{s3Kab*U>}|H*1pgl*Yh)OYW%c4KZYU>rK)3%i3GCG7Brzq3l;G@h@%x8ZXqExC*u1Mp4D7s13dUUj}r&p}9v~eO^6i zqM4^?l)w1Zf6b2cWu~Q;RA@K&+}vh$^G$-%`0%SRn}w|{AVA_&_lCXVYyXUX;WDCA z+L)4~rgyz4&>90YHytLHrlm(Kbe?W`&W9_srk$RXSxvgd9%A~G|`P>r1)rOBaK*F zV5ORqgTLC6 zPZ|~V8}pa~b_;KvI2Ee?2($cKc42yM2Dc650Lfpd0F>4Mn!eHFur;5r^Q6INE8s;~?jQ&WC zjj*FgS>V>^W~=|KlOM!9fJCK#jQh9$9TkORMGKvJ?tYi%ye-z+BB#(zuk4;51umeQsS2&P{+H0h*<48wB$&t zT<@2kCl?7|y&Pr0<~h>`e-<)7uK%TfEjs^FLw-k5a)&;kzS$)6qwg$x=-WN!2)?#Z z<|u6+-EfkLXQRq(CKThLM;-m0He!Ytyos2kh zDe;zjxrbg!gL?ldL|E|Xz;mx617?jd04jmCH}$9v37SodBS|1snaY5>OrpF%))>eMYvwtfMFv|mBr6k8LKcpDOSfXw=*oS(1 zM)~mu(12OI`+z?n^;yQJ_3kX*rl&FL_~giI8-)?nrIVNaWEuH>`MMS1JsMPow=eeB z&6gYCzxdnKdKVbPu{=8Ut+>@WFrl_h!|1iKgTXRKMK4u`I#Zet#eofQ^~?rwJv1DO zU*gd<5a2^fqBqOGWN8Z;K~D`4%7x=9XV9Omhq9_)5dW%}~O#&F>w3n0=PR(fq`9rHl7q%7KIC$}cQM>m2h&=odeujes`@OT-wC^gh6! zmdp%68a`C-aPxm(By*TR8du_rt~_Whdv27xXchQ5cghL)WGIa-&-}@#l&ljJcEs_L z!1=oz7g-OkXAtI#7z6Vd0$rXQx3^iJ8T_7@M9 z-CrY7L?PDQDB!g#YL8S%Pd(rRRS_82e~8HBmya#3wdzudp}aG(-%ozqlp4_lB?~o= z3;i%^%PWkkBm;mJXU!^vW4W%pydjFRUynNwnZNkJB0kj2sZ~2*lhjLCzIJeYoOnSa z#7?lVnivXqrNT5>13>HuUY57%Mq{b%3xTTFih&bDUk&{`PXZHMKl%yu)a&9%OkmQ;8}yemKU6X#ZBAA2|&y{h{=yVgL+=aZKY;>Q-2G!hArmPy1c zT?kG9k*oJ)0pr`#Yi(Y2Lr0qer#j7Hp>^K$t#{u=I1b~Qe#lki0??y}FTG#G$70qI;ij7C$zX8BH@^ro7H@)JtxOUYe0s!xIQ&pIV1Qbmko zD4b;ED$8l|Z;iC_COIsyy&@i(d)6Pa{{5dpKNL}=e8?$*=s7Xg!T|0>Mas#WFkxTk z`ri!K^X9LC7y*-25;X^u>EjUJa^=sF1h(hu|VaZdj^XeIE4t^>@zN%(|+#omKzW zBz4(2kjoWvz4X=4VzX_9Z;XI)Rso$`uWSo16q6xlN>?HZ=TcoaXqKJ~H8UA?~4U{@bc>{YVN)=(HL16czvPUFBrDE|k z81d^gm=tBi?$XZRLsPx?ruHHo-#a9y&N5%&D>e{E1vTE%?+kAWKw5J+3?x276~T+T z8~=8gT*aVe({oj@cQGm&Iogl?N{tZVgi+<@)#>Rg2#($G_CF0xt2AVY{M4`hejptk z>pe^8$L1AqXwh;Z5^lD#wE(??>*D`zK?<9TB}rS!n| zF+c0!UF!OXNTX<<4sVfz&U)V#Bi(=QJ3$T<2^B=C)H>=;J*PNnGR^FPw3-SUi7eB z_P$B>$9+OIO4+UFODgvlqH*fO&lvidmpF_L(SVl1F+8z03$uUwwd z33gABMvj)O0!E?LKyJPddQ27AD@0Nz8U6-QWD~wxRq3vrt&iM&wE{eX)olbu_f^?) z<(8!q>tl-Wa>fk}Awsvw$*V`9;$8esT=@_ni-G!B&>LnCZnyYod3WA<9uTXmu8M#r z7`zN|IuHY7e8jgSKJ2(%Ke$->ckvSxh&0wmtIR`JLK!TmOoww}4M$?R6f7h;*?=A; z!}o4cRh+5v*3AIa1-r1}hmXxBqxdM;K+$!FVnywAQ9sf%jCn?=a7In*0Aau+Ack0h ztcH$t;L)2fp#A!f&W6_fi_vZkZ6$$WkXIxQbDL(4y73Huu}7{ojcogDrE%gA#|Y!I zHkR*^k=YOFjl5~D9j*@oOg)Q&0L3x6VmAWFH9K95O|!~Y(00-i!bvI=kVegc*`Hbm zEG^ka9DlQto8o&dN}us3G>U8AoM2vJlp`UrpJd2dfwt`j#WkG0>}Ns*2EvKw(`w^w z%>u1u{XgZjJQ*k|1~VI>CRMhDfMi&!qv_04%o2NWHs|>(0YmxLwRB>cH9RHIYMQp0 z2wLFT32Bq1ODO=K5q$^j%vJkv`&lVu#*-2;DfWXUVQx^bxW*Mxm9X`3$)MexyaM_{ z#?I_S`9Q$3A6~Lg8m_tq|C!}>V<#k7ZTc(Gt?_f@sp(hM%b3)i%=>z9#-(!&BB#j` zCvHhcgd1#+MC1Y|Od+5`zsDnT0)x3p$)rVfUf4R(0X<@Q4x1BRgo1~VGMh+6HjX*F zzd6Rb-nCgcxUT4MC1$@GP}7qGD#x#S9sP}sLE;WY z2Yp;lxG2M4+_HwPT7<@yzo7MOL-%)2oIO*)*204Nk3=`@!$%*Qq{@l=E2q%dSBimP zW1EUylQU;z3|84Wc~%m`pq9hxji|D$1&(6s&^+;RG&M@t>9k z;43y<#s1lTxr4Jv-w0{oV&~oRDEsAbit=Lc4lJ{>OAt}&z||^?K7^adOuAl~n%L{# z@_3uViEvGHvoz|iTWuMHW(phTwK8~lz9m}i4p+@3(}37dVi{khNydaEqv0D%l|Zu! z;>jGM_2NVGh&>O%e+hZJtY?^wDP=GeKtHtF4t?xXi;NDuCRYf68@|UA-8;lql_ie7 z8djUUh%iuj_+Lg1G}JMO<;2)`Cks#5=g zY-Uq-K#HQXkoVE6zSJ?w=jgUdStUV_v*yRauFAG9?sC9#cKUU)G?kAz=rV5?i8&9N z5HwQ=K;#@)?@jJN6%!!09@P8xj($xh1qKvc*6C*_yHIRNPEKD1XFGSCEfJrU_=i{u zpVJuzG(beR8cMNsY~e+Vq+2S*+PVuAqI=DfZuTSoW=*wOc>`x`)Mq-X)r+b#!v-dC)<{Liu7m55tr>a^L4~dlN!C}~ z5Z?5#r$95ElIzae=zeP9YtkSUk;mj9dWK zmt<5HZQ-?we#`a=xBAN3;g`Ku$efQ#qcxjNJ6FO-exS=UuVfiJq#~|$_LfXE#ND{3 zE-XQ$pWbsPn+7`R4O9rz*FnoHm}rpwxjsk8q0KA~fH9%T-@!jy#gj6beF9`I8DO0` z4r|d#6)C2}&COSRM_qaOx#T6y{@%Mp=U*^#a4F~fjR&x{byBfdNJx^!nZ_X?+z4#a z#)&KwnrtZ|{nJ%6tvXQ12tuNhw(@w5tjU)chnd}amsA3wm7c8#VNJpW?UY<7#|{q3 zE6d8Za1QheLV)@$Qzs)19IdnIZ!+kv6xY2UeF53#Lo~<@dqgzW_e;zqeiUhf>L|Xzh%RvA$sNzK7jkJC2q26Acxf&dPXn` zWfdyif3w41eM7E8iO5AJRqiW_bkp#gLUn~F09}V34nQBC9d1s0DxOfJO4Q_b1B#sH z>gA5zX#KE<+sUf4jU1S6zK#_hS-Ff8k}Do8T)LEojWPp^a=1u$<~G9e5q$ubJ_A-d zo>oqsPDNCGa%j@S5C;gm5LskW>I31{t)Hb@{5Rf=9sT#0e8}8K|huW$BV!qY!s*=T^VIZXtWU13Bu9w$1I0QoJ~J}VMPvBAW)1yhls;G zqLy%oDFThi5Tvet0fTdpfF=WxkHi~?BSdO$3>}w!)=L*lso3u5MFt*S&$l5n^2Z2kmT zHvVYR_1w$eYCo4HrBjAmWTvq9li~93pjFIs;=8QZ2{r064Ow5bVj2Kjlq4>rD^9F< zfy^~_Doz8(%VUHQv=qnFUR~Q-udmpb!uC4vFDt98W8^)O=>{`Nyv=k)K$AuH&NKw$FTaOHPz9~ZZ?v3Mv<70H|=+xJwYf81RnK=rRV zJpV}~Ady>iri3iZgBT`t8W!URBHi@tU$C9m$55z#^UucIErSeXU)v=td?PQdl~(k4 zesqaK=h`8&#Bj6 zj{PMmiEo*SPHqz@Tka{~oXt1V5bL9lE9@YScSiDw*w25|;xDqR%CPaKJhTF`n662Q zS)h}SO(DNs)vE%GOH_#y#;(Oo5|m)5iKeCPvm@B2_lojfCaDtV{ng}=Il26nd$QEW ztUEm)&qV69r7lY9!=djz6S3}@N>Aq*vYIO{U<`HsMPEd&S(>TtcB<*3#o~M;KzV@y zJ-i>_B-;q5t)!|sr)sFDds}Cu86UZJ%xbt`XhUUsY|`&4qfq800yoN3(xB&L{dMZJ1+Aq-sVPH&`AdDV;jj4h2{+Zi*G!X@B=tFdl8eOOmc1=NXaG3rNx_I1@sa& zlqD226{fpGDF9JGuD?`RS~w!#aFFniI(X5kKL4JYJYFxvuihAzhHse~UJ>qzIfc~a z3ltcQkRaMviDiMO%vA2v=P4`*bLPWQE4Tedh&YDNI7bbviC3`&&E}T`t9IL9%OkQ} zdBlO>Epu)}_K4Q_zU2&iM{+1Bp(g+p2Vb_!pN5)E@m}p1}K9-$Y$4Lfh(`GxySl zmh*vjbCQw3 zTQLm7=dpQs?%_*80(siBj&fXwh>WPe@_QL}VZZuri8^u#c*?~}n#=WC8a>}&?-QfL z#*)Mm)0=oM#RLaOkaENZy#p^4HF>Db-s0C75qwmt+4a=ga-Eh)c|%^HHAMmC{bB)P zj^EgCjwUPb%!elX$(a_~KQ;j-`uaW#tC$0{M!v@8$uu9}u=m^|%!Ba}C`Z$#0gg5< z`3wLu2O@nvty#|oj(qiH)X?%C0e2d<(6b7XrP4v-& z+lT5txiz+%>c%x3Z7#>dEIpB2j~M);muT-3F5M2CBP_)p)p~C~Rqbwyc2fNnqJFQX zCKC8Av@okMX(BCVEbq_VJUTk8H@r~b2*VJWyqbh@9yKc{4?`egJhvmf6eJ89yyP4v zxSvsl72Tfm=PMa+F2g;K*=u6{khO74KDZC@gRw)2!*;R9O;FlcV%wSn6XHe*^y-vI zS6?G$_hy`S1%C_#b8T&JqbR57)X@qqz6J+%)kcHRgp+yjAn;ItyGABp)Y6|fURK3V zdlZP(%dyL_y;@wsw<)-H|58I@XAbQl#c4s@k((zrFW~Y2*Vr<+m6nC=-9j7jwBpZH z6r<4lnJG{@X|EietZDbeJ&k#qwbDk%2N$Qg*c*-OIH0fXWV`5IY?PlU*M@~plPb)@ zwXWI&S}~{{n(S$JN7ZT$57r3*NTam_q#jxEgc(=(92jW&vmYXi=Y|uD`3ci7%L#72 zpyrYom~j?{%%=c3bt?qaq`VISuDZO?Pkds;srt@uhVhG3DM7_(c^uL29V}Pvh9h7c z{rL}9&X1m!+By-@;A&g9jQuRzkT)Y`YJJS#!b{Of+)WqGW4B=7M|AN)7i9snq0>ms zUkUlCc0FAEqxWoZCN~D9HT&AnZse4}7ETn+u$Jl9fE!~SyxYR#5-+B9s3~v{NZ5>q zuKF4ue*0w}<+Q$%fG!?~8r4BwyV^{VX(Wj5ak6cJpDA5)6UP8_OjV!Trf zn3WzVOplE`#$;=+`WVlfFNJueZ4`{5Hb|izzC=$N3P(Y}!QaQmSFgLuI)mrc>&4+{ z-vWSVqr_Il>D-k<*Haz;Hr$W^00i3t0pp@2QditzAi)YwZ%u9r^3V}$q|op}Vy|l% zc$^cM3kr0?U~K^)G1Eb>DFa4lFdvO@GtSk*WNp3;uaA(b6XIlyXigzysojT$R)X5H z+}fyy@D7C1PD7054&n=kJP~brbl(@Rpj)Acahj#ZD1H$XHlI^o+(h2dVTU~sqn}vd zo*IrKs$oy{4a|4Q*XJ#{#}4+i^xYz|PVl9h1;u^~h$0RnWBBJSg&p@XlFJ2Ka5`EZNiy=D2kUg^E-Lf7w|$^(66X9 zIm&3f)n+tH&MPd#)%FL|?sP86Zk3AX8Z%U=u~IKfu+GN^GJ7P%hvL}weK#N&r8dA0 zQ1!Y8ZhR21 z97p{}Ygpob?Ca)QKH`iiD6V$vd+P0&F_eX8RSckFz)wYHjwa;g!G zc_2izW!BmK{5I4WBr=}~+$h|1+aqum%Xqw4)9-s%lwdE!MSqE8Xx}J@C>wHwzU)hL zM)Y|mQ@9c7ZSl}L!gR_>PlWfuPn(I+bzEQiP>_$!=hh#txtxhSx5*gwDcy{KkO6e2 zf=M)r9aEp%gBIppqZ&r%XOXU0lmWf^h?+Cf?Mu{-8N|nGo%9y*ur#oElb<-_RWLoN zmLLJNeekGu3@)eR-{oQ_>kd6S;>Uvm4v`rj3=d^}G+es%urX`q33TYRpd|P#Byu;U z1IvTwQbo>}jDd5n?LQANB6Ke6h}%yYUR(kB-u7E-_aXUN2`hG!fDzZM?B)9uJ>m-R zaw1H;`f(<&pWsMsz;$SN9X&#MVO zA}dTIff^#R)FjWQFq`gqBH%hAr6YvE0QHqVhA>zop|KA4`8M8uGS{j2ES)dDZGhfl@~u*Nz#6>2X}VIKZQ+oy z4{}elxeYnY>V8DaAwBy|)0hAN0KfnNM_I98VhcLUuX~MkT15`16mOk)aT$P+&1VP9#cA6vCjP-D!6u+L z`|chx)SPMOu}I7pF9UDv4>3hD&Hi+lf~s(bnf``q_3$=Ni%0>dk2^0Ns6iwuYt|rQB3hhv!Rr$t# zkItNuBr)kPdEBR%R^>iD>x6(AZOlLH^-f!2=#Qd+ica-w_TPAxJEAy-KX7IoH|ubn zCq8rza4>>{TM3o8a{d~8xu0><$0rET;fxmxSaJg*U{`)=NaPOvgSG#H3fVv*Mh?nU zq!gWmm)iKkmF6)Pa_xZi*AP71sBKd&1bVoeAtM(ww5KbTTa%X}Gu&pY4czc%CKPLR zaCbLyu7LG!5Ta2N=a|>*wvk$v3d1*r!a^!jnQZdiE1mfD(`e%M@Q@iY{p@Bgy8_e>z!`-bW^W#_+NdWSrq+CfzB6lCD~>5$tE9kj zXJFL!$wFa5RV%@SPJ!)a`FhW`AOHYZdjbK`AhOk0+(QA53>c>iz}Ibd&u%FVll@^6 zCmc|p0@fvgC_o$eGHT% z^f6r_CHG|M^0V6>Ds2^9=CJ)2G0YWn38hE>0MqRCv3=Z97vQz>-bSp?)jW-S&NH7@ z=g=0w4yIp>T2XG|C}D~ur_u>JCPgFv!$h2ri)_=x@_YB8*ZNePAU}tBP_PXnL3>1d z*i7`ulZu4`jT$h*;&LVg?Z6=a)3_ST;R2}TVr~?6)u5mg3Md}*>w7V=`XteVFaPG} z&ju*tzxXCbglu;5&3OEgYiC=>$;B3AT0%=gK_z;!2SOd}Y+A;I0XtFB1C>(T*)tYPmZZ2n5R z7>2~7Bx5mJ<=wr9vWiZZ3Gtbay=tDEW5ew_*?eH^XA)X2npJk$4pL(BKJRD~5i8t$ zn@8-gc1I+WdQDhNmAkvt1|>966;7LxSk`i4WFKCv++F1dVOc=d>A3wcwR zyQy{n5KT&Z>dPWV+tFn$pBhIX)oskV;qJ%r{aAgI%gZ2NueBj}TOR2s_#N8`Y^lK5 zY~IGNRks&yl>uUAWrDkW3(jZ*sN;7pj7NT+Ty|tdB{8bZ!)FuECTA6Ahc^8H#D@3L z@SSDG%YmV}S(%Na*3%3laBdD`p=j_03?oZm%P!@_3;nSkVg*CZHgL^t!tS$JmR;(b zK`b;CA&~Vu^8Or*V7p$zT~l0yG&99_Bw|$RDcR8Dl#pnK7JdHhoWWcXyJG2NRgsD| z%iuaUS9#DBmYK8E!4{5n)Sn{g>{NVOLyuery}D4>_hI*5cU9hk`=eGr#nm!2%gm|E z_B|YI5WRK<{5v~p=S15 zPhXn0{tF*)AQU^F!hr|kIRCRye9$M`yN3$&%C7+gLIu(iwV6c^cgxB$q3Z($u zn^`<8sKszfjYe+kfQTFbVq&VGfW6^PJs?VB=>mNqIb}MB*)UO56U}uDl z6l{wt+i?SdfvYoN?+qiWOK-+e?Lse0Mq7hLs`bjZlAEkf^89rEv5ps~O4jP)>DkXw z(dMD^c&v4h@$+7p=S-gLZ$lf2bqUb0$(>Zu=poI*(;DkyiA+ut+&vgSK{N|F(W&bl zrUWnd#j{_9&G=&~>n^QE=n%_2IK_#y>0>WDkldTcU^pH+ZTD4U;A)$N0@jA!yr(FkxD#-*!5R#S2!!fgBJ7YZg zUy%Zi#yLseWI@0})NEK!^H;Y?2G)rcWY8||7fiy)V+#l!bM4X^M9X4eG~l6g7R7ip z*HU88v9WWs`|rYGpu1oLaqt34Iy1EIr3%4m20qgY@(TCX7UeD8YaZ%a z5$#JBJ?RyQ ?}Sf2IJJ`9vnh0*D@kL=`z(mZL6fIhb1|Eq2y2kd%RtsMg|fbFTd zq%mvi6q3OF0xp$x4iZKa4Rx=9^2*c3-9c(53Pzqj4Q&_+^0%C%u-*<#6&!KkxZGSC zJ25eW4Rwbl1$>Am6`%Plc}2mUbRvDOPf}0XS}62ZkP4#=N*3#YlkHA-uxctnwSv~g zop&?z_c3zNlcJ@J>v+x6>bP#`xE0EBw_5(e#}^j1jK|1f7E%_zYI8HMIPejZzSY#$ z4*k>3w7y#~ct#l@UfEVz+v$Yf->`~c;IaBy3j+qKsR5jgrojpwv{bnK##C-#GYSWi zEiioX7NX)1lz`G-L#>H0FF%1<3H2V%g^c?^^sfqJP`@{b}=hha@}z22MR$R)hOeJPnV};|us9t1cJW z>TeVy1HXPo?@{xBeO#FeKV$TltNbmIuBPXwyu`xVtHFgF5_d+LV@Z^p#~a=}e5=t+ zC0%}ryzwO<^OfPV8Y305KtzVeWu;_tGBe-bPZMGcQ>`1=4-b~6XG2@dao{97T0nOC zju@()xXX{1)3>{ukl0P^j2JZB@9+Yj+!_#Q$ODRFqFn(5mhVoJh4QAc&91*U`5fS; zb>+{5h3`$OJP%cLj77oj+&Vk4GX5E}wbDzE1ahyy&oX5yjcR+Yd*zujeJ!)!Z|1H_ zJG9@$Kz#Uhx@rQ>e>=MyaMd?@>~hQ8s3S_6Jj(r6m-zFm+GyXZrXHHtv-?i=2KR<` z%9tx;yIe!mLsdQ~ryik2t6M(i|FgI!_l#& z-MQ8y5d)2)zKkB6a8(%OsXhJ z^D#hGvf5>HKn8G$0p9a$5O*>%=IH`Qz>MCbH74ZQ)#h}9jHEmzMR&Y=XenM@&9zi9m zG&-o%BGqNM?-kF*%_>ZPyG$lFP7^`*LrqAgC3{PK^gh1+#-eo+x7o7G(@#gyYnsB2 zG=3{lJRi(^C&NP*#&?hZi`WX6;!UN}fPNhl-J+u-e5naA8ea12e(^_f{( zJQ(kv_MRj~)YeNL())JiUQ&5(lFYv?#A1Uh&#{4CMAd=|_~+r5j%HC2teSJ+EoGOR z)EnaKpDqu%!!N2V6b<(G`N22Y!ST#ZW4YK{G|vJ%y4*dOkUNf%>M@hEF9Lw&RaTRZ zXJga_O{>I+!*V=&h5~mR+&R6DyK>yezhrETBIc~tmX%wI>r)KZc`*O2h1}??L$YIQ zh017%63?O!Yag)-XeJ>vvaZlmoo_IU+$la87VM^YpQRsYd@_uC8NTcfKF2y`1xG{L zQ>zzry%H|{2}4vyiCLALu6a>_?70pnmO!ayhMd;YoR`W5=0uVlnT^?II%*Y+nJQ~S zml?9Gsm^eoRQMrq{B3GLPRU+YN6nLPnY|$HBXH6*s-s zY|%PFM|kGCI-L&mh3_!T!4-D3`d6C0YAYC@{(Lo?4#LmKhCf8kZf=W<>v5yq^VO)W zW$sC&*k^_xGULE>iUDDwq2n4`>fLo}p*6&&>lFFoN}u}y7gD~i@aHUr71M@wx%Q}5 zpnk{FWSBGV^HqHD6M-LiEb~-V8&9;J;E3fIHQv|>Rd1Au<8XL7)Cqf2z&SQh97Alb z8qlqB_qQZTvF}7wyjQ8(FDz{#*tXK!dlMN@7crP4B0Ik+lw` z0afcNk8LyDt6!J#56vL+_MMody-?C(eb80(L81R3ga|#ORUB>AdD>Jgo!@lQC3X(h zyZ*V*6phLvklvXN$<32;=Zgnsu9cUEwOze^SHEufR44ldbu&xaeIPqd_hSkB-rHfK z3OVi`z1StgQ@U3e$M^;z4d+F~#Wx{X^WO7PNUfv&Q!82PqIb*#i2InecmTnd+lYqm z`&WQG8JK^j;on#XLAuP)%88>4{d9VMQ=>B47C{2N8gx_%d|^7m{W` z!H1ln&fe4+Y^V7-)0tRa-o0H_`yIvUW0-KC`-23M=Ylrs$7A5{x$SC4Bu5lleKBoo za7AAmDTL9O5N+W6MG(s!DZM!!Ba?gXbf?0t(2vTh+i+Xy;%{5-Wr@431?VgDCUWOG zv`de`xf?;RM!9Y!9%$4cD=#^XLC9t zfFFeB`S9ht%$q6nS0d;@`c{0I1h4yU{{a_ZNSZ*FGP&d{05LCl*cNP%{*v|li!@U_ z@aB#ouPa>++ctDE0hyO~FAg22*@;@xDaHMJr<&0#t>eW4N1qWy%5&M)-$;j1ZMwWm zWUGW6*(qqc^WfzTTehpY|IO*MKO*wYWegpUdWa1ciD^MxG{uvr;s?~ zoO&=uX|M0og+0b=hlt!AxcMu{hG8v5`eum~p^(@1rB2Xp4Ye9a{vfT@fKA#_ut>~9 z%NML_m6DqU`dHWJ6};zdXz{`4xu~&JvaR*vFoN#&N$nnV>2R?K{kk>XaXW9J0cgHa zuMZKP)71bss0OJB{4%25TkD(9V&SbE8ab9DonsP@@`UiWeUrlOp8i}N6?q~G)q!cO z55~1YP^0?}MEMu}Jwft0EqaPhfeaDld`j5bv)c4}zBw^HY>|D<4As6BF#Mr5uqbsW zCN#ElIVy7&aBOrGc~>}F`f>iw8a&|I~(Ems}vT&_42ECo7-~gdr zi03}AfBiC*X{o&k2IxL6bg(zn1}>yZi)4}5wG!2k1ImvK)Op$n*F9u+=posI0ybd_ zJjab90)_mvh2`Q7)Q8jKrh%y0_u=}qKTQv)AxzzDXN(!}phpyTvU}ikJ>bWNmw?)4 zG^T_{D#o}=>isc0jB3`3l(gl(D&I^Tz{So;V+0Z-u6FLZnVgu;1Y#lPJ71NA{ ziYt=G6dYC-j;+h0O z0BpU;P64~~k?k^IRsAN`P1D+V(5CQU8wVofPxX@}9dOWsBtz)1z5ro_r?JtV=Lmo z<(ms+%=v!_BX{u?pGA)+I!UR0IL88GIO2S;Q@g{GA+pCrZy#xN)uEZGns85omONaj zK@CdHwyfL#;xzYOXQ8(8R-t5a z*W*Q%TU?*1TxJg!Tk~9vffj*0tD(=2I681c^Q0*d;Np{JqFwKgOj3C{74h zf~z)Q0fk?o#e8$hry|tzLy;YhpkjGBOBEiE$JlzU$n0<}bGtysoFR0zOYkv}hN-cBu+xeqJ zALN{g8%_n}my?_N%~elc@@$#|CmM>PrqxY{l z3Xq5)nGnk35~R0IWoj%gG@F&j4VokoNc4<>tQMn&#SN>>jktjI^S9AnQ(&F=sQq@n zvzthXI>7Y*MpkN_&NZ{g3~H|^_`^#$aQ{)#D6&c^m)!7_d!((b9FDYU%_Bf)jR_?* z1S(XG^c#PGjFm93ERyeUoAH+rpa8R(kvk>Bu)H`=45~pY@!)q2*ipvIp`a6lqI`|@ z(kD&|l564Ve~LJ`w%l+T6e)!Fo%b`2;9h9vW3P;bD``Sf3{3*tXk2fVJ=8uqvcf;E zH1D@WSv*1Arrj)zyQQRJ6QMdvyyK4K)M3vuVQA&kg5hQ}p8?G!*CEU-DL(xnq1c8C zX>jaw5SUkn{Mf+{Df5W(TKl8;lMhBiez7!#(t4p140vUaapUnNeM|fm`~lI2U;qxP zGs+2!vzFLhV@>HX%R8;>00M2|@1x@bn{@w6vEiL{QFBh!f6A5`z=vaj@fnKuA6#zF+bn644-r8Ji7H7EHxtFHT$`7T@wKTECuhubt6_zS`An zRX8U&3ngK;v`6&h${ivo-B28pB0leX_Kxwo!{ZfrZA|ZWzq?zbyn)qBkYB3C>s7sK zZH$C|ZO?lW$DnvH>nJms?hfPhq{9&#_r79nT}-5W<2wo5Siqqk(hW{Lk}CivDF)+; zC1w#&P0d~=g|!8b)p2E@%Wyf9sC!pV18Xn$P5`lsPX#N5aT>y)EQlBIOzIm%3R)^% z6Pj6zx6Q%;*?&NL4K$*$Ll%+D;fGAG7ZSSu&EIgq-q*n|^MamIS~|CG4U#?P-E>d6 zKJ!x%XKKi2tvwG0!@77hg}|z|vq_gTe62@UWTGxZ5pNvxckKBPpMQz7YKJ&{&5(AX zdG2vp*mQR9LGev{c0q0{ur#X@z=KRBovbhTY@#Lq#sYAozpLcUq*_CP0Z3K< zw~W6S&O{Fku+YEmjt`cET3j;=FSaQTp4p-lcL4CFqaqxIJ|oaC!FgZq8(sX;drOZX z6ZZv)hw)Z~kd~4D3B3{-qT#Q0{K&h5*Zxh^`eVVNupc z+u3&yG=XZ;7dJ5V7Bb0=JC}5D1C+KVU)uWeG|c+c>D!v>uHC=^u18pvyf>o%s&-lI z(z1{*%lIIg*eiLmo!2s!P>b%=Vs7nlgU+P?eGl|Mbb@&=|HUHENRw#me)zKI>_Q2+ zmi$C0%j9-WNFeSROU2!J0-^~QB3R$>Z~HSFswWZE-#-Vy0O~vc5(=rBHB#_ zkX|wwrco|ClZ#d~dT2oH=GpY(%*A}(1G+et(bz47Rc^ToiqY{FR(=C4yRK?Ly@Mi| zH2cLK|MA3J!=SE#+6NCsaOQ5*R7b7`Kz&O74n;g1vu9&D!EQ%+$g&?E^Le$;Tyq+5 z(Ls)0MKBYaee09o5@e_7xY-ELyBn!0s7I078o)}H(vxrK;JOH5yA5Rv~II=>G{Z(V3$d%*9FRubo z$gBsrhIP2$Q!04@Vk~r{U53kYr!L&)ge9aMxqzCeWe= z^tCHKAZz9<{gVEhmLErB!}RaT8C8ChXEu$km#$Hu>(S`=Z^o8~XX{1V zzh{w|^VLpd17d_c4E%moSLw|Op}&oae1^yTkj>pzZp)~TA^jMgfj&40zvh+{R#iJ5 zJ7l6=tE&F}ISpu`f4Ey{;zL2q_W(h1y>{lEJk9n2T2!jzv)l(L3VTJ}H36SPGEOFSntL|7$DM=y+&7Z|IXvJ&Oo@k7lIr z0uZxI?7RFMuP>CHk%aO^I4}=V;|A?Kv!nPm$T1*5@skxx(=(5>iG2b911%(nnmzy1 zI~cSHd9#gF>q|>~X{0`*)miS|!^QX$yza-;yNB{8!Pm`sAZY#b&+`%t6-QU!CP|oM8A4UzbS-qCI;7SlA!wiz`U6V|@ z?j>?#&>&rReGA*Lr{tOOOHiJMf6q-t2jMN)&9NpGVoO#J_xR|f>AJ;0P&=#&(Dzc3 zRn-k|w&x?!ThAr^k6+ z3|4b3d3y%%)C+#16ZA~u9CLPIy6T8*W=CF;)27piZ8C~T3p|YU(}*xRxQp??f`*oc zf~qH$-NRz@l=iugkVP5XXCb=yf2)qgxSi6=CVtM{ln1LYB9udXY;biO++C*{YK(hG&VXmR|d0$l!h4ZW5?t-H>Lg9@8&@#_TIbr3g7vjdTs>E zN&43)6b#t3#a@pO7y{>NY`>qim-crSB?o00V&hdoE~t5-2m31k$ngNK*`G z+K1j|a8^~zxi3rOOw|QT-;S)ZG0GfXQ`P8In*C}jFMHW8?VDpFt2x4@45rOgP3fGB zeyzhQGX4Odo;~*BKB1(lye8PD7v`_6OsvO~Px$8dSbVSs8K!!n2P_?v#g_L#B37)LvG)5(uB z#P@JtycG80US?B|6J07;b$a9}g_-HKi=nPjp> zE5yTJT6^k!n`5oWps5QW2?3MD zzJx}k(AyLkl{zK9=O2CD_Zc6xUSJ)H9;78#g6{xdG%t(xN!5Xi8s8{~_@3SW(8oCC zuPbPF7)2mbZCS6grc$t3Ws6;aI5JN;Mbj-xp#6ob6;&D^h0G2A6_-Ggv|4%6yW8m^ z%aCyo046#?Vv%`CUg?z2kqxozZ&(9mgj`30HVXt}W-!nzSmey4+mV|;5)?1TCoP6~ zk;{+u`3Cw5`6p3n_Wn#2_sGQG!^DtN#|`?wMp(q2k3PEUWT%VJphV?%TQh~rEK%9G zozL_Z(FYW2(e=0SPKMa0r3OpIgsH5$MVlK5y`?hQ@aW#l{pLsfcH`g7MfPP+uOVyv zoqC>5O@!%IxPuFp0C)_#H}mZg5dggw7sCQ_qV2{cWFUH<5HB0`lbkx_3d8p6l1QCc zx($PK;@2y5cL4x2&g6*;Yd^ItdUL2DCTGKgJ_r33R)siRx%;|Lom4rDd9683#h{#? zi5w|@A;6stio@gNV&s9}IL%cjrvNqEm)#D8QN3sIF|5m^zzvwkM-ZqX|3!Rbp&RT2 z;U{aL+GEpv{Xx2>VMSe10{YB7l#@=`{FwPNk=sRI@NJW~anL@{gxIR#XLz44S+L{& z=mNkmNuCq$sE%=`dZXpVZ{7iO*5eM*xN^z*8tHpjSjWe61bT_TVMC1#1F0ul+TQvD zsz3;ROdm|+12YQ}L_L8wl=U=b5C~DI0jvun(^}qPd1ja>OCZGnWo0bfxd^7wM23!w z3QEttC>7gdn3`rbBiEeU3)`srk4D|WzjXug*Arx9v1S}|c#OPqez%WVeK^f#pN>dN zXp;$ZBmn~~5-x$~tgTJV&Go|awJ@-9oH;LoDZAtY(ns(Ervqu5KT%VW{}i6b7lGKm z_&?)Yag2#T2@XBf?&ZjN&yfWvEf+P3E>|re7~aizWqq-238p*S$HUK}QcR_Ch!(15 z`cv-7k0Z1J*=rCf3~?a_3sum)<|1r*1|BrfoA^c|W9w1y_QTJ+Hs;KVh$+vu`P)6| zEi0=V&lYDG&-U841z*|`aWtaw!XpP1@Ct*lnDxr2qg{ecT|+03ufs^$uu|I)p)#xg z8P^u&c_07R#X_IUR#xz$@U zJcj+-on83q_C(!y(Fa5Y-+J4jTqfzr?2UsBHD!HoI)&(?7XvKdExd4O9E_Cy3BHj( zUPZxCfZj%Q@e(ASLX`6L*!Ps!$eu18|E4epKAIJP_U&vGrwSF0r|FP8(;LL=`($d5E<7J?uuqtG%==f#P4z(_WNUn@RAad6RSjRQs~ zgECj2L*DHjU~dh7K&j_|qO?C6g}{Fb`_*{`mmoZx?x!d%)D=Ag+dwjl7UN~~T>J#Q znLkBCi!hLReE$ZU?D9WLzqD9C@cPUWxmEnO+pe+OF)j)H>%Np4V@Q$KKB$-Qu03AymtxKqRILp!| z`T}D0@bYf}L@*UJ2d)F@Y85LU_Q0Kut0(y|$vR=#S^Y1o4Z}6)@+ZfU7i1gP&aSIT zZrH{9*2!oo2?XK(DQijWx67yn$_hz$N5u*i|1$mn)PvKAY$V?387kUK$xPUc(l~bv z9i=ky?JJ*FyX2?jI(>rp=+Zn`(=#g?f_+O88x%MyF-1hr8_Y#hQr0^-Q0MZ8BQ-v> zO(dtW17p<-PWpyoLh@v&_bz+$)XbhcQp?7~woH5wHdc#PpYV~`LNXn`E-yg^%EKEz z_eZ87!BuPq_+L_ds2}A<^VWqzf+JByyI8~!2AxXFnq>vYmT!pBp2MSv-2&t%eeCnB z?vH2Rx#peZI!_=Ri2;0ydak$F9W&o9Mq~L$$@8gtb5+a)M6F6z z;S@MO#h~7YJJSs+6pAC~U*1UsK>an0_w!{IY=`W$efRjSH=!LKAK!LLh5O6PrNMN@ z4KL|AzI@5xtY)Hqc#9q)?zSBj;$VlY(dxnbtT5XH4e?^*h{JW8k#WAI!ndQbjX(2} zf@&)jp#!ZDOwIvx9^!&P*Gz|)dW(c`N9htrw(ZaH>MJUm0*@D=-JCUnGA&`fVATvH zZZ#u2I;`ewH7E4o-(}2kKestn?7HJ4be(TinlYsUvk9bs)bg9?27YmTEQdFcmFtOn zgIZH26rlc5%Fg?s%5mt^S{P~kzemg~xS~RjXc^sM+t7u=*lGMl1hW{_E8nd?j;C_f zLm3o_VDHdqfUS^m5SUX8!b-noI0VeZ%nG&*J0d@-jrBjO?UIC6_YN=|ry1m{RO5;3 zG$(E)f4&@yXTvV~Y;9{D?N0asK7iis{xmd&p}64Ql}Fl9_kiQB`&xb`rutYE^~hxb z12mj>e&2`c4W83pYlqZ)F~8otBEbl@^jGcsI+REiKC8KK9lLRc;sZBSV0E}m@J&+T zju%wrHh-3G+EJ*Q*h4H`au051v5~Mv@8|`E2vo7v#b+uku0?+_g(W3AscQ6#rw=1? z`mGAcB;tbs18jNo{AREW+x=IVj8Ts7J0o%0NxBsN z!C?2l$Maqu> zvfoZM$)pvSB~1S~rz-Ytw?1%>bm5{vgW z3p2hTg)31}e?2li`vLo;nGgmcJMezxer*e`7T{Ozt}^uT0jA_xRS|N$}ouzPnX3CkEg>uVj5u}=J=o6k`j^H0TJHj@8W@Hp5LYh zHdc7}rp9ayC+&QSder&ls3^0*Fq%z9459m#%b&#DF?j*h>q?{d(viRWWZ$2^y?bry z9l!d9(Qw)Y2hfM`_hJ6HwB6GTkt_yw6UOVMz4d5c+SP(T>UI8A`ySp)-kihn0D?t% z4)`w%z2`nKc=N(!Kh<2Hk79Dd5?8KX@Cv4-A9pa~fO6WyM4YskJNLmuq9$NI?DzMC zp-W#4egn`V<_RW3boA4&=hHoV$Fn+5gci9c8_B5vELZ6{`AliV><41beaq(IM8z|hnVo6Bw859YgX~NQ^JBxt!$jSZf6_DFu z$9WW-hM8+MprEXsxEIA?*;=`F)0oU3&t#ustxG4tP=D25j^upd^q>b!H8W?*f2&J))YhT^*vkMq1WaO*ap3~8q(vRnk#dy6%) zg2{fV<eXyk2?48t%{ba zZd+0&l!i(Z88|yk>T-g2-#KvOq|WdaQ;y71=SJ8ophj)5{rkFIk+;ul5|&J9_Sutf z(=oKlGihQ)9OCeAZnoA=6wNI1*Q^GDBgX48#Z(Z76?|GE9XCQn`sF!dVhiD;pA@s6 z>i(aMRfM9e1+74y_nB z8jDs;q#r-u7XT7P+w|(PDWAZQRQq9}tE*9Z<#z11|4efSP%Q?)Vs6pr`;UB1;DW57 zDNAGSJXhbZs2im89uI<>52QKqei9yav}qOPe{F!Da4@1|w@j5UgUAjsXxFo#58HW} z9&Zoevmt#y7WeBkkDTuJ9hL~4h^6KZ8*`klXMBU+vzrZ3J4vJ>b$o|4KS0jS{9kP_ z=t>s37Hu;CHT+X?eckH4GqInb1LzOcRvm7C?SNdHm}F!v zyO5c{KO`v@g|LI>KmY7~&4f6cKHbiHt-sXJIiWx1re7ivDNn8{$A$?Uu~1aVc%dAWvcEnI=Y?;o+sfs zJqdTr=*2;7pYBU(WE~(|R7q&-?z-|$CaFBGFXR*<8#8kb-xrP7KX@X1z$};~qq7w) zI)K3ldER(?ges7QNy(iq8UxP$R-@)d%n|qjzAk218i>k(V#7G75G+}(dQq4E)tofz zaq_#t1gNp$ZeuzSi4+6UzYhc?(uypycEMP&P&Htlj(8OK2A8Vr66i&ab?IPFeQWy< za||ZGcM{qF31hN3oygW#fNQ665h>k~wP(!gJZ?oJPVwV$;~4omTMNaDFolj(@n6^cHd zdfp>3yj|R(%7Csq2+}FjUo1Rz{F1s+-86bb#-f}@l+7~N>6$`6ZSn7JXm^ECIr9ro zZ=4s!_Nu9MtMO_QVJ;>L@m9ynT7I&|i1`2{p5`?q<4z?LvCU?_T-cg`^)5@8FOX{e zs{zQ}-+kpSM4`gBjvW#9ryQA0&-5NT45Kg?$K?-wPC^GI9&I&EMgX(KNfhqjZQRV% zrITH{hbQp-i>tY31e66647{k%vG^)75E06|L6s|7x~g8_I^mLyLfrMjiY^`iUO=J0 zM@`|2<~rDtH+^k77Vtawqk6FD7E^v{g_?@ab?~jAO$B6Su+x=Eq}kn7fjUT3gC&ao zY>_uX7)1gOd9Ghg4Q2vd9`_!!DR^r+{L#!zTJMFb8>d35S;)}!`ef?xV_QI^P3L?p ztrP-Wl->LQ{Cc<7V+M16^g*E%K?h0b*{CN@>|B{fx?Vc%cVX@|$3klOI#=jkBjrg$ zf^WjrjcoHjHvdqHwuki)Oc-o~Rn3c0nnLEfWbVl*#xifK-7jJn{c=`4>PU+-Bd*hv zA4Aq3N9|uCxeb}JCDiJo4t6)xZWOxGS#TEboxfF%IS~|URjkLnZ>eheM{zGw?LiY5 z|GPJa3GJuT&ifA>6&A!rd`j)`d&k}bW4YgO)6BvSU${1!3v%@GSPW ztQ(?mUywlRu`kcEhX%LA*6F}B7D++mZd{+CPnbi2LNDT@b%NC7egQb~s8~Ji`l}2+ z!__Ey8YQ~&Q}>TkMObLWV5KbJXWMy~c9&j@I=L<|sIUJPIar^$fqlA6miLG#@?QsZ zsHQN40%FTx=zT3EEY#BR^yx=BD3v(zH=!+q&m0$F%k(kidmriu;JAl@`n{psD;wn5 zSl%s_wT8R_h=>Zc*e`+Ole@{ctNuQC$WI7tLXA!u1P}xJN$7M4k0a(hamcN`47c~; zplG$z|11f|Gf#Cp`tymu91NDd!`j7hG=u~f<4$HIOtjf)Kj>Hz@xm2{lEi`lxuj)kuhmVVmv$0Z~`FJ zdNTf#HLUbM<)b7fCpa{5pvTFN$4Jrk9kw6;xYC%ZGy+Gl(t0F=gLVDOLUjqFWk(fE zSF7AV)wgo)BgWal>;o0j&k^xAxn3f^4)0mAQ2x={Vzm> z?GP8U3O$<(b@smTAab;*e=@iR0nZ7X$;bJ=$O_bJW7ZwQka38Z9RGOPi?vs1_sL~! z>Eu_xa8qQ8;NjM(-UM!5IJ=^SYowK*K$gxApX}PQt%jArR`y2=Zp#f3Xdi0!ZO1=1 zvh1YK(!D=c-7s8tN9L3$y4kEH@t zI>+@JP+X9S!;a(EHF7Nlvq|^BG>CK7^$;9j7fLIflJpX+)r?lS>qWl9V}qesVPTkv zU0;B>AiNq89K?wxU=w=6bS_Q4ET;=2zS6VewoF~z^Jit2Aj^I-H%vn?2ft4yAIMR$ zy%ighp*pDoZP@>92s!j*XG(gT9p{9y!^j9%bK*{TnexoGr@=~*U^oZRVlJckr$pgg z*cBql8bKA|^^KW9_5C^PU`GHb!?2UYBkSx4fQsOAY7C}D-`>_eivW4b6$>`yHpFEK zwg+Xsq9CBoUDvXaVPWRgAE=RLSOUA%QP;%Hl|lE^>@zW}^znZX@-T#30fZ1RS=zqxB<^Y|r33wneL&(U_<{YzX@as4Q5W75Fjp3z8rG zlfD>_om&jg-a1@Arbn;(d8yPAGVB!HYg@OAH&V?-h&w6gF1cD%Ef%?(*Ji>>^kRyf zzhd7p_7{AaPT>9d7tiC#_UZVtJp58v>6#<2zdx~~SGB>DgMx;ymEMS)UhB=q=S8+7 zAsU@Ntte(eUAkm-Mb`{ZD3#fx-Ih+no6|XjJ)!$8c_{Dy%uZbk#~Z#lO76YO@6ono zCs*AX`cuwXi{Kg@p)xsnHRHL(XOlPUqTfI0co`ZKX=BbDnQIF}CG2fQqzjeqFt3G@ zy??DwZ^=h)r6-sJr6Wk}qf83&Jhb@MY)ys2r+QI`xRwKB?1GfHI_Dp^680tX=s2&y z8mJOa?W@HIcE2r2?~dAbB?tt_$B;6GAADCcduh-*V1(MocJs|{jrb(L%RFG`A8VSQ z0G??Lf|&V6BF?@E-|5k52O4m7%T6wNbBAuk za~$T7`>4*V5qK{);xsAwTJyFg&AiKJPBxky?QQuN1uBUsL+5vhE!Hx03K?2nwSfG? zTzLM@`TE?87A=R=qa84vPBM!OZ}_RRii)o_a<(7P!?iAm!a$uL70lvi0tDQ!692tp z_Qcf~*=Drc%XjbI#>u#&Vq}V$h(lCDA&{0ho{~0iOvK=BVUmX2XLsf2&u-v0UWT9ppZ61A^pgzo0bkoxm}#C;qxAOA^$WzIa;MpZ`fm7W+lfwm}s05B@95%14`Go=j)ux{Nvtx`si}acsYvVh+;=sXh=sMFA;oFD&)7+0tONmKb z&LqCBZ6HOZNc!!3`lUu7Kj2Gr4Sl&LR1JkR_i{Y#)7Z%nsX#^xo+G76HpR~osw_CG zA`w>}*=Wf+yyfRVc6n!*JwL~ocP=Xqq><63^FLjRLE28JFg?06h zDdw5R8o$wdB^yzg7{|-VO!v_b#ck@D71y%v5dbpWtpx3lhAg20(+#ReK^GrAPK|qT zQNknfuul^&q@_91HH@J$1;oe># zmd?q0lJB_cc9mlE{E>eCDt7`C>eKHJ4oV-Koq$nx#^KBWEe~6lt|hdO=tqtI4rEgc zV%o5-A(JHX{Xna0=fD0KS9~$^iQvBFP}j$NGyj&5ykzhfp_OM0dCEz}`umf! zl77@?>IIMt@fE-%0?X&vPfb1Ez>g9AcQz}Jczl~@qF?L4DzHU7a3#X3b#Gw(nJuEu zlOlQxg#+T=2@xt0xJe54I-!&$1 z=dc{i=tj|{tQC&LYa^{gakm(ocrZXU2V}?UYTqH; zqPcjD#Kv7Q-Ix1kLjx{gp5e7q4p8nMNv^9Ivx5>HMRHX=@ciWV)}FI3f~6}W{!Fs# z^;u#xXBOj zdjdRqjqg!xz2GLc@LWXx=H**h>p9H9e%CFLDk>+H>phmR0im~moi&EMU>3Of8#e>{ z`0Jn&u;T$wTh3Re+=w|oAIWaW)>fIlk@5`D36UW2YbRGp5``h>TNz@L{5xj8Gsuo! zYY5dcT!@RgTOBNcvr?8zJh%gfoJAGZXcQOQHMsAJfgPl&>oC$ut%`!Uo=j*5+Kja- zdo8@28rLLgcjuXxVOqK(?Kn9U-cG5zzY((~-y7F~q?#&#W>*C0#uD3J;}E3N6jH}0 zK<>_0(AmMLmS;Xy`1lGm*O*Bk7Qk-Y74ym%8-V#bj%g-I&QF(h;&vzFEhP`}mYJs8 zLVyAi!7$aeSaiPC`ifPFo2#+wu2<9Kn<|!Jte2F~lqP!fQ?h4zWsnl~_x4Wv=;EEi zmTaY{UkcWR4jf3JfTeB9TaT!}dc({v(FP(L`|D`^-pwLwOl{0AnzEgmp~kWIF6 zGZPcV^2I)uD1sh*#?7stgKR(Olv)eKKJmB0+j<*vp~l-?cRfEs#~8O1c1itV&c?A6 z?d`5x5K_UNb7G8s<(k1FJ63QIK++eoeVzL^AQC6Jur|K9T;B8(I^|;y9Ky;Ctd?Hu z?uGB73kBZ|kuiIYs!>4#+b`E<9>(tK4;^&Ls>?4HB3_QUVK9%s5I8Gnjzm@v(DvsR zO64{|)+sriQ(*2APK0PaG`ytS2ZWk=Y!*fT`wF@wjrq7C-j4O*VM`*OzO$(-hxP5% zc-W6R2DOZ-4RBZZVilB)(cuud>MetAb?~iZu3)|N{$Ybr@{+0_W5J9FK66WZs#3t= z8~}EthzK;o^<{dBuvDnQVYATEkA&>?s@a_TK0h6Nqi~nxqU^r`J*LI}aXyz20X12( ziQE|%+>g^Ge#G&}tJfun+vmYguPQ?A18JOA&pYi4eFN}1L0JI*LnGy*F7k4^R-kb$+3t>qHrQ^bPt7k2eYHt#eVq*9&OQT$6fnE%bnHDGC_81A%V;@FG5;kv(@ zM(vuio9}@wWF#9vRRF!&jMkojbwfR@cTb$j|G~^+VTjyPNMQ4LEi+j