关于人体姿态估计和 m pose 的,这是那个 m n lap 的开发的一个通用的视觉框架。然后我本人是刘测武,也是长期做姿态估计的研究人员,非常荣幸能够去再用 ML 来更加分享这一块的知识。那么首先我们要定义什么是姿态估计,从图像中我们可以识别出头部、手部、身体的关键点。首先我们给一张图片,所有的关键点的像素都以 SY 来表示,那这里的 z 是一个总的点数,那么我们就可以提取包括人的关键点,手术的关键点和人体的 18 个关键点。那么在这样的一个情况下的话,大家可以看一下,那么就是给张图片,然后我们就会找出它的关键点,其实这是一个模式识别的一个很难的问题,因为它总是有变化的。
好,那么我们在预测人的关键点,还可以在三维上去做标去看,可以在三维空地上还原人的状态,大家可以看看这段视频,在视频中我们看到人是在被高度还原的三度空间 3D 空间里,那更进一步我们可以在图像或者视频中去恢复 3D 的人体的模型,这个如图所示,这个相当于是把人的 3D 的模型它把它给套进去了。
但是后面的研究我们可能还可以把衣服什么可以进一步,但是下一步的研究工作,那对于下游任务来说,我们可以在上面继续做行为理解了,比如说我们做拥抱,我们可以通过他的姿态估计来知道这个人的身体是在拥抱的。当然最直接的还是做 CG 动画,你看大家现在有很多的那个工作是能够通过你的表情姿态,然后能驱动一个动画做很多东西的,这个很有趣。还有手势识别了,你通过去识别你的手,因为手也是有特殊的姿态,那么我们通过这种特殊的姿态,我们就能够去控制物体。当然还有很简单,我们可以做下游动物的那些识别,因为原理是一样的,我们 CS 也做过一个从人迁移到动物的,包括我们发表篇论文是通过研究小组的行为和神经网络的关系,最后得出了一些很有意思的神经学结论。那么本节的内容包括有几个方面,首先我们对人体的那个估计和介绍的应用。
第二我们对 2D 姿态估计,它其实有四个部分,就是自顶向上的方法,自底向上的方法,单阶段的方法就是 Transformer 的方法。当然我们还会讲 3D 的姿态,包括物体整体姿态的各种估计的方法,还有就是 dance pose,也就是说每一个姿态都是有很关键点,还有是人体参数的模型等等,像这些都是很有意思的一些东西,那我们一个个来介绍。第一个是 RD 的,也就是给一张图片,然后我们去估计它的姿态。那首先在 2D 估计姿态上面,我们在图片上定位了关键点的坐标,然后我们给一张图片,那么我们就可以定位它的关键点,包括它的臀部坐标、颈部坐标,还有左右点坐标等等,那么这个关键点的估计它是输入图片,然后产生一些关键点的。那么将关键的点检测问题,它其实可以变成一个回归问题。
什么意思?就是输入一张图片,然后这个图片输入完之后,就可以让模型去回归它的那个关键点,就比如说这里面是一个关键点,那么输入图片之后它就回归它的坐标,那么使用神经碱基网络,以图像为输出,最后一层才是回归它的作用点。那么深度模型可以直接回归作用点,它的精度并不是最优的,在长期以来。当然最近我们实验室有个工作,把这个东西精度已经做到和深度学习,和那个后面的我们就还那个热度图是一样的,当然这个结论也不是一直是对的,只是说历史上的经验告诉我们是这样子的好。
那么也有一些是并不回归它的职业,回归它的坐标点,而是预测关键点的每一个位置的概率,就相当于说你看这里是个关键点,那它的概率是多少?你可以认为这是个概率图,然后表示一就表示关键点,它表示概率一也称为热度图,那么它的尺寸和原尺度的大小一样,或者按比例去缩小。
那么大家停下来想一想,这两种方法各有什么优劣?那大家可以花个 20 秒钟想一想,就是我已经把方法告诉大家了,大家想想它的优劣是什么?那么我们看基于日度图的,可以基于原始坐标生成,可以原始关系点生成。坐标是作为那个监督网络的信息,而热力图可以求极大值来获取它的信。模型,预测模型。热力图比直接坐标会肯定会容易,因为它更加符合神经学神经网络的结构,它的精度也会相对比较高。为什么呢?你大家可以想想这张图片,这张图片的话我们去卷积,它的卷积层就天然就是能够对它这个点是一一对应的。然后这个东西其实很符合神经网络的那个它的这种特性,但是因此所有的大部分的都是基于日历图,当然日历图有个问题,计算大于回归,为什么呢?它在后端它得维护一个比较大的一个数据,那这个比较大。当然说我说 CS 事情并不是一直是这样子,我们实验室最近做出了一个东工作,是使得回归的性能等于接近,于是几乎和那个热力图的性能一样,但它的存储空间又小很多,它就不用去存储这样的一个后端这样的一个热力图。好,那我们就是看从数据标注深度热力图这个角度上是怎么做的。那么每个关键点我们都对应一个 2D 的热力图,那么第这一个关键点它的热力图是这样子的,它是用高斯来做,唉,什么意思?就是说唉,这个点你大家看一下,它是一个高丝盒,那这个高斯盒是什么意思?就是说以这个点为中心的它的一个高斯过程,那么 z 图尺度跟图像相同,或者按比例缩小来定,那么那么这样子的话就是相当于是它是个概率图了,这是个高斯概率的函数。
好,那么使用力对图直接训练的话,它就是做这样的一个过程,你把那个把张图片输入,然后的话把它的珍珠力图增值图把它扔进去,然后我们读扁去对立它的那个比较它的真实值的大小。当然这种方法很朴素了,就是去取出它的最大的点,比如给你张热力图,你的腕部你取它最大的就是它的位置,那么大家想想这东西会有什么问题?大家想想花个几秒钟想想,那这个东西是很朴素,那它会带来什么问题?那万一它有两个点怎么办?对吧?大家有没有想过,是吗?然后这个取最大点是不是就是一个比较鲁棒的方法,这是不是这样子的?还有就是它出的结果是不是一定就是高斯的?也带了几个问题,我们可以到后面再去思考一下。
好,那么都讲到了说,那除了这样点去做方法,还有没有更稳定的方法?有的就是你直接对他取数学期望,就是说你看这边都是0,那你取数学期望之后其实就是去取它的平均值,它的平均值之后你就会比较稳定的,鲁棒的落在它的中,它这个这点上它不一定最大点,但是它就相当于取一个高斯的一个重心,那这样的话会更加的鲁棒。
那些东西大家发现没有?这整个是端对端可以去优化的,就是说你看你这个图是算出来的,然后呢你再去这个公式,这个公式是可以求导的,你一旦可以求导的话,那它的坐标也就是可以求导了,也就是说日历图可以变成坐标,而坐标是直接可以求导的,它就可以盖着这样的日历图。需要大家的理解。
这里是很精妙的一点,刚才说我们会开讲那个两种方法,因为多人估计嘛,这毕竟我们还是有多人估计。那么我们先讲那个最著名的一个就是置顶向下的方法,自顶向下的方法是这样子的,我们是先给定一张图片,然后我们去检测它的人的框,检测完之后我们在上面去做那个单肢体的估计,大家觉得是不是这件事情非常自然,对吧?其实大家也这么想的,大家也是这么做的,但是会有一个什么问题?整体的问题,整体精度受限于检测器的精度,那么这个检测器的精度如果不好的话,它就会出问题,那么速度和计算量又跟人数成正比,那么我们却后面又有些计划,能够把人背成两个阶段,而且他只用去做那个单人就可以了。
所以这里大家有没有想到一个问题,如果两个是拥抱怎么办?对吧?其实我们实验室做了一个专门做了这种 cosporting 的,就是解决这种问题,当然今天就是不展开讲了,那么我们是可以去推理的优化速度,它推理优化速度,然后我们另一种是自己向上的。什么意思?我们先把关系点应该检测到,然后我们再去聚类它是属于哪个人的,它的优点是什么?它的优点是处理速度和人类人的个数无关,也就是说你处理多少个人,你跟它无关。但其实话这样说它不一定的,就是说你人越多肯定关键点越多,关键点越多,你剧烈的门槛就越大。只能这么说,这件事情推理的速度确实和人无关,但你到合成的时候就是说你到这一步的时候是和人有关的。好,那么当然肯定是会有一批人想的。那我们能不能用单阶段的就一炮就一跑一通就过去了,就从这里跑一通就过去了,当然肯定是有人这么干的。这个我们后面会讲,那我们就开始逐步去讲,一个一个去讲它这里面的一些问题。
check,那么首先是基于回归的自顶向下的方法,我们上次讲了就是 desk post 做了一件事情,就是说把反类网络分类为基础,将最后一层改为回归,然后一次性的臆测所有的关键点的坐标,那么可以通过最小化的平衡误差来去优化这些东西。最死的如果是爱丽丝奈的那个主干,加上回归的头,然后就能够得出新的结果。那么 b 级是以全身图像为输入,预测关键点的坐标,然后再以位置精度比较低,然后我们可以得到一些关键点,之后没关系,然后我们再可以把它抠出来,再做第二波的裁剪。
这东西多级联能够提高它的精度,它的优势什么呢?优势是回归模型,理论上它的精度是无限的,而热力图方法事件那个受限于它的分辨率,其实也不会这样子,如果你的上面再加一个周期望值,也不一定是这样子的。然后回归模型不需要维持高分辨率的特征图,只要的镜像相比一下,它的存储分布会更加便宜,这是真的。它劣势什么呢?劣势是关键点的坐标映射是高色的,它会导致比回归坐标比日历图更难,所以它的精度入日历图的。
这个我要澄清一下,一直是这样的,但是我们实验室最近有个工作能达到了差不多,因此在 DISPOS 一段时间,关键图就 2D 点设计,就是主要还是以热力图为主。那我们还会讲一个回归这件事情,还是有一个很有意思的一些做法,就是说经典的回归是回归什么呢?是回归它的位置与真实间的误差的损失,然后背后其实隐含了高色假设,但这种假设不一定符合真实的分布。就比如说我举个例子,你一个手腕,手腕的话,那我们点在这里,那你说它的分布什么样子?分布是高斯呢?应该不是,它应该是和这样两个有关系的,就是所以说它不应该是一个高斯的,但是我就不知道。那么基于这种情况,我们可以这样子,我们用一个那个LE,按那个 LE 的方法来做,就是 radio lock 那个 less estimation 这样的一个方法来做 2021 年的一篇论文。
对,那么这样的一个方法是这样的,我们给出这个模型的一个基本的参数分布,然后这个参数分布的话,这个模块标准化的去给出这个参数的分布,那么显示的这样的建模关键点的分布的话,可以通过最大自然来去得到分布,这也是很可以理解的。那么对于二幻式的回归,基于最大负量的分布等价还是什么?是等价的,就大家看一下那个你你你那个高斯函数到最后就变成这样子的,那么等于说这是均值,是数一点,他说是各项同性的高斯分布,因此二项式回归的隐含的关键点符合固定的高斯的分布,所以就是 l 那个 REL 的那个思想,就是简单的将高斯分布分成一个可学习可表达的分布,能更好的拟合关键点的那个分布。
好的,那么很有一种深层式的方法,可以通过一系列的学习和逆影射将标准的分布变成一个复杂的随机变量,然后能建立概率的分布,比如这个高斯函数,你通过一步一步的那个函数变化之后变成一个复合真的函布,而这个 f 是由函数去建模的,从而可以调整这里面参数来拟合各种不一样的分布。
来,我们来看一下,那么这是公式长这个样子的,它的概率分布是会考虑到 PO 是标准分布,就是这个东西是标准分布,它的解析值可以计算的,而后面的是那个深度学习网络的,而且这是可以用这个甲和笔矩阵来算这样的东西它是完全是可逆的,每个可逆的,也就是说这个矩阵和往回去可求可逆的,那么它就可以去飞艇这样的分布。
好,那么这个事情我们把给定一定的数据之后,然后我们就最大自然的去计算你的参数,使用这个模型最佳的那个组合分布。那么大家可以看这是我们的这个公式和这样的一个过程,那分布概率呢?这个分布概率就是受这样的一个全体的那个这个参数的控制,我们可以对这个参数进行最优化, process 的参数进行最优化,然后在过程中涉及到甲壳比的行列的那个 TU 计算,那我们可以通过这样的能够设,这是一种新的容易的计算方式,那么那个 RE 的目标其实是要去知道它的方便点。
那么这是一张输入图片,那我们希望它的那个坐标的那个关系是怎么样的?那可以及标准的那个流的那个构建的分布,我们还可以引入两个降低模型拟合难度,一个是从那个参数优化,一个是残差自然函数,一个是从参数化。那么为了降低模型分布的难度,我们假设所有的关键点都分布到同一个尺度上,那么我们所有的分布都是一个 0 均值的一个缩放,等于说这东西都是它的缩放。大家看清楚,那基于一个假设,我们可以假设它是基础分布,然后我们可以缩放它的 meal 和,就等于说平移和放大这个,那在推理过程,我们将这个神经网络的平移作为关键点的预测结果,就大家就不需要再挪它的那个其他流程,就保证它高效的是一个高效的一个算法。
那么建议长沙思想,我们会进一步的去假设 x 的那个密度是一个高斯含布的,那么我们还有个变风分布,那我们可以到队形进行求和,当然到对数是求和,对那个指数就是相乘,那如果这个东西是非常好的拟合了,已经拿回来,那它就会它的分布退化为0。但如果是个标准分布,它会拟合它,然后来降低这个训练的难度。
好,那么我们就看到这完整的模型,这是一个标准模型,这标准模型它最大,自然出这样的一个参数,然后乘上它,然后再过去给它拉伸一下,就是拉伸个 MU 和一个Sigma,它就直接会变成一个什么呢?会变成一个最后的一个分布函数,那训练的时候我们就记为在训练时,基于这样的坐标位置,我们计算它最大自然是这个样子,所以通过同参数化长插件技巧能够规划 x 的分布,是不是很有意思?那么接下来讲基于热力图置顶向下的那个置顶向下的方法。
治愈思路,这是一个 all glass, 2016 年的,它的思义思路是叫双过之距。正确的知识估计需要结合不同的尺度,从局部信息到检测到不同的身体的组件,然后从全局信息,从模态的组件之间的关系,在大尺度的变化滋朗时可以准确的判断出姿态。奥克拉斯网络就是在每个立方都是一个长叉的一个尺度,所以说就是每个尺度都有自己的长叉了,那是输入图像,因为局部的信息是包含是有限的,但网络需要在不同尺度做出判断。比如说我们看这两块基于是什属于人体的什么部分,我们是不知道的。唉,那你看是球之手,对吧?证明说我们局部是不行的,那么 our glass 它强又强在哪里?它强又强在说它能够级联,相当于说你看这里面它其实每一层都是跟那个自由化和比 1 比,所以说这个都跟那 ground suit 去比一比,但它每一层都能够一层接一层,一般来说我们是经常是会接 8 层,对,可以看一下消化一下。
基于是这样的一个情况下,那么我们就可以继续往下看,那么继续往下看的话,那我们就是这个 training 的话是这样子的,这是一个 training loss,我们就可以是这样一个一个的,这些网络都好几个网络, our glass 的网络。嗯,那么我们就可以得到这样的一个结果了,这样是一个不同的,在不同的那个 training 的结果。那么奥格斯的模型在当时是领先于各种模型的,所以就会也是被用了很长时间,但后面就更多的模型超过它了。那么力求结构简单,需要那个 race net 就会反,可以配合防选机,然后就可以进行解码,最后得到它的增值。
那么核心的思路是下采样时通过保留的分辨率分支来保持网络,通过高分辨率时的空间信息,并且设计了独特的这样的一个网络结构,实现不同分辨率它的尺度融合,那你看这些都是低分辨率,对吧?这是中分辨率,这是中分辨,是高分辨率,那么这个高分辨率的话就是这是高分辨率的,这是低分辨率,那它的逐步就这样子过去。
那么大家看一下,这是那个他的输入是这样子的,就从这里还有三个是这样子过去,然后它就是经过这三个和融合,那不同的尺度的融合是这样的,然后这里面又加一个 Max pooling,这里就加一个上采样的pooling,然后可以这样子是逐步的去做。那么么还有一种不同的 reputation 的方法是什么呢?只取第一层用一只太固计,然后后面分别合并去做一个语义分割,这是语义分割,然后将四层做上采样,合并之后输出作为物体检测,那么这样子玩的话就是什么?就是物理检测,分割和姿态估计全部都包含在里面,那么我们还有个自底向下的方法,自底向上的方法,嗯,基本思路是这样的,基于图像同时预测关键点和四肢的走向,利用的那个节点是辅助的那个变量。
如果两个关键点由于某知识为某知识相连,那则两个关键点属于一个人,大家看一下,这是关键点,然后如果是他们是两只在一起,那是关键点是可以连成一个人,对吧?这样的一个情况是,它会类似于这样的一个 convertuonal 的一个级联监控,我们可以预测所有人关键点和肢体走向,所以这里是预测它的肢体走向的,然后这也是预测它场的,那么有这个场之后,我们来看下一页就很有意思了。
比如说他预测完了之后,那他在这个点,他这个就在下面,那么我们距离关键点的地方我们就可以连上,那我们可以从这里指向这个单位,如果它增值渠的位置又增值为0,那么其他地方他就会给他的一个给他指向的位置,那有了这个指向的位置的话,我们就好办很多了。那么我们可以对预输出的关键点和 j 和a,我们去算它的那个两个的亲和度,所以亲和度的是说它们两个是不是同个物体,如果说的亲和腿比较高,就是如果两个关键点是有某个肢体相连的,那就亲和腿应该可能属于同个人。当然说大家想一想这里面会有个什么问题?就是问题肯定是有的,那你想想这个问题,如果你在这里你只是给了个方向,对吧?那你给了个方向的话,那你不知道他在什么地方,如果它会延伸的很远怎么办,是吧?那其实这里面也留下了个bug,你带后人来填好。那么这个关键点和亲和度,它会构建一个权重图,就是个人的亲和度多少。那怎么办?那我们就可以用一个 k 聚类,就是可以用点聚类,就是可以用 k 布图, k 布图之后我们就可以算出这个 k 布图,大家去了解,我就不细讲。可以把一个人拆成两个,也就是说它经过一个图的分解或图的解析,它就能够把这样的,因为是每个点和每个点都建立关系,然后这样的可以把它卡掉,看完了之后,好,这一堆点是最近的,这堆点是最近,所以他们应该是一个人。
那么那肯定我们需要接下来讲那个单阶段的方法了。那单阶段的方法就是那个 SPI 首次提出了人体姿态的单阶段估计而取得的速度的优势,同时它也不逊色于这种 2 两个阶段的方法。所以说而且这个方法是图推,我们 2D 图像推广3D,当然推广 3D 的话会坎坷一点。
这个方法其实如果你们学过那个物体检测,像 EULO 那些的话,你们可能都会知道这个其实蛮像的,这个思路蛮像的,就是说,嗯,这边是一个一张图片,然后这边就进去,然后唉出来,然后就相当于是一个一个去回归,它不只是回归它的位置,而且回归它的那个以它为中心的各个的向量。
其实这个东西你知道有没有觉得它很像那个物体?检测,这里是回归两个向量,它是回归 n 个向量,等于它回归什么向量?回归它的那个上角和下角的那个向量,所以说等于说它是回归两个一个项。sorry,它应该说是回归一个向量,这里是回归那个多个向量,它的区别在这里。但是这个底层的逻辑是很像的,那么等于说它又统一关节,先是把这个点在这里,然后它就回归各个方向的那关键点,沿着它的中心来去做。
那么我们就会得出这样的一个过程,这是它的一个Delta,就是你要回归它的中心点以及以围绕的中心点的,它各种的 Delta 这些这东西难度也不是很大,但是它肯定要显然的那个弊端的,如果它可能存在比较大的知识形变,那么它的很多的关键点和根之间的距离原则给图像的矢量带来很大的困难。
特别的 3D 的时候,那么基于这样的一个,我们提出了那个 hierarchical 的那个SPR,它把自留度和变形分成四个程度,第一个是根节点,第二个是什么?第二是那个间周这样的一个事情,第三个什么呢?第三个是头文7,第四个是那个手腕和踝部,那么就是可以变成这样子,那么它就是分级来算的话,它可能就是对于对抗误差好一些,那么网络设计的话,它一般是用那个 our glass 作为backbone,然后利用直性回归起这样的一个空间遮粒度,而且会有一个额外的位移回归分支用来估计身体的关节位的位移。
那么具体的回归特例也可以分为根节点的位置和身体的位置的两个部分,那么根节点的话是以日历图为概率的回归,那么身体的节点的回归可以通过每个点的那个密集的位回归,那么这样子的话,在移动量的一定范围内,它就有非零取平均可得到了。那同样也设计了两个loss,一个是根关节点,一个是偏移,就是这是根,这是那个偏移,所以说它就是把hierarchical,把它很好的把它放到里面。当然 t 是个 8 级的模块,我们 Beta 会取 0. 01 来平衡两个损失的权重,大家说大家可以思考一下这个取大了会怎么样,取小了怎么样,它是有技巧,大家可以思考一下。
好,那么讲基于 transformer 的方法, transformer 人体就是它可以估计到一定的相似度,然后涉及到定位的时候,我们可以 cry 它的去 query 它的那个注意力机制上,聚焦到某个物体上面,所以模仿学习就可以用把它 query 到人类的一个具体的一个点上面。比如这样深入熟悉,那我们就可以 query 到的这个越来越query,开始是比较大,然后后面小一点,后面再小一点,不层碰到对 decoder 上面去,那么人体检测阶段使用的是那个检测出来的不同的人,而关键阶段的结构还是不变,只是 query 学习关键点的信息,然后回到关键点的位置,最终回到关键点的位置。这是它的模型,那模型虽然比较复杂,但是也不是太难理解。
这边是主要是一个 Transformer 的encoder,一个 Transformer 的decoder,之后就是 set the person 的feature,然后最后把它 bunny box 给弄出来这样子的一个过程。那么人体的检测和关键点它共用了一个特征网络的特征,那就需要设计一个 special Transformer network,它会完整的人中裁剪出单人对应的特征,然后用这个来做后续的特征。
其实这个东西和之前的物体检测在被说物体检测的姿态估计是很像的,它是大家可以看一下它中间的 issue lesson 结果,比如说一张图片输入,然后它就过个CNN,再过个 feature map,然后 needed project,然后transfer,它会长成这个样子,然后最后的话它的热度图是长这个样子的。然后这里面会包含的技巧就包括 LED normal s,然后摸 t hand attention,接下来是那个 lead Globalign,然后就 fit forward,然后这样过去,这样是一步步过了,是过去的。然后这样的一个网络会形成一系列的叫视觉token,那每个关键的脸都是可以学习的视觉TOKEN,那么视觉 TOKEN 和关键点 TOKEN 在一起,以 coding 而放进复信息层,将视觉的 talk 和观影的缩放一起一common,其实同时可以在图像中学习到外观的、视觉的观点之间的关系。
这个分类其实那个 VIT 也是使用过类似方法的,它就是说将分类的一个 TOKEN 和视觉 work 一起做注意力,大家可以看这样的一个图,那么我们对于这个小结就是说,首先我们是从图像的角度走,那图像走有两种方法,一种是自己向下的,老师是不用说的,然后有自己向上的去做那个关键点合并的。然后这个当然有了这个两步法就一定有一步法了。然后因为 Transformer 比较火,那还有基于 Transformer 的注意力的这种 attention 的,然后接着这是基于回归的,还有基于热力图的回归的,又有两个无力对齐有四个,我们讲了四个内容,大家可以回去复习一下,然后就自己向下的。
我们就讲 open post,它这种从亲和度的衡量,然后单个单阶段是SPM,然后最后的话是基于 Transformer 的,我们这样的那个 TOKEN post,这样的一个关系,以及具有那个那光间电的那个query。那么我们接下来讲那个人体的 3D 的人体估计,那么 3D 的人体估计是一定那个人体的预测,然后它人体关键点在三维空间上的坐标,可以在三维空间中还原人体的那个姿态。我们输入一张图片,然后我们在图片的三维空间坐标,当然这些三维空间坐标是相对的,它首先他没办法去制造绝对的延长度,只是说你那个相对关系,那么绝对坐标是需要在相机中有坐标,那个是有 capriation 的。也就是说你真的是会有那个深度相机,或者你的相机角形角色或连相机的那个就 carry 做得很好。
还有这种可能性,但是一般来说,如果给到图片我们是不知道它绝对落标的,那么绝对坐标是以关键点相对于尺、盆、骨之间的位置等坐标。那么 3D 的人体的资金固态又从 2D 中恢复那个3D,那么 3D 的信息从哪里来?大家可以想一想,其实基于 2D 到 3D 的回归是 2D 图像不饱含深度,这是一个病态问题,但是我们实际上可以根据它的语义特征来去,或者说人体是鲜艳的,人体是有鲜艳的,而且是有干性的,所以能够去实现那个 3D 的姿态的推理。
那么我们这个东西比如说是一个 2D 的,然后它的是 Linear 的124,然后的话再过一个124,最后我们就直接的话我们出它的那个结果。但是因为图像它本身就有这种语义信息,那么另一种可以办法做的信息。因为既然 3D 也预测需要借助更多信息,而我们可以用视频和针尖信息来辅助。那么因为你有时候做 2D 到3D,它会有病态,但视频化那两帧它的人跑的不会特别远,那这个东西就可以来合著的去合作来表达那个视频信息了。
那应用直接应用的同一对象是多视角的那个来图片来预测还原 3D 信息,那么基于那个单张图片的话,那么单张图片的话,那首先我们想到热力图了,而这个热力图和别人不一样,这是一个涡轮,就是说它是一个三维的热力图,对吧?那么我们就模型为那个 all grass 的连级联,它每个级联都有它的关键点,热度图, 3D 关,对于每个点我们会预测这样的一个热度图,然后取它值逐渐升级,然后每次的取值是1234,那个 d 是这样的一个过程。
有一个有趣的发现,直接用 2D 坐标预测的 3D 坐标可以取得比较好的效果,不需要借助图像,比如说我们 2D 的话,我们就可以猜,这是为什么呢?因为这里面人体的知识可能有这么多,我那么就能够出,但这里面肯定是有病态的,比如这些角是往前踢还是往后踢?其实这东西是一定是有病态的,但是这里面它是一个还是比较好的一个结果。
今天我们来讲一个 video post, video 就是基于单帧的图片,单帧图像去预测 2D 的关键点,再基于多帧 2D 的关键点预测 3D 的那个位置,那么单帧 3D 的坐标是这样子的,那么 2D 到 21D 的卷积网络和又是这样子的,然后它经过多帧之后就是 9 帧 32 维的那个 34 维的图像,他进去这个网络制定 2D 的关键点,然后去得到相当什么呢?相当你当真去取3D,比如说你单针去算3D,它可能会有病态,但增速如果你动起来,增速多了之后,他就会把病态性消下去,这是一个很有意思的观察,那么我们使用那个 HRA net 的话,我们就可以生成这样的一个视图,然后我们可以根据相机参数再结合它投影刀变成这样子。我们能够把每个人的关键点能做好,就是 watcho pose 2020 年的工作。
好了,那么我们下面来讲讲那个评估指标。评估指标是大家可能很关心的一个点,就是说那个 PCP 的话,它以肢体检测出来作为评价,那么我们会考虑到这么多个肢体,就是 2* 4 的肢体,但是还有头部,这是 9 个。然后每个关键节点其实都是和真时间距离都是小于等于一定要肢体长度的一半的,所以说我们已经可以认为肢体已检测到的且正确的部分,所以对于某一个肢体,对于某个测评部位的话,完整的那个指标应该是大家可以看到公式,整个数据集正确的检测词部位,除上这个部位中这部位中此部分的中位数。
还有就是说那个 PDJ 作为关键点位置的精度来做一个评价,因为考虑到这几个关键点,如果那个检测关键点和真实区区的距离在躯干的直径范围内,那么认为可以往下检测无关系点,而且也可以通过调整比例来获取不同程度的精髓的检测。例如如果我们把这个设为 0. 2,就检测到的预测位置和真实位置距离小于它的肢体躯干的关键的比例,这是几张图,大家可以看一下,那么接下来还有就是那个PCK, PCK 也是可以作为那个检测精度的,那么如果碱生时的检测的关节和真实关之间的距离是在某个阀值内的,那么认为检测的关键点是正确的。
在 2D 和 3D 中的任务都有使用,而 PCK 的阀值常常可以根据对象的比例调整对象的比例,包括是比例的封闭的边界内,比如说阀值是这个 0. 5 的话,那等于它的阀值内头部的连接的50%,如果是 0. 2 = 0. 2 乘以躯干,有时候也以这个阀值。
所以这些都常做的做法,你问我是对和错以及怎么来的,我也没办法跟你说,这是属于说是大家这样经验总结出来,这是一个最划算的一种做法。还有就是那个 o OK s 啊,这个事情是那个关键点相似度,就你算出来关键点之后,那你多对呢?那这个东西就很有学问了。首先这个东西我们来一个个看,这个东西是那个 GT 之间的 o 式距离,然后这个是控制的这度项分割的区间的平方根,所以说就是说他这又去那个除以 2 的后,又去规整化它这件事情。然后这个是控制双元点的那个关键常量,然后如果看得见他就去测,看不见他就不管了,所以说他只看得见的,因为这里面还有一边一些怪点,是那个检测那个图像中不可见的。
那后面我们来讲那个 desk toss 是以人体由 20 表面为分成 24 个部分,每个部分参小化到大小为那个 256* 256 的 UV 的那个 UV 平面,也就是说它总共 24 乘以 24265256 的两次方各这样的一个点,那么标注身体的满,标注各个身体部分的区间后,每个部分等距离采样到 14 个点,并且对应到 3D 上用于训练。其训练的结构包括mask, RCN 加上dance, segmentation 加上 desk post。
其实大家熟悉RCM, RCN 的那个框架,对这个都很熟了,这是一个 polling align,然后这个事情是那个拿出来的一个,然后先对背景进行预测,然后我们归一每一个进行人体每一部分的精确规划,回归以辅助任务关键点的 mask 的交叉训练。 TE 春带 word 实现蒸馏的光触似的增值的差值,可以形成更加密集的信号监督信氧。
这 dance pose 其实如果你学过那个马斯 SCI 就知道我说的都是蛮简单的一个事情,如果不太清楚,我建议大家回去看看马斯SCN,那么下面讲的是身体的那个表面网络了,那么身体的表面网络是由多边形去形成的,构建和身体这个通行是由顶点,但这个的好处是什么?这个东西是它会有人体的鲜艳,有人点鲜艳的话你就跑的不会跑偏太多。
那么这里面涉及到一个混合的蒙皮技术,这个事情是使身体的表面网络随着内在的骨骼变化的方法,当骨骼发生变化时,特定的关键点的那个下面的不同顶点发生了不同的变化和影响,那么在蒙皮的我们就混合蒙皮,英文不是英文,在新闻 match body match,当然这个蒙皮的翻译也不是标准的翻译,我只是这里这样说而已。
那这个这种的影响是不同的权重的,它有两种,一种线性混合,一种是双四元的那个数的混合。但我们就不追究这些东西,既知道有两种就好了,那么将顶点的骨骼变弱的模型可以变成一个线性关系,这些都是大家可以看一下。这个公式我就具体不用再讲那么多,通常权重是稀疏的。
第四,每一个顶点需要分配若干特定的骨骼点,那么比如手臂附近需要给分配的上手臂,下手臂骨骼,那确定顶点和骨骼对应关系的权重系数,就我们叫骨骼绑定。那么还有一种能体参数是那个s, m p l,这是用的比较多的,它是针对人体进行了参数化建模,将人体建成 6000 多个零点和 30 个子节点,还有那个Mesh,然后它会控定形体的参数是那个Beta,你看是 Beta 还有是控定控制那个 Theta 来控制人体的它的姿态参数,然后这个是它的。所以 Theta 变化之后人体的变化。
那么贝塔参数由 10 个组成,来描述人体的一些状态和参数,每个维度的值可以解释为人体特征的每个指标,比如高低矮胖瘦。然后那个 c 塔 23 参数就是有 23 个关键点,加三维的加一个根关键点,加三维的有 72 维的关系点来描述每个人的一个姿态动作,其实根节点的描述的一类定义的一组那个节点数,当然三维空间中的标则就是该节点数针对于父子节点旋转的一个轴的表达,所以相对来说你这个可能这个很好,直接弄这个可能会更加的敏感一些。 SMPL 的话,它针对是构建人体的参数模型,它使得顶点可以直接的通过参数自然送 c 塔和这个贝塔来控制。那么它底层逻辑是一个蒙皮函数是一致的。将 c 贝塔 c 塔那个影响建模到基本的函数是长这样子,它是个线性混皮函数。
from training scans, we learn shape blend shapes to capture the variation in human shape adding different combinations of shape blend shapes produces different body shapes simple predicts, the joint positions for a given body shape as a function of the mesh vertices these are shown as white dots from training scans of people in many poses we learn pose blend shapes that capture how real bodies differ from blend skin bodies given our pose simple computes, the linear contribution of these blend shapes the correct skinny errors and the produce realistic post dependent deformations finally simple uses a standard blend skinning to transform the deform template shape into the desired pose note that the contribution of the pose blend shapes changes with pose, all these steps are standard making the simple model compatible with the existing animation pipelines our formulation allows us to learn all parameters directly from data producing a model that realistically represents any body shape in edit mesh t in a。
那完整的表达过程是包含了混合的权重和标准模板 t 以及基础的商品进行变形的,然后再进行绵币动作,最终可以表示成为。大家可以肢解一下,这边是标准模板,那标准模板这边是混合函数,这个是形体混合函数,然后这个是权重,就是说我们到时候又去调的这个,这都是我们回归的。然后这里面会有一个门皮函数是长这样子的,这是观点回归,那最后它会形成这样的一个model,所以这些都是我们要回归的参数。
also learn the pose blend shapes b sub p that are added to the template to model how people deform with pose, here we see a simple model animated on the left and the associated pose blend shapes applied to the static mesh on the right, how the static mesh deforms particularly at the elbows shoulders and hips to compensate for the soft tissue deformations that occur due to pose, the shape blend shapes are liningly combined and weight by the shape coefficients beta, the result is offsets that when added to the base template give a new body shape the joint locations are predicted from this body shape, all the blend shapes are simply displacements from the template and once summed to produce a deform body shape, the skinning equation is then applied simple allows the independent modification of pose and shape this is similar to previous models like scape, which are based on triangle deformations we extend the simple model to add dynamic blend shapes b sub d to the base model。 the dynamic blend shapes are learned from a training set of forty, thousand dynamic scans and like the other blend shapes are simply offsets to the vertices of the base mesh, the linear coefficients that modulate dydynamic blend shapes are a function of the history of poses,capital, Phi and the bodies。
那么训练中所需要得到的参数是这些参数,然后在 Mesh 的上面最屌急的是可以重建。那么由于基本上是那个形态和姿态分开,我们可以将这些形态参数的姿态参数分开,分开完之后我们就可以在上面进行训练,训练到这上面这两个,这边是 Multi shaft,那个跟他们说这是那个它的那个 multipost 姿态,训练完之后我们想使用以那个 SMPL 为基础的 3D 插画模型,我们只要是提供它的 Beta 和它的 c 塔就可以在上面重建了。比如说那我们提供的训练,然后给定参数,给定那个姿态,那我们就人就能出来了。那么从人体参数估计的早期方法来说,那我们就可以从单张图去估计人的Mesh。
那么将 match 转化一个优化问题,我们可以有两个目标,第一就是说我们头尾已经回归到那个人的 2D 光源点,它会满足人体的一定约束,然后将它合并成一个优化目标,所以说这里面的好处是什么?好处它已经是把人体的先验知识藏在里面了,你就不用担心说你会出现一些特别违背人类知识的一些东西。
给定的一个方向的话,那我们可以估计它的 2D 关键点,然后提供的话,那就会知道它的这样的一个模型,这样的时候逐步就可以估计出来。这个我也不建不再去罗列了,大家可以看后面,可以回头看。这道公式我刚才已经讲过了,当然说整体的约束就是使用 CMU 的数据集,那我们可以进行求log,然后我们就可以约等于它的那个 minimum 的 mass 的这样的一个情况,嗯,等于是 minimum 这个东西,这是那个人体的,那我们用于惩罚那个不自然的弯曲。
还有就是胶囊会带来一些穿膜,所以穿膜就是比如说你的手查你的兜子里,但是发现你插到肚子里面去了,那么会有一些保证穿膜的,防止穿膜的那个粉惩罚。那么问题是说通常的 3D 的那个故意都会产生一些估计人体部位和相互穿摩的那些现象,不太好解决,那我们用 3D 的模型可以有效的保证它的不太会穿摩。它新的方法是人体可以一种非 to 凹的一个表面结构计算的模型,其实是复杂且昂贵的,那我们可以有一种胶囊来解决,就你看这个人体都是一组一组的胶囊,这样的话省事很多。
那么在这种情况下我们就可以变成这种约束,然后这种约束的话,在这个对角针下面,我们可以去把这样的一个 SMPL 的把它训练出来,同时形成的形态参数平均值是一个平均,是一个 0 均值的,我们设计是这样子的,这是损失关键点,这是先验的损失,然后这是形体的损失。然后可以通过梯度下降,在一个深度模型直接可以估计这个 SPM ASMPL 的一个模型参数。
最后的话重建人体的网络,那该模型可以在 2D 只有 2D 标注情况下完,当然你又是点鱼信息更好了,那做这样的设计都是这样子的,这也是一篇近期的一篇论文,这不是近期 18 年的,就是说那我们先去回归这些 camera 的post, ship 这些,然后我们也还会 project 回去 RD 里面看看我们究竟做的还是对还是不对。看它是不是在分类它是不是个distributor。
这里引进了一个判别器,说这个东西是不是一个真正的一个人体模型,因为他见过非常多的人体模型,会帮你判断对错。编码器使用 50 race net 50 的一个模型,采用迭代回归预测这个x,m,p, l 的那个模型和姿态参数。 Theta 形态参数,那若透视的相机建模跟我们的缩放这个参数和平移参数,渲染参数形成这样的一个完美的一个参数集。我们就对于回归Theta,我们可以计算它的 2D 投影,然后通过 2D 投影的损失就很横一层的回归出来,说,我们还会产生一些异常的人体结构,那么但是我们没有先验的话,我们可以引入个判断,这个判断性每个判断性的 0B 之间表示人的参数是否有真实的情况下,那这是我们的判断函数,这是我们的总省时函数,那将各部分就完成完整的组成了一个完整的统计式,那个算是函数。那么我们就课堂总结了我们的几个事情。
首先一切都开始于2D,就是图像处理,那么图像处理它早期就是有自顶向下的方法,然后就有热力图的方法,还有就是那个自己向上的方法,当然自己向上也用了一部分热力图,然后再有 transformer 的一些事情当然跑不了。还有东三阶段的方法,那么直接预测,利用视频信息还有多维的角度来一起预测 3D 的,这是一块,然后 dispose 是可以用人体参数化以及三个模型。谢谢大家,那我的课就到这里结束了,跟大家那个分享了姿态估计的一些基本的方法和基本的思路。
妙记支持设置封面啦!