参与 | shawn

编辑 | Donna

什么是风格迁移?

过去十年间,深度神经网络(DNN)被用于解决多种人工智能的任务,例如:图像分类、语音识别和游戏等,并迅速成为最先进的解决方法。

研究人员致力于开发可以帮助我们理解DNN模型学习原理的可视化工具(例如:Deep Dream、Filters),揭开DNN在图像分类领域成功的秘密。他们开发出了一个有趣的应用:从一个图像中提取风格并将其应用于另一个“内容不同”的图像。这就是所谓的“图像风格迁移”。



左图:内容图像,中间:风格图像,右图:内容+风格(图像来源: Google Research Blog)

这个应用不仅吸引了大量的研究人员,而且还催生了几个非常成功的手机应用(如:Prisma)。在过去几年间,这些图像风格迁移方法获得了巨大的进步,并有了一些非常出色的结果。



Adobe风格迁移,图像来源:Engadget



Prisma网站的示例

虽然这些算法在图像上取得了成功,但是在音频或音乐等其他领域却效果不佳,得出的结果远远不如在图像上那样令人满意。这说明音乐风格迁移更为困难。

在本研究中,我们将更加具体地探索音乐风格迁移,试图找出解决这个问题的方法。

为什么音乐风格转移更为困难?

在研究这个问题之前,我们需要搞清:什么是音乐风格转移?

回答这个问题很重要。对于图像而言,内容和风格的概念都是直观的。图像内容是指图像中出现的事物,例如狗、房屋、脸等,图像风格则是指图像的颜色、光线明暗、笔触和质感。

但是,音乐在语义上更加抽象,并且拥有多层面的性质。情境不同,音乐内容所指的含义有时也不同。人们常常认为音乐内容是指曲调,音乐风格是指编曲或和声。但是,音乐内容也可以指歌词内容,不同的曲调可以诠释为不同的风格。

在经典音乐中,音乐内容可以被定义为书面形式的乐谱(包括和声),音乐风格则是演奏者在加入自己的音乐表现力(现场修改乐谱)后对乐谱的诠释。因此,音乐风格迁移很难定义。另外还有几个关键因素让定义变得更加困难:

机器目前还无法很好地理解音乐:图像风格迁移之所以能成功实现,实际上是因为DNN可以出色地完成图像识别任务(例如:目标识别)。由于DNN能学习可以用来区分图像中不同目标的特征,因此它可以利用反向传播算法改变目标图像,使其与内容图像的特征相匹配。

虽然我们在开发基于DNN的音乐理解(例如:曲调转录、类型识别等)模型上取得了很大的进展,但是我们仍然远远无法实现在图像上实现的结果。这对音乐风格迁移而言是一个很大的限制。

由于我们现在的模型还无法学习可以对音乐进行分类的“优秀”特征,因此直接套用图像风格迁移算法无法得出类似的结果。

音乐是时序性的:音乐是一种时间序列数据,也就是说音乐随时间变化。对模型而言,这使得音乐学习起来十分困难。

虽然循环神经网络(RNN)和长短期记忆网络(LSTM)可以使模型更加高效地学习时序数据,但是我们仍没有开发出能够学习复制音乐中长期结构的模型。

顺便说一下:这是一个热门的研究课题,谷歌的Magenta团队在这方面取得了不错的成果。

音乐是离散的(至少在乐符上是这样的):符号音乐或乐谱在本质上是离散的。十二平均律系统是当前使用最普遍的调音系统,其音高在连续的频率谱中处于离散的位置。

同样,音符时值也离散的(通常表示为四分音符、全音符等)。这使得(在图像上使用的)反向传播算法很难应用于符号音乐。



十二平均律系统中音高的离散性

因此,图像风格迁移中使用的算法在逻辑上是无法直接套用在音乐上的。为了让风格迁移算法可以适用于音乐风格迁移,必须根据音乐概念和原理重新设计这些算法。

为什么要进行音乐风格迁移?

在探讨如何解决这个问题之前,我们必须理解解决这个问题有什么意义。和图像风格迁移一样,音乐风格迁移的潜在应用也相当有趣。开发供作曲家使用的编曲工具就是一种直接的应用。

例如,可以开发使用不同风格的管弦乐来改编乐曲的自动化工具,让作曲家可以使用这种工具快速地尝试不同的想法,是不是十分有用呢?这样的工具也可以用来混搭不同风格的歌曲,这可能会受到DJ们的追捧。

音乐风格迁移上取得的进步可以间接带来音乐信息学系统的进步。正如上文所述,为了让风格迁移算法可以适用于音乐数据,我们开发出的模型必须能够从不同层面上更好地“理解”音乐。

