Magenta魔改记-0:Magetna初见

前言:

最近在魔改Magenta,所以会涉及到阅读、修改Magenta的源代码。我个人认为Magenta是一个很好的项目,虽然代码可能写的有点乱,但模型的架构写的都很好,从主观上来看(听),做出的自动作曲模型效果也很优异。Magenta可以为做深度学习自动作曲的研究者提供一个参考,同时我在这里也希望给有兴趣的朋友提供一些经验。

Note:我的解决方法不一定是最优的,除了我的解决方案之外,读者可以自行参考Magenta官方给出的一些文档(尽管相当散乱且不连续)。本文的目标是尽量使读者快速了解Magenta项目以及代码结构,并着手按自己的想法修改。

Update:2019.5:修改了一些内容并更新了Magenta的版本。

Magenta是什么:

Magenta是由google组织的一个项目组,专门进行基于机器学习的人工智能艺术方面的研究,包括自动作曲、音频生成、图画生成等方面。

主页:https://magenta.tensorflow.org/

Github: https://github.com/tensorflow/magenta

相关介绍:https://mp.weixin.qq.com/s/yCxcV2hF_o_r40QQ3ooctA

项目中包含的模型,在自动作曲方面,有:

Melody_rnn:一个单声部、单音作曲模型

Polyphony_rnn:二声部,一个声部为单音旋律一个声部为和弦组合的生成模型

以及imporv_rnn、drum_rnn、performance_rnn等深度学习模型(还有强化学习模型)。

在其他方面,还有NSynth(Wavenet),sketch rnn(画简笔画),AIduet(人弹一段,AI跟弹一段)等成熟的项目。

运行环境:

Magenta主要基于Tensorflow(Python)编写,有部分项目使用Tensorflowjs。

本文基于Magenta 1.1.1版本(2019.5)

安装:

官网给出的安装指南如下:
https://github.com/tensorflow/magenta/blob/master/README.md#installation

Magenta支持Python>=2.7与Python>=3.5。对于linux用户,Magenta官方给出了安装脚本,使用方法如下:

curl https://raw.githubusercontent.com/tensorflow/magenta/master/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
bash /tmp/magenta-install.sh

上述脚本安装完成后,就可以source activate magenta打开Magenta运行环境了。

对于Windows用户(Linux用户也适用),我们也可以轻松实用anaconda等包管理工具安装Magenta。

这里,我给出一个我安装的方法如下:

对于只使用CPU的用户:

conda create -n magenta python=3.6 # 这里3.5也可以
activate magenta # (Linux用户为 source activate magenta)
pip install magenta

Linux用户在安装Magenta之前需要先安装一些运行库,用以安装rimidi:

sudo apt-get install build-essential libasound2-dev libjack-dev

如果需要用到GPU,可以直接将上文中pip install magenta替换成pip install magenta-gpu
magentamagenta-gpu的区别仅在后者多了tensorflow-gpu库。

截止到2018.5.18,Magenta的版本为1.1.1,Magenta所使用的TensorFlow的版本为1.13.1

当然,如果需要运行tensorflow-gpu,需要安装NVIDIA显卡驱动和CUDA 以及cuDNN,请读者自行搜索方法,这里就不再赘述了。

训练/生成:

Magenta提供了命令行(Linux\Mac),在windows系统上,也可以使用Python命令行操作。我们可以通过命令行来进行训练、用生成的权重或官方提供的权重进行自动作曲。

我在之后的文章中会分析训练和生成的具体代码。如果你想先试着运行一下Magenta,可以参考如下内容:

Magenta的GitHub内各个Model的文档,以polyphony_rnn为例:

https://github.com/tensorflow/magenta/tree/master/magenta/models/polyphony_rnn

一些国内的博客:

https://www.cnblogs.com/charlotte77/p/5664523.html

https://blog.csdn.net/bestbuild/article/details/51927007

