deep-learning - 深度学习中哪种图像预处理更好
问题描述
下面介绍三种从uint8转换为float32的预处理方法。建议在 conv2d->batch norm->ReLU 结构中使用哪一个(例如鲁棒性和避免死亡 ReLU 问题),或者有什么建议?
如cs231n中所述,使用在训练集上计算的均值和标准差的零中心和归一化图像。我认为当训练集很大时,这种方法会花费很多。
就像tensorflow 模型中的代码一样,
image /= 255 image -= 0.5 image *= 2.0
只需将图像除以 255
解决方案
预处理有不同的风格,通常取决于您使用的框架。例如,Pytorch 归一化为 [0,1],Tensorflow 归一化为 [-1,1],Keras 将范围保留为 [0,255]。我从Keras 预处理代码中引用了这个。根据我的经验,规范化对图像没有任何影响,因此请坚持使用框架中使用的那个。但是,如果您有其他数据,例如测量的时间序列等,归一化可以对成功的训练产生影响。
减去均值并除以标准差是相当普遍的,并且不需要由于广播而在计算上很昂贵。这已被证明在准确性方面有所不同。但是,我通常只将它用于具有大图像尺寸的数据集,例如 ImageNet。
推荐阅读
- azure-devops - 从 Azure Pipelines 部署到 AppServicePlan Functions 需要很长时间
- arrays - jq如何按列表中的字段值过滤
- firebase - 什么是“未来”类型
' 不是类型 'Stream 的子类型 ? - android - 如何在改造中触发 401 的不同错误代码的身份验证器?
- javascript - 如何将 JavaScript 对象转换回 ProtoBuf 结构
- javascript - 清除最后一个间隔后如何轻松开始间隔?
- ios - WKWebView 和 iFrame 重定向问题
- node.js - 如何将 .watch 添加到 gulpfile.js
- java - 通用拖放
- java - 如何使 ListView 中的项目打开一个新的空活动