简化音乐风格迁移问题

由于此任务相对复杂,我们决定先分析不同类型的音乐的单音乐曲。单音乐曲就是音符序列,每个音符都有自己的音高和时值。音高的变化通常取决于曲调的音阶,时值的变化则取决于节奏。

这样,我们就可以得出音高内容和节奏风格的明确区别,借助这些区别我们可以转化风格迁移问题。另外,分析单音乐曲还可以让我们不必处理管弦乐编曲和歌词之类的问题。

由于我们没有可以用来区分音高变化和单音乐曲节奏的预训练模型,于是我们先提出了一种非常简单的迁移音乐风格的方法。

我们尝试学习不同类型的乐曲的音高和音符时值的模式,然后将这些模式整合在一起。

下图为这种方法的说明图。



音乐风格迁移法说明图

分别学习音高和节奏变化

数据表达:

我们将单音曲调表示为乐符序列,每个乐符都有一个音高和一个时值。

为了确保表达音符(representation key)相互独立,我们使用了一种基于音程的表达方法,将下一个音符的音高表示为相对于前一个音符的音高的偏离(+/- x半音)。我们为音高和音符时值分别创建了两个库。每个离散状态(音高、四分音符、全音符、附点四分音符、时值等偏离+1, -1, +2, -2)都分配有一个库索引。



模型架构:

在本研究中,我们使用的架构类似于Colombo等人使用的架构,即用一种类型的音乐同时训练两个基于LSTM的网络:

  1. 在给定前一音符和音符时值的条件下,学习如何预测下一音高的音高网络;

  2. 在给定下一音符和前一音符时值的条件下,学习如何预测下一音符时值的时值网络。

在Colombo等人的架构的基础上,我们在LSTM网络之前添加了嵌入层(embedding layers),利用其将输入音高和音符时值映射至可学习的嵌入间(embedding spaces)上。

网络架构图

训练过程:

使用每一种类型的音乐同时训练音高网络和时值网络。

我们使用了两个数据集:

  1. 包含2000首爱尔兰和瑞典民谣的Norbeck Folk数据集;

  2. 包含500首爵士乐曲的爵士乐数据集(未公开)。

整合训练后的模型:

在测试期间,先使用第一种类型的音乐(例如民谣)训练的音高网络和时值网络生成一首乐曲。然后,用另一种不同类型的音乐(例如爵士乐)训练一个时值网络,将所生成乐曲的音高序列作为该时值网络的一个输入,这样就可以生成一个新的时值序列。

通过整合这两个网络所生成的乐曲的音高序列与第一种类型的音乐(民谣)的音高相一致,时值序列则与第二种类型的音乐(爵士乐)的音符时值相一致。

初步结果

下方是样本输出的几个节选片段:



乐谱节选(民谣音高和民谣音符时值)



乐谱节选(民谣音高和爵士乐音符时值)



乐谱节选(爵士乐音高和爵士乐音符时值)

乐谱节选(爵士乐音高和音高和民谣音符时值)

结论

虽然我们当前的算法可以为之后的研究提供一个不错的起点,但是它仍有一些严重的缺陷:

  1. 如果只给定一首目标乐曲,模型无法实现“风格迁移”:模型需要从一种类型的音乐学习音高和音符市值模式,然后将学习到的所有模式泛化到另一种类型的音乐。我们的目标是可以将一首给定乐曲的风格转变成目标歌曲/乐曲的风格。

  2. 无法控制风格改变的程度:如果有一个“按钮”可以控制风格改变的程度,那就太完美了。

  3. 在迁移风格时无法保留被转变乐曲的音乐结构:一般而言,长期结构(Long-term structure)对音乐鉴赏价值至关重要。如果要想让生成的乐曲具有音乐美感,就必须保留原乐曲的音乐结构。

我们将在之后的工作中努力探索克服这些缺陷的方法。

作者 | Ashis Pati

原文链接 | https://ashispati.github.io//style-transfer/

精彩预告

2018年1月16日“AI生态赋能2018论坛暨CSDN AI新战略发布会”即将重磅开启!

国内权威专家/名企CTO/CIO/精英大伽齐聚,各路高手全方位多视角共话AI时代。更有《2017-2018 AI行业应用&技术人才成长路线图》重磅发布,敬请期待!

点击“阅读原文”查看详细信息☟☟☟

