I have trained a network that obtains key points of the face by supervising the generation of heatmaps.The network uses the max operation to obtain 68 key point coordinates of the face from the key point heat map with 68 channels output by FCN. At present I want to combine this network with another network to train together, but the max operation used before is not differentiable, so I want to replace the max operation with dsnt.
So I use batch_location_dsnt = dsntnn.dsnt(heatmap) (the heatmap is obtained by FCN, it's a 68 * 1 * 16 * 16 tensor)
but the batch_location_dsnt I obtained is
[[ -0.6683, -0.0225]],
[[ -0.7003, 0.1874]],
[[ -0.7120, 0.5027]],
[[ -0.6451, 0.7451]],
[[ -0.5105, 1.0081]],
[[ -0.4522, 1.1898]],
[[ -0.2934, 1.2817]],
[[ -0.0759, 0.9567]],
[[ 0.1304, 1.0607]],
[[ 0.3462, 1.4314]],
[[ 0.7308, 1.3509]],
[[ 0.8871, 1.0625]],
[[ 1.1645, 0.7980]],
[[ 1.4735, 0.5973]],
[[ 1.3658, 0.1797]],
[[ 1.2114, -0.1012]],
[[ -0.7434, -0.7085]],
[[ -0.6286, -0.7392]],
[[ -0.4630, -0.7343]],
[[ -0.2988, -0.6485]],
[[ -0.1515, -0.5185]],
[[ 0.0185, -0.5908]],
[[ 0.3039, -0.6446]],
[[ 0.5553, -0.6704]],
[[ 0.8032, -0.6359]],
[[ 0.9848, -0.4610]],
[[ -0.1231, -0.3595]],
[[ -0.2189, -0.2581]],
[[ -0.2404, -0.0784]],
[[ -0.3306, 0.1073]],
[[ -0.4281, 0.2564]],
[[ -0.3071, 0.3424]],
[[ -0.2748, 0.3945]],
[[ -0.1277, 0.3686]],
[[ 0.0404, 0.3399]],
[[ -0.5630, -0.4150]],
[[ -0.4809, -0.4761]],
[[ -0.3541, -0.4953]],
[[ -0.2261, -0.3877]],
[[ -0.4000, -0.3473]],
[[ -0.5188, -0.3881]],
[[ 0.2428, -0.3442]],
[[ 0.4070, -0.3346]],
[[ 0.5273, -0.3868]],
[[ 0.7190, -0.2441]],
[[ 0.5536, -0.2888]],
[[ 0.4207, -0.2777]],
[[ -0.3997, 0.7421]],
[[ -0.3004, 0.5801]],
[[ -0.3018, 0.5292]],
[[ -0.1713, 0.4833]],
[[ -0.0893, 0.4787]],
[[ 0.0906, 0.6432]],
[[ 0.3095, 0.7009]],
[[ 0.1567, 0.8734]],
[[ -0.0456, 1.1209]],
[[ -0.1621, 1.0680]],
[[ -0.2678, 1.0100]],
[[ -0.3905, 0.8635]],
[[ -0.3840, 0.7459]],
[[ -0.2615, 0.6243]],
[[ -0.1569, 0.5345]],
[[ -0.1064, 0.6030]],
[[ 0.2071, 0.6364]],
[[ -0.0748, 0.8947]],
[[ -0.1838, 0.7509]],
[[ -0.2617, 0.8739]]], device='cuda:0', grad_fn=<CatBackward>)`
Obviously,[-0.5989, -0.2222] doesn't look like coordinates,Why is dsnt not outputting the maximum x and y coordinates like the max operation? How can I get the correct coordinates of the key points?
I have trained a network that obtains key points of the face by supervising the generation of heatmaps.The network uses the max operation to obtain 68 key point coordinates of the face from the key point heat map with 68 channels output by FCN. At present I want to combine this network with another network to train together, but the max operation used before is not differentiable, so I want to replace the max operation with dsnt.
So I use
batch_location_dsnt = dsntnn.dsnt(heatmap)(the heatmap is obtained by FCN, it's a 68 * 1 * 16 * 16 tensor)but the batch_location_dsnt I obtained is
`tensor([[[ -0.5989, -0.2222]],
Obviously,[-0.5989, -0.2222] doesn't look like coordinates,Why is dsnt not outputting the maximum x and y coordinates like the max operation? How can I get the correct coordinates of the key points?