Pytorch学习笔记2.transforms

图片变换工具。

tensor数据类型:tranforms.ToTensor函数解读
BV1hE411t7RN

 tensor数据类型,包含了神经网络所需要的各种参数。

from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
from PIL import Image

img_path="dataset/hymenoptera_data/train/ants_image/6743948_2b8c096dda.jpg"//获取图片地址
img=Image.open(img_path)//打开图片,赋给img

writer=SummaryWriter("logs")//创建日志

tensor_trans=transforms.ToTensor()
tensor_img=tensor_trans(img)使用transforms将其转化为tensor格式

writer.add_image("Tensor_img",tensor_img)

writer.close()

运行之后就可以tensorboard --logdir="logs"检验一下了。


transforms.Normalize函数解读

transfroms.Normalize(mean, std)

达到效果:

Output [channel] = ( input [channel] - mean [channel] ) / std [channel]

例如: mean=0.5=std, 则(in-0.5)/0.5 = 2*in - 1

                若input[0.1],则output[-1,1]

完整可实现代码:

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

writer=SummaryWriter("logs")//创建日志
img=Image.open("dataset/hymenoptera_data/train/ants_image/0013035.jpg")//打开图片

# ToTensor的使用
trans_totensor=transforms.ToTensor()
img_tensor=trans_totensor(img)//转化为tensor格式
writer.add_image("ToTensor",img_tensor)//在board输出
print(img_tensor[0][0][0])//打印一下三通道看看

# Normalize的使用
trans_norm=transforms.Normalize([1,3,5],[3,2,1])//值是随便打的
img_norm=trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("normalize",img_norm)//继续在board输出

writer.close()

接着打开tensorboard检验即可。


tansforms.resize函数解读
print(img.size)//原尺寸打印看看
trans_resize=transforms.Resize((512,512))
img_resize=trans_resize(img)//转成512的,但还是PIL文件
img_resize=trans_totensor(img_resize)//转成TENSOR
writer.add_image("Resize",img_resize,0)//在tensor打开
print(img_resize)//打印新的,检验

用法之二、

trans_resize_2=transforms.Resize(512)
trans_compose=transforms.Compose([trans_resize_2,trans_totensor])//组合用法
img_resize_2=trans_compose(img)
writer.add_image("Resize",img_resize_2,1)

transforms.RandomCrop函数解读
trans_random=transforms.RandomCrop(512)
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)

得到随机裁剪的img_crop


学习transforms记得看官方文档,关注输入输出。

不知道返回值,可以print看:

        print

        print(type())


附本节完整代码

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms

writer=SummaryWriter("logs")
img=Image.open("dataset/hymenoptera_data/train/ants_image/0013035.jpg")

# ToTensor的使用
trans_totensor=transforms.ToTensor()
img_tensor=trans_totensor(img)
writer.add_image("ToTensor",img_tensor)

# Normalize的使用
trans_norm=transforms.Normalize([1,3,5],[3,2,1])
img_norm=trans_norm(img_tensor)
writer.add_image("normalize",img_norm)

# resize的使用
print(img.size)
trans_resize=transforms.Resize((512,512))
img_resize=trans_resize(img)
img_resize=trans_totensor(img_resize)
writer.add_image("Resize",img_resize,0)
print(img_resize)

# resize的第二种使用,compose
trans_resize_2=transforms.Resize((512,512))# PIL ->PIL
trans_compose=transforms.Compose([trans_resize_2,trans_totensor])
img_resize_2=trans_compose(img)
writer.add_image("Resize",img_resize_2,1)

# RandomCrop的使用
trans_random=transforms.RandomCrop(500,1000)
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)


writer.close()

        

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值