📅  最后修改于: 2020-11-11 01:13:18             🧑  作者: Mango
在本主题中,我们将实现一个基于深度神经网络的人工系统,该系统将创建具有高感知质量的艺术图像。该系统将使用神经表示来分离,重新组合任意图像的内容和样式,从而为创建艺术图像提供了一种神经算法。
神经样式转移是一种以另一种图像样式生成图像的方法。神经样式算法将内容图像(样式图像)作为输入,并返回内容图像,就好像它是使用样式图像的艺术风格打印的一样。
当我们实现这个算法时,我们定义了两个距离;一个用于内容(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-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)
当我们运行它时,它将为我们提供预期的输出: