优胜从选择开始,我们是您最好的选择!—— 中州期刊联盟(新乡市博翰文化传媒有限公司)
0373-5939925
2851259250@qq.com
我要检测 我要投稿 合法期刊查询
您的位置:网站首页 > 优秀论文 > 其他论文 > 正文

基于改进热图损失函数的目标6D姿态估计算法

作者:林林 王延杰 孙海超来源:《液晶与显示》日期:2022-09-14人气:2250

随着计算机视觉技术的不断发展,仅从图像中检测物体已经不能满足智能机器人对环境感知的需要,基于图像的物体6D姿态测量成为了新的研究热点。用RGB-D图像估计物体的姿态虽然精度高,但是计算复杂难以应用。使用单RGB图像配合目标的三维模型可以解决单目相机成像时的尺度不确定问题,也可以得到较好的结果,但在实际应用场景下,目标的背景较为复杂,而且会有很多遮挡现象出现,这都给姿态估计问题造成了很大的影响。因此,如何从单张图像中快速准确地在复杂场景下获得目标的6D姿态是一个非常值得深入研究的课题。

传统姿态估计算法通常使用手工特征1-3建立图像模板与图像之间的对应关系,很难处理无纹理对象,速度也较慢。随着深度学习的发展,基于CNN的姿态估计算法取得了优异的性能。Deep-6DPose4、AAE5等端到端算法是将图像输入到神经网络中直接输出目标姿态,但是这种方法的泛化能力并不好,网络无法学习到足够的特征以表达目标姿态。近期研究的两阶段算法如yolo-6d6、BetaPose7、Pix2Pose8、PVNet9等在精度上相比于端到端算法展现了较大的优势。其中BetaPose7为这类方法提供了一个简单高效的基础架构,即先使用神经网络回归热图定位关键点,再使用PnP算法计算目标姿态。

热图是一种特殊的图像,图像上每个像素值代表关键点出现在该位置的概率值,可以用于神经网络回归关键点时的中间表示,利用预测得到的热图极大值及其邻域推断得到关键点位置。因此,热图的前景像素的预测精度对于关键点定位任务至关重要,这个部分即使出现了很小的预测误差,也会导致很大的关键点偏离。相反,预测热图的背景像素值并不重要,预测时只需使其逐步趋向于零值即可。而BetaPose并没有利用好热图的相关特性:首先,在回归热图时,使用传统的MSE Loss损失函数。MSE Loss对于不同位置的像素值没有区分,训练被大量无意义的背景像素主导,导致回归的热图精度不高。其次,在使用预测的热图定位关键点时,只简单地取最大值点,存在量化误差。这两点影响了算法最终的结果。

本文对BetaPose进行了改进。首先针对MSE Loss损失函数对像素没有区分的问题,提出适用于热图回归的损失函数Heatmap Wing Loss(HWing Loss),该损失函数更加关注前景像素误差,可以有效提高热图回归的质量。其次,使用基于高斯分布的关键点推理方法,减小热图推断关键点时的量化误差。以此两点为基础,构造了新的单目标姿态估计算法。实验结果表明,相比于其他姿态估计算法,本文算法在LINEMOD数据集上有更高的ADD(-S)准确率。

2 适用于热图回归的损失函数

2.1 热图以及传统损失函数

如前文所述,热图绝大多数像素都是背景像素,对关键点至关重要的像素非常少,如图1所示,其中图1(a)为目标图像,红色部分为目标的关键点,图1(b)为该关键点对应的热图,图1(c)为图1(b)热图的局部放大图。因此,我们希望用合适的损失函数使网络训练可以对不同像素进行区分,使前景像素训练收敛速度更快,同时要对前景像素的小误差有更高的敏感度。

图1  关键点热图

Fig. 1  Keypoint and heatmap


在热图回归中,常使用损失函数MSE Loss即均方误差损失函数。但MSE Loss梯度随着误差增大而增大,大误差的损失梯度要高于小误差,这导致神经网络更关注于大误差部分,而忽略小误差部分。

Adaptive Wing Loss10(AWing Loss)提高了小误差的敏感度,并对前景像素与背景像素做了区分。但AWing Loss前景像素梯度只在误差为0值附近大于背景像素,这导致在网络训练的大部分时期,网络都是向着背景像素误差减小方向前进,与热图前景像素更重要的特性背道而驰。MSE Loss和AWing Loss的表达式如式(1)、(2)所示。



