Pytorch:一、对图片数据进行标准化(猫狗)
标准化
在我们把数据导入模型进行训练的时候,我们首先要对数据进行标准化处理,为什么需要进行标准化呢?
简要地说,为了保证网络可以良好的收敛,在不清楚各个维度的相对重要程度之前,标准化使得输入的各个维度分布相近,从而允许我们在网络训练过程中,对各个维度“一视同仁”(即设置相同的学习率、正则项系数、权重初始化、以及激活函数)。反过来,当我们使用全局相同的学习率、权重初始化、以及激活函数等网络设置时,方差更大的维度将获得更多的重视。
常用的标准化分为三种:
- 规范化方法
- 正规化方法
- 归一化
正规化方法的标准化的公式如下:
x ̅ 为均值,s为标准差,标准化后我们数据的均值为0,方差为1
想要进行标准化,首先需要求出均值和标准差,对于猫狗数据集我们通过程序求出均值和标准差:
import numpy as np
import cv2
import os
from PIL import Image# img_h, img_w = 32, 32
img_h, img_w = 32, 32 #经过处理后你的图片的尺寸大小
means, stdevs = [], []
img_list = []imgs_path = r".\test" #数据集的路径采用绝对引用
imgs_path_list = os.listdir(imgs_path)len_ = len(imgs_path_list)
i = 0
for item in imgs_path_list:img = cv2.imread(os.path.join(imgs_path, item))img = cv2.resize(img, (img_w, img_h))img = img[:, :, :, np.newaxis]img_list.append(img)i += 1print(i, '/', len_)imgs = np.concatenate(img_list, axis=3)
imgs = imgs.astype(np.float32) / 255.for i in range(3):pixels = imgs[:, :, i, :].ravel() # 拉成一行means.append(np.mean(pixels))stdevs.append(np.std(pixels))# BGR --> RGB , CV读取的需要转换,PIL读取的不用转换
means.reverse()
stdevs.reverse()print("normMean = {}".format(means))
print("normStd = {}".format(stdevs))
输入:
normMean = [0.4757419, 0.45063725, 0.39034033]
normStd = [0.26056913, 0.25479528, 0.25940257]
因为是RGB图片,有三个颜色通道,所以三个值;得到了均值和标准差我们就可以用transforms的Normalize函数来进行标准化了:
transform = transforms.Compose([transforms.Resize(32), # 缩放图片,保持长宽比不变,最短边为32像素transforms.CenterCrop(32), # 从图片中间开始切割出32*32大小的图片transforms.ToTensor(), # 将图片转换成Tensor,归一化至[0,1]#标准化至[-1,1],规定均值和标准差transforms.Normalize(mean=[0.475, 0.451, 0.390], std=[0.261, 0.255, 0.259])
])
Pytorch:一、对图片数据进行标准化(猫狗)相关推荐
- PyTorch 读取图像图片数据
读取图像 读取已封装好数据集 读取 MNIST 读取自定义数据集 读取已封装好数据集 读取 MNIST transform = transforms.Compose([transforms.ToTen ...
- 基于Pytorch、Keras、Tensorflow的图片数据生成器搭建
1. 前言 作为一个对三种深度学习框架(Tensorflow,Keras,Pytorch)刚刚完成入门学习的菜鸟,在实战的过程中,遇到了一些菜鸟常见问题,即图片数据加载与预处理.在刚刚接触深度学习的时 ...
- Pytorch+CNN+猫狗分类实战
文章目录 0.前言 1.猫狗分类数据集 1.1数据集下载(可选部分) 1.2数据集分析 2.猫狗分类数据集预处理 2.1训练集和测试集划分 2.2训练集和测试集读取 3.剩余代码 4.总结 0.前言 ...
- 【图像分类】实战——使用ResNet实现猫狗分类(pytorch)
目录 摘要 导入项目使用的库 设置全局参数 图像预处理 读取数据 设置模型 设置训练和验证 验证 完整代码: 摘要 ResNet(Residual Neural Network)由微软研究院的Kaim ...
- TensorFlow 2.0 - tf.data.Dataset 数据预处理 猫狗分类
文章目录 1 tf.data.Dataset.from_tensor_slices() 数据集建立 2. Dataset.map(f) 数据集预处理 3. Dataset.prefetch() 并行处 ...
- Keras深度学习使用VGG16预训练神经网络实现猫狗分类
Keras深度学习使用VGG16预训练神经网络实现猫狗分类 最近刚刚接触深度学习不久,而Keras呢,是在众多的深度学习框架中,最适合上手的,而猫狗的图像分类呢,也算是计算机视觉中的一个经典案例,下面 ...
- PyTorch数据Pipeline标准化代码模板
前言 PyTorch作为一款流行深度学习框架其热度大有超越TensorFlow的感觉.根据此前的统计,目前TensorFlow虽然仍然占据着工业界,但PyTorch在视觉和NLP领域的顶级会议上已呈一 ...
- CNN简单实战:PyTorch搭建CNN对猫狗图片进行分类
在上一篇文章:CNN训练前的准备:PyTorch处理自己的图像数据(Dataset和Dataloader),大致介绍了怎么利用pytorch把猫狗图片处理成CNN需要的数据,今天就用该数据对自己定义的 ...
- DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型) 目录 基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型) 设计思路 输出结果 1488/1 ...
- DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)
DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 目录 利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型) 设计思路 处 ...
最新文章
- 智慧AI组对于激光投影的检测方案
- Remove Duplicates from Sorted List
- git reset 怎么还原_git reset –hard后的恢复操作
- VS Tools for AI全攻略(2)低配置虚拟机也能玩转深度学习,无需NC/NV系列
- 使用LinkedHashMap的Code4ReferenceList最近使用(LRU)实现
- Matlab查看数组大小的命令——size、length、numel和ndims
- 面试题目_数据分析SQL面试题目9套汇总
- 迷你世界电锯机器人_迷你世界:石像机器人升级版,制作如此简单!
- “创业吃过饼,国企养过老” 架构师的头发不是一天掉完的!
- python游戏房间_Python House冒险-如果已经进入一个房间,如何给出不同的输出
- Hexo中next主题的个性化配置
- DB9 串口母对母转接头是个坑
- 地震 matlab,MATLAB在地震信号处理中的应用实例.docx
- JS网页恶搞代码,不断弹出、关不掉的对话框
- android 计算屏幕尺寸来区分phone和pad
- Prototype如何使用?
- 前端开发技术——对象
- 非标资产与标准资产_资产商店行动新闻– 2011年10月!
- 2012IT公司校园招聘笔试面试题
- 文言文编程?厉害了程序员!