Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用神经网络实现照片的风格转换

如何用神经网络实现照片的风格转换

作者头像
HuangWeiAI
发布于 2020-04-14 07:32:41
发布于 2020-04-14 07:32:41
96500
代码可运行
举报
文章被收录于专栏:浊酒清味浊酒清味
运行总次数:0
代码可运行

1

在今天的文章中,我们将实现风格转换效果。为了做到这一点,我们必须更深入地理解卷积神经网络及其各层是如何工作的。在本文的最后,您将能够创建并运行一个风格转换程序。

02

什么是风格转换

在我们开始我们的风格转换应用程序之前,让我们介绍一下我们正在努力实现的目标。

给定一个输入图像和一个样式图像,我们可以用原始内容和一个新的样式来计算一个输出图像。就像下面这个例子:

波士顿的天际线与梵高的《星夜》交相辉映

03

如何实现风格转换

  1. 我们获取输入图像和风格图像,并将它们调整为相同的形状。
  2. 我们加载一个预先训练好的卷积神经网络(VGG16)。
  3. 知道我们可以区分负责样式的层(基本形状、颜色等)和负责内容的层(特定于图像的特性),我们就可以分离这些层来独立处理内容和样式。
  4. 然后我们把我们的任务设置为一个优化问题,我们要最小化:
  • 内容loss(输入和输出图像之间的距离-我们努力保持内容)
  • 风格loss(样式与输出图像之间的距离—我们努力应用新样式)
  • total variation loss(正则化-对输出图像进行去噪的空间平滑度)

5. 最后,我们使用L-BFGS算法设置梯度并进行优化。

04

代码讲解

你可以在GitHub上找到风格转换项目的完整代码库:

https://github.com/gsurma/style_transfer

输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# San Francisco
san_francisco_image_path = "https://www.economist.com/sites/default/files/images/print-edition/20180602_USP001_0.jpg"
#Input visualization

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

下图就是输入图片:

风格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Warsaw by Tytus Brzozowski, http://t-b.pl
tytus_image_path = "http://meetingbenches.com/wp-content/flagallery/tytus-brzozowski-polish-architect-and-watercolorist-a-fairy-tale-in-warsaw/tytus_brzozowski_13.jpg"
# Style visualization 
style_image = Image.open(BytesIO(requests.get(tytus_image_path).content))
style_image = style_image.resize((IMAGE_WIDTH, IMAGE_HEIGHT))
style_image.save(style_image_path)
style_image

风格图片:

数据预处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Data normalization and reshaping from RGB to BGR
input_image_array = np.asarray(input_image, dtype="float32")
input_image_array = np.expand_dims(input_image_array, axis=0)
input_image_array[:, :, :, 0] -= IMAGENET_MEAN_RGB_VALUES[2]
input_image_array[:, :, :, 1] -= IMAGENET_MEAN_RGB_VALUES[1]
input_image_array[:, :, :, 2] -= IMAGENET_MEAN_RGB_VALUES[0]
input_image_array = input_image_array[:, :, :, ::-1]

style_image_array = np.asarray(style_image, dtype="float32")
style_image_array = np.expand_dims(style_image_array, axis=0)
style_image_array[:, :, :, 0] -= IMAGENET_MEAN_RGB_VALUES[2]
style_image_array[:, :, :, 1] -= IMAGENET_MEAN_RGB_VALUES[1]
style_image_array[:, :, :, 2] -= IMAGENET_MEAN_RGB_VALUES[0]
style_image_array = style_image_array[:, :, :, ::-1]

网络模型:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Model
input_image = backend.variable(input_image_array)
style_image = backend.variable(style_image_array)
combination_image = backend.placeholder((1, IMAGE_HEIGHT, IMAGE_SIZE, 3))

input_tensor = backend.concatenate([input_image,style_image,combination_image], axis=0)
model = VGG16(input_tensor=input_tensor, include_top=False)

05

结果

