Transform
transform的结构及用法
- transform主要是对图片进行变化
- tensor : 张量
- 示例代码:
from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
writer = 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 Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
img_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 -> PIL
img_resize = trans_resize(img)
# PIL -> tensor
img_resize = trans_tensor(img_resize)
writer.add_image("Resize",img_resize,3)
print(img_resize)
# 改变图片的尺寸,看名字就能看懂的函数
# Compose -> resize
trans_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")