Transform
transform的结构及用法
- transform主要是对图片进行变化
- tensor : 张量
- 示例代码:
from PIL import Imagefrom torchvision import transformsfrom torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs")img_path = "dataset/train/bees/16838648_415acd9e3f.jpg"img = Image.open(img_path)# transform的使用,将图片转换为Tensor类型tensor_trans = transforms.ToTensor()tensor_img = tensor_trans(img)print(tensor_img)writer.add_image("Tensor_img",tensor_img)writer.close()
常见的Transform及使用
- Compose
- Compose()的参数需要是一个列表,python中列表的形式是[数据1,数据2],
在Compose中,数据需要是transfroms类型,所以得到Compose([transforms数据1, transforms数据2]) - 示例代码:
from PIL import Imagefrom torchvision import transformsfrom torch.utils.tensorboard import SummaryWriterimg_path = "dataset/train/bees/16838648_415acd9e3f.jpg"img = Image.open(img_path)print(img)writer = SummaryWriter("logs")# ToTensor的用法trans_tensor = transforms.ToTensor()img_tensor = trans_tensor(img)writer.add_image("tensor_img",img_tensor)# Normalize的使用print(img_tensor[0][0][0])# trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])# trans_norm = transforms.Normalize([1,2,3],[2,6,9])trans_norm = transforms.Normalize([9,8,7],[1,3,2])img_norm = trans_norm(img_tensor)print(img_norm[0][0][0])# 可以通过print看出img_tensor的张量值会发生变化# writer.add_image("Normlize",img_norm)# writer.add_image("Normlize",img_norm,1)writer.add_image("Normlize",img_norm,2)# 如果看网页里的图片会发现像素值发生了改变# 这几个变化难以用语言描述,自己运行查看吧# Resize的使用print(img)trans_resize = transforms.Resize((102,1024))# PIL -> resize -> PILimg_resize = trans_resize(img)# PIL -> tensorimg_resize = trans_tensor(img_resize)writer.add_image("Resize",img_resize,3)print(img_resize)# 改变图片的尺寸,看名字就能看懂的函数# Compose -> resizetrans_resize_2 = transforms.Resize(512)trans_compose = transforms.Compose([trans_resize_2,trans_tensor])img_resize_2 = trans_compose(img)writer.add_image("Resize",img_resize_2,4)# RandomCrop# trans_random = transforms.RandomCrop(100)trans_random = transforms.RandomCrop((100,50))trans_compose_2 = transforms.Compose([trans_random, trans_tensor])for i in range(10): img_crop = trans_compose_2(img) # writer.add_image("Random",img_crop,i) writer.add_image("RandomHW",img_crop,i)writer.close()
python中call的用法
class person: def __call__(self,name): print("__call__"+" Hello "+name) def hello(self,name): print("hello "+name)student = person()student.hello("zhangsan")print("\n")student("lisi")