Comments (37)
2D pose estimation分支的训练主要是在预训练阶段进行的,对模型最后的性能(尤其是泛化性)影响很大,还是需要使用一些比较有挑战的2D pose数据集来强化模型对2D关键点位置的感知能力,这样估计3D mesh的时候才能对得好。简单来说,当模型对关键点位置的检测能力足够强,再训3D会比较快的训出来,不然基于center表征的这种监督很弱的架构真的要训非常非常久,这个应该不难理解。3DPW目前的评测protocol实际上测试的就是模型的泛化性。训练tricks上是有一些,但我目前没有对所有tricks进行对比实验,没法说具体每个影响有多大。在合适的时候我会把我训出来的pretrain model开源出来,让大家可以快速复现。目前,建议你在我现在放出来的模型基础上fine-tuning,如果精度不降,就说明你的训练代码可以有效训练。
from romp.
Sorry, I haven't managed to project the posed mesh back to 2D image too.
I have talked with the author. The pose parameters seem precise enough for training the model.
But there are something wrong with the global orientation (pose[:3]), which cause the failure.
from romp.
ok,thanks
from romp.
你好,请问下,movi,hm3.6这些数据在训练的时候,是否做了背景增强?如果做了,他们的人像mask是通过某个开源人像分割模型得到的吗
from romp.
@Arthur151 目前根据论文看到你这边用到的数据集主要是hm3.6,3dpw,mpi-3dhp,movi, mscoco,不知道是否还用到了其他数据集没?
from romp.
我训练的时候没有用背景增强。我的训练数据集主要是Human3.6M, MPI-INF-3DHP, MSCOCO, MPII, LSP, UP, AI Challenger(keypoint). 增强版模型还用了MuCo-3DHP, Crowdpose, 3DOH50K。
from romp.
好的,谢谢,那像 MPI-INF-3DHP这种只有2d,3d标签的数据集,你会自己去fitting出SMPL系数作为gt吗?
from romp.
我是直接用的关节点监督的。fit的感觉形状很怪。
from romp.
嗯,谢谢,我确认一下,所以2d数据集,就只能用于重投影监督loss,有2d和3d的数据集,就只监督重投影监督loss和3dloss,有SMPL系数的数据集,则都会进行监督;对于只有2d和3d的数据集,不会去特定通过2d和3d去fiting出smpl系数作为标签。
另外再请教一个问题:训练的时候一个batch里面会包含不同数据类型(类型1:只有2d标签,类型2:只有2d和3d标签,类型3:包含2d,3d,smpl系数标签),那么每一种数据类型在一个batch里面的比值有讲究吗?
from romp.
肯定有啊,需要去调整的。主要还是看数据能贡献出来的训练价值和模型每个阶段的学习状态。
from romp.
好的,非常感谢了
from romp.
你好,想确认一下,hm3.6数据集你是怎么使用的,只是使用了他的3d点和基于相机参数投影得到的2d点吗?我看有的工作会fitting出SMPL系数进行监督。
from romp.
hm3.6数据集可以通过MoSh算法求得SMPL参数,用于训练。
from romp.
好的,非常感谢
from romp.
你好,有几个问题请教一下:
问题1:hm3.6这里可以理解有两个3d标签,一个是hm3.6数据集本身提供了3d点,,另外一个是通过其smpl系数导入SMPL得到的3d点,在监督3dloss的时候,这种真实采集的的3d点和这种smpl输出的3d点是等价的吗?因为我使用相同相机参数可视化这两个3d点的时候,存在scale有明显偏差。
问题2:补充问题1:发现smpl输出的3d点需要乘以代码里面的cam参数的s才等价真实的3d点的scale。这里真实3d点认为是米为单位。如果这个成立的话,那你在训练的时候,smpl输出的3d会乘以相机参数里面的s后,再和真实3d点进行loss计算吗?
问题3:在设计centermap 的标签的时候,因为不同数据集在标注2d点的时候存在主观不一致性,这里对center影响大吗?
from romp.
1.我还没观察过经相机投影矩阵处理过后的h36m的3D关键点数据是否和smpl参数转化的3D点有尺度偏差,如果有图的化我也方便判断是什么问题。
2.监督3D关节点误差的时候不会乘相机参数。相机参数只是用于投影监督2D关节点误差的。
3.正是为了尽量减低不同数据集关节点定义的差异,ROMP的Center定义是专门设计的,跨数据集稳定的。详情可以看论文方法部分,简单来说就是肢体关节点的中心点。
from romp.
好的,谢谢,关于”相机投影矩阵处理过后的h36m的3D关键点数据是否和smpl参数转化的3D点有尺度偏差“,我后面整理一下图像和数据发出来。
from romp.
您好,我目前尝试复现你的开源模型效果,在训练的时候,
相关loss设置如下:
e_center_loss_weight: 500.
e_2d_loss_weight: 400.
e_3d_loss_weight: 500.
e_pose_loss_weight: 500.
e_shape_loss_weight: 50.
(w_prior,w_paj3d,L_2D 没有)
训练集采用了Movi,hm3.6,3dpw,mpi-3dhp,mscoco;
见下图:左边是您的模型输出效果,右边是我的模型输出效果,效果还存在距离,尤其是贴合度方面,尝试通过提升2d loss权重,贴合度会改善,但是影响pose的准确性,尤其global pose。
疑问:我目前训练中没有2D pose estimation loss,�不知道这个对模型的效果影响多大?您有相关的独立实验对比吗?以及完全按照论文的配置进行训练,是否能够快速复现论文效果?还是说这里存在一些训练技巧需要注意?非常期待你的解答,谢谢
from romp.
好的,谢谢你的答复
from romp.
你好,请问下,你谈到训练tricks上是有一些,不知道方便说一下吗?目前我按照你前面谈到的,先训练好2D pose estimation,然后基于它进行fintune训练,效果还是和你的有差距。另外也在放出来的模型基础上fine-tuning,精度没有明显下降。
from romp.
你目前测试3DPW上是多少啊?训了多久?
from romp.
我这边计算的MPJPE 和 MPJPE_PA 分别是105.21和77.22。目前用到的总的训练样本数为48.6w(主要是Human3.6M, MPI-INF-3DHP, MSCOCO, MPII, LSP,3dpw),先只训练了2D pose estimation,heatmap_loss为mse,训练了120个epoch,收敛到1.1e-3。然后基于它进行fintune训练,训练了35个 epoch,其中pj2d loss能够收敛到1.4e-3,Lj3d loss收敛到4e-3。
from romp.
你这还是在3DPW上fine-tunned了的结果啊。。。那这也太离谱了,你确定你的代码fine-tune我开源的模型没掉点么?
这绝对不是什么trick的问题了。。这差的也太多了,在3DPW上fine-tunned了应该PA-MPJPE能到47左右,就算啥也不调估计应该也能到50左右吧。。请问batch size多少?
from romp.
嗯,有一点忘记说了,我在finetune的时候,将输入改成了128*224了,可视化效果看着差异不大(从pj2d loss的角度上看的话,
0.0009涨到0.0011,在3DPW上的数值分别为100.5,70.1,如果单纯从数值上看,确实增大了,但是可视化的效果感觉差别不是很大,不知道是不是输入分辨率降低的原因,你说的batch size,验证的时候设置为32,训练的时候是96。
from romp.
这种输入大小我还真没试过。。而且点掉这么多。。感觉可能训练是有点问题的。
from romp.
好的,谢谢,我再看看,争取先到50
from romp.
加油。我还在等一个月后的结果,希望可以尽早开源所有代码。
from romp.
训练代码已开源~
from romp.
好的,谢谢
from romp.
想问一下作者h36m标签中kp3d_mono和kp3d有什么区别呀?实际用的是哪个呢?
from romp.
我们在这里,用的kp3d_mono。kp3d_mono是在每个相机坐标系里的3D关节点的位置,kp3d是在世界坐标系下的位置。
from romp.
谢谢您的回复!还请问一下h36m的poses为什么是[3,72]维度的?想得到smpl的24个3d点怎么转换呢?
我们在这里,用的kp3d_mono。kp3d_mono是在每个相机坐标系里的3D关节点的位置,kp3d是在世界坐标系下的位置。
from romp.
h36m是视频数据,我们每5帧取一下标注,但其实它的gt给的还是挺高频的,还提供了中间帧周围的gt,我就一起保存了,如果只用中间帧,就选1就好了。
建议看一下我代码吧,地址都给你了,别偷懒哦
from romp.
哈哈 好嘞~
from romp.
想请问一下作者,hm36以及mupo-3dph数据集的关节点怎么匹配呢?比如我想使用两个数据集进行训练,即便是同一个joint, neck 每个数据集的标注也不是相同的,这个整合的过程,没有看到您的处理。所以有点疑惑。
新年快乐
from romp.
您说的很对,现在确实有这个问题,所以导致模型的训练也会有点受这个影响,目前,还是直接默认他们是一个关键点。但最近的有篇文章,可能对您有帮助:
Learning 3D Human Pose Estimation from Dozens of Datasets using a Geometry-Aware Autoencoder to Bridge Between Skeleton Formats
Istva ́n Sa ́ra ́ndi
他们的做法很有意思,而且看起来还很不错,可以了解一下。
from romp.
from romp.
Related Issues (20)
- [TRACE] global coordinate visualization HOT 1
- Visualizing humans in out-of-frame cases
- 如何转换SMPL模型文件格式 HOT 1
- Cannot find romp.pack_smpl_info HOT 2
- KeyError: 'pw3d_vibe-MPJPE'
- AttributeError: 'TRACE' object has no attribute 'smpl_model_path' HOT 1
- 相機外參問題
- KeyError: 'joints_smpl24' HOT 3
- romp smpl output poses is not fit with f_smpl/m_smpl.fbx HOT 1
- Permission denied: '/home/yusun' when running demo of TRACE HOT 2
- EVAL CMU dataset HOT 1
- Export Trace results to motion files like AMASS
- TRACE's result on MuPoTS-3D dataset
- Extending Pose Estimation Model for 3D Objects: Customization and Challenges
- No file or directory
- missing files
- pth generation HOT 1
- 大佬您好,想请问下世界坐标系下的可视化问题。 HOT 1
- RuntimeError: Sizes of tensors must match except in dimension 1
- convert2fbx.py multiple person
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from romp.