Paper: NeRD: Neural 3D Reflection Symmetry Detector

Author: Yichao Zhou, Shichen Liu, Yi Ma

PDF: https://arxiv.org/pdf/2105.03211.pdf

Code: https://github.com/zhou13/nerd

Overview

输入 输出
单视角图片 一个主导的镜面对称

总体方法:

  1. 使用coarse-to-fine的策略对symmetry进行遍历
  2. 通过构造3D的代价体来找到最好的symmetry

Introduction

使用监督学习从单张RGB图片中获取信息很容易 \(\rightarrow\) 假设CAD模型已知,一些工作聚焦在instance-level 3D pose estimation \(\rightarrow\) 现实世界中这个假设很难成立(一个物体的CAD模型很难获取)\(\rightarrow\) 之前的一些single-view category-level 3D pose estimation的工作通过在训练数据中进行插值来构建图像和3D模型之间的集合约束进而预测姿态 \(\rightarrow\) 但是这种formulation是ill-posed \(\rightarrow\) 引入镜面对称(reflection symmetry)作为图片和3D模型的位姿之间的桥梁。

观察:大部分物体的canonical space是将其对称平面与Y-Z平面进行对齐。

Contributiion:

  • 图像内的像素对应可以用来得到准确的对称平面法向估计
  • 使用single-view dense feature matching来预测对称平面,性能超越之前的工作
  • 对称性对很多下游任务都有助益,比如single-view姿态估计和深度估计

Methods

检验对称性

对于三维空间中的两个对称点 \(\mathrm{X}\) 和 \(\mathrm{X}^{'}\) 来说,其在成像平面上的投影为 \(\mathrm{x}\) 和 \(\mathrm{x}^{'}\),则:

\[\mathrm{x}^{'} \propto \mathrm{KR_t M R_t^{-1}K^{-1}x = Cx}\]

其中 \(\mathrm{C = KR_t M R_t^{-1}K^{-1}}\)。

将镜面对称参数化为 \(\mathrm{w} \in \mathbb{R}^3\)(代表对称平面的法向),那么:

\[\mathrm{ C(w) = K(I - \frac{2}{\Vert w \Vert_2^2} \begin{bmatrix} \mathrm{w} \\ 0 \end{bmatrix} \begin{bmatrix} \mathrm{w}^T & 1 \end{bmatrix} )K^{-1} }\]

也就是说 \(\mathrm{C}\) 是 \(\mathrm{w}\) 的函数,并且相应地给出一种检验其是否合法的方法。

预测

使用神经网络去遍历所有可能的对称平面法向,然后检验是否是合法的对称性。

Pipeline

Figure 1

对于输入的图片,首先计算2D特征图,然后生成一堆候选的对称平面法向,对于每个候选的法向 \(\mathrm{w}\),把2D特征图warp过去,构建一个3D的代价体进行photo-consistency的匹配,最后,cost volume网络将代价体转换为置信值,将具有最大置信度的 \(\mathrm{w}\) 作为最终的预测对称平面。

那么,如何去生成候选的对称平面法向呢?因为 \(\mathrm{w}\) 的定义域 \(\mathbb{R}^3\) 是连续的,如果使用暴力采样,将会使得复杂度极高。所以该文采用了coarse-to-fine的策略,先均匀采样,然后校验得到置信度最大的 \(\mathrm{w}^\star\),之后将采样范围缩小到 \(\mathrm{w}^\star\) 附近,再次迭代,直到能够达到the desired accuracy

特征提取器选择ResNet的变种,对于采样得到的 \(\mathrm{w}_i\) 来说,得到其transformation矩阵 \(\mathrm{C}(\mathrm{w}_i)\)。对于图像中的每一个像素点 \((x, y)\) 通过对称得到其对称点 \((x^{'}, y^{'})\),将这两个像素点的特征concat在一起作为feature warping,得到代价体,之后代价体送入cost volume network(也就是一系列的3D convolution + max-pool + sigmoid)得到 \(\mathrm{w}_i\) 对应的置信度 \(\hat{l}_i\)。

训练

在coarse-to-fine的每一level而言,分别在ground truth: \(\mathrm{w}\) 周边进行采样,对采样得到的 \(\hat{\mathrm{w}}\),其标签为:

\[l_i = 1[\mathrm{arccos}(\vert <\mathrm{w}, \hat{\mathrm{w}}> \vert) \lt \triangle_i]\]

损失函数为:

\[L_{\mathrm{cls}} = \sum_i \mathrm{BCE}(\hat{l_i}, l_i)\]

Applications

Pose Recovery

不太明白这里的2 DoFs

Figure 2

Depth Estimation

Figure 3