计算机视觉所要做的就是让机器看到的同我们看到趋于一致. 不管是目标的检测和识别, 都是让机器拥有类似人类眼睛的能力. 另一方面, 人类所看到的世界是立体, 让机器重建三维的世界, 也是计算机视觉探索的热门领域.

传统的多视图几何和摄影测量, 利用了物体成像的共线原理重建三维世界, 利用的是多视图的之间的物理关系, 这种结算并不需要学习. 神奇的是, 我们人类即使只用一只眼睛看世界, 仍然感觉世界是立体的, 我们还是能够感知到物体的远近, 虽然能力有所下降! 这是为什么呢? 因为, 我们通过多年双眼的观察, 习得了世界的一些规律: 比如近大远小, 特定物体具有特定的形状… 既然人类通过”经验” 能够通过单目感知三维世界, 机器是不是也可以呢?

理论上是可行, 许多研究都在尝试做单目立体视觉, 单目3D目标检测. 然而单目3D检测局限性非常大, 任意场景几乎不可能, 而对于特定的目标则是可行的. 比如: 人脸点, 人体骨骼, 车辆轮廓等等. 他们都具有一个共同点, 关键点内部存在特别强的内在关系, 具有独特的统计分布. 这就意味着, 只要我们有足够的数据, 便能直接回归目标的3D形状.

基于回归得到3D结果

[0]这篇文章非常简单粗暴, 但得到的结果还不错, 原理如下图:

简单来说就是用2D的关键点直接回归它们的Z坐标. 对于特定形状, 由于x, y, z三个坐标内在关联很大, 所以可以把网络看成是学习$p(z|x, y)$这样的条件分布, 原理上是说的通的.

然而直接回归的方法存在很大的弊端, 那就是依赖大量的3D标注数据. 这在大多数情况却很难达成. 这个时候我们则需要曲线救国, 利用形状其内在的统计分布规律,得到对应的统计模型. 然后用2D形状去拟合它就能得到我们要的3D形状了. 接下来的两篇文章采用的就是这种思路.

利用统计模型, 拟合3D形状

像人脸点, 人体骨骼这种形状具有很强的统计规律, 我们便可以利用这一点得到它们的形状模型. 如3D人脸点的形变模型, 人体骨骼的PCA模型.

3D Face Alignment

3D人脸点检测就是利用形状的统计模型的一个例子. 它的基本流程可以参考下图[1], 首先用2D人脸点检测器检测二维的人脸关键点, 然后用2D的人脸点, 拟合3D人脸形变模型, 有了三维的关键点, 便可以对整个人脸进行重构

3D人脸重建流程

3D 人体姿态估计

单图3D检测如果直接回归则非常依赖大量的3D标注. 对于人体姿态的任务, 获取3D标注也是非常困难的. 下面这篇文章则利用人体骨骼的统计模型很好地规避了这样的问题[2].

论文的大概思路可以参考下面这样图.

论文大概思路是:

  1. 利用2D人体骨骼检测器,检测人体骨骼关键点的热度图及对应的特征
  2. 利用热度图和骨骼概率模型拟合出3D人体骨骼
  3. 将3D人体骨骼反投影到平面上, 得到新的热度图
  4. 将检测器得到的热度图和反投影得到的热度图进行融合
  5. 利用之前的特征和新的融合得到的热度图在重新检测得到新的热度图
  6. 回到第2步, 如此迭代下去, 作者做了6次
  7. 用最终的2D骨骼拟合3D的人体骨骼

利用多视图关系

除了利用统计模型, 我们还可以利用多视图数据简介获得3D标注. 下面两篇文章, 采用了类似的思路

1. Harvesting Multiple Views for Marker-less 3D Human Pose Annotations

这篇文章主要做了如下工作:

  1. 用通用的2D人体姿态检测器检测多视图数据
  2. 用2D的检测结果和多视图约束纠正2D的检测结果
  3. 用更准确的2D结果提升2D检测器
  4. 用多视图数据和其对应的2D检测结果生产3D标注
  5. 训练端到端的3D姿态检测器

多视图数据生产3D标注示意图

2. Hand Keypoint Detection in Single Images using Multiview Bootstrapping

这篇文章的思路与上一篇简直如出一辙. 关键思路可见下图:

同样是利用多视图关系纠正2D检测结果, 进而提升2D检测器. 具体技术细节可以参考论文.

参考文献

  1. A Simple, Fast and Highly-Accurate Algorithm to Recover 3D Shape from 2D Landmarks on a Single Image
  2. Dense 3D Face Alignment from 2D Videos in Real-Time
  3. Lifting from the Deep: Convolutional 3D Pose Estimation from a Single Image
  4. Harvesting Multiple Views for Marker-less 3D Human Pose Annotations
  5. Hand Keypoint Detection in Single Images using Multiview Bootstrapping