用人工智能画音乐
简介
P人工智能nting Music是我们与视觉艺术家Kate Steenhauer共同开发的一个项目。我们开发了一个使用图像处理和人工智能的系统,它可以实时地将现场绘画的过程转换为每一场表演所独有的乐谱(见图1现场表演时拍摄的照片)。这最初是一个本科生荣誉项目的一部分,关注的问题是“人工智能是好还是坏?”从那时起,原型系统已经在一个演出中使用;为此制作了一个20分钟的短片;作为期刊论文发表过的;我们还被邀请参加了几次网络研讨会(链接如下)。在这篇博客文章中,我们希望提供对系统内部流程的洞察,我们在开发过程中遇到的挑战,以及最后我们如何能够将视觉输入转换为音频输出。
资源
在YouTube上画音乐 | 绘画音乐博客 | 网络研讨会 | 期刊论文 |
https://katesteenhauer.com/painting-music/ | 翻到第十二集 | 制图:研究、理论、实践 |
概述
图像捕获和实用设置
除了开发软件之外,我们还必须克服几个实际的挑战。通过将Go Pro相机连接到画布上方的装置(见下图),图像捕获问题得到了解决。
我们能够通过MATLAB与Go Pro相机进行无线通信,使用MATLAB社区为此开发的库,这使得系统在Kate绘制每个元素时由Jack在她的指挥下控制。在排练过程中,我们需要在画布的两侧添加灯光,我们发现阴影会对图像的捕捉和产生的音乐输出产生不希望的影响。
图像分析和数据集收集
我们能够获得超过1300张凯特之前画过的不同元素的艺术作品的图像。这为我们提供了足够的数据集来训练自组织地图。一个物体的例子和它们来自的艺术品可以在下面看到。
图4:完成的绘画和示例图像元素提取。图片©Kate Steenhauer
下一步是确定我们可以从各种对象中提取什么特征,以及我们如何将它们与音乐输出关联起来。下表给出了一些我们得出的相关性的例子。请注意,这些属性并不意味着艺术和音乐之间的实际关系,这些只是我们为了在两个领域之间创建关系而定义的关系,以便能够创造音乐。此外,还有很多方面,我们希望在未来包括,比如绘画对象的对称性,或者绘画本身的自相似性。请注意,原则上也可以从音乐到绘画(即从音乐元素创作一幅画),尽管这是未来的研究领域。
下面的代码片段来自我们开发的一个特征提取函数,用于从图像中提取数据,以构建我们的训练和测试集。在实时性能中使用了一个类似的脚本,从Go Pro捕获的图像中提取数据。首先,对图像进行处理imread,然后裁剪,以删除任何外部的画布使用imcrop在传递到进一步的函数进行特征提取之前。特征提取函数使用一个选项变量来定义要处理的图像分析的哪些方面,这些方面是二进制标志,表示是否应该进行处理。
如果选项。PixelUsedCount图像中黑白像素的%计数BW = imbinalize (thisImage);thisFeatureAnalysis.BlackPixels =总和(BW (:));thisFeatureAnalysis.WhitePixels =(元素个数(BW) -thisFeatureAnalysis.BlackPixels) /元素个数(BW);thisFeatureAnalysis.BlackPixels = thisFeatureAnalysis.BlackPixels /元素个数(BW);结束if选项。FrequencyAnalysis对图像进行分组频率分析[thisFeatureAnalysis.FrequencyBins, thisFeatureAnalysis.RawFFT2] = FrequencyAnalysis(由NumberOfBins);结束if选项。BinGreyscale%对图像进行bin灰度分析thisFeatureAnalysis.GreyLevels = imhist(由(:),NumberOfBins);%除以和的结果是箱子是%thisFeatureAnalysis.GreyLevels = thisFeatureAnalysis.GreyLevels / max (thisFeatureAnalysis.GreyLevels);结束
人工智能模型
我们使用自组织映射来分析输入的艺术属性数据并驱动音乐输出。利用深度学习工具箱,可以方便地对SOM进行训练、可视化和测试。下面的代码片段显示了开发完训练数据后的训练过程。对于绘画音乐应用程序,我们选择了36节点的SOM。这为绘画元素提供了充分的区分,这反过来意味着节点不太专门于它们为每个绘画元素学习的内容。这在使用SOM的输出时很有帮助,因为这为等效的音乐元素提供了一个范围,在实时运行时为进程提供了一些选择,并防止为相似的对象生成完全相同的音符。
SOM = selforgmap([6 6]);SOM =火车(SOM,ImageFeatures);视图(SOM)
使用工具箱中提供的几个解释工具,我们能够看到触发每个节点的属性类型。这允许我们为每个节点分配音乐属性。下图显示了训练数据集的样例命中,以及在执行过程中可能触发的各种节点。
为了进一步研究SOM如何区分绘制的对象,我们将两个随机绘制的对象传入系统,并观察SOM的输出(参见下面的表1)。
表1 -随机选择对象的SOM测试
上表所示的结果表明,SOM能够区分绘制的物体。这一结论是通过检查SOM Hits Plots(见表1的下一行)得出的。通过对SOM权重进行进一步深入分析,我们发现表1左列所示的绘制对象在频率上具有更高的方差,但所覆盖的空白少于表1右列所示的绘制对象。
音乐处理模型
使用建立的相关性和SOM的输出节点,我们能够通过使用MIDI提供可听到的输出。所触发的SOM的权重被用来定义每个属性的值范围,这些属性具有如上表所示的等效音乐属性。举个例子,Kate画的一个元素被映射到一个具有低频特征的节点上,然后这些节点被用来驱动同样是低音的音符的选择——或者如果创建一个和弦或和声,那么就使用一个低音的音符来实现这个目的。
MIDI允许我们在旋律生成中选择不同的乐器,也允许我们使用与上表中描述的属性相关的数字来选择音符,这些数字是由SOM中的获胜节点定义的。音乐制作的初始模拟表明,我们需要一些额外的结构来引导系统生成稍微更悦耳的音乐。我们决定使用一种称为马尔可夫链的数学模型来帮助指导系统生成更好的音乐。通过从Musescore.com等网站下载MIDI文件形式的乐谱,我们能够计算出来自披头士、巴赫和贝多芬的音乐的马尔可夫链模型的数量,我们用它们来生成和弦和和声。
最近的发展
我们在执行过程中遇到的一个问题是油漆干燥对过程的特征提取阶段的影响。干燥会导致颜料的颜色轻微变化,所以当将新图像与旧图像进行比较时(在元素去除过程中),系统会将颜色的新变化解释为新元素。为了防止这种情况,我们记录了元素已经绘制的区域。当一个新的元素被绘制,我们能够删除任何形状,因为油漆的干燥。下面的代码片段展示了我们是如何做到这一点的。
总结与未来发展
这个项目最初的目的是展示人工智能的力量。这种表现鼓励个体质疑自己对AI的立场(AI是好还是坏?)我们现在正在为凯特建立一个定制的、可移动的系统,使她能够独立地使用绘画音乐系统进行表演。在此之后,我们将寻求进一步增强系统所创造的音乐输出,并生成不同类型的音乐(如舞曲或蓝调),并开发解决我们在原始表演中所面临的问题的方案。万博 尤文图斯例如,我们正在寻找解决的一个问题是重新对齐画布,如果相机已经意外移动出它的原始位置。我们坚信绘画音乐有许多应用,从艺术和娱乐(互动个人音乐生成)到医疗保健(艺术治疗);我们将继续开发该系统,并探索这些应用。
- 类别:
- 深度学习
评论
如欲留言,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。