赞
踩
原标题:图像风格迁移实战(附Python实战) 原创:
作者 | 小韩
编辑 | 安可
出品 | 磐创AI技术团队
在今天的文章中,我们会建立一个很棒的风格迁移网络。为了做到这一点,我们需要深入地了解 CNN 和卷积层的工作原理。在文章结束时,你将会创建一个风格迁移网络,这个网络能够在保留原始图像的同时将新样式应用到它上面。
波士顿天际线和梵高的繁星之夜混合效果
风格迁移
在开始之前,先明确一下我们的目标。
我们将风格迁移定义为改变图像风格同时保留它的内容的过程。
给定一张输入图像和样式图像,我们就可以得到既有原始内容又有新样式的输出图像。在 Leon A. Gaty 的论文 A Neural Algorithm of Artistic Style 中有所描述。
输入图像 + 样式图像 -> 输出图像(风格化)
工作方式
准备输入图像和风格图像并将它们调整为相同的大小。
加载预训练的卷积神经网络(VGG16)。
区分负责样式的卷积(基本形状,颜色等)和负责内容的卷积(特定于图像的特征),将卷积分开可以单独地处理内容和样式。
优化问题,也就是最小化:
内容损失(输入和输出图像之间的距离 - 尽力保留内容)
风格损失(风格和输出图像之间的距离 - 尽力应用新风格)
总变差损失(正则化 - 对输出图像进行去噪的空间平滑度)
最后设置梯度并使用 L-BFGS 算法进行优化。
实现
输入
1# 旧金山
2san_francisco_image_path = "https://www.economist.com/sites/default/files/images/print-edition/20180602_USP001_0.jpg"
3
4# 输入可视化
5input_image = Image.open(BytesIO(requests.get(san_francisco_image_path).content))
6input_image = input_image.resize((IMAGE_WIDTH, IMAGE_HEIGHT))
7input_image.save(input_image_path)
8input_image
这就是旧金山的天际线
风格
然后定义一个风格图像。
1# Tytus Brzozowski
2tytus_image_path = "http://meetingbenches.com/wp-content/flagallery/tytus-brzozowski-polish-architect-and-watercolorist-a-fairy-tale-in-warsaw/tytus_brzozowski_13.jpg"
3
4# 风格图像可视化
5style_image = Image.open(BytesIO(requests.get(tytus_image_path).content))
6style_image = style_image.resize((IMAGE_WIDTH, IMAGE_HEIGHT))
7style_image.save(style_image_path)
8style_image
这是Tytus Brzozowski的景色。返回搜狐,查看更多
责任编辑:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。