学习周报四十九

文章目录

摘要

阅读:SMPL: A Skinned Multi-Person Linear Model。ACM TOG。选他是因为基础需要同时现在正热门的smpl以这一篇文章为基础。

abstract

Reading: SMPL: A Skinned Multi-Person Linear Model. ACM TOG. I chose it because I need the fundamentals and right now the popular SMPL is based on this paper.

一、学习论文:

核心:

1.人体参数化:

"身高、体重、肩宽"10 个数字就能描述一个人的身材,用 "头转多少度、胳膊弯多少度" 几十个数字就能描述一个人的动作。

核心就是:把一个复杂的 3D 人体网格(6890 个顶点),压缩成两组低维数字,只要修改这两组数字,就能生成任意身材、任意动作的人体。直接操作 6890 个顶点太麻烦,参数化后才能被动画师控制、被算法优化。

2.姿态pose:身体所有关节的旋转角度。

SMPL 里有 23 个关节(头、脖子、肩膀、手肘、腰、膝盖等),每个关节用 3 个数字表示旋转(轴角表示),再加根节点的 3 个全局朝向,总共72 维参数。pose 只改变动作,不改变身材;同一个 pose,胖人和瘦人做出来的动作姿态一样,只是身材不同

3.shape(体型 / 身份):天生的身材特征:高矮、胖瘦、肩宽、腿长、头身比等

SMPL 里用10-300 维参数(通常用前 10 维就够),是从几千个人的扫描数据里用 PCA 提取出来的 "人体主成分"。shape 只改变身材,不改变动作;同一个 shape,不管做什么动作,都是同一个人的身材。

总结就是:SMPL 用 shape 参数控制身材、pose 参数控制动作,然后生成对应的 3D 人体网格,解决之前模型要么不真实、要么不能用在游戏引擎里的问题。

1.1流程

SMPL 整体生成流程:a) 基准网格:所有人的基础模板,是一个标准的裸体人体。(b) 加 shape 变形:把 shape 参数对应的 "身材变化" 叠加到基准网格上,变成某个人的身材。© 加 pose 变形:把 pose 参数对应的 "姿态变化" 叠加到上面,变成这个人在这个姿态下的 "预变形网格"(d) 蒙皮旋转:用骨骼把整个网格 "拉" 成最终的姿态

顺序:基准 → 变身材 → 变姿态 → 蒙皮旋转,这就是 SMPL 的全部核心。

人体骨架与蒙皮权重: a图左:SMPL 的 23 个关节和人体部件分割,对应 pose 参数控制的部位。b图右:看蒙皮权重的颜色,颜色越接近红色,说明这个顶点受对应骨骼的影响越大

shape 变形:3 个主成分(PC1/PC2/PC3)从 - 2 到 + 2 的变化:不同的 shape 参数,对应什么样的身材变化(胖瘦、高矮、肌肉量等)。红色的关节点:关节位置会跟着 shape 自动变化,这就是关节回归器的作用。

pose 变形:对比最左边的 LBS(纯蒙皮)和最右边的 SMPL

看肘部、膝盖、臀部:纯蒙皮会出现 "拉伸"" 变细 ""蝴蝶结" 的畸形,SMPL 加了 pose 变形后就正常了

直观理解 pose 变形的作用:专门用来修补纯蒙皮的 bug,同时模拟肌肉隆起、皮肤褶皱。

pose 变形的中间过程:前4列:基准+shape → 加pose变形 → 最终SMPL → 真实扫描。加pose变形后:臀部、肩膀、肘部都变鼓了,这就是肌肉隆起的效果

shape 和 pose 的解耦效果:

横向看:同一个 pose,不同的 shape → 动作一样,身材不同

纵向看:同一个 shape,不同的 pose → 身材一样,动作不同

验证 SMPL 的核心优势:身材和动作完全独立,可以任意组合

图 1:最终效果

左图:SMPL 拟合真实扫描的效果

右图:在 Unity 引擎里实时渲染的效果,证明了工业兼容性。

总结

代码方面话没有开始跑,只下载了原来老版的实现,以及最新神经网络的代码实现。

再就是数学部分还没懂:如旋转矩阵,线性混合蒙皮(LBS)的公式如何变成smpl的混合蒙皮(Blend Skinning),SMPL 的核心就是用融合形变弥补 LBS 的缺陷。

相关推荐
qq_284274053 小时前
机械设计基础·滚动轴承全解(类型·代号·选型·寿命)+轮系与蜗杆蜗轮传动
笔记·学习·自动化·制造
2603_965148118 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
kaixin_啊啊10 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
xier_ran10 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
别动我齐刘海12 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
PC2005-cloud14 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd15 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我1234515 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林15 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序