写点什么

机器学习让电脑也能画世界名画

  • 2015-09-29
  • 本文字数:1344 字

    阅读完需:约 4 分钟

近日,德国图宾根大学的 Leon A. Gatys 等人研发出了一种基于深度神经网络的人工系统。该系统可以制作非常具有艺术气息的电脑图片,完成了电脑作画方面的一大突破。

画家一般通过非常高超的技巧把现实中的东西按照一定的风格进行抽象,来创造非凡的艺术品。以往,这种创造过程总是神秘而不可预知的。因而,机器无法自动完成图画,尤其是抽象画派作品的创作。然而,在目标或者人脸识别等领域,机器已经能够根据深度神经网络(Deep Neural Network,DNN)理论,很好的完成识别工作。Leon 等人所研发的系统试图解决这一难题。该系统使用了神经表示来分离和重新合并图画的内容和风格。它可以把一副图画的内容和另一副图画的风格结合在一起,创造出一个新的图片。以斯坦福校园的一张照片为例,该系统把著名画家梵高的《星空》的风格抽象出来,合并为了一张新的图片。

把该风格应用到不同的图片中,系统还可以给出很多有意思的结果。而且,算法还支持用户调整风格和内容分别占据的权重。这样,图片就可以在偏重原始内容和风格化之间进行变化。此外,用户还可以利用 -style_scale在提取风格特征之前调整风格图片的大小。由此,最终合成图片的风格化粒度也会不同。

该系统基本原理可以划分为内容提取和风格提取两个部分。在内容提取中,算法使用了深度神经网络中的卷积神经网络(Convolutional Neural Network,CNN)。卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。输入图像通过和若干滤波器进行卷积后产生相应的特征映射图。这些特征映射图中每组的几个像素再进行求和、加权值以及加偏置(bias),通过一个Sigmoid 函数得到下一层特征映射图。该过程依次进行,直到通过神经网络的所有层后,得到输出。在Leon 等人的研究中提到,随着图像通过CNN 中的多个层,图像内容越来越多的反应到特征映射图中。而网络中高层的特征响应就可以记为内容表示( content representation)。

在风格提取中,算法使用了原本用于获得纹理信息的特征空间。该特征空间基于神经网络中每一层的滤波响应,由这些响应之间的相关度所组成。通过包含多层网络的特征相关,算法获得了一个输入图像的多层表示——风格表示(style representation)然后,系统通过寻找同时符合内容表示和风格表示的图片,即可合并两张图画,制作出新的图画。

目前,该算法的 torch 实现已经共享到 GitHub 。用户在安装 torch7 loadcaffe 之后,需要运行sh models/download_models.sh脚本来下载 VGG 模型。然后,用户按照安装指导中的指示即可完成Ubuntu 系统中的安装。然后,用户输入 th neural_style.lua -style_image <image.jpg> -content_image <image.jpg>
命令,开始使用该算法来生成图像。此外,该实现还提供了-image_size(所产生图像的最大边像素数)、-gpu(所使用 GPU 从 0 开始编号的 ID)、-content_weight(内容重建部分的权重,默认为 5)等选项。这些选项可以优化转换过程、确定输出文件名以及 CNN 中的层名等,为用户提供更多的灵活性。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-29 19:003684
用户头像

发布了 268 篇内容, 共 137.2 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

vue2升级vue3: 全局变量挂载与类型声明

zhoulujun

flutter系列之:flutter中的IndexedStack

程序那些事

flutter 程序那些事 6月月更

力扣每日一练之双指针1Day8

京与旧铺

6月月更

vue2升级vue3:Vue3时jsx组件绑定自定义的事件、v-model、sync修

zhoulujun

Vue3 sync tsx

秒云云原生信创全兼容解决方案再升级,助力信创产业加速落地

MIAOYUN

运维 云原生 信创 智能运维 信创云

Dubbo3 官方文档贡献者征集令

阿里巴巴云原生

阿里云 开源 云原生 dubbo

拥抱开放,Serverless 时代的下一征程

阿里巴巴云原生

阿里云 Serverless 云原生 SAE

阿里云 ACK One、ACK 云原生 AI 套件新发布,解决算力时代下场景化需求

阿里巴巴云原生

阿里云 云原生 分布式云容器平台 ACK One ACK 云原生 AI 套件

有哪些新手程序员不知道的小技巧?

Jackpop

从-1开始实现一个中间件

艾小仙

Java 中间件 springboot

昇腾科研创新使能计划赋能开发者  华为计算提供三大维度支持

极客天地

vue-axios(一)

小恺

6月月更

基于 K8s 的交付难题退退退!| 独家交付秘籍(第三回)

阿里巴巴云原生

阿里云 Kubernetes 云原生 应用交付平台

文件I/O

fy

UNIX系统

Redis HyperLogLog 是什么?这些场景使用让我枪出如龙一笑破苍穹

码哥字节

redis HyperLogLog Redis 数据结构

Nebula Graph入驻阿里云计算巢,助力企业打造云上超大规模图数据库

阿里云弹性计算

spark 分布式 云原生 图数据库 计算巢

技术实践 | 场景导向的音视频通话体验优化

融云 RongCloud

vue2升级vue3:vue2 vue-i18n 升级到vue3搭配VueI18n v9

zhoulujun

国际化 i18n vue-i18n

【网关对比】Java亿级流量架构之网关设计思路

Java全栈架构师

Java 程序员 面试 微服务 架构师

数据库主键一定要自增吗?有哪些场景不建议自增?

CRMEB

Redis 做缓存场景引发的问题

Ayue、

redis

Vscode有什么好用的插件?

Jackpop

C语言数组与指针练习题(原题+解析+原码)

未见花闻

6月月更

AWS CloudWatch

冯亮

云计算 监控 AWS

vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理

zhoulujun

typescript Vue3 slots tsx slot

vue2升级vue3: Event Bus 替代方案

zhoulujun

Vue3 vue2 event bus

SQL操作:WITH表达式及其应用

华为云开发者联盟

数据库 sql 后端 华为云

小程序怎样关联微信小程序二维码,实现二码合一聚合

Geek_99967b

小程序 小程序容器

Serverless 时代下微服务应用全托管解决方案

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

一行代码可以做什么?

Jackpop

pnpm 中无法使用 patch-package 打补丁

OpenHacker

前端 js

机器学习让电脑也能画世界名画_语言 & 开发_张天雷_InfoQ精选文章