Pytorch图像处理——读取、变换、归一化

图像的读取与大小变换

此部分需要导入的包:

import imageio  #imageio用来读取图像
from skimage.transform import resize  #resize更改图像尺寸大小
from matplotlib import pyplot as plt  #plt提供画图工具

首先,我们根据图片路径使用imageio包中的imread函数来读取图片:

image_path = './img/img3.jpeg'
img = imageio.imread(image_path)

此时,图像的输出为imgHeight × imgWidth × 3的数据,因为我们自己随意找的原生图像可能宽和高不同,所以这里以imgHeightimgWidth来代替。

接下来,为了更直观地查看图片我们要用matlibplot包中的pyplot(plt)来画图:

fig = plt.figure()	#建立画布
a = fig.add_subplot(1, 2, 1)
plt.imshow(img)  #此处的img为上面直接读取的img
a.set_title("Before")

img = resize(img, (256, 256))	#这里将原生图像进行resize,变为256*256*3的形式
a = fig.add_subplot(1, 2, 2)
a.set_title("After")
plt.imshow(img)

plt.show()	#show出两幅图,before为原生图像,after为resize后的图像

效果图:
在这里插入图片描述

图像的归一化

此部分需要导入的包:

import imageio  #imageio用来读取图像
import torch  #torch包,主要用来生成tensor
from skimage.transform import resize  #resize更改图像尺寸大小
from matplotlib import pyplot as plt  #plt提供画图工具

第一步,我们也需要先读入图像,并对其进行resize操作,并建立画布:

# 读取图像
img = imageio.imread(image_path)
img = resize(img, (256, 256))	#resize
print("Before normalize: \n",img)

# 建立画布
fig = plt.figure()
a = fig.add_subplot(1, 2, 1)
plt.imshow(img)
a.set_title("Before")

接下来,我们需要对大小为256 × 256 × 3的图像进行归一化处理,其中包含两步操作:

  1. 去均值
  2. 除方差

假设我们得到的大量图像数据集,如Flick30,很多实验人员已经测出对结果影响比较好的图像均值与方差,所以我们可以借鉴经验:
这里假设我们的均值为:
mean=[0.485, 0.456, 0.406] (RGB)
这里假设我们的方差为:
std=[0.229, 0.224, 0.225] (RGB)

mean=[0.485, 0.456, 0.406]
std=[0.229, 0.224, 0.225]

#下面将img、mean、std的维度保持一致,且将其类型均转换为 FloatTensor 方便运算
img = torch.FloatTensor(img)
mean = torch.FloatTensor(256*[256*[mean]])
std = torch.FloatTensor(256*[256*[std]])

# img-mean:去均值 , /std 除方差
img = (img - mean) / std

#下面是画图
print("After normalize: \n",img)
a = fig.add_subplot(1, 2, 2)
a.set_title("After")
plt.imshow(img)
plt.show()  #show出差异

效果图1:
在这里插入图片描述

  • 我们可以看到,对于这张图片,在归一化操作后,所有像素值都会落在[-1,1]之间,但又由于plt可以显示的像素值范围分别是[0,255](整数)、[0.,1](浮点数),所以我们在After图中看到的白色部分,其实是经过归一化后出现的负值或0。
  • 在深度学习训练的反向传播过程中,梯度下降法在反向传播的过程中,经实验证明,如果数据是经过归一化操作的,梯度收敛的速度会被加快~。

在这张图的对比中我们也可以看出,经过归一化的图,更突出了原图颜色突出的部分,而更忽略了色彩相对较淡的部分

效果图2:
在这里插入图片描述
效果图3,归一化之前的部分图像数据:
在这里插入图片描述
在这里插入图片描述
效果图4,对应的归一化之后的部分图像数据:
在这里插入图片描述
在这里插入图片描述

有不足之处望指出!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值