【人体姿态估计】(一)原理介绍
一、背景
人体姿态估计本质上是一个关键点检测的项目;
关键点检测在生活中的应用十分广泛,包括人脸识别、手势识别,而人体姿态估计则是对身体的关键点进行检测;
本文将介绍一些常见的数据集、评价指标以及比较经典的算法;
二、数据集和评估指标
首先关键点的评估指标参考以下文章:
COCO数据集评价指标 —— Keypoints - 简书 (jianshu.com)
COCO官方评价指标
其本质是通过点之间的欧式距离关系进行指标评估的;
其中要重点注意一个参数:
v = 0 : 未标注点
v = 1 : 标注了但是图像中不可见(例如遮挡)
v = 2 : 标注了并图像可见
最常见的人体姿态数据集为MPII和COCO数据集,其中COCO数据集如下图所示:
标注文件中需要重点关注categories部分;
其中keypoints代表种类,skeleton代表的是连线的规则;
三、Top Down算法
简介:一种自顶向下的方法,本质是先找人后找点;
其中最经典的网络为Mask RCNN,其步骤为先找人——实例分割——关键点检测;
下面看一下Mask RCNN和传统二阶段检测算法的区别:
从上图中可以看出,相比于传统二阶段检测网络,增加了mask branch的模块;
详细如下图所示:
对检测到的图像ROI进行降维特征提取,输出的通道数为需要检测的关键点数量;
单独将每一通道的图取出,可以看出是一个Heatmap,又称为热力图;
四、Bottom Up算法
简介:一种自底向上的方法,先找点后进行归纳;
其中最经典的算法为OpenPose;
源码:https://github.com/CMU-Perceptual-Computing-Lab/openpose
论文:[1812.08008] OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (arxiv.org)
原理:
主要分为两个步骤,Parts Detection(点的预测)和Parts Association(点的连接)
其中先通过特征提取网络得到特征图,转换得到每个关键点的热力图;
其次关键在于通过PAF计算两个点的关联度;
上图表示了两个点之间的得分如何计算,首先通过点是否在真实连线的区间范围内来判断两点的关联性,其次计算得分;
想了解算法细节的可以看后续的代码讲解部分;
五、前沿算法
1、MSPN
论文地址:https://arxiv.org/pdf/1901.00148.pdf
上图为主要的结构模块;
从结构上看,优化了单个stage的结构,采用了降采样到上采样的两个过程(类似于U-Net);
具体看其中的关键结构:
在降采样和上采样的过程中会造成大量的特征信息丢失,因此采用上图所示的相邻阶段的特征聚合,以增强特征信息传播降低训练难度;对于一个降采样过程,输入包括三个部分:上阶段中相同size的降采样特征经过1*1卷积编码后的特征、上个阶段中相同size的升采样特征经过1 * 1卷积编码后的特征,以及当前stage的降采样特征;
下面是对每个stage输出的优化策略:
采用了由粗到细的多分支监督的方式来优化stage的能力,如上图所示,对于每个stage的特点,采用不同的kernel-size的高斯核制作标签;
2、HRNet
参考:刷新三项COCO纪录!姿态估计模型HRNet开源了,中科大微软出品 | CVPR (qq.com)
简介:高分辨率网络(High-Resolution Net)的缩写,在表征学习的整个过程中,都能够保持高分辨率表征,因此为模型设计了并联结构,把不同分辨率的子网络,用新的方式连在一起;
上图是现有的一些方法:
- (a)对称结构,先下采样,再上采样,同时使用跳层连接恢复下采样丢失的信息;
- (b)级联金字塔;
- (c)先下采样,转置卷积上采样,不使用跳层连接进行数据融合;
- (d)扩张卷积,减少下采样次数,不使用跳层连接进行数据融合;
上图是HRNet的结构,主要有两个特点,并行连接高分辨率子网和重复的多尺度融合;
相比于传统的下采样特征提取,该网络通过上采样和下采样,并且在特征提取过程中融合不同形状的特征;
补充信息
对于关键点的开源代码和论文,可以参考这个地址:Keypoint Detection | Papers With Code
几种IOU的总结:一文读懂目标检测中的各种IoU损失函数 - 知乎 (zhihu.com)