반응형
Traceback (most recent call last):
File "smplifyx/main.py", line 206, in <module>
main(**args)
File "smplifyx/main.py", line 196, in main
**args)
File "/home/kwu/Desktop/chun/my_repo/SMPLify-X/smplifyx/fit_single_frame.py", line 377, in fit_single_frame
use_vposer=use_vposer)
File "/home/kwu/Desktop/chun/my_repo/SMPLify-X/smplifyx/fitting.py", line 202, in run_fitting
loss = optimizer.step(closure)
File "/home/kwu/anaconda3/envs/test16/lib/python3.6/site-packages/torch/optim/optimizer.py", line 89, in wrapper
return func(*args, **kwargs)
File "/home/kwu/Desktop/chun/my_repo/SMPLify-X/smplifyx/optimizers/lbfgs_ls.py", line 280, in step
orig_loss = closure()
File "/home/kwu/Desktop/chun/my_repo/SMPLify-X/smplifyx/fitting.py", line 262, in fitting_func
1, -1) if use_vposer else None
File "./VPOSER_CKPT/vposer_smpl.py", line 114, in decode
if output_type == 'aa': return VPoser.matrot2aa(Xout)
File "./VPOSER_CKPT/vposer_smpl.py", line 152, in matrot2aa
pose = tgm.rotation_matrix_to_angle_axis(homogen_matrot).view(batch_size, 1, -1, 3).contiguous()
File "/home/kwu/anaconda3/envs/test16/lib/python3.6/site-packages/torchgeometry/core/conversions.py", line 233, in rotation_matrix_to_angle_axis
quaternion = rotation_matrix_to_quaternion(rotation_matrix)
File "/home/kwu/anaconda3/envs/test16/lib/python3.6/site-packages/torchgeometry/core/conversions.py", line 302, in rotation_matrix_to_quaternion
mask_c1 = mask_d2 * (1 - mask_d0_d1)
File "/home/kwu/anaconda3/envs/test16/lib/python3.6/site-packages/torch/tensor.py", line 528, in __rsub__
return _C._VariableFunctions.rsub(self, other)
RuntimeError: Subtraction, the `-` operator, with a bool tensor is not supported. If you are trying to invert a mask, use the `~` or `logical_not()` operator instead.
다른 사람이 github에 올려놓은 코드를 쓰려고 보면 다음과 같은 에러가 발생할 때가 있다.
정확히는 사용자가 쓰고있는 가상환경의 torchgeometry 라는 library에서 문제가 생기는 것으로 해결방법은 간단하다.
다음의 파일을 수정하면 된다.
/home/kwu/anaconda3/envs/[가상환경이름]/lib/python3.6/site-packages/torchgeometry/core/conversions.py
L301~304의 코드를 아래의 코드로 수정한다.
mask_c0 = mask_d2.float() * mask_d0_d1.float()
mask_c1 = mask_d2.float() * (1 - mask_d0_d1.float())
mask_c2 = (1 - mask_d2.float()) * mask_d0_nd1.float()
mask_c3 = (1 - mask_d2.float()) * (1 - mask_d0_nd1.float())
위 에러해결법은 다음 링크에서 참고했다.
https://github.com/mks0601/I2L-MeshNet_RELEASE/issues/6
반응형