个性化阅读
专注于IT技术分析

PyTorch中样式转移的图像加载和转换

本文概述

导入所有必需的库并将VGG-19添加到我们的设备后, 我们必须将图像加载到要申请样式转移的内存中。我们有一个内容图像, 样式图像和目标图像将是这两个图像的组合。并非每个图像都需要具有相同的大小或像素。为了使图像相等, 我们还将应用图像变换过程。

PyTorch中样式转移的图像加载和转换

图片载入

我们必须将内容图像和样式图像加载到内存中, 以便我们可以对此执行操作。加载过程在样式传递过程中起着至关重要的作用。我们需要将图像存储在内存中, 并且在加载过程之前将无法进行样式传递过程。

代码

#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_size
    else:
      size=max(image.size)
    # checking for the image shape
    if shape is not None:
       size=shape
    #Applying appropriate transformation to our image such as Resize, ToTensor and Normalization
    in_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 device
content=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')

当我们在Google Colab Notebook上运行它时, 它将为我们提供预期的输出:

PyTorch中样式转移的图像加载和转换

赞(0)
未经允许不得转载:srcmini » PyTorch中样式转移的图像加载和转换

评论 抢沙发

评论前必须登录!