[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
△ p \triangle p △p 表示当前估计的pose 与目标pose 的 相对SE(3)变换的表示; R s r c , t s r c R_{src}, t_{src} Rsrc,tsrc 表示当前pose; R t g t , t t g t R_{tgt}, t_{tgt} Rtgt,ttgt 表示目标pose。
在 Naive Coordinate 坐标下,将当前pose 转换到 目标pose:
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
其中
R △ t s r c R \triangle t_{src} R△tsrc
表示旋转不仅会使物体旋转,而且还会使物体在图像中平移,即使 旋转向量
t △ t_{\triangle} t△
为零
。 t △ t_{\triangle} t△ 是在三维空间的度量(例如米),图中的对象的实际大小和图中的移动距离是相关,因此,如果想把图中的误匹配转换成位移偏移,那么就需要知道物体的实际大小,这样的话训练起来比较困难,而且没法对没见过的物体的进行预测。
怎么做呢? 解耦。分开预测 R , t R,t R,t, R R R 是不受缩放影响的,再想办法让 t t t 不受 R R R 影响
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
>
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
已知目标偏移 t t g t = ( x t g t , y t g t , z t g t ) t_{tgt}=(x_{tgt},y_{tgt},z_{tgt}) ttgt=(xtgt,ytgt,ztgt)和预测的偏移 t s r c = ( x s r c , y s r c , z s r c ) t_{src}=(x_{src},y_{src},z_{src}) tsrc=(xsrc,ysrc,zsrc),可以直接得到相对偏移 t △ = ( △ x , △ y , △ z ) = t t g t − t s r c t_{ \triangle}=(\triangle_x,\triangle_y,\triangle_z)= t_{tgt} - t_{src} t△=(△x,△y,△z)=ttgt−tsrc。 然而,
回归相对平移 t △ = ( v x , v y , v z ) t_{ \triangle}= (v_x,v_y,v_z) t△=(vx,vy,vz) , v x , v y v_x,v_y vx,vy表示对象沿图像x轴和y轴移动的像素数, v z v_z vz为物体的尺度变化:
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
其中 f x f_x fx 和 f y f_y fy 表示照相机的焦距。 v z v_z vz定义为独立于物体的绝对大小或距离,使用渲染物体和观测物体的距离之比。对 v z v_z vz使用对数,以确保值 0 对应于比例或距离没有变化。考虑到 f x f_x fx 和 f y f_y fy对于一个特定的数据集是常量,在训练和测试网络时简单地将其固定为
旋转不会影响位移,计算位移的时候就不用再考虑旋转的影响了;
中间变量 v x , v y , v z v_x,v_y,v_z vx,vy,vz 的提出使在图像空间上的表示变得简单;
不需要物体的先验知识,不用管实际的大小和坐标系。
DeepIM 只需要学会变换,使渲染的图像变得更接近观察到的图像。
2.4 Matching Loss
训练姿态估计网络的一个简单方法是对旋转和平移使用单独的损失函数。例如,可以用两个旋转之间的角度距离来测量旋转误差,并使用L2距离来测量平移误差。然而,使用两种不同的损失函数来进行旋转和平移会遇到平衡这两种损失的困难。论文 “Geometric loss functions for camera pose regression with deep learning” (CVPR 2017)提出了一种几何重投影误差作为姿态回归的损失函数,利用ground truth 位姿计算场景中三维点的二维投影与估计位姿之间的平均距离。作者考虑到想要在3D中准确预测物体的姿态,引入了[12]中几何重投影损失的改进版本,称之为点匹配损失。ground truth pose: p = [ R ∣ t ] p=[R|t] p=[R∣t] ,estimated pose: p ^ = [ R ^ ∣ t ^ ] \hat p =[ \hat R | \hat t] p^=[R^∣t^],点匹配损失函数如下:
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
其中: x i x_{i} xi表示在物体模型上随机选择一个3D点; n n n 表示点的个数,作者设置3000个。
point matching loss计算由ground truth位姿和estimated位姿变换的三维点之间的平均 L 1 L_1 L1 距离。通过这种方式,它衡量了转换后的3D模型如何相互匹配以进行姿态估计。
2.5 Training and Testing
Train
在训练中,假设有3D对象模型和ground truth 姿势。 通过将 noisy 添加到 ground truth 姿势作为初始姿势,可以生成所需的观察并呈现给网络以及姿势目标输出,这是ground truth姿势和noisy姿势之间的姿势差异。 然后可以训练网络来预测初始姿势和目标姿势之间的相对变换。
5◦, 5cm:an estimated pose to be correct if its rotation erroris within 5◦ and the translation error is below 5cm.旋转误差在5°以内,位移误差在5cm之内,算作正确的
6D Pose :the average distance between the 3D model points transformed using the estimated pose and the ground truth pose. 使用估计的pose和真实的poes计算3D点转换的平均距离,对于对称的物体,选最近的那一组,如果平均距离再3D模型直径的10%以内,算正确
2D Projection:computes the average distance of the 3D model points projected onto the image using the estimated pose and the ground truth pose.An estimated pose is correct if the average distance is smaller than 5 pixels.使用估计的pose和真实的pose计算3D模型点的2D投影平均距离,如果平均距离小于5个像素,则认为正确
3.2 Ablation study
不同迭代优化设置的消融实验
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
不同设计的消融实验
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
不同方法初始化pose 的消融实验
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
3.3 Experiments on the LINEMOD Dataset
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
3.4 Experiments on the Occlusion LINEMOD Dataset
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
3.5 Application to Unseen Objects and Unseen Categories
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation