Pytorch的第零步:数据IO

常用的数据集在 torchvision.datasets 里都已经编码好了,用户只需要读取以及按需 transform 就好了。但如果很不幸我们拿到的是原始的一堆图片以及一堆 .txt 标签,那么对数据的准备工作量将大大增加。
首当其冲的问题就是数据读取。读取图片方式有很多,比如 matplotlib.pyplot.imread(),PIL库或者openCV等等。但这些库都需要再把读入的非 Tensor 类型转换成 Tensor 类型,比较麻烦。实际上 torchvision 提供了部分 图像、音频和视频的 IO 函数,用它们读取可直接得到 Tensor ,除了读取,还支持保存图片视频等。

如果需要用额外的包读图像,最好还是用 PIL,因为pytorch源码里就是用到了 PIL 读取图像。

读写 .JPG

import torchvision as tv

# 读
"""
torchvision.io.read_image(path: str) → torch.Tensor
>>>Reads a JPEG or PNG image into a 3 dimensional RGB Tensor. 
>>>The values of the output tensor are uint8 between 0 and 255.

**path** 
[str] – path of the JPEG or PNG image.

**output**
[tensor] – [3, image_height, image_width]  ([C, H, W])
"""
picTensor = tv.io.read_image("testpic.jpg")

# 写
"""
torchvision.io.write_jpeg(input: torch.Tensor, filename: str, quality: int = 75)
>>>Takes an input tensor in CHW layout and saves it in a JPEG file.
**input** 
Tensor : [channels, image_height, image_width] 
– int8 image tensor of C channels, where C must be 1 or 3.

**filename** 
str
– Path to save the image.

**quality** 
int
– Quality of the resulting JPEG file, it must be a number between 1 and 100. Default: 75

"""
tv.io.write_jpeg(picTensor, './outTensorPic.jpg')

其他的可自行查看 torchvision.io 的说明

你可能感兴趣的:(Pytorch的第零步:数据IO)