输入 输出 作用
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)
|