人人都是作曲家:基于深度神经网络的音乐风格迁移相关推荐

  1. 基于深度学习的图像风格迁移算法的基本介绍。

    基于神经网络的图像风格迁移算法 这个算法还是蛮有趣的,之前就有宣传说让电脑来学习梵高作画,虽然有些夸张,但是实际效果出来还是挺不错的. 接下来,我们要按照以下三个部分来进行介绍,提出,方法以及结论. ...

  2. 论文总结:基于深度学习的图像风格迁移研究

    基于深度学习的图像风格迁移研究 前言 图像风格迁移方法 基于图像迭代的图像风格迁移方法 基于模型迭代的图像风格迁移方法 卷积神经网络 生成对抗网络 CycleGAN 前言 什么是深度学习? 深度学习是 ...

  3. 读“基于深度学习的图像风格迁移研究综述”有感

    前言 关于传统非参数的图像风格迁移方法和现如今基于深度学习的图像风格迁移方法. 基于深度学习的图像风格迁移方法:基于图像迭代和模型迭代的两种方法的优缺点. 基于深度学习的图像风格迁移方法的存在问题及其 ...

  4. 毕业设计 - 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

    文章目录 0 简介 1 VGG网络 2 风格迁移 3 内容损失 4 风格损失 5 主代码实现 6 迁移模型实现 7 效果展示 8 最后 0 简介 今天学长向大家介绍一个机器视觉项目 基于深度学习卷积神 ...

  5. 基于深度学习的绘画风格迁移

    代码来自:<零起点TensorFlow快速入门>,这里只记录几个出问题的地方: 1 import arrow 出错 网上直接百度python arrow的安装,到arrow官网下载,然后c ...

  6. 基于神经网络的图像风格迁移解析与实现

    概述 最近对图像风格迁移这种技术突然非常感兴趣,大概是之前读到了一篇关于对抗生成网络生成逼真人脸的论文文献,于是对这种技术很是好奇,大致了解了一下这个领域.我大致将其分为三个研究领域: 基于传统的机器 ...

  7. 计算机视觉检测 白皓月,基于深度神经网络的视线跟踪技术研究

    毛云丰 沈文忠 滕童 摘  要: 视线跟踪是人机互动技术中重要的组成部分,可以广泛地应用在机器人.手机.笔记本等设备中.针对传统方法在低分辨率图像上的准确率不高和设计步骤繁琐等问题,提出一种基于深度神 ...

  8. TGRS2020/遥感:Multisource Domain Adaptation for Remote Sensing Using Deep Neural Netw基于深度神经网络的遥感多源域自适应

    TGRS2020/遥感:Multisource Domain Adaptation for Remote Sensing Using Deep Neural Networks基于深度神经网络的遥感多源 ...

  9. 基于深度神经网络的高光谱影响分类方法研究---MNF+自动编码器+Softmax (准确率比较低,17年的论文)

    论文地址 基于深度神经网络的高光谱影响分类方法研究 装备学院学报 遥感影像分类的问题:预处理复杂,高维特征提取困难,分类不够精确等缺陷 首先采用最大噪声分数来降低特征空间维度,然后将自动编码器与sof ...

最新文章

  1. 算法 - 折半查找(C#)
  2. 云栖社区Ruby技术社群建立啦!大家都想听什么?...
  3. C++实现有向图最短路径-Dijkstra单源最短路径算法
  4. 任何项目都适用的CMakeLists配置
  5. jdk/jre/jvm联系
  6. tomcat下多个app 不同的图标_5G SA网络切片下,独立APP应用如何自行接入不同网络切片...
  7. 南京信息工程大学百科园c语言答案,南京信息工程大学822C/C++程序设计考研真题及笔记...
  8. php 条码打印控件,jQuery插件jquery-barcode实现条码打印的方法
  9. 总结一下安装linux系统经验-版本选择-安装ubuntu
  10. 《人机交互与戏剧表演:用戏剧理论构建良好用户体验》一导读
  11. 服务器中用于接收电子邮件,‎如何使用我的邮件服务器在 Odoo 中发送和接收电子邮件‎...
  12. 这次要说不明白 immutable 类,我就怎么地!
  13. KVM虚拟化基础概念
  14. matlab 平行,MATLAB判断两条直线平行
  15. pm2 启动 Node + TS 项目
  16. git gui 中文乱码解决方法
  17. 宽带怎么连接路由器?
  18. 采购申请PR和采购订单PO的关系
  19. 向产品宣战——开发者眼中的Android UI Design
  20. one world,one dream

热门文章

  1. VsCode中配置git
  2. Boost filesystem学习笔记
  3. 暑期集训2:ACM基础算法 练习题C:CF-1008A
  4. node 常用指令 node 扩展链接
  5. leetcode_1. Two Sum
  6. tensorflow入门(二)
  7. 使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机
  8. 【Whalepaper】NLP论文研读 - Keyword-Attentive Deep Semantic Matching
  9. 数据结构与算法:15 树
  10. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 获取账户资产