一 写在前面
未经允许,不得转载,谢谢~~
最近方向从video recognition转到了3D human body reconstruction,所以刚刚开始看这方面的论文,就把简单的阅读笔记都整理在这里了~
文章应该会持续更新,大佬们见笑啦~~~
二 论文阅读笔记
1. 3D Human pose estimation: A review of the literature and analysis of covariates
- Computer Vision and Image Understanding 152(2016)1–20
1.1 整体情况
- 文章对给定RGB或者video的情况下对人体姿态估计的方法做了review;
- 根据输入的不同将他们划分为:
- single image or video;
- monocular or multi-vew;
- 我主要关注的是single image and monnocular的情况;
1.2 主要内容
- 文章关注的输入类型为RGB图像;
- 除了RGB,还有一类很流行的RGB-D输入,文章没有涉及,但是给出了一篇2013年的paper review;
- 文章整理了2008-2015年间的single-view方法;
-
姿态估计的大概流程:
- prior body model决定了方法是model-based还是model-free的;
- 利用2D pose information既可以用来作为额外的信息,又可以作为3D model 映射回2D时(projection)的参考。
- 例如一些预处理技术,例如抽离背景部分;
- 对特征进行提取,然后输入2D pose estimation中进行评估;
- 获取初始3D pose,然后用优化算法来评估3D姿态;
- 对姿态进行一些constrain,丢弃一些不可能出现的姿态,最终得到估测好的3D pose;
-
文章根据模型方法的不同,又进行了以下分类:
- generative model(model-based,top-down)
- 利用先验知识进行建模,分成建模(model)和评估(estimation) 2个阶段,会用上很多人体结构之类的信息;
- 在生成模型中有一类被称为part-based(bottom-up)方法,由body part的集合来表示human skeleton;
- 文章给出了几篇比较有名的论文:PSM, Deformable structures model, graphical model(SP);
- discriminative model(model-free)
- 不需要假定特定的模型,直接学习从image到3D human body之间的映射关系;
- 这一类方法又可以进一步分为:learning-based和example-based;
- learning-based方法直接学习映射关系;
- example-based方法存储一系列exemplars以及对应的pose descriptors,最终测试的时候直接通过相似度检索得到几个candidates然后进行插值;
- hybrid approaches
- 生成模型能够更加准确的推断出pose,具有更好的鲁棒性;
- 判别模型能够更加快速的训练,需要表示的信息更加低维;
- hybrid approaches能够结合生成模型和判别模型,从生成模型的可能性结果来验证判别模型中的姿态估计。
- generative model(model-based,top-down)
- human body model and representation
human body 有很多的joints和limbs,因此分析起来很复杂;
model-based方法采用先验知识对human body进行建模;
-
以前用的最常见的一种方法是将skeleton结合structure和shape, 其中skeleton共15个joints,然后链接起来,右边是树状结构;
不管是否用了body mode(model-based还是model-free),下一步都是特征提取;
传统的特征提取方法会剔除背景后利用一些低维信息:edges, optical flow, silhouettes...
经典的特征提取算法文章中提到:SIFT, SC(shape content),APC(appearance and context content ), HoG,posebits...
- 文章还列了一些从单张图像到3维人体估计的文章,但都是2016年以前的了。
2. End-to-end Recovery of Human Shape and Pose
- CVPR 2018
2.1 整体情况
- HMR(human mesh recovery):端到端的人体姿态和形态的对抗学习网络;
- 实现了从single RGB image到full 3D mesh of human body的学习;
- HMR不需要成对的2D-to-3D监督信息,不需要借助中间的2D keypoint deection,而是直接从pixel到mesh;
- 给定人的bounding box的情况下,可以做到实时。
-
先来看一下整体实验结果:
- 上面两行是用2D-3D监督信息训练的,下面一行是用完全弱监督的方式训练的,没有2D-3D的监督信息;
2.2 主要内容
2.2.1 background
- 现有方法大多数利用joint信息,但joint的位置比较稀疏,不能判断完整状态,本文用了更多的keypoints;
- 现有方法大多数是multi-stage的,从estimate 2D joint locations再到estimate 3D model parameters;
- 本文是直接从image pixel to 3D model;
- 但是这样会有几个挑战:
- lack of large-scale ground-truth 3D-annoation for in-the-wild image;
(现在有准确3D注释的都是受环境限制的) - inherent ambiguities in single-view 2D-to-3D mapping;
(从2D重建回3D本身具有模糊性)
- lack of large-scale ground-truth 3D-annoation for in-the-wild image;
- keypoint(本文需要有以下数据集):
- large-scale 2D keypoint annotations of in-the-wild dataset;
- a separate large-scale dataset of 3D mesh of people with many poses
- (这两个是独立的数据集,unpaired)
所以本文的key contribution:将两个unpaired的数据集,用对抗学习的方式利用起来;
2.2.2 overview of the proposed network
- encoder: 用来提取图像特征;
- regression:可迭代3D回归用来获取3D mesh的参数以及相机参数;
- 得到3D mesh的pose,shape,camera信息后又分成上下两个部分:
- 下面:进入判别器D,与大规模3D human body数据集进行比较,判断生成的human body是否真实。
(弱监督方式,使得跟wild dataset相比更合理) - 上面:将得到的3D mesh映射回2D,得到keypoints, 然后与原来image的ground-truth keypoints进行比较,得到一个loss。
(强监督方式,使得跟输入image的manifold更接近)
- 下面:进入判别器D,与大规模3D human body数据集进行比较,判断生成的human body是否真实。
本文还对只有弱监督方式的情况进行了实验,效果也不错。
-
最后文章还考虑了文章本身带有ground truth 3D information的情况,最终的整体目标函数:
- λ:超参数
- reproj:上面那路
- adv:下面那路
- 3D:有3D ground-truth的情况
2.2.3 related work
- two-stage estimation
- 首先获取到2D joint locations(直接有标注或者用2D pose detector预测得到)
- 然后预测3D joint locations(regression或者model fitting),常用的是探索learned dictionary of 3D skeletons;
- 这个过程可能limb length是主导,也可能limb propotion,pose, angle是主导;
- two-stage的方法更加鲁棒,但是太依赖2D joints信息,且可能丢失很多图像信息;
- direct estimation
- 出现了一些带有3D joint locations的数据集:HumanEva,Human3.6M,使得直接学习有了强监督label;
- 大多数都是用FCN来做的;
- 很多都没有解决camera,只是估计深度,用平均长度来定义全局的scale;
- 这类方法的问题是虽然有准确的3D annotation,但是不能适用于真实世界;
3. DensePose: Dense Human Pose Estimation In The Wild
- CVPR2018
3.1 整体情况
- DensePose:实现了从simgle RGB image 到 surface-based representation of human body;
- DensePose-COCO:为COCO数据集中的50K perpon进行数据标注,形成新的数据集;
- 在DensePose-COCO数据集上用基于CNN的模型进行训练和测试,尝试了fully-conv networks 和region-based models两种方式,后者效果更好;
-
整体实验结果:
3.2 主要内容
3.2.1 background
- 大多数时候建立从image到surface-based model都需要用到深度信息(RGB-D),但本文只使用了RGB图像;
- 本文将重点放在human body身上,而且还支持dense场景;
- 本文采用完全的监督学习,为此收集images以及对应human body的详细准确的ground-truth信息;
- 不像其他论文一样在测试阶段使用SMPL,而是直接在训练时候作为一种定义问题的方式;
- 本文方法与mask-rcnn方法结合可以从复杂场景(10多个人)中有效计算出有效的区域;
3.2.2 Dense-Pose dataset
- 是一个large scale dataset for human pose estimation;
- ground-truth for 50K humans in COCO, more than 5 million manully annoated pairs;
- 数据集(image----> surface-based representations of human body)
- 先将身体分成几个语义分明的部分:head,torso, lower/upper arms...
- 获得24个UV field(如上图右边部分所示)(每个部分的获取使用了不同的方法,例如SMPL, multi-scale等)
- 对各个部分运行k-means算法,得到各个部分的特征点;
- 然后将对应的点标注到渲染出来的part iamge上面;
-
然后利用渲染出来的坐标,又重新将这些2D特征点定位到3D model上面;
- 每个body surface都有24个part,每个part包含的标记点最多为14个;
3.2.3 model
基于DensePose-RCNN model,实现一个全监督学习模型;
本文基于DenseReg + mask-RCNN ----> DensePose-RCNN, 又在此基础上增加了级联结构。
尝试了以下两种结构:
1. fully-connected dense pose regression
- 由于人体比较复杂,所以将其分为几个独立的part,每个part用二维坐标表示;
- 基于这样的表示,用classification+regression这2个任务,用fully-connected network来做;
- classification:判断a pixel是属于背景还是属于surface part中的一个;
- regression: 预测出这个pixel相对于所在part的准确坐标位置;
- 分类阶段总共有25个类别(24 parts + 1 background),用交叉熵损失;
- 然后再为24个surface part分别训练回归器,用L1 loss衡量;
2. region-based dense pose regression
- 以上基于FCN的任务比较简单,但是需要完成太多的子任务;
-
本文又采用region-based的方法:
- 先用mask-rnn得到ROI区域;
- 再进行一次ROI区域Align;
3.然后用FCN提取图像特征; - 提取到的特征同样分为上下两个方面:一个用于分类出所属的surface part,一个用于产生对应的坐标值,可以用跟fully-conv中一样的方法进行优化,但是这里多了一个前面的proposal监督信息。
3.2.4 multi-task cascaded architectures
- 增加了keypoint-estimation和instance segmentation两个任务;
-
然后用多个任务做了一个结构上的级联:
4. Unite the People: Closing the Loop Between 3D and 2D Human Representations
- CVPR2017
4.1 整体情况
- 本文扩展了SMPLify方法,提出了实用多个人体姿态数据的3D body model;
- 产生了UP-3D数据集,可以用来训练discriminative模型,在没有gender或者pose的先验条件下也能有较好的结果。
4.2 主要内容
4.2.1 introduction
- 现有用来做bounding-box detection,keypoint detection,body part segmentation的learning-based方法以及各自使用的数据集都是独立分开的。
- 所以本文就想overcome这些separation,然后unit the people in different datasets and multiple tasks.即希望将多个数据集和任务连接起来。