Magenta魔改记-0:Magetna初见相关推荐

  1. Magenta魔改记-2:数据格式与数据集

    Magenta魔改记-2:数据格式与数据集 数据格式:MusicXML与MIDI 上一节我们主要提到了两种数据格式:MIDI(.mid/.midi)和MusicXML(.xml/.mxl).其实他们二 ...

  2. Magenta魔改记-1:原始数据转换

    Magenta魔改记-1:原始数据转换 前言 本文主要讲述Magenta项目原始数据整合的过程,并介绍了读取MIDI和XML的函数.通过本文我们可以看到,在原始音乐数据整合的过程中,Magenta将不 ...

  3. 绝地求生键位魔改v3.0

    因为fps类游戏的默认按键和LOL有很大差别,从舒服度和操作灵活性上说,LOL应该是更胜一筹,今天我就强行改下键位布局, 当然这不是最终版, 女士们和先生们欢迎讨论! 绝地求生魔改键位(未提到的保持默 ...

  4. 鸿蒙系统魔改,华为EMUI 11正式发布,魔改系统可优先升级鸿蒙OS 2.0

    华为手机相信大家都不陌生,作为国内顶尖的手机设备制造商.华为近些年的发展更是有目共睹的,在5G技术受到美国实体清单影响之后:谷歌也宣布了面对华为关闭其GMS服务.由于手机系统缺少了必要的软件生态,华为 ...

  5. 绝地求生魔改键位v4.0

    绝地求生魔改键位v4.0(未提到的保持默认设置) 各位同学根据需要修改 图像 显示模式            窗口化 分辨率  1920*1080 抗锯齿                超高 后期处理 ...

  6. xxl-job 2.2.0 魔改自动主动执行器以及任务

    xxl-job 需要手动在控制台注册任务和执行器,操作麻烦.增加操作复杂性. 魔改2.2.0版本 自动注册- Quick start 1. 首先定义一个注解, 通过注解在client端注入我们的同步器 ...

  7. 青龙面板Nvjdc魔改前段待弹窗---仅支持2.0版本

    青龙安装部署教程-------点击跳转 没服务器的先自行购买,腾讯云2H4G8M首年74–点击购买 QQ交流:1014549449 --------------点击跳转 只需要把wwwroot文件夹替 ...

  8. 代码已开源,一起魔改大西瓜!

    上了两次微博热搜的<合成大西瓜>,想必大家都玩过了,好多人刚开始嗤之以鼻,最后真香了,说实话有点上头. 其火热程度直登热搜第三,阅读量6.9亿,朋友圈里也在纷纷安利. 合成大西瓜 游戏界面 ...

  9. 魔改GPT自动写网文,速度一秒十字,还能给太监作品无限续更 | 开源

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如果一个人只看网文,那会写出来怎样的文字? 看了100G网文后,这个AI模型帮你试了一下. 先来一段自由创作: 乍眼看去很有内味,而且基本是 ...

最新文章

  1. 《基于场景的工程方法》作者问答录
  2. 【计算机网络】数据链路层 : CSMA/CD 协议 ( 载波监听多点接入 / 碰撞检测 协议 | 单程端到端传播时延 | 截断二进制指数规避算法 | 计算示例 | 最小帧长问题 )★
  3. boost::hana::empty用法的测试程序
  4. 机器学习-集成学习-提升树-LightGBM
  5. Java命令行界面(第6部分):JOpt简单
  6. Linux下创建动态库与使用
  7. 排序归并连接Merge Sort Join
  8. 20169210《Linux内核原理与分析》课程总结
  9. 静态代码块、非静态代码块和构造方法
  10. linux那个系统支持开发,求问如何确定centos支持哪个版本的gcc
  11. [转载] 使用Python中的NLTK和spaCy删除停用词与文本标准化
  12. WebFrom 【文件上传】
  13. IBM x3850 x5U盘启动或光驱启动不起作用
  14. python爬取ZOL高清壁纸
  15. 多端开发之uniapp开发app
  16. Excel学习日记:L22-时间格式工龄与工时的计算
  17. VM虚拟机安装CentOS7系统后连接不上网络的问题(service netword restart)重启网卡和重置网络编译器
  18. https 加密、http2.0、keep-alive
  19. C语言元祖图片,C类(元祖)蛋糕.doc
  20. matlab中增大迭代次数,贝叶斯优化matlab

热门文章

  1. 输入自动提示——《超级处理器》应用
  2. [图形学] 《Real-Time Rendering》碰撞检测(二)
  3. E - 小鑫の日常系列故事(一)——判断对错
  4. 如何实现简单的三子棋小游戏(改两个数就可以变为五子棋)
  5. 子苗教育:抖音比较火的创业项目有哪些?
  6. 【代码实践】R语言,ugarchspec函数(待完善)
  7. 摄影十大基本名词解析
  8. QT 项目 实现基于TCP的文件服务器/客户端,支持上传和下载
  9. Windows系统端口被占用解决方法
  10. 国美新动作“真选”“严选”赋能 多维度护航品质消费