pytorch 对图片进行归一化处理

如题,神经网络通常使用浮点数张量作为输入,我们要做的第一件事情就是将图片转化为浮点数,并且做归一化操作。

import torch
import imageio
import os

data_dir='F:\\work\\deep_learning\\pytorch\\dlwpt-code-master\\data\\p1ch4\\image-cats'
print(data_dir)
file_names=[name for name in os.listdir(data_dir) ] #if os.path.splitext(name)[-1]=='png'

batch_size=3
batch=torch.zeros(batch_size,3,256,256,dtype=torch.uint8)

for i ,file_name in enumerate(file_names):
    img_arr=imageio.imread(os.path.join(data_dir,file_name))
    img_t=torch.from_numpy(img_arr)
    img_t=img_t.permute(2,0,1)

    img_t=img_t[:3]
    batch[i]=img_t
    
#获取通道数量
n_channels=batch.shape[1]

#print(n_channels)#一般为3

#将图片转为float类型
batch=batch.float()

for c in range(n_channels):
    print(batch[:,c].shape)
    #对3张图片所有的c通道求平均值和方差
    mean=torch.mean(batch[:,c])
    std=torch.std(batch[:,c])
    batch[:,c]=(batch[:,c]-mean)/std
    print(mean)
    print(std)

print(batch.shape)

print(batch)


结果如下:

torch.Size([3, 256, 256])
tensor(147.8829)
tensor(56.4011)
torch.Size([3, 256, 256])
tensor(114.5765)
tensor(52.7250)
torch.Size([3, 256, 256])
tensor(90.6373)
tensor(49.2352)

torch.Size([3, 3, 256, 256])
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值