TMElyralab / MusePose

MusePose: a Pose-Driven Image-to-Video Framework for Virtual Human Generation
Other
2.29k stars 167 forks source link

some good results #19

Open shaoguowen opened 5 months ago

shaoguowen commented 5 months ago

感谢作者的分享(you are my hero),加入我自己收集的数据微调了一版,分享一些不错的结果:

https://github.com/TMElyralab/MusePose/assets/57278682/cdb45f46-ca73-446d-a395-4f6709e7c802

https://github.com/TMElyralab/MusePose/assets/57278682/299a6a67-0d5a-4e11-83b3-ebe7e7ad86c8

更多AIGC结果可以看我的视频号(温少的AIGC),欢迎讨论交流~

zhanghongyong123456 commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

shaoguowen commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

zhanghongyong123456 commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

shaoguowen commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

szx503045266 commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

shaoguowen commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

szx503045266 commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重

https://github.com/TMElyralab/MusePose/assets/45331149/825c08ea-2a07-4b24-84ea-a75510ec3acb

shaoguowen commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重

image_img_image_video_dance2_3.5_20_1__.mp4

说实话,你这个算不错的(就是手臂有点长)。手和脸扭曲是现在diffusion模型都会有的问题。脸的话可以facefusion换脸修复。

szx503045266 commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重 image_img_image_video_dance2_3.5_20_1__.mp4

说实话,你这个算不错的(就是手臂有点长)。手和脸扭曲是现在diffusion模型都会有的问题。脸的话可以facefusion换脸修复。

嗯嗯确实,我想看看脚那里微调能不能有效果,这个感觉影响比较大

shaoguowen commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重 image_img_image_video_dance2_3.5_20_1__.mp4

说实话,你这个算不错的(就是手臂有点长)。手和脸扭曲是现在diffusion模型都会有的问题。脸的话可以facefusion换脸修复。

嗯嗯确实,我想看看脚那里微调能不能有效果,这个感觉影响比较大

我一个想法是,把脚步的关键点加上。

企业微信截图_346ff41e-96d8-4ecb-94a3-bad35ed00ce6
szx503045266 commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重 image_img_image_video_dance2_3.5_20_1__.mp4

说实话,你这个算不错的(就是手臂有点长)。手和脸扭曲是现在diffusion模型都会有的问题。脸的话可以facefusion换脸修复。

嗯嗯确实,我想看看脚那里微调能不能有效果,这个感觉影响比较大

我一个想法是,把脚步的关键点加上。 企业微信截图_346ff41e-96d8-4ecb-94a3-bad35ed00ce6

嗯有道理,应该会有效果

TZYSJTU commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

Could you please share this 3d align algorithm? We have planned to do a similar thing months ago, but we are too busy to do this.

zhanghongyong123456 commented 5 months ago

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

Could you please share this 3d align algorithm? We have planned to do a similar thing months ago, but we are too busy to do this. 我测试champ 预处理方式,效果感觉很好, https://github.com/TMElyralab/MusePose/issues/15#issuecomment-2141675581

https://github.com/TMElyralab/MusePose/assets/48466610/84e24041-bd4c-4d2d-932a-62481bd975e4

大佬可以细看一下,具体实现 https://github.com/fudan-generative-vision/champ/blob/master/docs/data_process.md

runshouse commented 5 months ago

Did you guys change the configurations to get these results? Not getting great results using the default configurations.

G-force78 commented 5 months ago

Changed height to 512 line 477 of pose_align

https://github.com/TMElyralab/MusePose/assets/114336644/b8e45772-4b77-4348-8966-3be6770e0f3f

zhanghongyong123456 commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

请问大佬可以分享一下你的3d 对齐的脚本吗,测试几个对于对齐有的图像对不上,容易生成变形的对齐

shaoguowen commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

请问大佬可以分享一下你的3d 对齐的脚本吗,测试几个对于对齐有的图像对不上,容易生成变形的对齐

我那个脚本依赖的包有一部分是司内的工作,不好分享出来。我再细说一下流程,具体实现还得靠你自己,全程没有用到blender,用python实现就好了。

  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。
zhanghongyong123456 commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

请问大佬可以分享一下你的3d 对齐的脚本吗,测试几个对于对齐有的图像对不上,容易生成变形的对齐

我那个脚本依赖的包有一部分是司内的工作,不好分享出来。我再细说一下流程,具体实现还得靠你自己,全程没有用到blender,用python实现就好了。

  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点。
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

感谢指导,我明天细看一下

runshouse commented 5 months ago

Did you guys change the configurations to get these results? Not getting great results using the default configurations.

you can share your ref image and pose video

Here's an example. It's almost always just the face that's distorted.

person

https://github.com/TMElyralab/MusePose/assets/23641679/7989330e-a424-4dc5-94cb-df59ceecd9a0

https://github.com/TMElyralab/MusePose/assets/23641679/2f61e45d-76d0-4e9a-9498-000af749feff

shaoguowen commented 5 months ago

Did you guys change the configurations to get these results? Not getting great results using the default configurations.

you can share your ref image and pose video

Here's an example. It's almost always just the face that's distorted.

person

anyone.mp4 person_anyone_3.5_20_1__.mp4

  1. do not use face keypoints
  2. you can faceswap to enhence your result, like facefusion:https://github.com/facefusion/facefusion
zhanghongyong123456 commented 5 months ago
  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点。
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

请问第四步:把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。 我拿到了3d pose、smpl shape、smpl transl; run一遍smpl 模型,这个如何操作呢,不太明白

shaoguowen commented 5 months ago
  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点。
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

