zju3dv / EasyMocap

Make human motion capture easier.
Other
3.67k stars 454 forks source link

测试MVMP时的一个问题 #155

Open WellTung666 opened 2 years ago

WellTung666 commented 2 years ago

你好,我们使用4个摄像头进行标定并测试MVPM时遇到下面的问题,请问要怎么解决呢?看见代码注释 “# 注意:这里的相机参数一定要用定义的,不然只用一部分相机的时候会出错”,这个是什么意思?我们现在使用的摄像头型号都一样所以只用了一个摄像头拍摄视频获取相机参数。谢谢 ~

Traceback (most recent call last): File "apps/demo/mvmp.py", line 72, in <module> dataset = MVMPMF(args.path, cams=args.sub, annot_root=args.annot, File "/media/tonglingwei/B4FAE28F099DE17A/Project/EasyMocap/easymocap/dataset/mvmpmf.py", line 18, in __init__ super().__init__(root, cams, out, config, image_root, annot_root, File "/media/tonglingwei/B4FAE28F099DE17A/Project/EasyMocap/easymocap/dataset/base.py", line 409, in __init__ self.read_camera(self.root) File "/media/tonglingwei/B4FAE28F099DE17A/Project/EasyMocap/easymocap/dataset/base.py", line 425, in read_camera self.cameras_for_affinity = [[cam['invK'], cam['R'], cam['T']] for cam in [self.cameras[name] for name in cams]] File "/media/tonglingwei/B4FAE28F099DE17A/Project/EasyMocap/easymocap/dataset/base.py", line 425, in <listcomp> self.cameras_for_affinity = [[cam['invK'], cam['R'], cam['T']] for cam in [self.cameras[name] for name in cams]] KeyError: '1'

chingswy commented 2 years ago

这里的报错是 有的相机的参数没有

WellTung666 commented 2 years ago

这里的报错是有相机的参数没有 非常感谢你的回答,但是我们使用check_calib.py检查棋盘格时是正常运行的,用相同的相机参数测试为什么会报错呢?

chingswy commented 2 years ago

使用的文件夹的名字和intri.yml里面的相机名字一样吗

WellTung666 commented 2 years ago

使用的文件夹的名字和intri.yml里面的相机名字一样吗 你好,检查后发现测试数据文件夹名字确实有不一样,现在已经能运行了,非常感谢你的帮助。

WellTung666 commented 2 years ago

再次打扰您了TAT,我们在运行 python3 apps/demo/mvmp.py ${data} --out ${data}/output --annot annots --cfg config/exp/mvmp1f.yml --undis --vis_det --vis_repro 命令的时候,keypoints2d和detec是正常输出,但是keypoints3d中的Json文件为空没有数据,repro中的图片也没3D点,请问可能是什么问题导致的,再次感谢~

chingswy commented 2 years ago

目前开源的版本使用了地面假设,会删除不在地面范围内的人。可能是这个原因。

WellTung666 commented 2 years ago

目前开源的版本使用了地面假设,会删除不在地面范围内的人。可能是这个原因。

地面假设是不是跟相机标定有关系呢?我们使用棋盘检查标定时结果正常,但是使用cube检查标定时会出现cube没有框住棋盘格的情况。外参使用的是摄像头拍摄地面固定不动的棋盘格视频,还是棋盘格需要移动之类的? 谢谢~

chingswy commented 2 years ago

cube 没有框柱棋盘格

可能是尺度问题,我使用的单位是米

WellTung666 commented 2 years ago

立方体 无框柱棋盘格

可能是问题米,我使用的单位是

你好,我们使用的也是米作为单位,仍然无法得到keypoints3d的数据;

棋盘格检测正常(如下图一),但是使用cube检查时0对应棋盘格的第0个点处似乎是正常的,但是0,1,2,3点是在正方形的上方好像与原文图片中的相反(原文0123点在下方)不知道时候会影响结果?

除此之外,cube与棋盘格的位置好像偏差较大(如下图三),这会不会是由于房间内的环境较为复杂导致的呢?

调整后 git git2

chingswy commented 2 years ago

你好 是否存在文件命名错误的问题? 图三中的cube的0号顶点的位置是正确的,朝向不对;图二中的cube顶点位置朝向都不对。 棋盘格的pattern定义是否正确。

WellTung666 commented 2 years ago

你好 是否存在文件命名错误的问题? 图三中的cube的0号顶点的位置是正确的,朝向不对;图二中的cube顶点位置朝向都不对。 棋盘格的pattern定义是否正确。

您指的文件命名错误是指?文件命名错误应该不存在,可以生成keypoints3d的JSON文件,只是文件里面没有数据。 早些时候的测试结果cube的0号顶点的位置都似乎都是正确的,但是朝想好像不对(图片在下方)。 git3 git4

我们使用的棋盘格是8x4的,格子边长7.2cm,使用的参数为 --pattern 7,4 --grid 0.072,不知道是否正确呢?还有棋盘格贴在一块板子上面,两边会有多出的部分,不知道是否会有影响?

非常感谢你的回答。

WellTung666 commented 2 years ago

你好,经过测试发现无法获得3D数据的可能与您之前说的地面假设有关系,我对代码修改获取3D数据并可视化后发现地面上没有人物,人物出现在地面下;这可能就是跟前面cube朝向不对有关,请问这种情况可能是什么原因造成的?我们已经按照教程多次标定相机还是出现同样结果。 谢谢~

000000

000544

chingswy commented 2 years ago

我检查一下相机标定代码;并提供一个样例数据

WellTung666 commented 2 years ago

我检查一下相机标定代码;并提供一个样例数据

麻烦您了,谢谢。

nixsui commented 2 years ago

我试了下,把 k3d[:, 0] *= -1这行注释掉,就可以了。大佬可以试试。 非常感谢作者大佬开源这么棒的教程。节省了我很多查资料和coding的时间。 但是有些问题希望大佬也帮忙解答下,您这里为啥要乘以-1呢?是因为您做了flip吗?我也查了下学习opencv那本书和视觉slam十四讲,发现pnp时候,并没有强调说要把x进行乘-1的操作。还请大佬帮忙解答下疑惑。非常感激。

Taylorminer commented 2 years ago

您好,请问在可视化3D结果的时候,是直接在命令行输入这段代码python3 apps/vis/vis_client.py吗?连接server过后好像不能直接在命令行中 输入代 IMG_20220720_172320

WellTung666 commented 2 years ago

把k3d试了下,把k3d[:, 0] *=-1这行注释掉了,就可以感谢了。大佬可以试试。 非常作者大佬开源这么棒的教程。我攒了很多查资料和编码但是有些问题希望大佬 也帮忙解答下,您在这里为啥要乘以-1呢?是因为您查错了吗?我也下学习opencv那本书和视觉冲击十四讲,发现ppnp的时候,并没有强调说操作帮忙x进行乘-1的。还请大佬回答下疑惑。非常欢迎。

是的,我们在之前的Dbug已经发现这个方法了,谢谢。

WellTung666 commented 2 years ago

您好,请问在可视化3D结果的时候,是直接在命令行输入这段代码python3 apps/vis/vis_client.py吗?连接server过后好像不能直接在命令行中 输入代 IMG_20220720_172320

另外新建一个终端进入环境运行代码就好了。