假设某个数据集包含了 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})
其中, 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算法确定(从物体模型的重心点开始迭代选择距离当前点集最远的点,最后将重心点删除)。
网络整体是一个Encoder-Decoder型的结构,输入一张RGB图像,输出为原尺寸大小,但通道数为 4 m n + m + 1 4mn+m+1 4mn+m+1的张量,输出张量表示了三部分结果。
输出中的 m + 1 m+1 m+1个通道表示二维像素点 u \boldsymbol u u语义分割的结果。
输出中的 m n mn mn个通道表示二维像素点 u \boldsymbol u u对应的所属面片的分类结果。
输出中的 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的最长边的长度。
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向量,关于此文中有如下描述:
由于在构建模型时将对称性考虑在内,故不需要在损失函数部分或者后续求解位姿时考虑对称性的问题。
位姿求解部分作者使用了基于Progressive-X的GC-RANSAC,其中GC-RANSAC是一个更鲁棒的RANSAC改进版本,而Progressive-X算法可以用来处理多模型拟合的问题,在这里使用可以用来解决同一种物体多实例的6D位姿估计问题。