当前位置:   article > 正文

6DoF位姿估计之SSD-6D_ssd6d训练代码

ssd6d训练代码

1 网络模型

模型图
SSD-6D网络模型的算法流程为:

  1. 输入一张299 × \times × 299的彩色图像到backbone网络(InceptionV4)中,得到6个不同尺度的特征图;
  2. 接着对于每一个特征图,通过3 × \times × 3的滑动窗口得到特征图上每个像素点的分类和回归结果,分类结果包括 C C C种物体类别、采样得到的 V V Vviewpoints(可以理解为纬度)和 R R Rin-plane rotations(可以理解为经度),回归的结果包括4个矩形框offset参数。假设每一个像素点回归 B B B个矩形框,则通道维维数为 B × ( C + V + R + 4 ) B\times (C+V+R+4) B×(C+V+R+4);
  3. 最后,对于每一种物体类别的预测框,首先根据分类值大小进行排序,然后按照IOU值进行NMS处理。

2 损失函数

  SSD-6D模型的损失函数和目标检测领域的SSD和YOLO类似,但是包括了viewpoint和in-plane rotation的分类误差:
L ( P o s , N e g ) : = ∑ b ∈ N e g L c l a s s + ∑ b ∈ P o s ( L c l a s s + α L f i t + β L v i e w + γ L i n p l a n e ) L(Pos, Neg):=\sum_{b\in Neg}L_{class}+\sum_{b\in Pos}(L_{class}+\alpha L_{fit}+\beta L_{view}+\gamma L_{inplane}) L(Pos,Neg):=bNegLclass+bPos(Lclass+αLfit+βLview+γLinplane)
  式中, P o s Pos Pos N e g Neg Neg分别代表训练集中的正负样本;此外, L c l a s s L_{class} Lclass L v i e w L_{view} Lview L i n p l a n e L_{inplane} Linplane本质上都为分类误差,故这里采用softmax, L f i t L_{fit} Lfit为回归误差,故这里采用Smooth L1-norm。

3 后处理

3.1 旋转对称和半对称物体

对称性问题
  对于旋转对称物体,viewpoint只在一个弧度上取值,如上图中绿色点;对于半对称物体,只在某一个半圆内取值,如红色点部分。

3.2 位移向量计算

  1. 按照网络输出的viewpoint和in-plane分类结果,得到对应的旋转向量 R R R
  2. 将物体的三维模型按照空间朝向(也即旋转向量 R R R)渲染在距离相机坐标系 z = 0.5 z=0.5 z=0.5的位置;
  3. 根据下图中的比例关系计算得到 Z s Z_s Zs,其中 l r l_r lr l s l_s ls为图像上矩形框的对角线长度;
    位移向量计算
  4. 给定相机内参和矩形框的中心坐标 ( u , v ) (u,v) (u,v),根据相机模型计算得到三维平移向量 t t t
    X s = ( u − c x ) Z s f x X_s=\frac{(u-c_x)Z_s}{f_x} Xs=fx(ucx)Zs
    Y s = ( v − c y ) Z s f y Y_s=\frac{(v-c_y)Z_s}{f_y} Ys=fy(vcy)Zs

4 评价

  由于空间朝向是按照viewpoint和in-plane两个维度上采样的,所以首先就有采样误差的引入;再者这样采样方法不能保证空间球面上采样的均匀性,也就是靠近赤道的地方采样点稀疏,靠近两极的地方采样点比较密集。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/658043
推荐阅读
相关标签
  

闽ICP备14008679号