yzxing87/Invertible-ISP

Calculate Metrics

Opened this issue · 1 comments

我英语不太好,请允许我用中文提问。

  1. 在发布的test_raw.py 和 cal_metrics.py中,RAW图像没有经过反转 白平衡(white balance) 和 去马赛克(demosaicing)直接计算了PSNR指标,这样算出来的指标可能存在问题(不反转白平衡,RAW图像的像素值范围可能会超出[0, 1])。请问论文中的数值是如何计算的?

  2. 我对RGB图像指标的计算也存在疑惑。在

    rgb_img = PILImage.fromarray(im).save(rgb_target_path + file_name + '.jpg', quality = JPEG_Quality, subsampling = 1)
    中真值RGB被JPEG压缩了一次,而在
    tar.save(out_path+"tar_%s_%05d.jpg"%(file_name, i_patch), quality=90, subsampling=1)
    中真值RGB被压缩了第二次,这意味着代码实际计算的是 被JPEG压缩一次的模型输出RGB图像 和 被JPEG压缩两次的真值RGB图像 之间的差距。

在我理解中,InvISP的目的是

  • 输入RAW图像生成和相机ISP处理接近的RGB图像
  • 模型生成的RGB图像对JPEG压缩健壮,即使经过压缩后,RGB图像仍可通过模型可逆生成高质量的RAW图像。因此引入DiffJPEG来模拟JPEG压缩。

为什么需要在

rgb_img = PILImage.fromarray(im).save(rgb_target_path + file_name + '.jpg', quality = JPEG_Quality, subsampling = 1)
压缩真值RGB?按我的理解,模型生成的RGB图像应该拟合未被压缩的真值RGB,通过DiffJPEG来模拟JPEG压缩,再可逆回去拟合RAW图像。然后测试时,使用真实的JPEG流程压缩真值RGB和模型生成的RGB,计算压缩后的指标。

是我哪里理解错误?期待您的回答。

  1. 论文中的数值是使用repo提供的代码计算的,没有反转白平衡,您也可以使用反转白平衡后的结果进行计算,请注意这不会对实验结论产生影响。另外,我们在代码中将raw clip到0-1的范围,因此不会出现数值超过范围的情况。
  2. data_preprocess.py中进行jpeg压缩是为了得到target rgb数据以进行训练。使用未经压缩的target RGB无法在训练时合理的模拟到真实的JPEG压缩。