python风格迁移_CNN 风格迁移实战(附python代码)

c0de9884968b?from=groupmessage

在今天的文章中,我们会建立一个很棒的风格迁移网络。为了做到这一点,我们需要深入地了解 CNN 和卷积层的工作原理。在文章结束时,你将会创建一个风格迁移网络,这个网络能够在保留原始图像的同时将新样式应用到它上面。

c0de9884968b?from=groupmessage

波士顿天际线和梵高的繁星之夜混合效果

风格迁移

在开始之前,先明确一下我们的目标。

我们将风格迁移定义为改变图像风格同时保留它的内容的过程。

给定一张输入图像和样式图像,我们就可以得到既有原始内容又有新样式的输出图像。在 Leon A. Gaty 的论文 A Neural Algorithm of Artistic Style 中有所描述。

输入图像 + 样式图像 -> 输出图像(风格化)

工作方式

准备输入图像和风格图像并将它们调整为相同的大小。

加载预训练的卷积神经网络(VGG16)。

区分负责样式的卷积(基本形状,颜色等)和负责内容的卷积(特定于图像的特征),将卷积分开可以单独地处理内容和样式。

优化问题,也就是最小化:

内容损失(输入和输出图像之间的距离 - 尽力保留内容)

风格损失(风格和输出图像之间的距离 - 尽力应用新风格)

总变差损失(正则化 - 对输出图像进行去噪的空间平滑度)

最后设置梯度并使用 L-BFGS 算法进行优化。

实现

输入

# 旧金山

san_francisco_image_path = "https://www.economist.com/sites/default/files/images/print-edition/20180602_USP001_0.jpg"

# 输入可视化

input_image = Image.open(BytesIO(requests.get(san_francisco_image_path).content))

input_image = input_image.resize((IMAGE_WIDTH, IMAGE_HEIGHT))

input_image.save(input_image_path)

input_image

这就是旧金山的天际线

c0de9884968b?from=groupmessage

风格

然后定义一个风格图像。

# Tytus Brzozowski

tytus_image_path = "http://meetingbenches.com/wp-content/flagallery/tytus-brzozowski-polish-architect-and-watercolorist-a-fairy-tale-in-warsaw/tytus_brzozowski_13.jpg"

# 风格图像可视化

st

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值