学习周报四十九

文章目录

摘要

阅读: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 的缺陷。

相关推荐
hongyucai2 小时前
随意学习-模型工程:因子、隐空间、采样策略
学习
Amazing_Cacao6 小时前
CFCA精品可可产区风土体系(亚洲):彻底拒绝应试背诵,将感官复核作为检验真实物理差异的唯一铁律
学习
caimouse12 小时前
protoc-gen-c 支持 proto3 `optional` 关键字修改记录
c语言·学习
憧憬成为java架构高手的小白12 小时前
黑马八股--中间件学习之MQ(RabbitMQ)
学习·中间件
撩得Android一次心动14 小时前
Linux编程笔记4【个人用】
linux·笔记·学习
user-猴子14 小时前
让网页“活”过来 —— 用AI打造会自主学习的动态知识图谱
人工智能·学习·知识图谱
网络工程小王15 小时前
【HCIE-AI】10.pytorch模型迁移分析
人工智能·学习·华为·llama
魔城烟雨16 小时前
从零开始学习betaflight《3-硬件接口设计规范标准》
学习·设计规范
不言鹅喻18 小时前
HarmonyOS ArkTS 实战:实现一个单词背诵与英语学习应用
学习·华为·harmonyos
正经人_x19 小时前
学习日记42
学习