(1)



(2)

2.2 Heatmap Wing Loss

根据热图本身特性,理想的热图损失函数应该有以下特性:(1)大误差部分具有恒定梯度,不会导致产生梯度爆炸的问题。(2)背景像素的小误差部分无需精准的预测,只需要逐步回归到零值,损失函数的特性与MSE Loss损失函数类似。(3)前景图像的小误差部分的回归精确程度是热图回归的关键,对小误差要有更大的梯度。损失函数特性与AWing Loss函数类似。并且在整个训练过程中前景像素的梯度都应该大于背景像素的梯度,这也有利于网络向着重要的前景像素损失降低方向训练。本文在AWing Loss的基础上提出适用于热图回归的损失函数Heatmap Wing Loss(HWing Loss),其表达式如公式(3)所示。





                                      
(3)

HWing Loss采用分段函数设计,分别代表真实像素值与预测像素值,为图像像素误差。为阈值,在之间。 为参数,其中

为了提升前景像素损失函数的梯度,让整个网络训练过程能以前景像素主导,HWing Loss相比于AWing Loss做了两点改进。

首先是小误差部分,对像素误差增加系数,对误差进行缩放。此时将AWing Loss与HWing Loss函数看作误差的函数。在部分,其梯度分别如公式(4)、(5)所示。可以看出,当参数时,对于背景像素公式(5),此时HWing Loss的函数梯度小于AWing Loss,即HWing Loss中部分减小了损失函数的梯度。而对前景像素公式(5),HWing Loss的函数梯度大于AWing Loss,即HWing Loss中部分放大了损失函数的梯度。因此,HWing Loss中增加的系数可以在前景像素处对损失函数梯度进行放大,同时缩小背景像素的损失函数,从而使损失函数在前景像素的梯度大于背景像素。其次,对大误差部分,取消AWing Loss中的系数A,从而避免在大误差部分背景像素梯度值大于前景像素的问题。




(4)



(5)

图2展示了HWing Loss分别在背景像素(蓝色图像)和前景像素(红色图像)时与MSE Loss(绿色图像)的比较,其中参数。可以看出,HWing Loss在各点都是连续的,且梯度在0处连续。在即前景像素部分,其特性与AWing Loss函数相像;在即背景像素部分,其特性类似于MSE Loss。由图3(b)可以看出,本文提出的HWing Loss在小误差部分,误差一定的情况下,损失函数梯度会随着像素增大而增大,大误差部分的损失函数梯度保持梯度恒定。这符合上文提到的理想损失函数特性,从而可以使整个网络训练过程都以前景像素为主。

图2  不同损失函数对比图

Fig.2  Diagram of loss functions


图3  HWing Loss示意图

Fig.3  Diagram of HWing Loss


使用HWing Loss损失函数训练热图回归网络时,训练开始所有像素都有较大误差,都应用损失函数的大误差部分,同时减小误差。当误差减小至后,背景像素随着误差减小,梯度逐渐减小,使得网络逐渐不再关注其收敛。而前景像素随着误差减小,梯度逐渐增大,在网络损失中占据主导位置,即网络会继续向着前景像素误差减小的方向训练,这符合热图前景像素更加重要的特点。

3 目标姿态估计算法

本文姿态估计算法为两阶段算法:第一阶段预测热图,用于定位目标关键点;第二阶段由关键点计算目标姿态。具体流程如图4所示。首先将输入图像裁剪为H×W大小,输入热图回归网络,得到输出的热图,由预测热图推理关键点位置,最后使用PnP算法计算得到姿态。

图4  姿态估计算法流程图

Fig. 4  Flowchart of the pose estimation algorithm


3.1 热图回归网络

本文使用HRNet11-12作为骨干网络构造热图回归网络。为减小网络运算量,使用步长为2的卷积将特征图由H×W降至H/2×W/2,输入到HRNet中。而为了减小特征网络输出计算关键点位置时,由于特征图与原图尺度不一致需要缩放产生的误差,将HRNet输出的特征进行上采样至原图大小,并与原图进行拼接,经过最后一个卷积块的运算,得到原图大小的热图。我们使用H×W×3大小的图像作为输入,每张图像定义C个关键点时,网络的输出为H×W×C的热图,在训练时使用上文提出的HWing Loss进行像素级的监督。

