本文概述
- 图片载入
- 图像转换
- 绘制图像
文章图片
图片载入 我们必须将内容图像和样式图像加载到内存中, 以便我们可以对此执行操作。加载过程在样式传递过程中起着至关重要的作用。我们需要将图像存储在内存中, 并且在加载过程之前将无法进行样式传递过程。
代码
#defining a method with three parameters i.e. image location, maximum size and shape def load_image(img_path, max_size=400, shape=None):# Open the image, convert it into RGB and store in a variable image=Image.open(img_path).convert('RGB')# comparing image size with the maximum size if max(image.size)>
max_size:size=max_sizeelse:size=max(image.size)# checking for the image shapeif shape is not None:size=shape#Applying appropriate transformation to our image such as Resize, ToTensor and Normalizationin_transform=transforms.Compose([transforms.Resize(size), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])#Calling in_transform with our image image=in_transform(image).unsqueeze(0) #unsqueeze(0) is used to add extra layer of dimensionality to the image#Returning image return image#Calling load_image() with our image and add it to our devicecontent=load_image('ab.jpg').to(device)style=load_image('abc.jpg', shape=content.shape[-2:]).to(device)
图像转换 在导入图像之前, 我们需要将我们的图像从张量转换为numpy图像, 以确保与plot包的兼容性。之前, 我们已经使用熟悉的image_converts帮助器函数完成了此操作, 该函数先前已在” 图像识别” 中的” 图像变换” 中使用。
def im_convert(tensor):image=tensor.cpu().clone().detach().numpy() image=image.transpose(1, 2, 0)image=image*np.array((0.5, 0.5, 0.5))+np.array((0.5, 0.5, 0.5))image=image.clip(0, 1)return image
如果我们运行此辅助方法, 则会生成错误。我们必须从图像的形状和数组的形状中删除一维条目。因此, 在转置方法之前, 我们将挤压图像。
image=image.squeeze()
绘制图像 代码
fig, (ax1, ax2)=plt.subplots(1, 2, figsize=(20, 10))ax1.imshow(im_convert(content))ax1.axis('off')ax2.imshow(im_convert(style))ax2.axis('off')
【PyTorch中样式转移的图像加载和转换】当我们在Google Colab Notebook上运行它时, 它将为我们提供预期的输出:
文章图片
推荐阅读
- PyTorch基础概念(张量用法详解)
- PyTorch的梯度用法图解
- PyTorch CIFAR-10和CIFAR-100数据集
- Python网站拦截器(Windows上的脚本部署)
- 网页拦截器(构建python脚本)
- 什么是PyTorch(简单介绍PyTorch)
- cleartype,图文详细说明如何调整ClearType显示效果
- ex文件,图文详细说明ex文件怎样打开
- ie10 win7 64,图文详细说明处理win7 64位系统无法安装ie10的办法