📜  PyTorch中的风格转换

📅  最后修改于: 2020-11-11 01:13:18             🧑  作者: Mango

PyTorch中的风格转换

在本主题中,我们将实现一个基于深度神经网络的人工系统,该系统将创建具有高感知质量的艺术图像。该系统将使用神经表示来分离,重新组合任意图像的内容和样式,从而为创建艺术图像提供了一种神经算法。

神经样式转移是一种以另一种图像样式生成图像的方法。神经样式算法将内容图像(样式图像)作为输入,并返回内容图像,就好像它是使用样式图像的艺术风格打印的一样。

神经样式转换 STL algorithm如何工作?

当我们实现这个算法时,我们定义了两个距离;一个用于内容(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) 

当我们运行它时,它将为我们提供预期的输出: