-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
All the reference sources should be non-silent #94
Comments
@DavidDiazGuerra I think you are right but we wanted to just warn users instead of creating NaN values. But maybe we convert this into a warning then? Feel free to provide a PR |
Cool! I can do a PR, but just a couple of questions before:
|
Thinking more about it, nans can't be stored in json, can it? |
I think JSON doesn't support NaNs officially, but |
Ha. Thanks for the reminder. |
I was working in a PR about this and I realized that the function |
Maybe @aliutkus can chime in? |
The issue of evaluating separation when some target(s) are identically zero is ill defined with bsseval metrics and I have been having discussions forever with many people on how to address that, with no clear consensus emerging. Removing the zero targets as I understand you suggest is creating a problem of its own due to corresponding estimates possibly not being zero and hence comprising interferences from other sources. My opinion today is: museval/bsseval shouldnt make such design decision and should raise an error (as they do now) when some targets are identically zero. The message could maybe be better though indeed. Then, a user may totally code some workaround of her/his own handling such cases the desired way. |
I was proposing just letting the library compute the metrics according to their definitions, so SDR and SIR are I think allowing silent targets is important when working on systems that try to separate more instruments than just the 4 stems of DMX or when working with other music genres, since in those situations allowing only tracks with all the instruments would dramatically limit the size of our datasets. I'm not sure how easy coding a workaround is without modifying the code of the library itself. I think one of the most interesting things about this library is that authors working on music source separation can use a "standard" set of metrics with the same implementation so it is easier to compare their results, but having each author doing their own workaround would break this. You can check the details of what I'm proposing in the last commit of my fork DavidDiazGuerra@353247e. I think this could be the default behavior of the library since it doesn't change any results computed before the change (it just allows computing results in situations that raised an error in the past) and it's just doing the same that the library already does when some frames of a target are silent, but another option could be adding some kind of |
Hi, returning inf/nan in that case looks totally legit to me, in which case the error could be changed by a warning |
Hi, sorry for the late reply, I went on holidays and then forgot about this. I can do a PR with the accepted solution, but I still have this doubt:
Just let me know what to do if |
Hello,
If you call to
museval.eval_mus_track
with at least one of the references being completely silent, you get aValueError
saying that:I do not understand the reasons for this. According to the error message ("Otherwise we can add infinitely many all-zero sources") it seems to be related to some kind of permutation invariance problem but, since both the references and the estimates are labeled when calling to
museval.eval_mus_track
, there is no need to solve any permutation to compute the metrics.I've tried to comment this part of the code and let the
museval.eval_mus_track
run. The result is that the SDR isNaN
in all the frames of the silent references and therefore the aggregated metrics for those references are alsoNaN
so they will be ignored when computing the aggregated metrics of the dataset. This seems to be a quite reasonable behavior to me. Is there something that I'm missing here or the need for all the references to be non-silent is indeed not real?I guess another option would be just removing the silent references before calling to
museval.eval_mus_track
. How would this affect the aggregated metrics for the whole dataset?Thanks,
David
The text was updated successfully, but these errors were encountered: