问题

关于如何标准化图像有一些变化,但大多数似乎使用这两种方法:

减去对所有图像计算的每个通道的平均值(例如 VGG_ILSVRC_16_layers)
通过对所有图像计算的像素/通道减去(例如CNN_S,另见Caffe 的参考网络)
在我看来,自然的方法是对每个图像进行标准化。与夜间图像相比,在光天化日之下拍摄的图像会导致更多的神经元被激发,虽然它可能会告诉我们我们通常关心边缘等中更有趣的特征的时间。

Pierre Sermanet在 3.3.3 中提到将基于每个图像的局部对比度归一化,但我在我见过的任何示例/教程中都没有遇到过这种情况。我还看到了一个有趣的Quora 问题和Xiu-Shen Wei 的帖子,但它们似乎不支持上述两种方法。

我到底错过了什么?这是一个颜色标准化问题还是有一篇论文实际上解释了为什么这么多人使用这种方法?

回答1

减去数据集均值用于“居中”数据。此外,如果您想将每个特征值归一化为 z 分数,您最好也希望除以该特征或像素的标准差。

我们做这两件事的原因是因为在训练我们的网络的过程中,我们将乘以(权重)并添加到(偏置)这些初始输入以引起激活,然后我们用梯度反向传播到训练模型。

我们希望在这个过程中每个特征都有一个相似的范围,这样我们的梯度就不会失控(而且我们只需要一个全局学习率乘数)。

您可以考虑的另一种方式是深度学习网络传统上共享许多参数 - 如果您没有以导致类似范围特征值的方式缩放输入(即:通过减去平均值在整个数据集上)共享不会很容易发生,因为图像权重的一部分w很大,而另一部分则太小。

你会在一些 CNN 模型中看到使用了每张图像的白化,这更符合你的想法。

在批量归一化之前,每个通道的均值减法用于将每个通道(R、G、B)的数据集中在零均值附近。这通常有助于网络更快地学习,因为每个通道的梯度都是一致的。我怀疑如果您使用批量归一化,则每通道均值减法预处理步骤并不是真正必要的,因为无论如何您都是按小批量归一化的。

按图像归一化很常见,甚至是目前 Tensorflow 中唯一的内置函数(主要是因为非常容易实现)。它用于您提到的确切原因(同一图像的白天与夜晚)。然而,如果你想象一个更理想的场景,其中照明被控制,那么每个图像之间的相对差异在算法中将具有重要价值,我们不想用每个图像的归一化来消除它(并且想要在整个训练数据集的上下文中进行归一化)。

回答2

这个话题有两个方面:

标准化以将所有数据保持在相同的比例 --> 在对每个图像或整个图像数据集进行标准化时,结果将是相似的
保留相关信息 --> 这是在每个图像或每个集合的基础上进行归一化会产生很大不同的地方
例如,如果您想学习 CNN 来识别夜景与白天场景,并且您在每张图像的基础上进行标准化,则网络将惨遭失败,因为所有图像都将被同等缩放。

每个图像归一化的另一个陷阱是您可能会人为地增加图像传感器散粒噪声(例如对于非常黑暗的场景),这会使 CNN 将此类噪声混淆为有用信息。

关于归一化的最后一句警告:如果操作不当,可能会导致无法恢复的信息丢失,例如图像裁剪(生成的值低于图像数据类型的有效范围)或饱和度(高于有效范围)。当使用 uint8 变量来表示图像时,这是一个典型的错误,并且由于标准化/预处理操作,值要么低于 0,要么超过 255。一旦发生这种情况,图像信息将丢失且无法恢复,因此 CNN 将无法从这些图像像素中学习任何有用的信息。

这称为使用数据前的数据预处理。您可以通过多种方式进行处理,但有一个条件是您应该使用相同的函数 X_preproc = f(X) 处理每个数据,并且此 f(.) 不应依赖于数据本身,因此如果您使用当前图像均值来处理此当前图像那么您的 f(X) 实际上将是真正的 f(X, image) 而您不想要那样。

您所说的图像对比度归一化是用于不同的目的。图像对比度归一化将有助于功能。

但是上面的 f(.) 将通过保持所有特征在数值上彼此相等(当然是近似的)来帮助优化

参考

https://stats.stackexchange.com/questions/211436/why-normalize-images-by-subtracting-datasets-image-mean-instead-of-the-current