由于热图的前景像素部分只占整个图像的不足1%,即使我们使用了HWing Loss提高网络对前景像素的关注度,在训练时,整个损失仍然会以重要性不高的背景像素为主,导致网络不能更精确地得到前景像素的预测。因此,我们使用文献10中的策略,在计算网络损失时,对前景像素与背景像素给予不同的权重。如图5所示,首先将热图进行灰度膨胀操作,在训练损失计算时,对膨胀热图像素值高于0.2的部分给予10倍的权重,使网络更加关注于前景像素的误差。

图5  加权损失示意图

Fig. 5  Schematic diagram of weighted loss


3.2 关键点推断

在传统方法中,通常使用热图的最大值位置作为关键点的预测值。但是由于图像是离散的,而关键点的位置很有可能不在像素点位置,这就导致了只用最大值位置作为关键点预测值会产生量化误差,影响最终姿态估计结果。

Zhang等13提出了基于高斯分布的热图推理关键点的方法,但在二维图像上进行运算耗时较多。本文对其进行一维简化。

考虑到热图是由二维高斯函数生成,根据高斯函数的可分离性,二维高斯函数可以分解为两个一维高斯函数。




(6)

极值点在u处的一维高斯函数为:



(7)

为降低逼近难度,对高斯函数进行对数运算,将高斯函数变为二次函数,同时,可以保持极值点位置。



(8)

其中在极值点u处,以及其一阶二阶导数值分别为:



(9)


(10)


(11)

假设预测热图极大值在x方向坐标值为,易知位于极值点附近,可以通过推断位置。我们对位置进行泰勒展开,忽略三阶小量:



(12)

联立式(9)、(11)、(12)可得:



(13)

其中,分别可由预测热图在最大值位置在x方向上的一阶差分与二阶差分计算得到。

同理,对y方向坐标有:



(14)

我们使用公式(13)、(14)进行关键点优化。

3.3 姿态计算

通过预测热图推得关键点位置时,由于目标可能被遮挡,不可见的关键点会出现较大的定位误差从而影响姿态估计,所以需要对关键点进行筛选。考虑到热图每个像素值的本质是该关键点出现在该位置的概率,可以使用预测热图极值位置的像素值作为该关键点的置信系数,并对关键点进行筛选。为了保证姿态计算的稳定性,选择置信系数大的个图像关键点。

获取图像关键点后,结合已知的三维关键点以及相机的内参,可以通过求解PnP问题计算得到姿态。我们使用EPnP算法14进行PnP问题的求解。

4 实验与结果

4.1 数据集

实验中使用的数据集包括LINEMOD数据集和Occlusion LINEMOD数据集。

LINEMOD数据集是6D目标姿态估计的标准数据集,这个数据集包含多个姿态估计场景,比如复杂背景、无纹理目标的场景。每一幅图像的中心都有一个标记了平移、旋转和类别的目标,同时该数据集还提供了每个目标的3D模型。在LINEMOD 数据集中共有15 783张图像和13类目标,每个目标特征大约有1 200个实例。

Occlusion LINEMOD数据集是对LINEMOD数据集的扩展,每一幅图像包含一个被标记的目标,大部分图像中的目标被部分遮挡。在实验中,Occlusion LINEMOD数据集仅用来测试,只用LINEMOD 数据集进行训练。

4.2 性能评估

我们使用ADD(-S)指标评估算法性能,其中ADD指标度量的是模型顶点之间3D平均距离。如果3D模型顶点的坐标与估计的坐标之间的平均距离小于目标直径的10%,预测就是正确的。对于对称对象,使用ADD-S指标度量,其平均距离是基于最近的点距离计算的。性能评估时以测试集中预测正确的图像数量与总数的百分比数计算。

4.3 实验参数

本文使用PyTorch搭建训练环境。在LINEMOD数据集中每个类别随机选择30%的图像作为训练集,其余70%作为测试集。为了防止过拟合及增大训练空间,我们在训练集内添加合成图像。对于每个对象,我们渲染了10 000张视点均匀采样的图像。同时用剪切和粘贴策略合成了另外30 000张图像,每幅合成图像的背景随机采样自SUN39715

