基于3D深度视觉的人体姿态估计算法

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自|新机器视觉


人体姿态估计是当前计算机视觉领域的热点研究问题。对人体骨架关节点进行准确提取并构建人体骨架模型,为进一步的人体姿态识别、实时交互游戏等应用提供了基础。但是传统的基于RGB图像的方法容易受到光照、阴影、复杂背景的影响,准确度不高并且算法复杂。利用深度图像技术可以有效地解决上述问题,利用深度信息可以快速地进行背景分割,抗干扰性能好,算法效率高。

本文主要研究基于深度图像的人体关节定位算法。算法对深度图像素点周围区域的深度进行格点化采样以提取其深度特征,再使用随机森林分类器进行像素点分类,对同一类别的点使用Mean Shift算法聚类出中心点,以该中心点作为关节点位置。该算法可对人体全身关节点进行定位。

局域深度特征提取

本文中采用如图1所示的局域深度采样特征。其中蓝色点表示图像I中给定的像素x,以该像素为中心生成一个5*5的格点矩阵,红色的格点表示要进行深度采样的点。

基于3D深度视觉的人体姿态估计算法_第1张图片

图1 局域深度采样示意图

随机森林分类器

分类器是对样本进行分类的算法的统称,在机器学习中有许多种分类器可供我们选择使用,包括逻辑回归、朴素贝叶斯、支持向量机(SVM)、决策树、随机森林、神经网络等算法。综合考虑分类的精度与效率,本课题中采用的是随机森林分类器。

随机森林分类器是由多棵决策树组合而成的分类器,如图2所示。决策树的结构类似二叉树,由分裂结点和叶结点构成。每一个分裂结点包含一个特征与阈值,像素x从根部开始,根据特征与阈值划分进入左子树还是右子树,这样不断地分裂直到叶结点。在每棵树的叶结点能够得到该像素对于各个身体部件的概率分布,将各棵树得到的结果相加,得到最终的概率分布,拥有最高概率的一类作为最终的分类结果。

随机森林将多棵决策树合并在一起,准确度相较于单棵决策树有较大提升,并且多棵决策树可以并行训练,提高了训练效率。

基于3D深度视觉的人体姿态估计算法_第2张图片

图2随机森林分类器

训练完随机森林分类器后,我们利用其对像素点进行分类,判断其属于身体的哪个部位。对于图像中的每个像素,使用分类器对其分类后得到分类的结果,以及预测结果的概率。我们只选取图像中预测概率高于80%的点,这样就能得到密度不同的分类点。越靠近关节点位置,预测概率越高,点的密度越大,远离关节点位置的密度则小。

关节点位置估计

在得到像素点分类后,我们使用Mean Shift聚类算法得到属于同一部位像素点的中心,作为关节位置。

Mean Shift算法一般为一个迭代过程,先计算感兴趣区域内的偏移均值,移动区域中心到计算出的质心处,然后以此处作为新的起点,继续移动。在迭代过程中,不断向密度更大的地方偏移,直到移动到这类像素点密度最高的中心位置而停止。此时这个位置最能代表这一类点,我们将其作为该部位的关节点位置。分别对所有类别的点都运行一遍此算法后,我们就能得到全身关节点的位置。

但是由于分类结果并不一定准确,聚类出的结果可能与真实关节点的位置有所偏移,这时我们可以采用人体骨架长度比例约束条件,来矫正一部分偏移较大的关节点,对预测结果进行优化。

流程介绍

训练流程:对一幅深度图,取关节附近的点作为训练集,对这些点提取深度特征,再训练随机森林分类器

基于3D深度视觉的人体姿态估计算法_第3张图片

图3训练流程示意图

测试流程:深度图背景分割得到人体区域图像,使用随机森林分类器对人体的像素点进行分类,选取预测概率大于设定阈值的点,则得到疏密不同的各关节部位像素点,越接近关节点位置,像素点越密,再使用Mean shift算法进行聚类,得到关节点位置

基于3D深度视觉的人体姿态估计算法_第4张图片

图3测试流程示意图

运行效果

图4为关节定位算法的运行效果,(a)为NTU数据集中关节点的标准位置;(b)是算法对同一张深度图中关节点的定位结果;(c)为自制的Kinect测试集上的运行效果;(d)为采用公司研制的TOF相机模块拍摄的深度图的运行效果。可以直观地看出定位效果较为良好。TOF相机的分辨率为320*240,因此相同距离下人体在画面中所占比例更大。

基于3D深度视觉的人体姿态估计算法_第5张图片 基于3D深度视觉的人体姿态估计算法_第6张图片

(a) (b)

基于3D深度视觉的人体姿态估计算法_第7张图片 基于3D深度视觉的人体姿态估计算法_第8张图片

(c) (d)

图4 算法运行效果示例

(a)NTU测试集真值,25关节 (b)NTU测试集 (c)自制测试集 (d)TOF相机拍摄图像

 End 

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

基于3D深度视觉的人体姿态估计算法_第9张图片

基于3D深度视觉的人体姿态估计算法_第10张图片

你可能感兴趣的:(算法,定位,计算机视觉,机器学习,人工智能)