翻译:神经网络 为什么要通过减去数据集的图像均值来标准化图像,而不是深度学习中的当前图像均值?相关推荐

  1. 【翻译】为深度学习购买哪种GPU: 我在深度学习中使用GPU的经验和建议

    文章目录 概述 GPU是如何工作的? 对深度学习处理速度最重要的GPU规格 张量核心 没有张量核心的矩阵乘法 使用张量核心的矩阵乘法 带有张量核心和异步拷贝的矩阵乘法(RTX 30/RTX 40)和T ...

  2. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  3. 深度学习中基本神经网络(二)

    深度学习中的循环神经网络 1. 循环神经网络的引入与简介 1.1 延时神经网络 1.2 同步学习模式和异步学习模式 2. 梯度训练BPTT算法与RTRL算法 2.1 BPTT算法 2.2 RTRL算法 ...

  4. 关于NLP相关技术全部在这里:预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...

    NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生. 我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准 ...

  5. 在深度学习中处理不均衡数据集

    在深度学习中处理不均衡数据集 hard negative mining online hard sample mining https://blog.csdn.net/jacke121/article ...

  6. python爬取百度图片(用于深度学习中数据集的收集)

    6_python爬取百度图片(用于深度学习中数据集的收集)(6-20181225-) 参考: https://blog.csdn.net/guyuealian/article/details/7873 ...

  7. Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding

    Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介.应用之详细攻略--daidingdaiding 目录 箱线图 箱线图 箱线图(box plots):这些图显示 ...

  8. 详解预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...

    NLP近几年非常火,且发展特别快.像BERT.GPT-3.图神经网络.知识图谱等技术应运而生.我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准资 ...

  9. 深度学习中常见的打标签工具和数据集资源

    深度学习中常见的打标签工具和数据集资源 一.打标签工具 1. labelimg/labelme 1.1 搭建图片标注环境(win10) (1) 安装anaconda3 (2) 在anaconda环境p ...

  10. 转载 | 深度学习中的遥感影像数据集

    本文转载自博主GISer_Lin原创文章<深度学习中的遥感影像数据集> 点击此处转跳原文 以下数据集均为网上开源数据集,若有遗误或不慎涉及侵权,烦请评论或留言联系 目前本项目共整理 场景分 ...

最新文章

  1. R语言dplyr包连接多个dataframe实战:使用left_join
  2. linux性能调优原创翻译系列
  3. kprobes/kretprobes 在 bcc 程序中的使用
  4. ArcGIS中的投影和坐标转换
  5. OpenStack精华问答 | OpenStack是操作系统?
  6. Bailian4099 队列和栈【堆栈+队列】
  7. Linux-----进程获得进程号 获得父进程号 获得进程组号 getpid getppid getpgid
  8. 用vuejs如何实现ajax,vuejs使用FormData实现ajax上传图片文件
  9. POI 导出Excel,部分单元格的锁定和背景至灰
  10. 计算机如何写上大于符号,电脑大于等于号怎么打出来
  11. 运动会加油稿计算机学院150字,学校运动会加油稿150字10篇
  12. W10一键进入安全模式
  13. 互联网 年龄歧视_太老了,无法玩:年龄歧视和游戏
  14. “青春树儿童摄影网”首页制作
  15. alios下载_AliOS Studio(阿里编程工具)
  16. mysql 数据库 back_log 参数
  17. Unity3D---通过Shader实现美颜
  18. 壁挂炉开启采暖模式后,水泵24小时运转,安装联动线(联控线)后完美解决
  19. linux aeon gcc,在rosettaCM中,一些操作所需要的linux命令
  20. Bea公司和sun公司介绍

热门文章

  1. 关于继承的理解,自带有白话文,更适合编程小白新手,简单易理解
  2. python 通过模板生成文章_自动生成文章_python自动生成文章 - 云+社区 - 腾讯云
  3. Bootstrap入门!
  4. shell命令 安装软件包
  5. 使用Adorner显示WPF控件的边界点
  6. MySQL 5.6版本二进制包多实例安装
  7. 为什么微软应该通过收购Docker来与Kubernetes竞争
  8. 百度下半年惩罚网站的低质量,坏消息到来硕士
  9. 开发小技巧: 如何在jQuery中禁用或者启用滚动事件.scroll
  10. Oracle中记录被锁解锁方法