我们在目标三维模型上使用迭代最远点算法标注个关键点并创建监督热图。输入图像裁剪至,每一批次训练32张图像,学习率设置为0.01,训练30个轮次。对于损失函数HWing Loss,经过多次实验,选择参数。在测试过程中,选择置信系数最大的个关键点输入EPnP算法进行姿态估计。

4.4 单目标姿态估计

我们在LINEMOD数据集上进行了单目标姿态估计测试,部分结果如图6所示。可以看出,无论是复杂背景还是无纹理目标,本文算法都有出色的姿态估计结果。

图6  部分单目标姿态估计结果(绿色框为真实姿态的目标三维边界框,蓝色框为估计姿态的目标三维边界框)

Fig.6  Qualitative results for single object pose estimation(green 3D bounding boxes represent the ground truth poses, and blue 3D bounding boxes represent our predictions)


为验证本文算法的有效性,我们将本文算法与近期算法进行对比。作为对比的BetaPose7]‍、yolo-6d6]‍‍、PVNet9是两阶段算法,区别在于关键点间接表示形式。BetaPose7与本文相同,使用热图,yolo-6d6直接回归关键点坐标。PVNet9使用图像像素点指向关键点的方向向量作为关键点的间接表达方式,该算法基于目标分割,在网络回归时需要增加单独的图像分割分支。PoseCNN16是端到端算法,可以直接从图像中计算得到姿态。DeepIM17在PoseCNN后增加了迭代优化的后处理部分。ADD(-S)指标测试结果如表1所示,其中eggbox和glue为对称对象,使用ADD(-S)度量,其余对象使用ADD度量。加粗数字为本类别中准确率最高的结果。

表1  单目标姿态估计ADD(-S)指标测试结果
Tab.1  Single object pose estimation ADD(-S) metric test results
算法Ours7691616-17
ape64.841.221.643.6-77.0
bench99.285.781.899.9-97.5
cam88.378.936.686.9-93.5
can96.885.268.895.5-96.5
cat82.773.941.879.3-82.1
driller98.077.063.596.4-95.0
duck60.142.727.252.6-77.7
eggbox*98.978.969.699.2-97.1
glue*99.172.580.095.7-99.4
hole78.463.942.681.9-52.8
iron96.894.475.098.9-98.3
lamp97.398.171.199.3-97.5
phone93.651.047.792.4-87.7
平均值88.872.656.086.362.788.6

*对称对象


由测试结果可以看出,本文算法在无需后优化算法(细化算法,在粗姿态的基础上继续迭代优化)中有着最高的平均准确率,并且在13个类别中的8个类别准确率领先于其他算法。相比于同样使用热图回归关键点的BetaPose,本文算法的准确率提升了16.2%,主要原因在于我们使用的热图回归损失函数HWing Loss可以提升热图回归的质量。本文算法相比于PVNet的平均准确率虽然只领先2.5%,但是PVNet需要额外分割图像,训练收敛困难。并且PVNet使用像素级的方向向量作为关键点的间接表达方式,关键点推理阶段计算复杂度较高。同时,本文算法的准确率相比于PoseCNN提升了26.1%;而PoseCNN使用DeepIM优化后,算法准确率仍然不及本文算法。可以说本文算法有非常优秀的单目标姿态估计准确性。

表2给出了本文算法在LineMod数据集的不同类别下的目标直径,关键点定位误差以及姿态估计误差,其计算公式如式(15)~(17)所示。



(15)


(16)


(17)

其中分别代表关键点定位、姿态平移向量、姿态旋转矩阵的测量值,则分别代表关键点定位、姿态平移向量、姿态旋转矩阵的真实值。从表2中可看出在多数类别下,算法在13个类别的平均关键点定位误差为3.02个像素。不同类别的关键点定位误差主要取决于目标尺寸而与目标形状纹理关系不大,这体现了本文算法在复杂背景、无纹理目标的场景下优秀的关键点定位能力。对于类别内关键点,其定位误差与三维关键点与目标中心的距离相关。

表2  关键点定位误差与姿态估计误差
Tab. 2  Keypoint positioning error and pose estimation error

