07 | Torchvision(中):数据增强,让数据更加多样性
图像处理工具之 torchvision.transforms
- 深入了解
- 翻译
- 解释
- 总结
Torchvision数据增强技术让数据更多样化,为模型训练提供更丰富的数据特征。文章介绍了利用Torchvision进行数据预处理操作和图像变换与增强的方法。首先讲解了数据类型转换的方法,包括PIL.Image或Numpy.ndarray格式的数据转化为Tensor格式以及反向操作。接着详细介绍了对PIL.Image和Tensor进行变换的操作,包括Resize、剪裁、翻转等。最后,介绍了针对Tensor的变换操作中最常用的标准化方法。文章还提到了使用Compose类将多个变换组合起来进行连续操作,以及如何结合datasets使用这些操作。通过这些技术,读者可以在数据加载的同时进行一系列图像变换与数据增强操作,加快模型收敛速度,让模型更好地学习到数据特征。下一节课将介绍Torchvision中其他有趣的功能,包括经典网络模型的实例化与其他有用的函数。
《PyTorch 深度学习实战》,新⼈⾸单¥59
全部留言(19)
- 最新
- 精选
- 上岸吧,Adagio老师您好,请问 img1 = transforms.ToTensor()(img) img2 = transforms.ToPILImage()(img1) 是怎么使用的呢? transforms.ToTensor是一个类,为什么不把img当做参数传给这个类做初始化呢? transforms.ToTensor()是创建一个对象吗?为什么后面又直接传入了(img)参数呢? 不太懂这一块的细节,请老师帮忙解答下~
作者回复: Hi,感谢你的提问。 transforms.ToTensor() 相当于创建了一个ToTensor的实例。 transforms.ToTensor()(img) 是执行了ToTensor中的__call__方法(如下链接)。 https://github.com/pytorch/vision/blob/main/torchvision/transforms/transforms.py#L123 这部分属于Python的知识,详细的内容你可以看看Python中__call__的作用。简单来说__call__的作用是使实例能够像函数一样被调用。 transforms.ToPILImage()同理。^^
2021-12-019 - Yuhan老师您好,感觉应该注明一下display函数的来源,是Ipython.display 里面的display函数吗?
作者回复: 你好,Yuhan,感谢你的留言。 display的来源是: from IPython.display import display 在jupyter中可以直接调用无需import。^^
2021-10-2559 - vcjmhgTorchvision 中 transforms 模块的作用:封装了常用的图像操作,例随机切割、旋转、数据类型转换、tensor 与 numpy 和 PIL Image 的互换等。
作者回复: 你好,谢谢留言。完美👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻👍🏻。:)加油~
2021-10-276 - 汤火火火老师您好,我想问一下,在训练时对图像做了标准化,那测试的时候需要对测试图像做标准化吗?
作者回复: 你好,汤火火火,感谢留言。 需要,预测时数据做的预处理(标准化之类的)操作要与训练时做的预处理操作一毛一样。
2022-01-2033 - 天凉好个秋老师你好,在使用 Resize 的时候,出现以下 warning: UserWarning: Argument interpolation should be of type InterpolationMode instead of int. Please, use InterpolationMode enum. 在之前的回答中给的解决方案的第二条:将Image.BICUBIC 替换为InterpolationMode.BICUBIC,这个是在哪儿替换?transforms.py的源代码中也没有相关代码
作者回复: Hi, 是resize中的interpolation参数。 例如,torchvision.transforms.Resize((128, 128), interpolation=InterpolationMode.BICUBIC)。 这个参数接收int也可以,就是当int的时候,就会报这个warning。
2021-12-183 - 亚林Torchvision 中 transforms 模块的作用图像数据的预处理。怎么标准化,这些标准化参数是如何确定的类?
作者回复: 你好,亚林 是说标准化的参数如何确定的是吧。 通常来说如果使用其他人的模型做微调的话,就要与原作者的数据处理方式一致,例如后面的图像分类中讲的EfficientNet。我想这也是大部分会遇到的情况。 如果是完全自己重新训练的话,可以参考一些ImageNet上的预处理方式,其实也就那几种,减均值,除以标准差之类的。
2022-05-122 - 问鼎苍穹老师您好,transforms是只能对图像的tensor数据进行处理是吧,对于表格类型的数据是不能进行数据增强的操作是吗,如果要对表格类型的数据进行数据增强应该如何操作呢
作者回复: 你好,感谢留言。 应该也是可以的,不过我没试过。
2022-09-11归属地:北京1 - 快快🔥老师,我想问下,在transform.dataset()中进行transforms的转换操作,是会将原图像数据覆盖掉吗,还是产生新的转换后的数据。
作者回复: hi,你好。感谢留言。输入给模型的数据是转换后的数据。原始图像不会变。
2021-11-281 - ifelsetransform可以进行图片与tensor的数据转类型转换,还可以进行旋转,裁剪,缩放等操作,与datasets搭配使用时,可以在加载数据的过程中,完成数据的增强操作。
作者回复: 👍🏻
2023-11-25归属地:浙江 - Jacob.C方远老师好,像FiveCrop这样一个样本变多个样本的变换,dataset加载的时候,标签如何跟着变多呢?不然会对不齐呀。
作者回复: hi,你好,这块Pytorch会帮我们搞定,不需要额外处理
2023-01-24归属地:广东