读了一篇利用视频做姿态估计的比较经典的论文, 3D human pose estimation in video with temporal convolutions and semi-supervised training.
论文地址: https://arxiv.org/pdf/1811.11742.pdf
CVPR 2019收录论文
简单对论文的内容做一些自己的学习笔记, 然后再补充对于论文项目代码的笔记.
基于Video实现单目3D HPE(Human Pose Estimation 人体姿态估计), 核心思想在于利用空洞卷积在多帧图像上做时序卷积, 充分利用视频中包含的时序信息+2D RGB 图像实现3D HPE.性能数据:
2D DetectionsBBoxesBlocksReceptive FieldError (P1)Error (P2)CPN Mask R-CNN 4 243 frames 46.8 mm 36.5 mm
CPN Ground truth 4 243 frames 47.1 mm 36.8 mm
CPN Ground truth 3 81 frames 47.7 mm 37.2 mm
CPN Ground truth 2 27 frames 48.8 mm 38.0 mm
Mask R-CNN Mask R-CNN 4 243 frames 51.6 mm 40.3 mm
Ground truth – 4 243 frames 37.2 mm 27.2 mm
1.简介
利用几乎完全由卷积层构成的神经网络, 将2D pose转换为3D pose 这一问题非常有意思, 由于3D比2D多一维, 2D Pose 投影到3D 必然存在多解性, 即一组2D pose可以对应到多种3D pose的情况, 那么如何充分利用视频这一带有时间信息的数据作为维度上的补充就显得非常重要了.
这篇论文主要贡献:
利用空洞卷积在时间纬度上做卷积运算, 提取前后帧信息, 用于辅助将2D joints(骨骼关键点)转换为3D joints(骨骼关键点), 最后直接输出3D 坐标而非 heatmap. 这在以往是利用RNN, LSTM等自然语言处理的常用方法.
提出back-projection , 可以用于未标注数据的半监督学习模块,一定程度上能缓解3D HPE训练过程中数据量不足的问题. 从2D到3D,再到2D, 3D到2D只要投影角度等参数固定, 解唯一, 那么就可以利用这个来实现半监督学习.
1.1 利用空洞卷积在时间纬度上提取信息一想到时序信息,我们常将其想到NLP的经典方法, RNNs, LSTM , GRU等等. 其实在机器翻译, 语言建模, 对话生成等传统的NLP领域, CNNs也早就大放异彩了.
RNN等架构有一个比较明显的缺点, 即在时间唯独上处理时只能串行处理视频帧而不能并行处理, 这限制了处理的速度, 而空洞卷积因其结构的特点, 每次提取信息时都是多张一起读入, 因为空洞卷积是把多个视频帧当成了一个sample, 在时间纬度上直接提取信息.
这里的并行处理所指的和以batch处理数据的概念还有些不同, 上图中蓝色的圆圈即是每次做卷积的位置.
图中所示的就是kernel size=3, dilation factor=3的空洞卷积. 在时间纬度上做卷积运算, 考虑了前后帧的信息, 自然可以将2D pose转换为3D pose.
这篇论文中提出的方法, 利用CNNs处理时序信息,不仅提升了处理速度并降低了参数量, 还在当时拿到了SOTA (state-of-art).
1.2back-projection , 利用未标注数据实现半监督学习虽然有Human3.6M这样的大型数据集和中型数据集Human-Eva I, 但是对于深度学习这种极度依赖数据的技术而言, 再多的数据也不嫌多.而且对于目前越来越复杂的网络结构而言, 数据集始终是一个模型能否有较强泛化能力的重要因素之一. 对于3D HPE, 获得一个优质的数据集并非易事.3D HPE的数据集标注工作往往需要昂贵的动作捕捉设备和专业的场地.