我对如何在训练卷积自动编码器之前规范化/标准化图像像素值有点困惑。目标是使用自动编码器进行去噪,这意味着我的编辑图像由噪点图像和用作基本事实的原始非噪点图像组成。
据我所知,有预处理图像的选项: -正常化 - 标准化(Z分数(
使用 MinMax 方法(在 0-1 之间缩放(进行规范化时,网络工作正常,但我的问题是: - 使用训练集的最小最大值进行缩放时,我应该使用噪声图像的最小/最大值还是真实图像的最小/最大值?
我在训练自动编码器时观察到的第二件事: - 使用 z 分数标准化,前两个时期的损失减少,之后它停止在大约 0.030 并保持在那里(它被卡住(。为什么?通过归一化,损失减少得更多。
提前感谢,
干杯
话筒
[注意:此答案是上述评论的汇编,供记录]
MinMax对异常值和某些类型的噪声非常敏感,因此不应在降噪应用中使用它。您可以改用分位数 5% 和 95%,也可以使用 z 分数(现成的实现更常见(。
为了进行更逼真的训练,应对噪声图像执行归一化。
由于最后一层使用 sigmoid 激活(来自您的评论的信息(,因此网络的输出将强制在 0 到 1 之间。因此,它不适合在z分数变换的图像上使用自动编码器(因为目标强度可以采用任意的正值或负值(。在这种情况下,身份激活(在 Keras 中称为线性(是正确的选择。
但请注意,此激活评论仅涉及输出层,任何激活函数都可以在隐藏层中使用。理由:输出中的负值可以通过负权重乘以隐藏层的 ReLU 输出来获得。