aim-uofa/Poseur

About RLELoss_poseur

liza-li opened this issue · 1 comments

Here's a question about RLELoss_poseur that confuses me a lot
In mmpose, The pred_jts are not processed in any way,and passing sigma through the sigmoid function,like this:
pred = output[:, :, :2]
sigma = output[:, :, 2:4].sigmoid()
then,we can calculate the error (or bar_mu in Poseur):
error = (pred - target) / (sigma + 1e-9)
However, I notice that the operation in Poseur .
outputs_coord = tmp.sigmoid()
outputs_sigmas = torch.stack(outputs_sigmas).sigmoid()
Could you tell me why we need to use the extra sigmoid function when getting the coordinates.
Is there something I missed or misunderstood?

sigmas must be a number larger than 0, moreover, we don't want a too large sigma. so there is a sigmoid to regulize it.
for 'outputs_coord = tmp.sigmoid()', we refer to deformable detr. they use sigmoid to limit the coord