首页 > 解决方案 > 深度学习中哪种图像预处理更好

问题描述

下面介绍三种从uint8转换为float32的预处理方法。建议在 conv2d->batch norm->ReLU 结构中使用哪一个(例如鲁棒性和避免死亡 ReLU 问题),或者有什么建议?

  1. cs231n中所述,使用在训练集上计算的均值和标准差的零中心和归一化图像。我认为当训练集很大时,这种方法会花费很多。

  2. 就像tensorflow 模型中的代码一样,

    image /= 255 image -= 0.5 image *= 2.0

  3. 只需将图像除以 255

标签: deep-learningimage-preprocessing

解决方案


预处理有不同的风格,通常取决于您使用的框架。例如,Pytorch 归一化为 [0,1],Tensorflow 归一化为 [-1,1],Keras 将范围保留为 [0,255]。我从Keras 预处理代码中引用了这个。根据我的经验,规范化对图像没有任何影响,因此请坚持使用框架中使用的那个。但是,如果您有其他数据,例如测量的时间序列等,归一化可以对成功的训练产生影响。

减去均值并除以标准差是相当普遍的,并且不需要由于广播而在计算上很昂贵。这已被证明在准确性方面有所不同。但是,我通常只将它用于具有大图像尺寸的数据集,例如 ImageNet。


推荐阅读