
EPOS本质上也是一种基于2D-3D稠密对应的6D位姿估计方法,只不过它不是直接回归得到物体图像区域某像素对应的归一化的三维坐标点,而是将物体三维模型表面分割成一定数量的面片,这样在确定2D-3D对应关系时,首先是确定二维像素点对应的面片(这是一个分类问题),然后再回归得到三维点相对于该面片局部坐标系的坐标。
这种间接地确定2D-3D对应关系的方法还有一个好处就是考虑了目标物体是对称物体时的多对多的关系(这里的多对多指的是图像中对称物体的某一个像素可能对应了多个三维模型点,并且三维模型上的一点也可能对应了多个图像上的点,见上图)。
1 表面面片
假设某个数据集包含了
m
m
m个物体,则每个物体的三维模型都可以通过一组顶点
V
i
V_i
Vi和一组三角面片
T
i
T_i
Ti表示,其中,
i
∈
I
=
{
1
,
.
.
.
,
m
}
i\in I=\{1,...,m\}
i∈I={1,...,m}。物体三维模型的表面
S
i
S_i
Si可以根据下式分为
n
n
n个面片:
S
i
j
=
{
x
∣
x
∈
S
i
∧
d
(
x
,
g
i
j
)
<
d
(
x
,
g
i
k
)
}
∀
k
∈
J
,
k
≠
j
(1)
S_{ij}=\{\boldsymbol x|\boldsymbol x\in S_i\wedge d(\boldsymbol x,\boldsymbol g_{ij})<d(\boldsymbol x,\boldsymbol g_{ik})\}\\ \forall k\in J,k\not=j \tag{1}
Sij={x∣x∈Si∧d(x,gij)<d(x,gik)}∀k∈J,k=j(1)
其中,
j
∈
J
=
{
1
,
.
.
.
,
n
}
j\in J=\{1,...,n\}
j∈J={1,...,n},
d
(
⋅
)
d(\cdot)
d(⋅)表示空间中两个点的欧式距离,
{
g
i
j
}
j
=
1
n
\{\boldsymbol g_{ij}\}_{j=1}^n
{gij}j=1n表示每个面片预先选定的中点,表面面片的中点通过FPS算法确定(从物体模型的重心点开始迭代选择距离当前点集最远的点,最后将重心点删除)。
2 网络架构
网络整体是一个Encoder-Decoder型的结构,输入一张RGB图像,输出为原尺寸大小,但通道数为
4
m
n
+
m
+
1
4mn+m+1
4mn+m+1的张量,输出张量表示了三部分结果。
2.1 语义分割
输出中的 m + 1 m+1 m+1个通道表示二维像素点 u \boldsymbol u u语义分割的结果。
2.2 所属面片分类
输出中的 m n mn mn个通道表示二维像素点 u \boldsymbol u u对应的所属面片的分类结果。
2.3 三维点坐标回归
输出中的
3
m
n
3mn
3mn个通道表示二维像素点
u
\boldsymbol u
u对应的三维坐标点的回归结果。
r
i
j
(
u
)
=
(
x
−
g
i
j
)
/
h
i
j
(2)
\boldsymbol r_{ij}(u)=(\boldsymbol x-\boldsymbol g_{ij})/h_{ij}\tag{2}
rij(u)=(x−gij)/hij(2)
其中,
h
i
j
h_{ij}
hij是对应面片3D BBox的最长边的长度。
2.4 损失函数
L
(
u
)
=
E
(
a
‾
(
u
)
,
a
(
u
)
)
+
∑
i
∈
I
a
‾
i
(
u
)
[
λ
1
E
(
b
‾
i
(
u
)
,
b
i
(
u
)
)
+
∑
j
∈
J
b
‾
i
j
(
u
)
λ
2
H
(
r
‾
i
j
(
u
)
,
r
i
j
(
u
)
)
]
(3)
L(\boldsymbol u)=E(\overline a(\boldsymbol u),a(\boldsymbol u))+\sum_{i\in I}\overline a_i(\boldsymbol u)\bigg[ \lambda _1E(\overline b_i(\boldsymbol u),b_i(\boldsymbol u))+\sum_{j\in J}\overline b_{ij}(\boldsymbol u)\lambda _2H(\overline r_{ij}(\boldsymbol u),r_{ij}(\boldsymbol u))\bigg]\tag{3}
L(u)=E(a(u),a(u))+i∈I∑ai(u)[λ1E(bi(u),bi(u))+j∈J∑bij(u)λ2H(rij(u),rij(u))](3)
式中,
a
‾
(
u
)
\overline a(\boldsymbol u)
a(u)是一个
m
m
m维的one-hot向量,
b
‾
i
(
u
)
\overline b_i(\boldsymbol u)
bi(u)是一个
n
n
n的向量,注意,对于对称物体来说,由于一个像素点可能对应三维模型中的多个面片,所以它不是一个one-hot向量,关于此文中有如下描述:
3 对称物体
由于在构建模型时将对称性考虑在内,故不需要在损失函数部分或者后续求解位姿时考虑对称性的问题。
4 位姿求解
位姿求解部分作者使用了基于Progressive-X的GC-RANSAC,其中GC-RANSAC是一个更鲁棒的RANSAC改进版本,而Progressive-X算法可以用来处理多模型拟合的问题,在这里使用可以用来解决同一种物体多实例的6D位姿估计问题。