我想训练一些模型来处理灰度图像,例如对显微镜应用有用(Source)。因此,我想在灰度图像网上训练我的模型,使用pytorch灰度转换(torchvision.transforms.灰度),将RGB图像网转换为灰度图像网。内部pytorch将颜色空间从RGB旋转到YPbPr,如下所示:
Y'是灰度通道,因此转换后Pb和Pr可以忽略。实际上pytorch甚至只计算
grayscale = (0.2989 * r + 0.587 * g + 0.114 * b)
为了规范化图像数据,我需要知道灰度imagenet的平均像素值,以及标准偏差。可以计算这些吗?
我成功地使用
meanGrayscale = 0.2989 * r.mean() + 0.587 * g.mean() + 0.114 * b.mean()
变换图像,然后计算灰度平均值,得到的结果与首先计算RGB平均值,然后将其变换为灰度平均值的结果相同。
然而,我现在在计算方差或均方差时一无所知。有人对这个话题有什么想法,或者知道一些好的文学作品吗?这有可能吗?
我找到了一份出版物《宫建新——澄清标准偏差椭圆》...在那里,他做了2个维度(据我所知)。我只是还不知道如何在3D中做到这一点。
好吧,我无法按计划计算均方差,但使用了下面的代码。灰度图像网的训练数据集的平均值和均方差是(尽可能地舍入它):
平均值:0.44531356896770125
标准偏差:0.2692461874154524
import multiprocessing
import os
def calcSTD(d):
meanValue = 0.44531356896770125
squaredError = 0
numberOfPixels = 0
for f in os.listdir("/home/imagenet/ILSVRC/Data/CLS-LOC/train/"+str(d)+"/"):
if f.endswith(".JPEG"):
image = imread("/home/imagenet/ILSVRC/Data/CLS-LOC/train/"+str(d)+"/"+str(f))
###Transform to gray if not already gray anyways
if np.array(image).ndim == 3:
matrix = np.array(image)
blue = matrix[:,:,0]/255
green = matrix[:,:,1]/255
red = matrix[:,:,2]/255
gray = (0.2989 * red + 0.587 * green + 0.114 * blue)
else:
gray = np.array(image)/255
###----------------------------------------------------
for line in gray:
for pixel in line:
squaredError += (pixel-meanValue)**2
numberOfPixels += 1
return (squaredError, numberOfPixels)
a_pool = multiprocessing.Pool()
folders = []
[folders.append(f.name) for f in os.scandir("/home/imagenet/ILSVRC/Data/CLS-LOC/train") if f.is_dir()]
resultStD = a_pool.map(calcSTD, folders)
StD = (sum([intensity[0] for intensity in resultStD])/sum([pixels[1] for pixels in resultStD]))**0.5
print(StD)
在这个过程中出现了一些这样的错误:
/opt/conda/lib/python3。7/站点包/PIL/TiffImagePlugin。py:771:UserWarning:EXIF数据可能已损坏。预期读取8个字节,但仅获取4个字节。正在跳过标记41486“可能损坏的EXIF数据”
来自2019年版本的ImageNet的图像被跳过。
我对标准差的计算有点执着,如果你能在下面的两个问题上给我一些帮助,那就太好了。 代码 问题1:我如何计算这个的标准误差(平均值的标准偏差)? 代码 问题2:如何计算累积标准偏差? 非常感谢!!(很抱歉数据格式错误!)
我的数据与此类似: 我需要计算基于名称组的差异列的标准偏差。 我试过了 和 但两者都为传递给的变量提供了KeyError。我试图用以下方法解决它: 但错误仍然存在。 提前谢谢。
问题内容: 使用Python,假设我正在运行已知数量的项目,并且能够计时处理每个项目要花费的时间,以及运行所花费的总时间以及到目前为止所处理项目的数量。我目前正在计算飞行中的平均值,但是如果说单个项目花费的时间特别长(几秒钟而不是几毫秒),则可能会导致偏差。 我想展示一个运行中的标准偏差。如何在不保存每个记录的情况下执行此操作? 问题答案: 我使用的是Welford方法,它给出的结果更准确。该链接
我尝试使用< code>rowSds()来计算每一行的标准偏差,这样我就可以选择具有高标准偏差的行来绘制图表。 我的数据帧名为<code>xx 我试图计算每一行的标准偏差,并辅助sd列名: 我得到这个错误: 知道在计算SD时如何省略吗?我的语法正确吗?
返回数组数组的标准偏差。 使用 Array.reduce() 来计算均值,方差已经值的方差之和,方差的值,然后确定标准偏差。 您可以省略第二个参数来获取样本标准偏差,或将其设置为 true 以获得总体标准偏差。 const standardDeviation = (arr, usePopulation = false) => { const mean = arr.reduce((acc, va
我有一个集合列表和每个集合的一些基本统计数据(项目数、最小值、最大值、平均值、标准差)。我想计算所有集合的相同统计数据。计算总计数、最小最大值和平均值很容易,但我不确定如何计算总标准偏差。 数据如下所示: 同时生成所有集合的统计信息: