torch中各种图像格式转换的实现方法-创新互联
- PIL:使用python自带图像处理库读取出来的图片格式
- numpy:使用python-opencv库读取出来的图片格式
- tensor:pytorch中训练时所采取的向量格式(当然也可以说图片)
PIL与Tensor相互转换
import torch from PIL import Image import matplotlib.pyplot as plt # loader使用torchvision中自带的transforms函数 loader = transforms.Compose([ transforms.ToTensor()]) unloader = transforms.ToPILImage() # 输入图片地址 # 返回tensor变量 def image_loader(image_name): image = Image.open(image_name).convert('RGB') image = loader(image).unsqueeze(0) return image.to(device, torch.float) # 输入PIL格式图片 # 返回tensor变量 def PIL_to_tensor(image): image = loader(image).unsqueeze(0) return image.to(device, torch.float) # 输入tensor变量 # 输出PIL格式图片 def tensor_to_PIL(tensor): image = tensor.cpu().clone() image = image.squeeze(0) image = unloader(image) return image #直接展示tensor格式图片 def imshow(tensor, title=None): image = tensor.cpu().clone() # we clone the tensor to not do changes on it image = image.squeeze(0) # remove the fake batch dimension image = unloader(image) plt.imshow(image) if title is not None: plt.title(title) plt.pause(0.001) # pause a bit so that plots are updated #直接保存tensor格式图片 def save_image(tensor, **para): dir = 'results' image = tensor.cpu().clone() # we clone the tensor to not do changes on it image = image.squeeze(0) # remove the fake batch dimension image = unloader(image) if not osp.exists(dir): os.makedirs(dir) image.save('results_{}/s{}-c{}-l{}-e{}-sl{:4f}-cl{:4f}.jpg' .format(num, para['style_weight'], para['content_weight'], para['lr'], para['epoch'], para['style_loss'], para['content_loss']))
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:torch中各种图像格式转换的实现方法-创新互联
转载注明:http://scyanting.com/article/eppij.html