Pytorch学习笔记--transforms之Resize,Compose,RandomCrop

首先简述一下transforms的作用:transforms提供了一系列的工具,使得数据可以在加载到模型之前就被适当地转换和标准化,transforms的作用主要是进行数据预处理和增强,这对于深度学习的模型训练非常重要,因为模型的性能很大程度上要依赖于输入数据的质量和格式。

在使用时要多关注输入和输出的数据类型,还有要多看官方文档,使用ctrl查看相关的参数。

先导入相关库:

from PIL import Image
from numpy.ma import resize
from torch.utils.tensorboard import SummaryWriter
from  torchvision import transforms
from py.Transforms import write

Resize的使用:可以改变图片的尺寸

#Resize的使用
print(img.size)  #此时img还是PIL类型
trans_resize=transforms.Resize((512,512))  #注意,Resize只能传入PIL类型!!!
#img PIL-->Rsize-->resize PIL  resize之后依旧是PIL类型
img_resize=trans_resize(img)

此时的img_resize是PIL类型,由PIL类型经过resize之后依旧是PIL类型。

现在经过totensor,将会由PIL类型变为tensor类型。最后输出是tensor类型,覆盖了之前的PIL类型,因为变量名没改变。

#resize PIL-->totensor-->img resize tensor
img_resize=trans_totensor(img_resize)
print(img_resize) #最后输出是tensor类型,覆盖了
write.add_image("resize",img_resize,0)
write.close()

再说说Composed的使用: 输入一个int,进行等比缩放。要注意,比如transforms.Compose([trans_resize_2,trans_totensor]) 。这里第一个参数是用resize来改变大小,第二个参数是改变数据类型为tensor。

关于使用说明:Compose()中的参数是一个列表。Python中,列表的表示形式为[数据1,数据2...]。在Compose中,数据需要是transforms类型。所以得到,Compose([transforms参数1, transforms参数2,...])

#Composed的使用:  输入一个int,进行等比缩放
trans_resize_2=transforms.Resize(512)
#PIL -> PIL ->tensor
trans_compose=transforms.Compose([trans_resize_2,trans_totensor]) #这里第一个参数是改变大小,第二个参数是改变数据类型
img_resize_2 = trans_compose(img)
write.add_image("resize",img_resize_2,1)
write.close()

以上代码输出效果通过Tensorboard查看:

Random Crop用于对图片随机裁剪。

trans_random=transforms.RandomCrop(300)
#若指定H,W:trans_random=transforms.RandomCrop((300,1000))

trans_compose_2 = transforms.Compose([trans_random,trans_totensor])#同上,第一个参数是用random改变大小,第二个参数是改变类型
for i in range(10):  #这里的i代替了add_image的step参数
    img_crop=trans_compose_2(img)
    write.add_image("RandomCrop",img_crop,i)

write.close()

要注意这里trans_compose_2 = transforms.Compose([trans_random,trans_totensor])。第一个参数是用random随机裁剪改变大小,第二个参数是改变类型。这里的RandomCrop和Compose结合使用了。

如果要指定裁剪的宽高,可以:trans_random=transforms.RandomCrop((300,1000))

 效果通过Tensorboard查看:

以上学习内容来自b站小土堆 。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值