PyTorch入门学习(一)Dataset类代码实战
前言
因为在写代码的过程中发现对整体的框架使用十分不熟,所以恶补一下pytorch的入门知识。
运行jupyter需要在cmd上,power shell上会出错(因为不久前我将默认终端应用程序改为Windows终端,可能前期的windows powershell没有装好,导致打开cmd出错,实际上平常用的是powershell),改过去之后直接用cmd进如pytorch虚拟环境运行jupyter
1 | conda activate pytorch |
加载数据
在pytorch中如何读取数据主要涉及到两个类,分别是Dataset和Dataloader
cv2和PIL的区别
顺便一提(在准备MICCAI中遇到读取图片用的是cv2,但之前跟着写的代码都是用PIL)cv2和PIL的区别:
-
读取的通道不同:cv2读取图像为BGR顺序通道,PIL读取图像为RGB顺序通道;
-
读取代码不同:
1 | # cv2读取方式 |
- 读取出的图像类型以及尺度属性不同:
1 | print(cv2img.shape, cv2img.size, type(cv2img)) |
- 将cv2和PIL转换为tensor数据类型代码对比
1 | trans = transforms.ToTensor() |
- cv2图像和PIL图像相互转换
1 | # 将PIL转换为cv2# 方法1:用numpy.asarray()函数转化类型,再用cv2.cvtColor转化RGB为BGR通道. |
- 其他知识引申:
1 | # 转换RGB的方法对比cv2img1 = cv2.cvtColor(cv2img, cv2.COLOR_BGR2RGB) |
将PILimg转换为cv2时可以使用numpy.array(),也可以使用numpy.asarray(),这两者的区别在于array会copy出一个副本,占用新的内存,但asarray不会;
就是说将数据源用asarray转换后赋值给新的变量,再对原始数据源进行操作修改,会影响到新的变量数据.而如果用array来转换并赋值给新变量,修改原始数据后不会对新变量造成影响。
pycharm中读取数据
pycharm终端可以详细显示数据类型,下图为使用PIL读取数据过程
使用os读取图片路径存进列表中