论文《Symbolic Music Genre Transfer with CycleGAN》阅读笔记

一、背景

这篇论文主要是实现不同类型的音乐转换,文中主要使用了爵士、古典、流行音乐的转换,并且一个模型只能实现从一个域到另一个域的转换,网络结构作者仿照了Cycle-GAN,但引入了新的loss使得生成的音乐质量更佳。

二、数据形式

文中使用的音乐数据为MIDI文件,并按照文中的数据预处理方式,主要是舍弃具有音轨或声音较多的MIDI文件(如交响乐等),然后舍弃鼓的音轨,之后将所有的音轨上的音符合并在一个音轨上。然后将通过上述方式筛选后的MIDI文件处理成[batchsize,64,84,1],并将每个音高的值归一化为[0,1],然后将该矩阵用于模型训练。其中,64指的是对连续的4个bars分别进行16 time steps的采样。84是指音高范围,由于MIDI文件的音高范围为0-127,但C1以下的音符和C8以上的音符很少,故舍弃,剩余音符的音高范围只有84个。

三、网络结构与loss设置

在域迁移或风格转换中一方面需要改变风格,另一方面需要保持内容的不变,这就需要两个loss。风格loss:用于风格转换;内容loss:维持内容一致;内容loss在Cycle-GAN中一般是循环一致损失,使用L1范数。Cycle-GAN通过两个生成器和判别器实现了两个域中隐含的特定特征的有效提取,并成功的实现风格的转换。
本论文在Cycle-GAN的基础上进行音乐类型转换,也是需要通过内容和风格的损失实现不同流派的音乐转换。
网络结构

3.1 生成器loss

在这里插入图片描述

3.1.1 循环一致loss:

在这里插入图片描述

3.1.2 对抗loss:

在这里插入图片描述

3.2 判别器总loss:

在这里插入图片描述

3.2.1通用的判别器loss

在这里插入图片描述

3.2.2 判别生成的音乐是否属于源域域目标域的并集

loss\color{#FF3030}{作者额外引入了两个loss,这是这篇文章的重点}
为了有效的骗过判别器,生成器需要学到两个类型的特征。然而两个类型的音乐之间肯定有一些区别性很高的特征或模式,这会导致生成器只学到这部分特征而成功骗过判别器,但此时生成的音乐质量会很差,为了解决这个问题,文中引入了另外的两个判别器,目的是判断生成的音乐类型是否是属于M域(这两个音乐域的并集),其loss:
在这里插入图片描述
其实就是将生成器生成的音乐限制在M域内,有约束的训练模型提高训练效率和音乐质量

四、总结

在训练的时候,需要分别最小化总的生成器loss和总的判别器loss。以判别器A为例,在最小化判别器总loss时,LDA的理想值为0,即判别器A能准确判别生成的数据为假(输出0),原始数据为真(输出1)。但生成器的目标是希望判别器A能将生成的数据判别为真,这实现了一个对抗,然后不断训练生成器与判别器,使其最终达到平衡。

注:对于文中不同域的音乐转换后的质量,作者单独训练了一个音乐类型分类器来检测原始的真实数据音乐以及生成的音乐数据。根据该分类器在原始的真实音乐类型的检测准确率即可得到该音乐分类器分类音乐的置信度,然后用于分类生成的音乐。

Reference

论文
代码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章