dobj/cmep/pixelet/cmeR/(°)
ape9.741.470.952.76
bench28.692.900.871.84
cam17.152.020.841.97
can19.342.840.801.32
cat15.262.110.902.33
duck25.941.781.082.76
driller10.714.720.871.76
eggbox*17.633.931.351.69
glue*16.482.231.252.58
hole14.822.291.002.37
iron30.315.171.132.37
lamp28.555.121.242.19
phone20.832.740.922.18
平均值/3.021.022.16

*对称对象


以cat类别为例,图7展示了cat类别的32个图像关键点的定位误差均值、方差与三维关键点偏离目标中心的关系。可以看出随着三维关键点偏离目标中心,图像关键点定位误差的均值与方差都趋向于增大。但是三维更加分散的关键点选取有利于提升PnP算法计算姿态时的鲁棒性,因此从整体上看,由于三维关键点偏离目标中心导致的图像关键点定位误差增大是可以接受的。

图7  图像关键点误差与三维关键点偏离中心距离关系

Fig.7  Relationship between the keypoint error and the distance between the 3D keypoint and the object center


在姿态估计误差上,算法在13个类别的平均平移误差为1.02 cm,平均旋转误差为2.16°。姿态估计误差主要来源于关键点误差,包括关键点的绝对定位误差与关键点中的离群点。其次,数据集中的相机内参与姿态真值的不准确同样会影响最后测量的准确性。

4.5 遮挡目标姿态估计

本文在Occlusion LINEMOD 数据集上进行了遮挡目标的姿态估计测试。在目标被部分遮挡的情况下,本文算法可以正确估计目标的姿态,如图8(a)~(d)所示。但是当目标存在大面积遮挡或者或在极端角度时,过少的图像特征导致估计失败,如图8(e)~(h)所示。

图8  部分遮挡目标姿态估计结果(绿色框为真实姿态的目标三维边界框,蓝色框为估计姿态的目标三维边界框)

Fig.8  Qualitative results for occluded object pose estimation(green 3D bounding boxes represent the ground truth poses, and blue 3D bounding boxes represent our predictions)


表3展示了本文算法遮挡目标姿态估计ADD(-S)测试结果与近期其他算法的对比。其中Oberweger等18使用热图作为关键点回归的中间形式,并且利用图像分块提升了算法对遮挡的鲁棒性。其余4个算法与单目标姿态估计对比算法相同。glue使用ADD(-S)度量,其余使用ADD度量。加粗数字为本类别中准确率最高的结果。

表3  遮挡目标姿态估计ADD(-S)指标测试结果
Tab.3  Occluded object pose estimation ADD(-S) metric test results
算法Ours18691616-17
ape23.617.62.515.89.959.2
can55.653.917.563.345.563.5
cat16.13.30.716.70.826.2
driller59.519.21.165.741.655.6
duck33.762.47.725.219.552.4
glue*48.339.610.149.646.271.7
hole47.321.35.539.727.052.5
平均值40.631.06.439.427.254.4

*对称对象


表3可以看出,与单目标姿态估计结果类似,本文算法在无需后优化算法中有着最高的平均准确率。Oberweger等18虽然对遮挡目标进行了优化,但是本文算法的平均准确率仍然高出9.4%。PVNet9基于目标分割,对遮挡目标姿态估计有天然的优势,但其平均准确率比本文低了1.2%,可以看出本文算法的性能优越性。但是相比于后处理算法DeepIM17,本文算法在准确率上有所不足。但是DeepIM在使用中要先利用PoseCNN算法获得姿态初始估计,再进行迭代后优化,复杂的处理流程导致算法无法达到实时处理速度。相比之下,本文算法可以直接通过PnP算法计算得到姿态,更加简洁高效。PoseCNN在使用后处理算法优化后,平均准确率可以提升27.2%,可以说本文算法拥有巨大的准确率提升潜力。

4.6 运行时间实验

本文算法基于目标检测,因此整体算法运行时间与目标检测网络有关。对于大小的图像,使用Inter I7-9700K CPU与NVIDIA RTX3080 GPU时,用yolo-v5进行目标检测的运行时间约为11 ms。本文算法的热图回归网络前向推理用时约为22 ms,热图推理关键点位置约为5 ms,使用EPnP算法求解姿态用时约为0.3 ms。算法整体用时约为40 ms,最快运行速率约为25 fps,可以用于实时处理。

4.7 多目标姿态估计问题

