关于6-DoF的一些基础的知识点请看上一篇博客。
Related work
从RGB图像中识别6-DoF的方法分为直接法和间接法。
1. 间接法
即不是直接的从RGB图像中恢复出6-DoF的信息,而是现在2维RGB图像和它的3维的模型上建立点到点的对应关系,然后通过数学的方法将旋转量(R)和平移量(T)求解出来。
2. 直接法
即不依赖于物体的三维模型,通过神经网络去进行学习,直接从物体的RGB像素信息中学习三维的旋转量和平移量。能够快速的对物体的6-DoF进行预测,但是对物体的旋转量的估计精度效果不是很好。
原因:旋转量的空间分布是属于一个SO3的空间量,它具有一定的周期性,也就是说对于一个物体,它的旋转的量是0-360°范围内的一个值,并且因为很多的物体存在对称性的问题,所以往往很多物体旋转一定的角度之后,所呈现的画面就是一样的,这就对用神经网络去预测旋转量产生了很大的干扰。
前言
1. 对于旋转量和平移量来说,采用什么样的策略才是最合适的?
旋转量更多的依赖于物体呈现在画面中的外观,而对于平移量来说,更加关注的是物体的中心点相对于拍摄物体的相机的距离(近大远小)。所以说,对于旋转量和平移量采用相同的方式来进行估计不是一个很好的办法。
在相关实验的支撑下,作者选择了用间接法来进行旋转量的估计,用直接法来进行平移量的估计。其实这也是很明显的一种方式,因为直接法估计旋转量会对精度有一定的影响,而间接法估计平移量也会使效率变得相对的低。所以综合考虑基于效率和精度的综合考虑,采用间接法来估计旋转量,直接法来估计平移量应该是一种比较合理的方法,当然,作者通过实验也证明了这一点。
2. 为什么用的是检测的方法,而不是进行实例分割?
实例分割可以将一张图片中的相同的物体抠出来,分割的mask用于pose estimation的话,精度肯定会有所提升,但是因为现在的分割网络的模型都比较大,所以在速度上肯定会比较低,尤其是针对pose estimation的话,因为很多的应用都是实时的,所以对于速度肯定是有一定的要求的。综合考虑实时性,选择了检测的方法。除此之外就是,作者在训练的时候提出的DZI对性能效果的提升十分的显著。在论文中有对这个进行实验的对比。
正文
啰啰嗦嗦了这么多,我估计再啰嗦就要挨打啦,所以下面我们进入正文。
一、训练
1.1. 各个网络的训练
在训练的时候,输入的是整张的图像,然后通过动态缩放(文章的创新点之一:Dynamic Zoom In),其实我认为的就是在ground truth 的bounding box上随机的进行一定的扰动,把扰动后的bounding box扣下来,送到要训练的姿态估计网络中。这个感觉主要是在测试的时候,避免检测到物体的边界框的影响,可能还对解决物体中心点和bounding box中心点的不匹配问题有一定的作用。
对于旋转量估计的网络,输出是两个,一个是三通道的物体的坐标图,这三个通道分别代表物体的三维模型上的三维点的坐标值,即第一个通道代表的是x,第二个是y,第三个是z;另一个输出是执行度的图,把目标物体从bounding box中抠下来,来找出输入的图像框中的那些像素是对应着物体的像素的。通过物体执行度的图和物体的xyz的三维坐标的图就可以建立物体的像素到物体的三维坐标的对应关系。在训练的时候,提出了一个新的损失函数,
其中
n
c
=
3
,
M
∗
i
n_c=3,M_*^i
nc=3,M∗i代表ground-truth map,
M
~
∗
i
\tilde{M}_*^i
M~∗i代表预测的map,也就是说
M
c
o
n
f
M_{conf}
Mconf是置信度图,
M
c
o
o
r
j
M_{coor_j}
Mcoorj是第j个通道的三维坐标图。
对于平移量的估计网络,网络的输入是预测的图像,因为它的输入尺寸是固定的,所以说会在输入之前的时候,做一个缩放的操作,也就是将bounding box缩放到网络需要的大小。这个和旋转量估计网络是相同的。然后会从bounding box预测一个尺度不变的偏移量,再加上动态缩放过程中框的信息和相机的参数就可以得到全局的偏移量。
∆
x
,
∆
y
∆x ,∆y
∆x,∆y 是指扣下来的图像块中的物体的中心与图像块的中心的相对偏移量
γ
\gamma
γ是DZI(Dynamic Zoom In)的比例
t
z
t_z
tz 是指扣下来的图像块中的物体的一个相对的深度值,这个深度值是指在原始图像中物体的中心点距离相机的深度信息与缩放到输入图像的大小的比例的一个比值
T
T
T通过bounding box中心点的坐标,bounding box的大小,以及缩放的比例,就可以根据平移模型输出的尺度不变的偏移量将全局的偏移量给恢复出来。
f
x
,
f
y
f_x,f_y
fx,fy是相机的参数。这个方法可以解决物体的中心点与bounding box的中心点不匹配的情况。
(
O
x
,
O
y
)
,
(
C
x
,
C
y
)
(O_x,O_y),(C_x,C_y)
(Ox,Oy),(Cx,Cy)分别代表在原始图像中的物体的中心和采样块的中心。
(
h
,
w
)
(h,w)
(h,w)是采样块在原始图像中的大小。同样的
∗
*
∗,
∗
~
\tilde{*}
∗~分别代表预测值和真实值。
1.2 训练的策略
在训练的时候,采用的是交替式训练的策略,用来解决旋转量难以学习的问题。
- Stage 1: Training the backbone and rotation head
- Stage 2: Training translation head only
- Stage 3: Training the backbone,rotation head,translation head
二、测试
对于测试的时候,将完整的图片输入到训练好的检测器中进行检测,然后提取bounding box送入后续的网络。得到三维的坐标图的信息和mask去计算旋转量,然后局部的偏移量加上检测器的得到的bounding box相关的参数和相机的参数,就可以得到全局的平移量。
对于旋转量的预测(间接法),有以下几种方法:
- 事先定义好我要找的物体的三维模型的关键点,然后去找这些事先定义好的点在图像上对应的像素位置。方法的缺陷:训练好的模型在不同种类上的泛化能力是很差的,比如说我现在训练的模型,是来预测猫的姿态的,那么在预测飞机,汽车上的话,就不适用,因为三维关键点的信息不一样。
- 不去找物体自身的关键点,去找物体公共的关键点,比如说我不去找物体的关键点,而是去找三维的bounding box的关键点,即8个角点。那么我只需要找这8个顶点在2维的图像上的对应的像素。也能够建立2D 到3D的对应关系。缺陷:它的关键点通常都不是落在物体的表面,那么在图像中去找对应点的时候,它的对应点往往也不是落在图像上,偏离物体一定的范围。
- 基于物体坐标的一种旋转估计,从二维图像出发,物体在图像上的每个像素点,去预测其在物体3维模型中的坐标。