我很好奇单独标准化每个图像与在整个数据集标准化之间的区别。
我使用的是tensorflow/models/official/resnet,它是使用tf.estimator构建的。tf估计器支持生成tf数据集的输入管道函数。Dataset对象应用tf.image.per_image_standardization操作,该操作通过从每个像素中减去图像本身的平均值来进行标准化,并强制执行单位方差。
这与其他ML预处理不同,后者基于整个数据集的平均值来标准化图像,例如使用sklearn.preprrocessing.StandardScaler.
我很困惑这个输入管道的任何方面是否持久存在于从tf.estimator.estimator.导出的tf SavedModel中
因此,我想知道在通过tf.contrb.predictor或以任何其他dnn格式部署模型时,是否仍需要在为模型提供服务时应用功能标准化。
即使我使用per_image_standardization,我是否应该在整个数据集中应用标准化?如果是这样,我是否应该以某种方式导出整个图像集的平均值,以便在为模型提供服务时,服务器可以从整个数据集中获取平均值,并以这种方式应用标准化?
在StandardScaler中,我们进行特性规范化。在图像的情况下,我们可以通过考虑整个数据分布来进行像素归一化,但由于分布的可变性,这没有帮助。因此,首选per_image_standardification,它将整个图像标准化为均值0和标准1它还使学习更快
此外,此链接可能会有所帮助。还有另一个链接,作者通过举例说明了这一点。