本文算法同样可以处理多目标姿态估计问题,可以使用自上而下的姿态估计方法,将多目标姿态估计问题转化为多目标检测问题与多个单目标姿态估计。即首先通过yolo-v5网络同时检测图像中的不同目标,获取不同目标的类别标签及目标框。将不同目标分别裁剪后,输入相应类别的姿态估计网络中进行姿态估计。而得益于本文算法将目标检测与姿态估计分离的设计,本文算法在进行多目标姿态估计时可以具有与单目标姿态估计相同的准确性,不会使准确性下降。

4.8 损失函数对比实验

为验证本文提出的HWing Loss的有效性,本文进行了不同损失函数的对比实验。使用MSE Loss代替HWing Loss训练热图回归网络,训练参数与4.3节中HWing Loss训练参数相同,同样训练30个轮次,测试结果如表4所示。

表4  对比实验ADD(-S)指标测试对比结果
Tab.4  Comparison results of comparative experiment ADD (-S) metric test
损失函数HWing LossMSE LossHWing LossMSE Loss
训练轮次30301010
ape64.847.356.241.2
bench99.292.498.447.7
cam88.385.284.564.4
can96.893.596.983.9
cat82.769.479.562.1
driller98.091.995.133.6
duck60.144.553.888.6
eggbox*98.998.497.766.9
glue*99.192.891.486.9
hole78.473.671.957.2
iron96.895.896.093.1
lamp97.390.792.686.9
phone93.687.192.580.4
平均值88.881.785.168.7

*对称对象


可以看出在ADD(-S)指标中,使用HWing Loss相比于使用MSE Loss,平均准确率提升7.1%,每个类别都有所提升。作为对比,表4同时给出了网络分别使用HWing Loss与MSE Loss训练第10轮的实验结果。可以看出,使用HWing Loss训练的网络在训练10轮后的平均准确率已经超越了使用MSE Loss训练30轮的网络。

究其原因是HWing Loss能在训练热图回归网络时,能更关注热图前景像素的误差,并且相比于MSE Loss,HWing Loss在小误差部分有更高的梯度,可以使网络更加快速收敛。

表5给出了使用不同损失函数训练网络预测得到的热图与预期热图的平均像素误差。可以看出,使用HWing Loss训练网络预测热图虽然全局平均误差更大,但是在数量更少且更加重要的前景像素上误差更小。而且误差下降速度更快,10轮训练的结果已经优于使用MSE Loss训练30轮结果,与表4中平均准确率结果一致。由此可以看出,本文提出的HWing Loss相比于MSE Loss更加适合回归热图的训练。

表5  不同损失函数对预测热图误差的影响
Tab.5  Influence of different loss function on the error of predicting HeatMap
损失函数HWing LossMSE Loss
训练轮次30103010
前景像素误差0.139 90.151 50.161 60.207 7
全局像素误差0.007 40.009 10.001 10.001 9

5 结论

本文分析了用于关键点回归热图的性质,并指出MSE Loss不利于热图回归的问题。为了解决这个问题,本文提出适用于热图回归的Heatmap Wing Loss。同时利用热图性质,改进热图推断关键点的方法。以此为基础,改进基于关键点定位的单目标姿态估计的算法,经实验验证,本文的单目标姿态估计算法在LINEMOD数据集上的ADD(-S)指标平均准确率达到了88.8%,相比于近期其他算法有更好的姿态估计准确率。算法运行速率最快可达到25 fps,适用于实时处理。


关键字:优秀论文

网络客服QQ: 沈编辑

投诉建议:0373-5939925    投诉建议QQ:

招聘合作:2851259250@qq.com (如您是期刊主编、文章高手,可通过邮件合作)

地址:河南省新乡市金穗大道东段266号中州期刊联盟 ICP备案号:豫ICP备2020036848

【免责声明】:中州期刊联盟所提供的信息资源如有侵权、违规,请及时告知。

版权所有:中州期刊联盟(新乡市博翰文化传媒有限公司)

关注”中州期刊联盟”公众号
了解论文写作全系列课程

核心期刊为何难发?

论文发表总嫌贵?

职院单位发核心?

扫描关注公众号

论文发表不再有疑惑

论文写作全系列课程

扫码了解更多

轻松写核心期刊论文

在线留言