SeanChenxy / HandMesh

MIT License
341 stars 68 forks source link

cmr-human36m demo error #49

Closed lvZic closed 2 years ago

lvZic commented 2 years ago

这个函数报错: vertex, align_state = registration(vertex, uv_point_pred[0], self.j_regressor, data['K'][0].cpu().numpy(), args.size, uv_conf=uv_pred_conf[0], poly=poly)

ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 6890 is different from 778)

self.j_regressor 长度是778, vertex长度是6890,这里是36m body的点数?要加个转换为778个hand的vertex吧? 还是argcs里我忽略了某些参数?

SeanChenxy commented 2 years ago

Hi,可以尝试把args.dataset设置为Human36M

lvZic commented 2 years ago

Hi,可以尝试把args.dataset设置为Human36M

感谢回复

    parser.set_defaults(phase='demo')
    parser.set_defaults(exp_name='cmr_pg')
    parser.set_defaults(backbone='ResNet18')
    #parser.set_defaults(dataset='FreiHAND')
    parser.set_defaults(dataset='Human36M')
    parser.set_defaults(model='cmr_pg')
    parser.set_defaults(device_idx = [0])   
    parser.set_defaults(resume=  'cmr_pg_res18_h36m.pt')   

    # parser.set_defaults(size=256)
    # parser.set_defaults(att='yes')
    # parser.set_defaults(ds_factors = [3.5, 3.5, 3.5, 3.5] )

这是我测试cmr-human36m demo的参数,应该是没错的,但报错 (size 6890 is different from 778)

SeanChenxy commented 2 years ago

抱歉,demo没有适配body数据。需要debug一下,确保j_regressor是从Human36M中拿到的。 https://github.com/SeanChenxy/HandMesh/blob/47e860cc046e4d36aad244fb8291e4ccf59a32a9/cmr/runer.py#L39 另外

bounds = ((None, None), (None, None), (1, 8))
poly_protect = [1.0, 0.5]
lvZic commented 2 years ago

抱歉,demo没有适配body数据。需要debug一下,确保j_regressor是从Human36M中拿到的。

https://github.com/SeanChenxy/HandMesh/blob/47e860cc046e4d36aad244fb8291e4ccf59a32a9/cmr/runer.py#L39

另外

bounds = ((None, None), (None, None), (1, 8))
poly_protect = [1.0, 0.5]

human36m 的j_regressor及output都是17个关节点,demo中都是按照21个点处理的,换成human36m之后报错地方很多

sysu19351054 commented 2 years ago

同样是在跑human36m时出现报错,可以问一下这个问题怎么解决吗? File "/home/3DHandReconstruction2/HandMesh-main/cmr/datasets/Human36M/human36m.py", line 306, in getitem rot_aug_mat = np.array([[np.cos(np.deg2rad(-rot)), -np.sin(np.deg2rad(-rot)), 0], ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (3, 3) + inhomogeneous part.

SeanChenxy commented 2 years ago

再次抱歉这个repo对人体数据的适配并不是很好,我最近没有时间debug Human3.6M。请参见其他针对人体的工作的code。

socrates6708 commented 5 months ago

現在有時間debug嘛~