经过运行程序,我们获得了如下结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与机器学习之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
图像风格迁移实战(附Python实战)
在今天的文章中,我们会建立一个很棒的风格迁移网络。为了做到这一点,我们需要深入地了解 CNN 和卷积层的工作原理。在文章结束时,你将会创建一个风格迁移网络,这个网络能够在保留原始图像的同时将新样式应用到它上面。
磐创AI
2019/05/05
4.2K3
图像风格迁移实战(附Python实战)
如何生成一幅艺术作品
假设我们有一幅大师的画作了,我们怎么能够提取出“大师作品”中的纹理和颜色这些细节让我们的计算机知道,而不是只看到画的整体造型呢?
zhuanxu
2018/08/23
5280
如何生成一幅艺术作品
风格转换简介
风格转换,是把一张图片转化成同内容但包含某风格的新图片。本文将介绍如何让机器学习风格转换,包含两种方法:优化问题求解、转化网络求解。 ? 风格转换 风格转换,就是根据现有的风格照片SS,把当前照片C
用户1147754
2018/01/05
1.7K0
风格转换简介
用TensorFlow实现神经网络画风迁移
神经风格转换是卷积神经网络最具创造性的应用之一。神经网络通过获取内容图像和风格图像,将内容和风格图像进行重组,有效地创造出艺术图像!
Python数据科学
2019/06/10
9570
用TensorFlow实现神经网络画风迁移
图形处理软件中的风格滤镜:从原理到应用的深度解析
风格滤镜是一种在图形处理软件中广泛使用的功能,其目的是将图片或视频的视觉风格从一种状态转换为另一种状态,模仿特定艺术风格、纹理或色调,使原始素材呈现出与目标风格一致的艺术效果。这种功能被广泛用于图像编辑、数字艺术创作、视频制作以及增强现实等领域。
编程小妖女
2025/01/22
3160
图形处理软件中的风格滤镜:从原理到应用的深度解析
TensorFlow实战——CNN(VGGNet19)——图像风格转化
http://blog.csdn.net/u011239443/article/details/73721903
小爷毛毛_卓寿杰
2019/02/13
1.1K0
TensorFlow实战——CNN(VGGNet19)——图像风格转化
迁移学习实践 深度学习打造图像的别样风格
在本教程中,我们将学习如何使用深度学习来创作另一种(毕加索或梵高式)风格的图像,这就是所谓的神经类型迁移!这是列昂·盖茨的论文中概述的一种技术:一种艺术风格的神经算法,非常值得一读。
叶庭云
2021/07/01
7490
干货 | Tensorflow设计简单分类网络实现猫狗图像分类训练与测试
第一层:32个feature map 5x5卷积、步长为2、最大值池化 局部相应归一化处理(LRN) 第二层:64个feature map 3x3卷积、步长为1、没有池化 第三层:128个feature map 3x3卷积、步长为1、最大值池化 局部相应归一化处理(LRN) 扁平层操作12x12x128个神经元 输出层操作2个神经元输出、sigmoid激活函数 卷积层采用relu作为激活函数。
OpenCV学堂
2018/12/12
2.4K0
干货 | Tensorflow设计简单分类网络实现猫狗图像分类训练与测试
人工智能生成内容(AIGC)在图像生成领域的技术进展
人工智能生成内容(AIGC,AI-Generated Content)在图像生成领域取得了显著的进展。本文将探讨从卷积神经网络(CNN)到风格迁移(Style Transfer)的技术演变,并通过代码实例展示其应用。
一键难忘
2024/06/21
1.5K0
使用Python实现深度学习模型:图像风格迁移与生成
图像风格迁移是一种将一幅图像的风格应用到另一幅图像上的技术,使得生成的图像既保留原始图像的内容,又具有目标图像的风格。本文将介绍如何使用Python和TensorFlow实现图像风格迁移,并提供详细的代码示例。
Echo_Wish
2024/07/13
3460
使用Python实现深度学习模型:图像风格迁移与生成
04.卷积神经网络 W4.特殊应用:人脸识别和神经风格转换(作业:快乐屋人脸识别+图片风格转换)
背景:04 W2 作业:Keras教程+ResNets残差网络 里的快乐的房子问题
Michael阿明
2021/02/19
5580
Keras实现风格迁移
风格迁移算法经历多次定义和更新,现在应用在许多智能手机APP上。 风格迁移在保留目标图片内容的基础上,将图片风格引用在目标图片上。
用户1631856
2018/09/27
1.5K0
Keras实现风格迁移
【论文复现】图像风格迁移技术
风格转换这一理念与纹理合成的思路紧密相连,早在2015年神经风格转换技术问世之前,该理念就在图像处理界拥有悠久的过往。然而,实践证明,相较于以往传统的计算机视觉技术手段,基于深度学习的风格转换所达成的效果堪称卓越,且在计算机视觉的创新应用领域内掀起了一场令人瞩目的复兴浪潮。
Eternity._
2024/11/18
4980
【论文复现】图像风格迁移技术
如何用Keras打造出“风格迁移”的AI艺术作品
过去几年,卷积神经网络(CNN)成为一种前沿的计算机视觉工具,在业界和学界广泛应用。除了人脸识别和无人驾驶领域,CNN 这几年还在艺术领域广受欢迎,其中衍生出一个代表性技术就是“风格迁移”,根据这项技术诞生了很多美图应用,比如 2016 年大火的 Prisma APP。
IT派
2018/07/30
7400
如何用Keras打造出“风格迁移”的AI艺术作品
深度学习 ——TensorFlow实战项目与进阶
几天不见了,朋友们,今天我们来继续充电咯,这次我们来利用前面的知识来实战TensorFlow。文章后面我还会列出我之前学习
china马斯克
2025/03/25
1990
深度学习模型系列(1) | VGG16 Keras实现
VGGNet是牛津大学视觉几何组(Visual Geometry Group)提出的模型,该模型在2014ImageNet图像分类与定位挑战赛 ILSVRC-2014中取得在分类任务第二,定位任务第一的优异成绩。VGGNet突出的贡献是证明了很小的卷积,通过增加网络深度可以有效提高性能。
机器学习学研社
2019/09/19
4.9K0
深度学习模型系列(1) | VGG16 Keras实现
利用pytorch实现Fooling Images(添加特定噪声到原始图像,使神经网络误识别)
fooling images,顾名思义,就是指一张图片,虽然上面通过肉眼看到的是松鼠(举个例子),但是因为这张图片加了一些特定的噪声,所以神经网络会将它误识别为其他物体。
老潘
2018/06/21
3.5K0
利用pytorch实现Fooling Images(添加特定噪声到原始图像,使神经网络误识别)
手把手教你用深度学习玩转图像风格迁移
在这个数字技术蓬勃发展的时代,人工智能正在重塑艺术创作的边界。你是否想过让梵高的《星月夜》与你的自拍照完美融合?或是将水墨画的飘逸笔触赋予现代建筑摄影?这一切并非天方夜谭,借助深度学习技术,我们可以在JupyterLab中轻松实现图像的风格迁移。这项技术不仅被广泛应用于手机滤镜开发,更在数字艺术创作、影视特效制作等领域大放异彩。本文将带您深入浅出地探索这项神奇技术的实现奥秘。
不惑
2025/04/02
4620
手把手教你用深度学习玩转图像风格迁移
使用Python实现深度学习模型:智能艺术品鉴定与修复
在艺术品鉴定与修复领域,深度学习技术正逐渐展现出其强大的潜力。通过智能化的图像处理和分析技术,我们可以更准确地鉴定艺术品的真伪,并对受损艺术品进行高效修复。本文将详细介绍如何使用Python实现一个智能艺术品鉴定与修复系统,确保内容通俗易懂,并配以代码示例和必要的图片说明。
Echo_Wish
2024/09/22
1940
使用Python实现深度学习模型:智能艺术品鉴定与修复
手把手教你搭建能够实现 Prisma 风格迁移效果的 iOS 酷炫应用(附代码)
随着 2012 年深度神经网络在 ImageNetchallenge 比赛上以 AlexNet 模型获胜,深度神经网络开创了空前的高潮。AI 工程师已经将深度学习技术应用到越来越多的问题域,包括预训练的深度美国有线电视新闻网模型。还有什么比创造艺术更富有创造力呢?
AI研习社
2018/07/26
1.2K0
手把手教你搭建能够实现 Prisma 风格迁移效果的 iOS 酷炫应用(附代码)
推荐阅读
相关推荐
图像风格迁移实战(附Python实战)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验