pytorch torchvision.transforms 对图像数据进行归一化

1.对numpy数据进行归一化

import torch
import torchvision
import torchvision.transforms as transforms
import numpy as np

X = np.random.choice(255, (5,4,3))
print(X)

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean=(0,0,0), std=(1,1,1)),
    ])

transform(X)

print(X)
print(X.shape)

2.对PIL读取的图像进行归一化

import torch
from PIL import Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签


img = Image.open('D:\datasets\img\lena.jpg')
plt.figure()
plt.imshow(img)
plt.title('原图',fontsize=12,color='r')
plt.show()

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean=(0,0,0), std=(8,8,8)),
    ])

img1 = transform(img)
img1 = np.array(img1*255, dtype=np.uint8)

print('转换后的shape', img.shape)
img_np = np.zeros((200,200,3),dtype=np.uint8)
img_np[:,:,0] = np.array(img1[0,:,:])
img_np[:,:,1] = np.array(img1[1,:,:])
img_np[:,:,2] = np.array(img1[2,:,:])

plt.figure()
plt.imshow(img_np)
plt.title('转换后',fontsize=12,color='r')
plt.show()
print('转为适合imshow后的shape', img_np.shape)
img2 = img1.transpose(1,2,0)
print(img2.shape)
plt.figure()
plt.imshow(img2)
plt.show()

3.其他一些转换代码

img_out = transforms.ToTensor()(img_in)

a = np.array([[[253,254,255]]])
b = transforms.ToTensor()(a)


unloader = transforms.ToPILImage()

image = image.squeeze(0)
image = unloader(image)

pytorch.transforms.ToTensor()的一个细节

输入数据值域不需要满足在 [0,255] 范围内,事实上这个函数只是给整个矩阵除了 255.0.

参考文献:

https://www.jianshu.com/p/5adc0fd50071

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值