10、常见的transforms中的类

*****其实就是学会使用trannsforms的.py文件中的不同class类

主要关注点:*输入    *输出     *作用

图片的输入数据类型:                  打开方式:

PIL              Image.open( )

tensor               ToTensor( )

narrays (矩阵)         cv.imread( )

from PIL.Image import Image
from torchvision import transforms #导入两个库

1、python中__call__的用法:
#带下划线的代表是内置函数,
给他一个参数进行调用,内置函数在实例对象调用的时候可以不用.加函数名的形式

 

 2、ToTensor类的使用:

因为tensorboard必须是tensor的数据类型,


from torch.utils.tensorboard import SummaryWriter    #这个是使用tensorboard所需要的库,用来写事件文件
writer=SummaryWriter("logs")   #tensorboard的使用,需要建一个logs文件夹来存每一次活动产生的事件文件
trans_totensor=transforms.ToTensor()    #创建一个ToTensor类的实例对象
img_tensor=trans_totensor(img) #调用类中的方法,输入一个PIL类型的图片,输出一个tensor类型的图片
writer.add_image("ToTensor",img_tensor) #写入事件文件中,标题为ToTensor,一个tensor的数据
writer.close() #关闭事件文件
然后打开terminal终端去查看logs文件就可以查看到了
3、ToPILImage类的使用:
作用:将一个tensor类型或者ndarray类型的图片转换成PIL类型

4、NOrmalize类的使用:
'''归一化的公式:output[channel] = (input[channel] - mean[channel]) / std[channel]'''
trans_norm=transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5]) ##首先必须是一个tensor类型,然后两个参数,均值和标准差
img_norm=trans_norm(img_tensor) #参数是tensor类型的
5、Resize类的使用:
他的输入是一个PIL类型,然后给定尺寸
如果给定的是一个序列的话,比如给了高度和宽度h,w,那么输出的图片尺寸就是指定的这个;
如果给定的是一个整数的话,相当于缩放,图片最小的边会等比匹配
****pycharm小技巧设置(忽略大小写,显示提示)

 

6、Compose类的使用:

 

 

 compose一定要关注它的输入和输出!!!

trans_compose=transforms.Compose([trans_resize_2,trans_totensor])    
#compose中的参数必须是transforms类型,而且,前面的一个的输出必须和后面的输入数据类型保持一致!!!
#比如,这里Compose的第一个参数trans_resize_2的输入、输出都是PIL类型; 第二个参数trans_totensor,它的输入是PIL类型,输出是tensor类型,这样是满足要求的
因为是从 PIL--->PIL PIL--->tensor
###但是如果两个参数更换位置就会报错
trans_compose=transforms.Compose([trans_totensor,trans_resize_2])    这个是从PIL--->tensor    PIL--->PIL

7、###RandomCrop随即裁剪
trans_random=transforms.RandomCrop(512) #这里只给了一个数据,高和宽都一样
trans_compose_2=transforms.Compose([trans_random,trans_totensor]) #PIL--->PIL--->tensor
for i in range(10): #随便裁剪10个
img_crop=trans_compose_2(img)
writer.add_image("RandomCrop",img_crop,i)

trans_random=transforms.RandomCrop((500,1000)) # 这里给了高和宽
posted @ 2023-02-12 22:53  bokeAR  阅读(94)  评论(0)    收藏  举报