I wanted to let you know about an inconsistency in the code.
The code seems to contain two normal losses:
get_normal_l1_loss, which actually computes an angular loss, as pointed out in Equation 12 of your paper. This name seems confusing, as it does not compute the L1 normal loss.
However, the loss computation in forward uses loss 1 above twice (see this line), weighted by (self.normal_weight + self.angular_weight), and loss 2 above is not used at all.
I wanted to let you know about an inconsistency in the code.
The code seems to contain two normal losses:
get_normal_l1_loss
, which actually computes an angular loss, as pointed out in Equation 12 of your paper. This name seems confusing, as it does not compute the L1 normal loss.get_normal_angular_loss
, which actually computes the truncated scaled angle.However, the loss computation in
forward
uses loss 1 above twice (see this line), weighted by(self.normal_weight + self.angular_weight)
, and loss 2 above is not used at all.