首页 > 其他分享 >图像数据集的均值与方差

图像数据集的均值与方差

时间:2023-03-14 22:11:07浏览次数:70  
标签:std dim 方差 均值 batch 图像 data mean

使用Pytorch进行预处理时,通常使用torchvision.transforms.Normalize(mean, std)方法进行数据标准化,其中参数mean和std分别表示图像集每个通道的均值和标准差序列。
首先,给出mean和std的定义,数学表示如下:
假设有一组数据集X i ,    i ∈ { 1 , 2 , ⋯   , n },则这组数据集的均值为:

这组数据集的标准差为

 

下面给出计算图像数据集每个通道的均值和标准差的函数代码:

import torch
from torchvision import transforms,datasets
from torch.utils.data import DataLoader

batch_size = 64

# 训练集(以CIFAR-10数据集为例)
train_dataset = datasets.CIFAR10(root='G:/datasets/cifar10',train=True,download=False,transform=transforms.ToTensor())
train_loader = DataLoader(train_dataset,shuffle=True,batch_size=batch_size)

def get_mean_std_value(loader):
    '''
    求数据集的均值和标准差
    :param loader:
    :return:
    '''
    data_sum,data_squared_sum,num_batches = 0,0,0

    for data,_ in loader:
        # data: [batch_size,channels,height,width]
        # 计算dim=0,2,3维度的均值和,dim=1为通道数量,不用参与计算
        data_sum += torch.mean(data,dim=[0,2,3])    # [batch_size,channels,height,width]
        # 计算dim=0,2,3维度的平方均值和,dim=1为通道数量,不用参与计算
        data_squared_sum += torch.mean(data**2,dim=[0,2,3])  # [batch_size,channels,height,width]
        # 统计batch的数量
        num_batches += 1
    # 计算均值
    mean = data_sum/num_batches
    # 计算标准差
    std = (data_squared_sum/num_batches - mean**2)**0.5
    return mean,std

mean,std = get_mean_std_value(train_loader)
print('mean = {},std = {}'.format(mean,std))

 原文来自:https://blog.csdn.net/weixin_43821559/article/details/123459085

标签:std,dim,方差,均值,batch,图像,data,mean
From: https://www.cnblogs.com/haifwu/p/17216613.html

相关文章

  • opencv图像处理基础操作之边缘检测
    概述边缘检测是利用图像中边缘像素值会发生剧烈变化来进行检测的,主要用于分割图像、提取特征等多个方面。opencv中常用的算法有Canny边缘检测算法、Sobel算子、Laplacian算......
  • Matlab常用图像处理命令108例(三)
    文章和代码以及样例图片等相关资源,已经归档至【Github仓库:​​digital-image-processing-matlab​​】或者公众号【AIShareLab】回复数字图像处理也可获取。26.edge功能:识......
  • 【图像】【OpenGL】VAO和VBO的关系
    目录一、VBO的作用二、VAO的作用三、一个VAO和多个VBO注:VAO和VBO都是用来存储顶点信息的,并把这些信息送入顶点着色器。至于什么是顶点和顶点着色器,这里就不多说了,不了解的......
  • 图像处理踩坑笔记
    训练模型时候一定要知道,模型使用的是什么格式的输入,是BGR还是RGB。数据增强过程中,要看到其中是否经过了BGR和RGB的变换。测试的时候,一定要和训练时候的格式保持......
  • 【图像】【OpenGL】VAO和VBO的关系
    目录一、VBO的作用二、VAO的作用三、一个VAO和多个VBO注:VAO和VBO都是用来存储顶点信息的,并把这些信息送入顶点着色器。至于什么是顶点和顶点着色器,这里就不多说了,不了解的......
  • 图像处理之高斯滤波4
    ​​​​1高斯滤波的理论简析高斯滤波是一种线性平滑滤波,可以消除高斯噪声,广泛应用于图像处理的减噪过程。通俗地讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点......
  • 手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)
    (文章目录)前言上一篇和大家一起分享了如何使用LabVIEWOpenCVdnn实现手写数字识别,今天我们一起来看一下如何使用LabVIEWOpenCVdnn实现图像分类。一、什么是图像分类?......
  • 图像处理之均值滤波3
    ​​​​1概述均值滤波,是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等),其实说白了它就是归一化后的方框滤波。我们在......
  • 使用python实现高光谱图像绘制 -----高光谱篇
    Python 已经有足够的包可以实现高光谱图像的绘制和各种精确显示。现总结python实现.mat资源文件的高光谱图像显示方案。需要准备python3.10及以下版本,目前高光谱显示所......
  • opencv图像处理基础之膨胀和腐蚀
    膨胀和腐蚀是图像处理中最常用也是最基础的形态学操作。它可以改变图像的一些属性。其中比较常见的应用场景有:1、边缘检测:膨胀和腐蚀可以提取二值图像中的边缘信息。通过先......