def generate_diff_data()

in src/evaluate.py [0:0]


def generate_diff_data(train_config, test, reference, q_container, images, flags):
    # image dimensions
    dim_h = train_config.dataset_info.h
    dim_w = train_config.dataset_info.w

    # calculate diff of test and reference
    diff_base = torch.abs(test - reference.view(dim_w * dim_h, -1))

    # calculate mse between test and reference
    mse = calculate_mse(diff_base)
    q_container.mse.append(mse.item())

    # calculate peak signal-to-noise ratio
    if "psnr" in flags:
        psnr = calculate_psnr(mse)
        q_container.psnr.append(psnr)

    # calculate ssim
    if "ssim" in flags:
        # NOTE: can be moved to the top if pyrtools available on Windows or other image pyramid library is used
        from util.IW_SSIM_PyTorch import IW_SSIM
        iw_ssim = IW_SSIM(use_cuda=True)

        ssim = iw_ssim.test(rgb2gray(reference.view(dim_w, dim_h, -1)), rgb2gray(test.view(dim_w, dim_h, -1)))
        q_container.ssim.append(ssim)

    diff_base = t2np(diff_base)

    # convert diff to image data
    if not images:
        diff = np.clip(diff_base.reshape(dim_h, dim_w, -1)[:, :, :3], 0., 1.)
        diff_img8bit = (diff[None] * 255).astype(np.uint8)

        if q_container.diff_data is None:
            q_container.diff_data = diff_img8bit
        else:
            q_container.diff_data = np.concatenate((q_container.diff_data, diff_img8bit), axis=0)
    else:
        if q_container.diff_data is None:
            q_container.diff_data = []
        q_container.diff_data.append(diff_base)

    if not images:
        square_diff = np.clip(np.multiply(diff_base, diff_base).reshape(dim_h, dim_w, -1)[:, :, :3], 0., 1.)
        square_diff_img8bit = (square_diff[None] * 255).astype(np.uint8)

        if q_container.square_diff_data is None:
            q_container.square_diff_data = square_diff_img8bit
        else:
            q_container.square_diff_data = np.concatenate((q_container.square_diff_data, square_diff_img8bit), axis=0)
    else:
        if q_container.square_diff_data is None:
            q_container.square_diff_data = []
        q_container.square_diff_data.append(np.multiply(diff_base, diff_base))