PyTorch 教程-在PyTorch中进行风格转移
在这个主题中,我们将实现一个基于深度神经网络的人工系统,它将创建具有高感知质量的艺术图像。该系统将使用神经表示来分离、重新组合任意图像的内容和风格,提供了一个用于创建艺术图像的神经算法。
神经风格转移是一种以另一张图像的风格生成图像的方法。神经风格算法以内容图像(风格图像)作为输入,返回内容图像,就好像它是使用风格图像的艺术风格打印的一样。
神经风格转移算法的工作原理是什么?
在实现此算法时,我们定义两个距离;一个用于内容(Dc),另一个用于风格(Ds)。 Dc测量两个图像之间的内容差异,而Ds测量两个图像之间的风格差异。我们将第三张图像作为输入,并对其进行转换,以既减小其与内容图像的内容距离,又减小其与风格图像的风格距离。
所需库
import torch
import torch.optim as optim
#we will import transforms and models because we will transform our images and we will use pre-trained model VGG-19
from torchvision import transforms, models
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
初始化VGG-19模型
VGG-19模型类似于VGG-16模型。VGG模型由Simonyan和Zisserman引入。VGG-19在ImageNet数据库上训练了一百多万张图像。该模型是一个有19层深度神经网络,可以将图像分类为1000个对象类别。
在我们的初始化过程中,我们只会导入模型的特征。
#importing model features
vgg=models.vgg19(pretrained=True).features #we are using pre-trained model
# Maintain parameter constant setting
for param in vgg.parameters():
param.requires_grad_(False)
当我们运行此代码时,下载将开始,并且我们的模型特征将被成功下载。
将模型添加到我们的设备
当我们的模型特征被下载并导入时,我们必须将其添加到设备上,可以是CUDA或CPU。torch.device是我们将执行此过程的方法。
#Implementing device
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")
#Attaching our vgg model to our device
vgg.to(device)
当我们运行此代码时,它将给我们预期的输出: