yanchxx / MoPA

An Blender addon uses ROMP to extract human's 3D poses from image, video or webcam and drive your own 3D character.
MIT License
242 stars 49 forks source link

关于多人如何实现驱动? #31

Closed zhanghongyong123456 closed 1 year ago

zhanghongyong123456 commented 1 year ago

请问大佬:我们这个插件只能绑定单人驱动(基于ROMP),能否实现多人驱动呢(基于bev)?

yanchxx commented 1 year ago

请问大佬:我们这个插件只能绑定单人驱动(基于ROMP),能否实现多人驱动呢(基于bev)?

加个track就行,可以看看这个论文,https://arxiv.org/abs/2209.00776。 不过代码没法开源,因为是在公司里做的。

在blender中实现感觉还是有点麻烦,而且track也不够稳定,想多人的话,可以考虑一个一个人的姿态穿进去。

zhanghongyong123456 commented 1 year ago

请问大佬:我们这个插件只能绑定单人驱动(基于ROMP),能否实现多人驱动呢(基于bev)?

加个track就行,可以看看这个论文,https://arxiv.org/abs/2209.00776。 不过代码没法开源,因为是在公司里做的。

在blender中实现感觉还是有点麻烦,而且track也不够稳定,想多人的话,可以考虑一个一个人的姿态穿进去。 大佬,这个网址好像失效了,打不开 https://yanch.cloud/;我想问

  1. 假如一个摄像头包含多个人物,实现bev检测不是romp检测,然后在场景中实现和图像中一样的站位可以实现吗,
  2. 基于 多个站位可以实现多个人物驱动吗
yanchxx commented 1 year ago

请问大佬:我们这个插件只能绑定单人驱动(基于ROMP),能否实现多人驱动呢(基于bev)?

加个track就行,可以看看这个论文,https://arxiv.org/abs/2209.00776。 不过代码没法开源,因为是在公司里做的。 在blender中实现感觉还是有点麻烦,而且track也不够稳定,想多人的话,可以考虑一个一个人的姿态穿进去。 大佬,这个网址好像失效了,打不开 https://yanch.cloud/;我想问

  1. 假如一个摄像头包含多个人物,实现bev检测不是romp检测,然后在场景中实现和图像中一样的站位可以实现吗,
  2. 基于 多个站位可以实现多个人物驱动吗

网站我关了,维护好麻烦,也没啥人用,你可以看看视频。

https://user-images.githubusercontent.com/38496769/190867768-6b84fd22-30ab-4a56-aa04-4e6b7c55275f.mp4

Bev和ROMP都可以检测多人的3D空间位置,所以实现一样站位是可以的,不过Bev更准一些,还能识别老人小孩。

站位是由物体的translation决定的,ROMP和Bev都会同时输出多人的姿态和站位,这就是ROMP和Bev单阶段网络的含义(不需要先检测再输出),所以可以实现多人多站位实时驱动。

zhanghongyong123456 commented 1 year ago

请问大佬:我们这个插件只能绑定单人驱动(基于ROMP),能否实现多人驱动呢(基于bev)?

加个track就行,可以看看这个论文,https://arxiv.org/abs/2209.00776。 不过代码没法开源,因为是在公司里做的。 在blender中实现感觉还是有点麻烦,而且track也不够稳定,想多人的话,可以考虑一个一个人的姿态穿进去。 大佬,这个网址好像失效了,打不开 https://yanch.cloud/;我想问

  1. 假如一个摄像头包含多个人物,实现bev检测不是romp检测,然后在场景中实现和图像中一样的站位可以实现吗,
  2. 基于 多个站位可以实现多个人物驱动吗

网站我关了,维护好麻烦,也没啥人用,你可以看看视频。

WOC.mp4 Bev和ROMP都可以检测多人的3D空间位置,所以实现一样站位是可以的,不过Bev更准一些,还能识别老人小孩。

站位是由物体的translation决定的,ROMP和Bev都会同时输出多人的姿态和站位,这就是ROMP和Bev单阶段网络的含义(不需要先检测再输出),所以可以实现多人多站位实时驱

突然发现加载两个模型,只绑定第二个模型也会报错,这是为什么 image

如何实现多个模型绑定:

  1. 添加多个模型指定名字: image
  2. 添加多个 fix bones: image
  3. 获取视频多人数据信息,驱动人物模型(未做到这里)
  4. 对于blender里面得人物站位,如何才能像多人图像一样有前后相对位置关系,我看大佬多摄像头演示视频没有前后关系都是随机站位
yanchxx commented 1 year ago

https://github.com/yanchxx/CDBA/blob/master/addon/ops/fixBones.py#L9

fix_bones里面应该是使用了方框里面的名字的。

我看你那个应该是从mixamo直接下载的模型,不是所有模型都测试过,所以建议你先用我在release里面绑好了的那些模型试试。那些应该没啥问题,不用再fix一遍。

多相机之间肯定没有相对站位,都是不同的空间了。但是单相机内部的多人肯定是遵循Bev的输出的,Bev输出在哪,人物就会站在哪里。

yanchxx commented 1 year ago

哪天有空写一下多人bev版本吧,正好ROMP本身也是需要改一下的。

zhanghongyong123456 commented 1 year ago

嗯嗯 ,好的 ,我在看一下,大佬太牛了吧,我还是理不清大佬得代码,期待大佬的bev版本

zhanghongyong123456 commented 1 year ago

我在看大佬 romp服务器上的代码,有几个疑问想请教一下, 我debug的是bev的输出 image

yanchxx commented 1 year ago

romp的输出是多人的,是一个列表,我这里只取第一个人的poses和trans,只实现单人的功能。你要是想实现多人的,就在这里取列表的其它项就可以。

归一化的轴角表示是三个参数,为了后面转四元数,得先把轴角分开成角度(1个参数)+轴(3个参数)。

betas只能用给SMPL模型,其他的模型不能改变形状的。

zhanghongyong123456 commented 1 year ago

romp的输出是多人的,是一个列表,我这里只取第一个人的poses和trans,只实现单人的功能。你要是想实现多人的,就在这里取列表的其它项就可以。

归一化的轴角表示是三个参数,为了后面转四元数,得先把轴角分开成角度(1个参数)+轴(3个参数)。

betas只能用给SMPL模型,其他的模型不能改变形状的。

嗯嗯,按照大佬的指示,我修改了大佬的脚本在blender里面创建了三个人物模型,使用bev(https://github.com/Arthur151/ROMP/blob/master/simple_romp/README.md#calling-as-python-lib) 检测姿态位置,循环绑定驱动三个模型,得到的视频结果跳的很厉害(直接瞬移),这是怎么回事,是我的代码实现有问题,还是检测的位置不准确造成的 我在导入模型时候将Z轴固定,保证同一水平面,也不可以解决这个瞬移问题 https://user-images.githubusercontent.com/48466610/209092616-1107143f-7a24-436b-b223-e1f494431442.mp4

yanchxx commented 1 year ago

因为你没有tracking,bev只是将结果顺序得输出出来,比如图中有2个人,编号为1和2。在第一帧bev输出1,2;在第二帧bev输出2,1。 这样第一二帧中的3D模型就反过来了。加个tracking,保证编号1的人的姿态输入到编号1的3d模型中;编号2的人的姿态输入到编号2的3d模型中。

这个还是有点困难的,不过你可以尝试一下。

zhanghongyong123456 commented 1 year ago

因为你没有tracking,bev只是将结果顺序得输出出来,比如图中有2个人,编号为1和2。在第一帧bev输出1,2;在第二帧bev输出2,1。 这样第一二帧中的3D模型就反过来了。加个tracking,保证编号1的人的姿态输入到编号1的3d模型中;编号2的人的姿态输入到编号2的3d模型中。

这个还是有点困难的,不过你可以尝试一下。

大佬,这个tracking 有相关项目或者参考代码实现吗,我感觉我自己够呛能实现,看大佬的插件源码都觉得困难。bev对于不同得图像检测得姿态,是否有不同人得标记,比如:输出得betas (10,) # 10 SMPL shape parameters. 是否不同人物有不同的结果,是否可以作为人物标记呢

yanchxx commented 1 year ago

可以看看bev的可视化代码部分,我记得是有tracking的。不过也可以用现成的仓库

至于betas应该是用不了的吧,因为不同视角预测的betas可能差别都比较大。

zhanghongyong123456 commented 1 year ago

视化代码部分

嗯嗯 ,我刚才还在想,为啥原项目可视化没有瞬移现象,谢谢大佬建议,我都去看一下相关实现