Replies: 2 comments
-
Hi @antortjim, We have a discussion about this in the SLEAP paper here. Basically, we chose a conservative value that is based on the "easiest" keypoint from human pose data. This means that the OKS estimates in SLEAP are likely to be underestimates of the true value because we assume all keypoints To derive the actual correct values, you'd need to have many samples of the same pose being labeled, which is a huge pain. Let me know if that helps or if you have any q's! Talmo |
Beta Was this translation helpful? Give feedback.
-
Thank you Talmo, I forgot that I should not just check the docs but of course also the paper! It makes sense, thanks again! For completeness, in case someone wants to also do this at some point, to evaluate the model ignoring some body parts:
|
Beta Was this translation helpful? Give feedback.
-
Hi SLEAP devs!
I was wondering how was the standard deviation used to compute the OKS chosen
Having a look at the code, I see the ki parameter from https://arxiv.org/pdf/1707.05388 (the Gaussian standard deviation) is implemented in SLEAP here
sleap/sleap/nn/evals.py
Line 134 in 0134ab4
as the
stddev
argument, which by default is 0.025. I see the function expects either a unique value for all body parts (keypoints) or a list of numbers, one for each body part. However, going through the call chain that leads me to compute_oks, I could not findstddev
being computed from the data anywheresleap/sleap/nn/evals.py
Line 750 in 0134ab4
i.e. simply the ground truth and predictions are passed, but not the standard deviation nor the scale.
I also found this discussion over here that refers to the same function, and also only passes the ground truth and predicted labels
#1253 (comment)
From the OKS preprint:
So I understand the standard deviation should be computed from a set of redundant labels, i.e. labels that have been labeled more than once, as a way to estimate human error. My SLEAP labels do not have any redundancy, so I am guessing I need to use a predefined and constant standard deviation (which probably is the 0.025 value in the code). My question is then how was this
stddev
value picked?Thanks again for your great support, really helpful 🙏
Antonio
PS I have a pretty bad Precision-Recall curve OKS @ 0.90 but I suspect it is coming from some challenging body parts that are luckily not essential for my purpose. So I was wondering if I can recompute the metrics plots from https://sleap.ai/notebooks/Model_evaluation.html using only a subset of the skeleton (with the key body parts). In other words, I want to know whether a bad curve at high OKS is coming from all body parts in general or if as I suspect, it is coming from a few very challenging ones.
Beta Was this translation helpful? Give feedback.
All reactions