TensorBoardX add_image()输出图片与torchvision.transforms.Normalize()标准化需要注意的地方

本文介绍了在使用TensorBoardX的add_image()输出图片时应注意的事项,包括label_name的唯一性、图像维度和值域范围。同时,详细讨论了torchvision.transforms.Normalize()在图像标准化过程中的作用,指出其会将图像值域转换到[-1, 1],并提供了相关转换的公式。" 127674151,8086594,YOLOv5改进:添加SE注意力机制,"['目标检测', '深度学习', '计算机视觉', '神经网络', 'YOLO']

TensorBoardX add_image()输出图片与torchvision.transforms.Normalize()标准化

版权归属:

更多关注:

1、TensorBoardX add_image()输出图片需要注意的地方

pytorch中调用TensorBoardX显示图片的方法如下:

from tensorboardX import SummaryWriter

writer = SummaryWriter(log_dir)
# display image
writer.add_image('label_name', img, global_step=total_step)

首先,label_name必须是一个唯一的名字,特别需要注意的是防止与add_scale()中的名字重复,这样子会出现莫名的错误;

其次,参数img可以是numpy or torch.Tenso

“from torch.utils.data import Dataset, DataLoader from torch.utils.tensorboard import SummaryWriter from PIL import Image import os import torchvision import torch class MyData(Dataset): #针对第一种数据类型:文件名对应照片集的Label #不同数据集布局对于数据的提取需要微调 def __init__(self, data_folder, transform=True): self.data_folder = data_folder self.transform = transform self.filenames = [] self.labels = [] per_classes = os.listdir(self.data_folder) for per_class in per_classes: per_class_path = os.path.join(self.data_folder, per_class) per_images = os.listdir(per_class_path) label = str(per_class) for per_image in per_images: self.filenames.append(os.path.join(per_class_path, per_image)) self.labels.append(label) def __getitem__(self, index): img = Image.open(self.filenames[index]) label = self.labels[index] if self.transform is not None: img = self.proprecess(img) return img, label def __len__(self): return len(self.filenames) def proprecess(self, img): data_transform = torchvision.transforms.Compose([torchvision.transforms.Resize(256), torchvision.transforms.CenterCrop(224), torchvision.transforms.Pad(2,padding_mode='edge'), torchvision.transforms.ToTensor(), torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])]) img = data_transform(img) return img data_folder = "dataset/train" ants_dataset = MyData(data_folder, transform=True) data_loader = DataLoader(ants_dataset, batch_size=16, shuffle=True,drop_last=True) writer = SummaryWriter("New_logs") for epoch in range(2): for batch_idx, (data, label) in enumerate(data_loader): writer.add_images("epoch:{}".format(epoch), data, batch_idx) # #__getitem__支持以下调用: # img, label = ants_dataset[0] #相当于ants_dataset.__getitem__(0) # img.show() # print(label)”分析一下这段代码有没有错误的地方
06-22
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值