Closed cxzhou95 closed 4 years ago
你可以跳出heatmap的定义,offset从数学角度就是偏移向量,由距离和单位方向向量组成。
感谢答复,理解了……这个heatmap挺独特的……谢谢
Elody notifications@github.com于2020年5月3日 周日09:43写道:
- offset_ht * 30是为了加大closeness heatmap之间的差距
- offset_ht 是closeness heatmap,用kernel size是为了求出距离dis,关节点的计算公式是 coord+vec*dis,offset2joint和joint2offset互为逆过程
- offset_norm = offset / dis.unsqueeze(2) 是为了求单位方向向量,网络预测了offset_pred后,在offset2joint部分有对应的vec*dis部分,是你说的反归一化
你可以跳出heatmap的定义,offset从数学角度就是偏移向量,由距离和单位方向向量组成。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Elody-07/AWR-Adaptive-Weighting-Regression/issues/2#issuecomment-623040449, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIHI4L5IH75O4AI3W5FWPF3RPTD3HANCNFSM4MXY3HNA .
本人在阅读代码的时候,有些疑惑,希望作者可以抽空解答,谢谢!
util/feature_tool.py
Line 54: offset_ht = F.softmax(offset_ht 30, dim = -1) # (B, jt_num, FF) 这里的softmax为什么有“30”这个参数?
Line55: dis = kernel_size - offset_ht kernel_size # (B, jt_num, FF) offset_ht是预测出来的heatmap了,为什么要进行kernel_size - offset_ht * kernel_size这个操作。。。
我对3d pose estimation了解不多,这是我第一次深入看相关论文和代码。 根据我的理解,kernel_size - ||offset_vec_gt|| kernel_size (论文公式3)这个是用来生产heatmap_gt的吧,即距离joint_gt的点越近,其heatmap_gt值越大。如果我的理解正确的话,在test阶段,预测出来的offset_ht应该直接就可以使用了,不明白要进行kernel_size - offset_ht kernel_size这个操作。
还有Line 27 offset_norm = offset / dis.unsqueeze(2) # (B, jt_num, 3, F, F) 这里计算的应该是GT的offset,这里的offset能归一化吗?假设coord_jt = (0.1, 0.2, 0.2), gt_jt = (0.2, 0.3, 0.4), offset = gt_jt - coord_jt = (0.1, 0.1, 0.2), dis = sqrt(0.12+0.11+0.2**2) = 0.24, offset_norm = offset / dis = (0.1, 0.1, 0.2) / 0.24 = (0.42, 0.42, 0.84). 问题在于你网络预测时offset_pred=(0.42, 0.42, 0.84), 怎么把他反归一化,回到(0.1, 0.1, 0.2)呢?
期望作者能够进行指正,谢谢!