sigsep mus数据库的评估工具

museval的Python项目详细描述


博物馆

生成状态最新版本支持的python版本

一个python包,用于使用musdb18数据集评估源代码分离结果。该软件包是信号分离评估活动(SISEC)的MUS任务的一部分。

bsseval v4

BSSEVAL指标,正如在Matlab工具箱中实现的那样,在音频分离文献中广泛使用的是Matlab工具箱及其在中的重新实现。bsseval的一个特殊性是通过线性失真滤波器将估计值与真实源进行最佳匹配后计算度量。这使得准则对某些线性不匹配具有鲁棒性。除了对源的所有可能的排列进行可选的求值外,这种匹配是bsseval的大部分计算成本的原因,特别是考虑到在按框架计算度量时,对每个求值窗口都进行了匹配。

对于这个包,我们启用了具有时不变失真滤波器的选项,而不必像以前版本的bss eval那样将它们视为随时间变化的。首先,启用此选项可显著降低评估的计算成本,因为整个信号只需进行一次匹配。其次,它在评估中引入了更多的动态特性,因为时变匹配滤波器会过度估计性能。第三,这使得匹配更加可靠,因为真实的源在整个录制过程中都不会保持静音,而它们通常是用于短窗口的。

安装

软件包安装

您可以使用pip安装museval分析包:

pip install museval

用法

这个包的目的是评估源代码分离结果并写出有效的json文件。我们希望鼓励用户使用这种评估输出格式作为共享源分离结果的标准化方式。museval设计用于与mus db工具和musdb18数据集结合使用(但是,也可以不使用musdb。

单独的MUSDB18轨迹和动态评估

  • 如果要在处理源分离结果时执行计算,可以使用musdb跟踪对象。 下面是这样一个函数的示例,它将混合音分为人声伴奏音轨:
importmusdbimportmusevaldefestimate_and_evaluate(track):# assume mix as estimatesestimates={'vocals':track.audio,'accompaniment':track.audio}# Evaluate using musevalscores=museval.eval_mus_track(track,estimates,output_dir="path/to/json")# print nicely formatted and aggregated scoresprint(scores)mus=musdb.DB()fortrackinmus:estimate_and_evaluate(track)

确保设置了"输出目录"。museval将在该文件夹中重新创建musdb文件结构,并将评估结果写入该文件夹。

延迟评估musdb18曲目R

如果您已经计算了您的估计值,我们将为您提供一个易于使用的函数,以便在之后处理评估结果。

只需使用mus eval.eval_mus_dir计算您的估计值并将结果写入输出目录。为了方便起见,eval_mus_dir函数接受musdb.run()的所有参数。这样,例如,通过设置parallel=true可以很容易地启用多处理功能

importmusdbimportmuseval# initiate musdbmus=musdb.DB()# evaluate an existing estimate folder with wav filesmuseval.eval_mus_dir(dataset=mus,# instance of musdbestimates_dir=...,# path to estimate folderoutput_dir=...,# set a folder to write eval json filessubsets="test",is_wav=False)

汇总和分析得分

每个轨迹的分数也可以聚合在pandas数据框中,以便于分析或创建箱线图。 若要在数据帧中聚合多个轨迹,请创建museval.evalstore()对象并依次添加轨迹分数。

results=museval.EvalStore(frames_agg='median',tracks_agg='median')fortrackintracks:# ...results.add_track(museval.eval_mus_track(track,estimates))

添加所有曲目后,可以使用print(results)显示聚合分数,结果可以保存为p and as dataframeresults.save('my_method.pandas')

要比较多个方法,请创建一个museval.methodstore()对象添加结果

methods=museval.MethodStore()methods.add_evalstore(results,name="XZY")

为了与来自SISEC MUS 2018的参与者进行比较,我们提供了一种方便的方法,使用方法按需加载现有分数。add_sisec18()。对于曲线图和统计显著性测试的创建,我们参考示例列表。

命令行工具

通过调用mus eval命令行工具,我们提供了eval mus_dir的命令行包装器。下面的示例与上面的代码示例等效:

museval -p --musdb path/to/musdb -o path/to/output_dir path/to/estimate_dir

:bulb:使用--iswav标志来使用解码的wavmusdb数据集。

使用Docker进行评估

如果您不想设置一个python环境来运行评估,我们建议使用docker。假设您已经计算了您的估计值并在您的计算机中安装了Docker,您只需要在终端中运行以下两行:

<H4>1。拉码头集装箱

从DockerHub中提取我们预编译的sigsep mus evalimage

docker pull faroit/sigsep-mus-eval
<H4>2。运行评估

要在Docker内部运行计算,需要三条绝对路径:

  • estimatesDir将代表估计目录的绝对路径。(例如/home/faroit/dev/mymethod/musdboutput
  • musdbdir代表musdb根文件夹的绝对路径。(例如/home/faroit/dev/data/musdb18
  • outputdir将代表输出目录的绝对路径。(例如/home/faroit/dev/mymethod/scores

我们只需使用-v标志将这些目录装载到docker容器中,然后启动docker实例:

docker run --rm -v estimatesdir:/est -v musdbdir:/mus -v outputdir:/out faroit/sigsep-mus-eval --musdb /mus -o /out /est

在上面的行中,用设置的绝对路径替换EstimateSdirMusDbdirOutputDir。请注意Docker需要绝对路径,因此您必须依赖命令行环境将相对路径转换为绝对路径(例如,在Unix上使用$home/

:警告:museVal需要大量内存用于计算。评估musdb18的所有五个目标可能需要超过4GB的RAM。如果使用museval中的-p开关使用多处理,则会产生16GB的RAM。建议调整Docker首选项,因为Docker容器可能会在内存不足时退出。

参考文献

a.如果在源代码分离评估的上下文中使用museval,比较一个方法,则o其他方法,请引用

@InProceedings{SiSEC18,
  author="St{\"o}ter, Fabian-Robert and Liutkus, Antoine and Ito, Nobutaka",
  title="The 2018 Signal Separation Evaluation Campaign",
  booktitle="Latent Variable Analysis and Signal Separation:
  14th International Conference, LVA/ICA 2018, Surrey, UK",
  year="2018",
  pages="293--305"
}

b.如果您将软件用于任何其他目的,您可以引用软件版本

doi

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Jetty 9.4发送到JSP的PUT请求的java显示自定义错误页   使用OSGi R6注释和Sling模型的java AEM 6.3   找不到请求操作的cassandra编解码器:[date<>java.util.date]   python中实现hashmap的java等效方法   java如何格式化Hadoop中Mapreduce编写的输出   java TabListener不工作   同一容器中战争之间的java进程内通信   java性能对加载最多30000条记录的相关下拉列表的影响   java Spring MVC在注册时发送电子邮件   java如何设置MongoTemplate集合映射   Java MongoDb:点表示法   java Jackson不会将@JsonProperty与@JsonPOJOBuilder或@JsonCreator一起使用   具有图像和兼容性的java Android布局