如何将PIL读取的.tif格式图像转换为torch张量?
PyTorch PIL图像转张量的最优实现方案
你可以直接使用torchvision.transforms.ToTensor()完成转换,这是PyTorch官方提供的标准接口,写法更简洁也符合框架通用实践:
from torchvision.transforms import ToTensor from PIL import Image img = ToTensor()(Image.open('path/image.tif'))
方案优势
- 自动完成维度格式适配:会把PIL图像默认的
(H, W, C)维度自动调整为PyTorch张量要求的(C, H, W)格式,无需手动转置 - 自动完成像素值归一化:将输入的
[0, 255]整数像素值统一归一化到[0.0, 1.0]的浮点区间,适配绝大多数深度学习模型的输入要求 - 兼容所有PIL支持的图像格式:包括你用到的.tif格式,单通道、三通道、多通道tif都可以正常转换,无需额外处理
特殊场景替代方案
如果你不需要归一化,需要保留原始[0, 255]的整数像素值,可以用下面的写法,比你当前的写法兼容性更好:
from PIL import Image import torch import numpy as np img = torch.as_tensor(np.array(Image.open('path/image.tif')))
- 这里用
torch.as_tensor替代torch.from_numpy,可以自动处理numpy数组的可写性问题,避免不必要的内存拷贝,性能更优。
内容的提问来源于stack exchange,提问作者Olli
相关产品推荐
相关产品推荐

