学习目标
-
python和pytorch进行图像读取
-- 用Pillow来读取图片和显示图片 --
这个方法是在单独的一个窗口中显示图片的
这个方法是在jupyter中显示,用matplotlib画图
-- 用opencv来读取图片和显示图片--
这个方法是在单独一个窗口中显示
在jupyter中显示 -
理解扩增方法
扩增方法核心思想就是把图片进行一些变换 同时保证图片中要识别的东西内容不变,比如对不能进行180度的旋转,因为这样会使6变成9
读代码
SVHNDatasetSVHNDataset 继承Dataset
实现__getitem__和__len__函数 是让这个类 能通过索引进行操作
实现序列的协议
img_path 是一个列表 其中每个元素是每张图片的路径
img_label 也是一个列表,其中每个元素是图片相对应的标签
transform 就是一个torchvision.transforms对象,用于对图片进行处理
getitem函数里面,首先打开第index个图片(convert RGB我觉得是冗余的代码)
如果有transform的要求就对图像就行transform变换
lbl是将相应的标签转成np.array然后对标签进行增加额外标签,因为我们要将不定长的数字统一视作相同长度的数字
lbl = list(lbl) + (5 - len(lbl)) * [10] 就是将所有的数字看作是长度为5的数字 其中额外的数字记为10 读取数据
glob.glob作用是返回所有匹配的文件路径列表,将mchar_train所有png文件的文件名 存到train_path的列表中
train_label 是train_json中键为label的值组成的列表
构造dataset
transform有很多种变换处理,在官网上查手册就可以了
train_loader = torch.utils.data.DataLoader(data,batch_size=10,shuffle=False,num_workers=2)
这个是将dataset封装成dataloader,多的功能就是一次进行批量读取,batch_size指定一个批量中有多少数据,num_workers 是多进程读取,我的电脑用num_workers=2会报错,改成0就解决了
网友评论