My project is looking to estimate the yaw angle of a Wind Turbine relative to the camera. My idea was to extract the Blade Tips as Keypoints, which I can then use to calculate the excentricity of an elllipse formed by the rotating tips and relate the excentricity to the angle. However I am not able to get my keypoint detection accurate enough, see pics:
Each keypoint is like a class of its own. So the model will try to learn what makes one keypoint distinct from the other within the same object. In your case, there’s no distinction between the keypoints and the assignment is arbitrary. You can try labeling each blade as a new object instead.
It’s great to see your project applying keypoint detection to estimate the yaw angle of wind turbines!
Regarding the accuracy of your keypoint detection, the rotational symmetry could indeed be a factor influencing the results. The similarity between blade tips might make it challenging for the model to distinguish each tip uniquely.
Since you are looking to improve keypoint detection, I recommend reviewing the Keypoints class documentation, where you can find detailed information on attributes and methods for handling keypoint data which includes coordinate manipulation and confidence values. You can also explore the calculate_keypoints_loss function to get a better understanding of how the keypoint loss is computed, which can be helpful.
Just a quick update on this: The problem was indeed, as suspected here, the rotational symmetry.
In a research project, we solved this problem by treating the keypoints as an unordered set and implementing a permutation-invariant loss function. This way, it doesn’t matter to the model which tip is identified as which, as long as the positions of all tips are correct.
We have published the method and the results in a paper. If you’re interested, you can have a look here: