深度学习的图像预处理中每个图片减去均值的原因(附python代码)
2019-06-03 15:08
2571 查看
为什么每张图片都要减去mean值呢?
在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢?
其主要的原因就是,对于我们的自然图像其实是一种平稳的数据分布【即图像的每一维都服从相同的分布】。所以通过减去数据对应维度的统计平均值,来消除公共的部分,以凸显个体之间的特征和差异。下面就用一个图来直观的表示一下:
可以看到减去均值后的图b,天空的纹理被消除了,凸显出了图片中的车和高楼等主要特征
需要注意的是:用来计算均值的,一定要用训练集,否则违背了深度学习的原则(即模型训练仅能从训练数据中获取信息)。对于得到的mean值,训练集、验证集和测试集都要分别减去均值。
附上代码
# 首先,你需要安装numpy和opencv模块。 # opencv 可以通过下面的命令来直接安装。 pip install opencv-python
该代码,只需修改文件路径即可。
import os import numpy as np import cv2 # 这个是你图片的根目录,注意不要带中文路径,楼主就因为这个调试了很久。 image_path = '/train/image' file_names = os.listdir(image_path) count = 0 mean = np.zeros(3, np.int64) for i in file_names[1:]: print(i) img = cv2.imread(image_path + '/' + i) #print(img) count += 1 mean += np.sum(img, axis=(0, 1)).astype(int) h, w = img.shape[0:-1] print(h, w, count) means = mean / (1.0 * h * w * count) print('b, g, r = ', means)
相关文章推荐
- Python---利用scipy.misc等库对jpg以及png等图像数据预处理(用于深度学习喂数据)
- 深度学习图像分割评测指标MIOU之python代码详解
- 【Python开发】【神经网络与深度学习】网络爬虫之图片自动下载器
- 深度学习文章4:计算图像数据集的均值
- 深度学习文章4:计算图像数据集的均值
- 深度学习中图像的指定图像位置的裁剪处理-使用python、opencv
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-2生成图像库的均值文件
- 深度学习笔记一:BP神经网络的介绍和Python代码实现(1)
- 2018年网易深度学习图像实习校招编程题(100%案例通过)python解析
- 2018年网易深度学习图像实习校招编程题(100%案例通过)python解析
- 深度学习结合非局部均值滤波的图像去噪算法
- 如何上手深度学习中的图像处理?有这个代码资源库就够了
- 深度学习之用python计算数据集均值
- 深度学习笔记-第3章-《深度学习入门——基于Python的理论与实现》的代码解说
- 2018Python OpenCV视频教程计算机视觉图像识别从基础到深度学习实战目前最新
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
- 深度学习之图像标注工具【python版】
- 开源的深度学习工具包,深度学习模型的python代码实现
- Python 实现 深度学习图片爬虫、以及批量处理工具
- 深度学习中的代码资源库------图像处理篇