PyTorch学习打卡三之图像风格迁移简介

该博客介绍了如何使用PyTorch实现图像风格迁移,包括目标、输入和方法。内容涉及选择预训练的VGG模型抽取特征,通过内容损失、样式损失和总变差损失进行优化,以将样式图像的风格应用到内容图像上。
摘要由CSDN通过智能技术生成
目标

运用卷积神经网络将某张图的风格应用到另一张图像上。

输入

内容图像 + 样式图像

方法

基于卷积神经网络的样式迁移方法。

  1. 初始化合成图像,一般初始化为内容图像(合成图像即为网络迭代更新的变量)。
  2. 选择一个已经预训练好的模型来抽取图像特征(其模型参数无需再训练)。
  3. 选择2中模型的某些层的输出分别作为内容特征或者样式特征。
  4. 确定损失函数,包括内容损失(Content Loss)、样式损失(Style Loss)和总变差损失(Total Variation Loss)。
  5. 通过正向转播计算样式迁移损失函数。
  6. 通过反向传播迭代更新模型参数,更新合成图像。
抽取特征

可用VGG网络的某些层的输出抽取图像的内容特征和样式特征。一般离输入层越近的卷积层输出的图像细节信息越多,反之远的层输出的全局信息越多。在这里选择VGG的第四个卷积块的最后一个卷积层作为内容层,选择VGG的每一个卷积块的第一个卷积层作为样式层,来匹配局部和全局的样式。

损失

内容损失:使合成图像与内容图像在内容特征上相近,通过平方误差函数衡量合成图像与内容图像在内容特征上的差异。

样式损失:使合成图像与样式图像在样式特征上相近,通过平方误差函数衡量合成图像与样式图像在样式上的差异。
假设样式层输出的样本数为1,通道数为 c c c,高和宽分别为 h h h w w w,我们可以把输出变换成 c c c行, h h h* w w w列的矩阵 X \mathbf{X} X,其对应的Gram矩阵 X X T \mathbf{XX}^T XXT,在 R c ∗ c \mathbf{R}^{c*c} Rcc的空间上,其中 x i j x_{ij} xij为通道 i i i j j j样式特征向量 x i \mathbf{x}_i xi x j \mathbf{x}_j xj的内积,它表达了通道 i i i和通道 j j j样式特征的相关性。所以Gram矩阵可以表达样式层输出的样式。

总变差损失:由于更新得到的合成图像可能有大量高频噪声点,即过亮或者过按的像素点。而加入总变差损失有助于减少合成图像上的噪声。假设xi,j表示坐标(i,j)的像素值,降低总变差损失,使得合成图像临近的像素值尽可能相似。其计算公式如下:
∑ i , j ∣ x i , j − x i + 1 , j ∣ + ∣ x i , j − x i , j + 1 ∣ \sum_{i,j}|x_{i,j} - x_{i+1,j}| + |x_{i,j} - x_{i,j+1}| i,jxi,jxi+1,j+xi,jxi,j+1
摸鱼导致时间要不够了,主要是我远程写代码的电脑没开QAQ,PyTorch实践下期再写吧,kk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值