请问第四步:把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。 我拿到了3d pose、smpl shape、smpl transl; run一遍smpl 模型,这个如何操作呢,不太明白

就是跑一遍smplx的forward呀

image
aleeyang commented 5 months ago

这个效果真不错~我直接inference的效果不够好,请问可以分享下用于微调的代码脚本吗?十分感谢

我有试过作者的模型,其实效果还可以呀。微调的脚本跟Moore-AnimateAnyone 的https://github.com/MooreThreads/Moore-AnimateAnyone/blob/master/train_stage_2.py 没啥区别,就是加数据和调整学习率。关键点是数据质量

哦哦好的,我微调试一下,感谢~主要感觉对真人图片达不到demo展示的效果,脸、手和脚变形比较严重

image_img_image_video_dance2_3.5_20_1__.mp4

大佬 有fine-tuning 脚本分享下吗?

ylhua commented 5 months ago

温少的AIGC

请问你微调的是哪个模型,对于问题(https://github.com/TMElyralab/MusePose/issues/15),你有出现这种现象吗,有好的解决思路吗

这个应该就是pose检测不准,导致pose align出错了。我是微调stage2,其实就加入之前的一批自己在网上收集和过滤过的舞蹈视频,另外我还加入用blender渲染的非真人(动漫角色、机器人、拟人化动物等)舞蹈视频做训练,提升对非真人的泛化性

我看了视频检测的pose和图像的pose,是没有问题的,只是在他两对齐转换期间出现了错误

pose align 我这边有实现一个方法是通过3d pose。我先预测src video的smplh pose, 再预测ref image的smplh shape,然后把src的smplh pose + ref的smplh shape 驱动得到3d 关键点,然后再把3d 关键点弱透视到ref的2d图像上。测试下来这种方式比较稳一点

请问大佬可以分享一下你的3d 对齐的脚本吗,测试几个对于对齐有的图像对不上,容易生成变形的对齐

我那个脚本依赖的包有一部分是司内的工作,不好分享出来。我再细说一下流程,具体实现还得靠你自己,全程没有用到blender,用python实现就好了。

  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点。
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

想问下这么做会和训练数据集中的pose分布有gap吗

scut-wjx commented 3 months ago

关于pose_align后肢体长度出现偏差(变长)的问题的原因:导致对齐后手臂变长的原因在于当driving video中出现手臂遮挡(如放在背后)时,模型预测出的手臂长度偏短;导致scale=dist_ref_img / dist_1st_img变大,计算仿射矩阵时出现偏差。举例:【四张图分别为:参考图关键点、参考图对齐后关键点、驱动视频第一帧;第一帧关键点】 1723206380364

右臂的前半段出现遮挡;DWposedetector输出的坐标为[0.44497526, 0.33646238](肩),[0.45664662, 0.4337237 ](手肘),[0.46053705, 0.46225366](手腕),可以看到,肩到手肘的垂直距离为 0.4337237-0.33646238=0.1;而手肘到手腕的距离只有0.46225366-0.4337237=0.03,这是错误的。导致在计算align_args["scale_arm_lower"]时偏大(pose_align.py的第368-374行)。如果把 dist_1st_img = np.linalg.norm(body_1st_img[3]-body_1st_img[4]) dist_ref_img = np.linalg.norm(body_ref_img[3]-body_ref_img[4]) 修改为 dist_1st_img = np.linalg.norm(body_1st_img[6]-body_1st_img[7]) dist_ref_img = np.linalg.norm(body_ref_img[6]-body_ref_img[7]), 即让左臂的长度来近似右臂;则可以得到正确的对齐效果 1723206331164

Dratlan commented 4 weeks ago
  1. 3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.
  2. 用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。
  3. 用 SMPLer-X预测ref image的smpl shape和smpl transl。
  4. 把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。
  5. 参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点。
  6. 用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

请问第四步:把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。 我拿到了3d pose、smpl shape、smpl transl; run一遍smpl 模型,这个如何操作呢,不太明白

就是跑一遍smplx的forward呀 image

请假大佬,我投影出来的关键点位置都不太对,感觉需要额外的去估计这一组图片的相机内外参数

scut-wjx commented 4 weeks ago

同学你好,pose-guide这个领域是我实习期间浅了解的,对其研究并不深,所以无法解答你的问题。抱歉!

------------------ 原始邮件 ------------------ 发件人: "TMElyralab/MusePose" @.>; 发送时间: 2024年10月29日(星期二) 中午11:43 @.>; @.**@.>; 主题: Re: [TMElyralab/MusePose] some good results (Issue #19)

3d pose estimation可以用这个工作 smpler-x:https://github.com/caizhongang/SMPLer-X.

用smpler-x 预测 src video的smpl 3d pose,这里我们只要pose。

用 SMPLer-X预测ref image的smpl shape和smpl transl。

把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。

参考mmpose:https://github.com/open-mmlab/mmhuman3d/blob/main/mmhuman3d/core/conventions/keypoints_mapping/smplx.py,将smplx转为openpose的3d坐标点

用弱透视原理把3d坐标点映射到2d 平面上,smpler-x那里应该有实现,没有的话google一下,很简单。

请问第四步:把src 的3d pose和ref image的smpl shape和smpl transl结合run一遍smpl 模型就可以拿到相机坐标系下的3d 坐标点。 我拿到了3d pose、smpl shape、smpl transl; run一遍smpl 模型,这个如何操作呢,不太明白

就是跑一遍smplx的forward呀

请假大佬,我投影出来的关键点位置都不太对,感觉需要额外的去估计这一组图片的相机内外参数

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>