ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

三维人体姿态估计综述:从深度歧义到RGB-D融合的工程选型指南

三维人体姿态估计综述:从深度歧义到RGB-D融合的工程选型指南 简介针对三维人体姿态估计方向的深度学习综述文献由北京航空航天大学计算机学院团队撰写适合计算机视觉、人机交互领域的研究生、开发者与相关从业者作为技术参考。资源为单个PDF全文文档大小8.64MB目前已有268人学习浏览。内容从三维人体姿态估计的基本概念与主要挑战入手对现有方法按输入数据类型、目标任务类型和基本原理进行分类并重点梳理了基于RGB图像与RGB-D图像的深度学习技术进展涵盖CNN特征提取、生成对抗网络建模等代表性思路。同时结合虚拟现实、医疗康复、自动驾驶等典型应用场景分析技术落地价值并对发展趋势做出展望。对希望快速建立三维姿态估计整体认知、追踪深度学习方法脉络或提炼参考文献资料的读者这份文档具有较高参考价值。1. 单目RGB的深度歧义三维人体姿态估计要面对的第一道坎单目相机拍下的二维图像无法唯一决定一个人的三维姿态。同一个二维投影可能对应多个夹角不同的手臂姿态这就是三维人体姿态估计里的“深度歧义”。基于深度学习的三维人体姿态估计要解决的就是把这个不确定的逆问题变成可学习的映射输入单张 RGB 或 RGB-D 图像输出人体关节点的三维坐标、三维骨架甚至网格模型。这篇综述来自北航团队 2021 年的整理把近五年代表性工作按输入数据、任务类型、方法原理做了系统梳理。适合正在做人机交互、虚拟现实、康复评估的工程师也适合刚要进入 3D Pose 方向的算法同学按图索骥找 baseline。2. 姿态表示与分类法骨架模型、表面模型以及四组算法坐标系2.1 从“说什么语言”开始骨架模型与表面模型三维人体姿态估计先从人体描述方式入手。骨架模型用一组关节点和连接线描述人体的拓扑结构定义轻量、便于监督是目前大多数方法采用的形式表面模型用网格、曲面或体素描述外观轮廓细节表现力强但获取标注通常要三维扫描成本高更多用在人体重建、动画生成的混合任务中。工程上若只做行为识别、康复动作评估优先考虑骨架模型要做数字人、影视级重建才需要考虑表面模型。若用数学语言定义单人姿态估计就是学习一个函数 f给定图像 I∈R^(H×W×3)输出 J∈R^(M×3)其中 M 是关节点数量每行是一个关节的三维坐标。多人姿态估计则在此基础上增加人物数量与身份关联任务难度随遮挡和交互情况上升。2.2 难点不是网络不够深而是先验不够多三维姿态估计的三个核心挑战几乎贯穿所有论文的实验设计。第一高自由度与深度歧义人体有大量关节和肢体极端姿态下二维投影信息不足消除歧义的手段通常有三种——引入深度传感器、多视角相机、或带时间维度的视频序列。第二遮挡与自遮挡真实场景中人与人、人体与环境互相重叠单靠骨架回归很容易把遮挡肢体预测到错误位置常见补救是把目标检测、目标跟踪和姿态估计串联。第三泛化能力多数训练集在室内采集动作类别和光线变化有限室外场景容易掉点这也是近年大家更关注弱监督、半监督和跨数据集迁移的原因。实际项目中检测出来的人框有抖动层叠的遮挡关系没法只靠 backbone 解决通常需要加时序平滑或骨架几何约束后文会给出具体方向。2.3 四组分类维度不是互斥而是互相叠加基于深度学习的姿态估计方法可以从多个维度分类而且这些维度并不互斥。基于回归与基于检测。回归方法直接建立图像到关节坐标的映射简单但非线性强、难训练检测方法输出二维或三维热度图利用局部像素信息使关节定位更鲁棒但热度图和原图之间的尺度差异会带来精度损失。基于人体模型与无模型。基于人体模型的方法把骨架长度等人体结构作为先验帮助参数化或回归抗遮挡能力更强无模型方法直接学习图像到坐标的映射实现简单、推理高效但结果可能违反人体运动学常识。自顶向下与自下而上。自顶向下先做人检测再对每个人单独做姿态估计精度高但计算量随人数线性增长自下而上先检测所有关键点再通过图算法或亲和场把它们组装成多个人人数增长时更友好却容易在遮挡场景出现组错人。多阶段与端到端。多阶段方法把 2D 姿态估计和 2D 到 3D 的提升分成两个子任务中间监督明确容易利用大规模 2D 标注数据端到端方法直接由图像回归 3D 坐标训练流程短但缺少中间约束极端姿态下容易失真。下表总结了这四组维度在工程选型中的常见倾向。分类维度典型策略优点缺点或风险回归 vs 检测直接坐标输出 / 热度图回归快但非线性强检测定位稳检测输出与输入尺度不一致坐标精度受上采样影响模型 vs 无模型参数化人体模型 / 无先验网络模型帮助抗遮挡无模型简单高效无模型鲁棒性低自顶向下 vs 自下而上先检测人再估计 / 先关键点再组装自顶向下直观高精度自下而上人越多越省算力自顶向下随人数线性变慢自下而上易受遮挡干扰多阶段 vs 端到端2D-3D分离 / 单网络映射多阶段有中间监督易利用2D数据端到端缺少中间约束训练样本需求高2.4 以输入数据类型为主线应用导向更清晰这篇综述没有沿用纯基本原理分类而是以输入数据类型为主线RGB 图像、RGB-D 图像再结合任务与结构维度细分。这个角度看技术演进更贴近部署RGB 相机成本低、普及率高适合安防、Web端RGB-D 相机提供深度适合医疗、机器人等近场场景。后续章节沿着这条路线分别展开。3. 基于RGB图像的三维人体姿态估计2D骨架提升、端到端与多人时序路线3.1 多阶段方法先拿到2D骨架再学习一个“提升器”基于 RGB 的方法中多阶段路线是落地最稳的。常见做法是先用热图类网络得到 2D 关节点再用一个小型 MLP 把 2D 坐标映射成 3D 坐标。Zhao 等人用一组全连接层拟合深度信息Martinez 等人用残差连接的全连接层从 2D 姿态回归 3D 坐标Fang 等人在网络输出部分加入循环神经网络显式编码骨架长度。这个做法的收益是中间监督明确2D 姿态标注数据远多于 3D 标注2D 检测器基本成熟提升器需要学的只是“深度方向的残差”。特别是 Martinez 的 baseline 虽然网络结构非常简单但效果却超过了不少复杂模型。原因在于2D 检测结果已经消除了大量外观变化残差连接又让网络只聚焦学习二维到三维的修正量避免了从头学习图像特征。工程上一般会先用这套结构验证数据标注和坐标系再替换成图卷积或时序卷积收益通常更明显。下面是一个可运行的简化版 PoseLifting 网络以 2D 关键点作为输入。import torch import torch.nn as nn class ResidualFC(nn.Module): def __init__(self, dim1024): super().__init__() self.block nn.Sequential( nn.Linear(dim, dim), nn.BatchNorm1d(dim), nn.ReLU(inplaceTrue), nn.Linear(dim, dim), ) def forward(self, x): return x self.block(x) class PoseLifter(nn.Module): def __init__(self, num_joints17): super().__init__() self.input_mlp nn.Linear(num_joints * 2, 1024) self.res_blocks nn.Sequential( ResidualFC(), ResidualFC(), ResidualFC() ) self.output_mlp nn.Linear(1024, num_joints * 3) def forward(self, joints2d): # joints2d: (B, num_joints*2) x self.input_mlp(joints2d) # 特征升维 x self.res_blocks(x) # 学习2D到3D的残差变换 return self.output_mlp(x).view(-1, 17, 3)代码里把 17 个关键点的二维坐标拼接成一维向量输入全连接层。BatchNorm 在 batch size 足够大时能稳定训练残差块让网络在已有二维结构上做增量修正而不是从零预测绝对坐标。输出层恢复成 (batch, 17, 3) 后损失可以直接使用 MPJPE。训练前要把 2D 坐标归一化到骨盆中心并缩放到固定尺度否则网络对图内人物远近十分敏感。3.2 端到端路线直接回归三维省去中间监督端到端方法不把 2D 姿态作为显式中间结果。Li 等人设计多任务卷积网络同时做肢体检测与关节点回归Pavlakos 等人用堆叠沙漏网络估计三维体素热度图通过中继监督逐阶段细化Sun 等人改为回归关节点之间的相对向量让网络更关注人体结构靠近骨盆的关节误差更小但远端关节误差会积累。Zhao 等人的 SemGCN 把图卷积用进姿态估计与二维姿态网络联合端到端训练在不增加监督的条件下把参数数量降到原来的十分之一。这条路线的问题在于缺少 2D 中间监督后弱纹理、遮挡场景下容易产生不符合人体结构的输出。如果训练数据有限直接端到端反而不如两阶段方案稳定但如果是多任务统一建模端到端设计能减少误差在不同模块之间的传导。3.3 多人场景自顶向下精度高自下而上省计算多人姿态估计通常复用单人网络。自顶向下方法先检测人体框再对每个框做单人姿态估计例如 HMOR 把检测、姿态估计、空间定位统一成端到端框架自下而上的 DeepCut 先由 CNN 得到候选关节点再用图模型计算关节点之间的关联权值DeeperCut 基于残差网络改进速度与精度。Huang 等人用高分辨率特征金字塔学习尺度感知表示处理画面中人物尺度过小的问题Zhen 等人引入 2.5D 表示在深度图上做关节匹配。工程上当画面人数少于 5 人时通常选自顶向下配合一个轻量检测器就能快速上线人数密集且需要实时推理时才考虑自下而上。自下而上的难点不是关键点检测而是分组遮挡情况下不同人的相似关节很容易被合并到同一个骨架。3.4 视频与多视角用时间或几何消除多义性视频带来的时间信息可以压缩三维姿态搜索空间。Hossain 等人用二维骨架序列配合 LSTM 提升时序一致性Zhou 等人先对姿态聚类、PCA 得到基向量再用 EM 算法求组合系数Mehta 等人用残差网络输出正交热图首次实现实时估计VideoPose3D 在二维关键点轨迹上做时间卷积结构更轻还能用未标记视频做半监督学习。VIBE 引入 AMASS 动作采集库做对抗训练让生成姿态更接近真实人体运动分布。SRNet 观察到视觉任务受长尾分布影响而局部姿态没有严重长尾问题通过分组子网络加低维全局信息兼顾局部真实与整体一致。多视角则偏向几何方法。Chen 等人结合视角几何做密集人群三维估计先匹配脚部再三角化Cai 等人用时空图卷积把关节按运动学依赖分为六类并分配不同卷积核。多视角方案工程成本高通常用于实验室或运动捕捉替代场景对普通项目来说用视频加时序模型更划算。4. 基于RGB-D图像的三维人体姿态估计深度通道的四种参与方式4.1 深度信息补上了什么从设计层面看优势与代价RGB-D 相机普及后深度信息成为消除深度歧义的最直接手段。深度图能给出物体到相机的距离关节点的 z 坐标有了显式观测而不必用网络脑补。然而深度图对光线、颜色、纹理不敏感单独使用时人体轮廓与关节信息反而比 RGB 图像更难提取更重要的是公开带标注的深度姿态数据集中场景有限规模不足以支撑大网络训练。因此 RGB-D 方法的核心问题不是“多了深度就可以随便用”而是“什么阶段融合保留哪些信息”。4.2 仅用深度信息数据增强与运动图编码缺一不可仅以深度图作为输入的方法不多主要是因为缺少大规模标注。Wang 等人提出加权层次深度运动图通过三维点云旋转投影生成多视角图像扩充数据并提高对视角变化的适应再把人体姿态信息编码成伪彩色图用三胞胎 CNN 做特征提取。后续工作把输入从全身扩展为全身—肢体—关节的多尺度深度图像成对送入卷积网络提升对多尺度人体结构的感知力。这类方法的适用条件比较苛刻场景背景干净、深度传感器离人不远、光线变化不大。项目里如果没有这些前提建议直接把深度作为辅助信息而不是唯一输入。4.3 RGB 与深度的融合方式从最直接到最彻底综述里把融合策略分成几类。第一种是把深度图当作第四个通道Zhu 等人用三维卷积金字塔融合Pigou 等人直接用 RGB-D 四通道图像提取外观特征再接时间卷积和 RNN。这类做法最简单缺点是两个模态的统计特性差异较大网络需要更多参数去学习对齐。第二种是双流处理后再融合。Duan 等人提出双流一致性投票卷积网络对 RGB 序列结构显式建模并用三维深度显著性卷积抑制背景干扰Rahmani 等人把不同视角的人体视觉信息映射到与视角无关的空间。早期串联在抽象特征层训练速度较快但特征错位问题要靠对齐模块解决。第三种是输入阶段就做场景流级融合。Wang 等人利用场景流从起始阶段把 RGB 与 depth 融合再输入卷积网络或者在 RGB 和深度特征上协同训练单一 CNN同时优化排序损失和回归损失让网络学到两种模态数据的深层共性。这种做法的融合最彻底但对数据同步性和相机标定要求最高深度图噪声会被直接放大。下面这张表可以帮助选型。融合方式代表做法实施成本适用场景深度作第4通道RGB-D 四通道输入 CNN最低直接改预处理快速验证、数据量充足双流后期融合RGB 分支 Depth 分支特征拼接中等需设计融合层颜色与几何差异明显需要分别提特征场景流早期融合输入阶段融合点云或场景流高依赖同步标定动态场景、人体与物体交互相频繁4.4 深度加上骨架先验用“特权信息”训练更稳的模型另一条容易忽略的路线是把骨架先验当作特权信息。Shi 等人用骨架序列的先验知识帮助训练深度图网络Mahassein 等人则把骨架编码器输出作为正则化 LSTM 的输入他们认为视频和骨架序列是同一姿态的两种表达两种潜在特征应当一致Shahroudy 等人把不同模态特征嵌入参数化空间用非线性自动编码器做特征分离。这类方案在训练时使用了骨架数据推理时只依赖 RGB-D 或深度图属于知识蒸馏的变体。若采集流程本来就带骨架标注或预训练 2D 姿态估计结果可以低成本地把它加进训练损失变成弱监督正则项。需要特别注意深度图噪声大且存在红外干扰如果深度值出现大量空洞先做填充和双边滤波再进网络。5. 评价指标与复现检查MPJPE对齐方式和骨架约束验证技巧5.1 先分清两个指标再选模型MPJPE 是所有关节点预测坐标与真值之间的平均欧氏距离直接反映三维空间绝对误差。PA-MPJPE 先对预测骨架做一次刚性变换再计算误差。MPJPE 适合关注绝对位置的应用比如自动驾驶中判断行人是否进入车道PA-MPJPE 适合关注动作形态的应用比如康复动作评估和姿态分类。论文里经常同时报两个指标阅读时要意识到 PA-MPJPE 的下降可能来自旋转对齐后的结果不能直接等同于空间定位精度提升。5.2 用骨架约束做复现检验复现时先固定二维检测器用预训练 HRNet 或 CPN 获得 17 个关键点坐标做骨盆居中、尺度归一化再训练 3D 提升网络。如果训练损失下降但可视化明显畸变通常不是网络容量不够而是缺少几何约束。可以给损失函数加一个骨架长度项在预测值和真值之间计算相邻关节骨骼长度的平均误差作为正则项惩罚生成长短腿或左右不对称骨架的结果。另一个工程技巧是检查关节顺序不同数据集输出关键点的顺序经常不一致索引没对齐会直接虚高指标。调整完仍出现时间维度抖动时再把全连接提升器换成时间卷积或图卷积观察长尾动作上的 MPJPE 变化。本文还有配套的精品资源点击获取
返回列表