pytorch中的save_image

这篇博客介绍了如何使用PyTorch的`torchvision.utils.make_grid`和`save_image`方法来保存图片。首先,`make_grid`方法用于创建网格布局的图片,参数包括tensor数据、每行图片数量和四周填充宽度。然后,`save_image`方法可以直接将tensor数据保存为图片,支持批量图片的保存。通过示例代码,展示了从MNIST数据集加载并保存图片的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pytorch保存图片主要用到 make_grid 和save_image这两个方法。
制作网格:
torchvision.utils.make_grid(tensor, nrow, padding) 
# 参数说明
# tensor(tensor or list):四维 (B x C x H x W) mini-batch的tensor数据或者是包含同一尺寸的图片列表。
# nrow(int):网格每行图片的个数,默认是8;千万不要理解为图片的行数。
# padding(int):四周填充的宽度,默认是2,可以理解为网格中图片之间的间距。默认填充值是0,也就是黑色。
注:这是三个比较常用的参数,其它参数请参考官方文档(https://pytorch.org/tutorials/)
保存本地:

用pytorch提供的save_image方法tensor数据类型保存时不用再转为PIL.Imagenumpy.ndarray

torchvision.utils.save_image(tensor, fp)
# 参数
# tensor(Tensor or list):待保存的tensor数据(可以是上述处理好的grid)。如果给以一个四维的batch的tensor,将调用网格方法,然后再保存到本地。最后保存的图片是不带batch的。
# fp:图片保存路径
代码示例:
import torch
from torch.utils.data import DataLoader, dataloader
from torchvision import datasets, transforms
from torchvision.utils import make_grid, save_image

# 下载minist数据
dataset = datasets.MNIST(
    root='./data/',
    train=True,
    transform=transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.1307,), (0.3081,))
    ]),
    download=True
)

# 加载minist数据
dataloader = DataLoader(
    dataset=dataset,
    batch_size=8,
    shuffle=True
)

# 保存图片
images, labels = next(iter(dataloader))
print(images.size())  # torch.Size([8, 1, 28, 28])
images = make_grid(images, 4, 0)
print(images.size())  # torch.Size([3, 84, 84])
save_image(images, 'D:\maozan1\Desktop\JDWork\\vscode\pytorch-demo\\test.jpg')
save_image是torchvision.utils中的一个函数,用于保存图片。它的定义如下:torchvision.utils.save_image(tensor, filename, nrow=8, padding=2, normalize=False, range=None, scale_each=False)。\[1\] 这个函数可以用来保存单张图片或多张图片。对于单张图片,可以直接使用save_image函数来保存,像素值范围应该在0到1之间,如果超过1,则按1算。\[2\] 对于多张图片,可以使用torch.cat函数将它们拼接在一起,然后再调用save_image函数来保存。拼接后的图片的维度应该是\[batch_size, channels, height, width\],其中batch_size为1,表示只有一组图片。\[3\] 需要注意的是,如果要对图片进行归一化处理,可以使用transforms.Normalize函数将图片归一化到\[-1, 1\]的范围,然后再使用de_norm函数将其还原到\[0, 1\]的范围。\[3\] 总结起来,save_image函数可以用来保存单张或多张图片,需要注意图片的像素值范围和维度的要求。 #### 引用[.reference_title] - *1* *2* *3* [pytorch保存图片 save_image ,读取图片](https://blog.csdn.net/weixin_44887621/article/details/120535309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值