sigsep mus数据库的评估工具
museval的Python项目详细描述
博物馆
一个python包,用于使用musdb18数据集评估源代码分离结果。该软件包是信号分离评估活动(SISEC)的MUS任务的一部分。
BSSEVAL指标,正如在Matlab工具箱中实现的那样,在音频分离文献中广泛使用的是Matlab工具箱及其在中的重新实现。bsseval的一个特殊性是通过线性失真滤波器将估计值与真实源进行最佳匹配后计算度量。这使得准则对某些线性不匹配具有鲁棒性。除了对源的所有可能的排列进行可选的求值外,这种匹配是bsseval的大部分计算成本的原因,特别是考虑到在按框架计算度量时,对每个求值窗口都进行了匹配。 对于这个包,我们启用了具有时不变失真滤波器的选项,而不必像以前版本的bss eval那样将它们视为随时间变化的。首先,启用此选项可显著降低评估的计算成本,因为整个信号只需进行一次匹配。其次,它在评估中引入了更多的动态特性,因为时变匹配滤波器会过度估计性能。第三,这使得匹配更加可靠,因为真实的源在整个录制过程中都不会保持静音,而它们通常是用于短窗口的。 您可以使用pip安装 这个包的目的是评估源代码分离结果并写出有效的bsseval v4
安装
软件包安装
museval
分析包:pip install museval
用法
json
文件。我们希望鼓励用户使用这种评估输出格式作为共享源分离结果的标准化方式。museval
设计用于与mus db
单独的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计算您的 每个轨迹的分数也可以聚合在pandas数据框中,以便于分析或创建箱线图。
若要在数据帧中聚合多个轨迹,请创建 添加所有曲目后,可以使用 要比较多个方法,请创建一个 为了与来自SISEC MUS 2018的参与者进行比较,我们提供了一种方便的方法,使用 通过调用 :bulb:使用 如果您不想设置一个python环境来运行评估,我们建议使用docker。假设您已经计算了您的估计值并在您的计算机中安装了Docker,您只需要在终端中运行以下两行: 从DockerHub中提取我们预编译的 要在Docker内部运行计算,需要三条绝对路径: 我们只需使用 在上面的行中,用设置的绝对路径替换 :警告: a.如果在源代码分离评估的上下文中使用museval,比较一个方法,则o其他方法,请引用 b.如果您将软件用于任何其他目的,您可以引用软件版本估计值并将结果写入
输出目录
。为了方便起见,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)
汇总和分析得分
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")
方法按需加载现有分数。add_sisec18()
。对于曲线图和统计显著性测试的创建,我们参考示例列表。
命令行工具
mus eval
命令行工具,我们提供了eval mus_dir
的命令行包装器。下面的示例与上面的代码示例等效:museval -p --musdb path/to/musdb -o path/to/output_dir path/to/estimate_dir
--iswav
标志来使用解码的wavmusdb数据集。使用Docker进行评估
sigsep mus eval
image
<H4>2。运行评估docker pull faroit/sigsep-mus-eval
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
EstimateSdir
、MusDbdir
和OutputDir
。请注意Docker需要绝对路径,因此您必须依赖命令行环境将相对路径转换为绝对路径(例如,在Unix上使用$home/
。museVal
需要大量内存用于计算。评估musdb18的所有五个目标可能需要超过4GB的RAM。如果使用museval
中的-p
开关使用多处理,则会产生16GB的RAM。建议调整Docker首选项,因为Docker容器可能会在内存不足时退出。参考文献
@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"
}
推荐PyPI第三方库