【OpenMMLab实战营】第二课: MMPose

【OpenMMLab实战营】第二课: MMPose_第1张图片


介绍

姿态估计 == 关键点的识别。关键点由一组像素点(x, y)定义。

应用:行为识别【OpenMMLab实战营】第二课: MMPose_第2张图片,动画人偶,人机交互,动物行为研究等。


方法

2D姿态估计:

自上而下 / 自下而上 / 单阶段 / 基于Transformer

坐标点的输出方式有两种:1. 生成二维高斯分布图,再采样出坐标点,优点是输出二维的图像更符合神经网络的特性,最终精度会更高,缺点是计算量大。此外,对于关键点分布不一定是高斯的情况(比如说手肘处),有RLE方法来解决(此处没太明白)。2. 直接生成坐标点。优点是连续值因此无精度上限,缺点是图到坐标的映射非线性,更难学。

自上而下的方法:先分割出bounding box再裁出小图,对每个小图做关键点检测。缺点:人重叠的情况不好办。

自下而上的方法:在一整张图上识别出所有关键点,再对关键点聚类,区分属于不同人的点。(突然意识到关键点的识别不仅仅是识别出特定的图像pattern这么简单,还包括了实体的区分,不然全部实体的点都混在一起相当于没用)

单阶段的方法:输出是每个实体的中心关键点,以及从中心关键点指向其它关键点的向量,该方法天然区分出了实体,因为一个中心关键点就代表一个实体。改进方法:关键点树分多级,将肩膀髋部等作为二级节点,四肢末端作为三四级节点等,能在肢体形变较大时表现更好。网络使用了级联的Hourglass。

这里为什么要做多个 "hourglass" 结构的级联?

文中指出相互关键点之间也是有关系的,知道了双肩就更好预测肘,知道了肘的位置就更好的预测手的位置,而每一个 “hourglass” 结构都很会产生一个热力图预测,这样级联起来,上一个 “hourglass” 学习并预测的关节点之间的联系也可以为下一级所用。-- 姿态估计: Hourglass 网络 - 知乎

Transformer网络:

PRTR算法:模仿DETR,让query的聚焦逐渐细化,最终检测到关键点。TokenPose:图像变成token,与一些可学习的关键点token一起放入Transformer,最终输出的token就是对应每个关键点token的位置分布。

【OpenMMLab实战营】第二课: MMPose_第3张图片


3D姿态估计:

基于单帧:直接从2D图像或者2D关键点预测结果来预测3D关键点,这种升维可行是因为人体结构存在刚性约束。但会有病态情况:腿向前踢和向后踢在2D里看起来是一样的。

基于视频:能有效缓解上述病态情况。


稠密三维模型:

将二维图像中的人体映射到三维人体模型的方法。应用自己想到两个:1. 生成3D虚拟人偶动作同步;2. 增强现实,人体通过三维模型能和仿真里的虚拟物品更好地互动。不知道还有什么别的应用不。

DensePose:Facebook 2018年提出的,使用BodyMesh。

人体参数化模型:包含形态参数,姿态参数等,控制人体高矮胖瘦和姿态。

【OpenMMLab实战营】第二课: MMPose_第4张图片


总结

我的感受是,这说白了是关键点的检测,不局限于人体,比目标检测还要再细粒度一点,因为一个点构不成一个物体,但它可以是一个物体上的某种特定的pattern集中的点。相当于如果你想检测一些点,这些点在物体上往往和特定的pattern关联(但它不一定有清晰的边界,所以它本身算不上一个物体,不能用目标检测),那么就可以用上前文的一些方法(前提是你有数据集)。

你可能感兴趣的:(计算机视觉)