Pytorch:规范化图像数据集

时间:2018-11-29 15:59:14

标签: python deep-learning computer-vision conv-neural-network pytorch

我想归一化图像的自定义数据集。为此,我需要通过遍历数据集来计算均值和标准差。在创建数据集之前,如何规范我的整个数据集?

2 个答案:

答案 0 :(得分:0)

归一化试图做的是保留数据集上的全部信息,即使值存在差异,对于图像,它也会试图解决某些问题,例如亮度和对比度,这在某些情况下不会图像具有的一般信息。可以采用多种方法,每种方法各有利弊,具体取决于您所拥有的图像集和您要对它们进行的处理工作,仅举几例:

  • 线性直方图拉伸:您可以在当前位置绘制线性图 图片中的值范围并将其拉伸以匹配0和255 RGB中的值
  • 非线性直方图拉伸:在哪里使用 非线性函数,将输入像素映射到新图像。通常 使用的函数是对数和指数。我最喜欢的功能 是原始直方图的累积概率函数,它 效果很好。
  • 自适应直方图均衡:您在哪里进行线性 直方图在图像的某些位置拉伸以避免 身份映射,其中原始值的最大范围 图片。

答案 1 :(得分:0)

好吧,让我们以这张图片为例:

Test image: Lena

您需要做的第一件事就是确定要使用哪个库:枕头或OpenCV。在此示例中,我将使用Pillow:

from PIL import Image
import numpy as np

img = Image.open("test.jpg")
pix = np.asarray(img.convert("RGB")) # Open the image as RGB

Rchan = pix[:,:,0]  # Red color channel
Gchan = pix[:,:,1]  # Green color channel
Bchan = pix[:,:,2]  # Blue color channel

Rchan_mean = Rchan.mean()
Gchan_mean = Gchan.mean()
Bchan_mean = Bchan.mean()

Rchan_var = Rchan.var()
Gchan_var = Gchan.var()
Bchan_var = Bchan.var()

结果是:

  • 红色频道均值:134.80585625
  • 红色渠道差异:3211.335843945
  • 绿色通道均值:81.0884125
  • 绿色渠道差异:1672.63200823
  • 蓝色频道平均值:68.1831375
  • 蓝色频道差异:1166.20433566

希望它可以满足您的需求。