boycehbz / DMMR

The code for 3DV 2021 paper "Dynamic Multi-Person Mesh Recovery From Uncalibrated Multi-View Cameras"
MIT License
78 stars 6 forks source link

RuntimeError: einsum(): operands do not broadcast with remapped shapes [original->remapped] #1

Closed WhitKey closed 2 years ago

WhitKey commented 2 years ago

hello, when i run the code and got error above, could you help me understand how to fix the bug? thanks a lot!

here is the error: Traceback (most recent call last): File "main.py", line 56, in main(args) File "main.py", line 33, in main setting = load_camera(data, setting, args) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\utils\module_utils.py", line 694, in load_camera extris = extris_est(spin, data, data_folder, intris) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\utils\module_utils.py", line 570, in extris_est output, vert = spin(norm_img) File "C:\Users\black\anaconda3\envs\dmmr\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(*input, kwargs) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\SPIN\spin.py", line 33, in forward pred_output, verts = self.smpl(betas=pred_betas, body_pose=pred_rotmat[:,1:], global_orient=pred_rotmat[:,0].unsqueeze(1), pose2rot=False) File "C:\Users\black\anaconda3\envs\dmmr\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(*input, *kwargs) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\SPIN\smpl.py", line 19, in forward smpl_output = super(SMPL, self).forward(args, kwargs) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\smplx\body_models.py", line 376, in forward self.lbsweights, pose2rot=pose2rot, dtype=self.dtype) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\smplx\lbs.py", line 179, in lbs v_shaped = v_template + blendshapes(betas, shapedirs) File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\smplx\lbs.py", line 268, in blend_shapes blend_shape = torch.einsum("bl,mkl->bmk", betas, shape_disps) File "C:\Users\black\anaconda3\envs\dmmr\lib\site-packages\torch\functional.py", line 327, in einsum return _VF.einsum(equation, operands) # type: ignore[attr-defined] RuntimeError: einsum(): operands do not broadcast with remapped shapes [original->remapped]: [1, 10]->[1, 1, 1, 10] [6890, 3, 300]->[1, 6890, 3, 300]

boycehbz commented 2 years ago

Thanks for your interest! It seems that you may use an incorrect SMPL model. The dimensions of betas and shapedirs are [1, 10] and [6890,3,10] in File "C:\NVR\MeshRecovery\mvsmpl\DMMR-main\core\smplx\lbs.py", line 268, in blend_shapes: blend_shape = torch.einsum("bl,mkl->bmk", betas, shape_disps). You can check whether the SMPL is the NEUTRAL model downloaded from the official SMPLify website https://download.is.tue.mpg.de/download.php?domain=smplify&resume=1&sfile=mpips_smplify_public_v2.zip. The original file name is basicModel_neutral_lbs_10_207_0_v1.0.0.pkl. You can rename the .pkl and put it in models/smpl Please let me know if you have another problem.

WhitKey commented 2 years ago

i can run the code successfully, thanks for help!