输入 输出 作用
PIL Image,open()
tensor ToTensor()
warrays cv.imread()
from PIL import Image from torch.utils.tensorboard import SummaryWriter from torchvision import transforms writer = SummaryWriter('logs') img = Image.open("data/train/ants_image/6743948_2b8c096dda.jpg") #图片路径 print(img)
#ToTensor的使用 trans_totensor = transforms.ToTensor() img_tensor = trans_totensor(img) #括号里图片格式为PIL,输出格式为totensor格式 writer.add_image("ToTensor", img_tensor) writer.close()
#Normalize的使用 print(img_tensor[0][0][0]) #图片必须是tensor格式 trans_norm = transforms.Normalize([1,4,2],[5,1,3]) #方框里的数字是更改图片值 img_norm = trans_norm(img_tensor) print(img_norm[0][0][0]) writer.add_image("Normalize",img_norm,0) # 命名图片,图片名称,步数 writer.close()
#Reslize(objecct) print(img.size) trans_resize = transforms.Resize((512,512)) #要求更改完成的图片大小 img_resize = trans_resize(img) #更改图片大小 图片只能是PIL格式 img_resize = trans_totensor(img_resize) #图片由PIL格式改为totensor格式 writer.add_image("Resize",img_resize,0) print(img_resize) writer.close()
#Compose - resize-2 trans_resize_2 = transforms.Resize(512) #更改图片大小 图片类型为PIL trans_compose = transforms.Compose([trans_resize_2,trans_totensor]) #图片类型由PIL转换为totensor # Compose()中的参数需要的是一个列表 python中,列表的表示形式为[数据1,数据2……] 在Compose中,数据需要的transforms类型 所以得到Compose([transforms参数1,transforms参数2……]) img_resize_2 = trans_compose(img) #括号里图片为PIL格式 与trans-compose输入一致 writer.add_image("Resize",img_resize_2,1) writer.close()
#RandomCrop
trans_random = transforms.RandomCrop((100,120)) #裁剪大小 要小于原始图片
trans_compose_2 = transforms.Compose([trans_random,trans_totensor])
for i in range(10):
img_crop = trans_compose_2(img)
writer.add_image("RandomCrop",img_crop,i) #在原图片上随机裁剪10个规定大小的图片
writer.close()
只有totensor格式的图片才能在tensorboard中打开
在terminal终端输入
tensorboard --logdir=logs #等号后面是之前定义的名称
tensorboard --logdir=logs --port=6007 #避免使用人数太多在另一个窗口打开
总结
多关注输入和输出类型
多看官方文档
关注方法需要什么参数(输入类型可在官方文档里看,输出类型print(图片名称)或
print(type(图片名称)或debug)