基于改进热图损失函数的目标6D姿态估计算法
随着计算机视觉技术的不断发展,仅从图像中检测物体已经不能满足智能机器人对环境感知的需要,基于图像的物体6D姿态测量成为了新的研究热点。用RGB-D图像估计物体的姿态虽然精度高,但是计算复杂难以应用。使用单RGB图像配合目标的三维模型可以解决单目相机成像时的尺度不确定问题,也可以得到较好的结果,但在实际应用场景下,目标的背景较为复杂,而且会有很多遮挡现象出现,这都给姿态估计问题造成了很大的影响。因此,如何从单张图像中快速准确地在复杂场景下获得目标的6D姿态是一个非常值得深入研究的课题。
传统姿态估计算法通常使用手工特征[
热图是一种特殊的图像,图像上每个像素值代表关键点出现在该位置的概率值,可以用于神经网络回归关键点时的中间表示,利用预测得到的热图极大值及其邻域推断得到关键点位置。因此,热图的前景像素的预测精度对于关键点定位任务至关重要,这个部分即使出现了很小的预测误差,也会导致很大的关键点偏离。相反,预测热图的背景像素值并不重要,预测时只需使其逐步趋向于零值即可。而BetaPose并没有利用好热图的相关特性:首先,在回归热图时,使用传统的MSE Loss损失函数。MSE Loss对于不同位置的像素值没有区分,训练被大量无意义的背景像素主导,导致回归的热图精度不高。其次,在使用预测的热图定位关键点时,只简单地取最大值点,存在量化误差。这两点影响了算法最终的结果。
本文对BetaPose进行了改进。首先针对MSE Loss损失函数对像素没有区分的问题,提出适用于热图回归的损失函数Heatmap Wing Loss(HWing Loss),该损失函数更加关注前景像素误差,可以有效提高热图回归的质量。其次,使用基于高斯分布的关键点推理方法,减小热图推断关键点时的量化误差。以此两点为基础,构造了新的单目标姿态估计算法。实验结果表明,相比于其他姿态估计算法,本文算法在LINEMOD数据集上有更高的ADD(-S)准确率。
2 适用于热图回归的损失函数
2.1 热图以及传统损失函数
如前文所述,热图绝大多数像素都是背景像素,对关键点至关重要的像素非常少,如
图1 关键点热图
Fig. 1 Keypoint and heatmap
在热图回归中,常使用损失函数MSE Loss即均方误差损失函数。但MSE Loss梯度随着误差增大而增大,大误差的损失梯度要高于小误差,这导致神经网络更关注于大误差部分,而忽略小误差部分。
Adaptive Wing Loss[
(1) |
(2) |
2.2 Heatmap Wing Loss
根据热图本身特性,理想的热图损失函数应该有以下特性:(1)大误差部分具有恒定梯度,不会导致产生梯度爆炸的问题。(2)背景像素的小误差部分无需精准的预测,只需要逐步回归到零值,损失函数的特性与MSE Loss损失函数类似。(3)前景图像的小误差部分的回归精确程度是热图回归的关键,对小误差要有更大的梯度。损失函数特性与AWing Loss函数类似。并且在整个训练过程中前景像素的梯度都应该大于背景像素的梯度,这也有利于网络向着重要的前景像素损失降低方向训练。本文在AWing Loss的基础上提出适用于热图回归的损失函数Heatmap Wing Loss(HWing Loss),其表达式如
(3) |
HWing Loss采用分段函数设计,与分别代表真实像素值与预测像素值,为图像像素误差。为阈值,在之间。 为参数,其中。
为了提升前景像素损失函数的梯度,让整个网络训练过程能以前景像素主导,HWing Loss相比于AWing Loss做了两点改进。
首先是小误差部分,对像素误差增加系数,对误差进行缩放。此时将AWing Loss与HWing Loss函数看作误差的函数。在部分,其梯度分别如公式(
(4) |
(5) |
图2 不同损失函数对比图
Fig.2 Diagram of loss functions
图3 HWing Loss示意图
Fig.3 Diagram of HWing Loss
使用HWing Loss损失函数训练热图回归网络时,训练开始所有像素都有较大误差,都应用损失函数的大误差部分,同时减小误差。当误差减小至后,背景像素随着误差减小,梯度逐渐减小,使得网络逐渐不再关注其收敛。而前景像素随着误差减小,梯度逐渐增大,在网络损失中占据主导位置,即网络会继续向着前景像素误差减小的方向训练,这符合热图前景像素更加重要的特点。
3 目标姿态估计算法
本文姿态估计算法为两阶段算法:第一阶段预测热图,用于定位目标关键点;第二阶段由关键点计算目标姿态。具体流程如
图4 姿态估计算法流程图
Fig. 4 Flowchart of the pose estimation algorithm
3.1 热图回归网络
本文使用HRNet[
由于热图的前景像素部分只占整个图像的不足1%,即使我们使用了HWing Loss提高网络对前景像素的关注度,在训练时,整个损失仍然会以重要性不高的背景像素为主,导致网络不能更精确地得到前景像素的预测。因此,我们使用文献[
图5 加权损失示意图
Fig. 5 Schematic diagram of weighted loss
3.2 关键点推断
在传统方法中,通常使用热图的最大值位置作为关键点的预测值。但是由于图像是离散的,而关键点的位置很有可能不在像素点位置,这就导致了只用最大值位置作为关键点预测值会产生量化误差,影响最终姿态估计结果。
Zhang等[
考虑到热图是由二维高斯函数生成,根据高斯函数的可分离性,二维高斯函数可以分解为两个一维高斯函数。
(6) |
极值点在u处的一维高斯函数为:
(7) |
为降低逼近难度,对高斯函数进行对数运算,将高斯函数变为二次函数,同时,可以保持极值点位置。
(8) |
其中在极值点u处,以及其一阶二阶导数值分别为:
(9) |
(10) |
(11) |
假设预测热图极大值在x方向坐标值为,易知位于极值点附近,可以通过推断位置。我们对在位置进行泰勒展开,忽略三阶小量:
(12) |
(13) |
其中,分别可由预测热图在最大值位置在x方向上的一阶差分与二阶差分计算得到。
同理,对y方向坐标有:
(14) |
3.3 姿态计算
通过预测热图推得关键点位置时,由于目标可能被遮挡,不可见的关键点会出现较大的定位误差从而影响姿态估计,所以需要对关键点进行筛选。考虑到热图每个像素值的本质是该关键点出现在该位置的概率,可以使用预测热图极值位置的像素值作为该关键点的置信系数,并对关键点进行筛选。为了保证姿态计算的稳定性,选择置信系数大的个图像关键点。
获取图像关键点后,结合已知的三维关键点以及相机的内参,可以通过求解PnP问题计算得到姿态。我们使用EPnP算法[
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张图像,每幅合成图像的背景随机采样自SUN397[
我们在目标三维模型上使用迭代最远点算法标注个关键点并创建监督热图。输入图像裁剪至,每一批次训练32张图像,学习率设置为0.01,训练30个轮次。对于损失函数HWing Loss,经过多次实验,选择参数。在测试过程中,选择置信系数最大的个关键点输入EPnP算法进行姿态估计。
4.4 单目标姿态估计
我们在LINEMOD数据集上进行了单目标姿态估计测试,部分结果如
图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)
为验证本文算法的有效性,我们将本文算法与近期算法进行对比。作为对比的BetaPose[
算法 | Ours | [ | [ | [ | [ | [ |
---|---|---|---|---|---|---|
ape | 64.8 | 41.2 | 21.6 | 43.6 | - | 77.0 |
bench | 99.2 | 85.7 | 81.8 | 99.9 | - | 97.5 |
cam | 88.3 | 78.9 | 36.6 | 86.9 | - | 93.5 |
can | 96.8 | 85.2 | 68.8 | 95.5 | - | 96.5 |
cat | 82.7 | 73.9 | 41.8 | 79.3 | - | 82.1 |
driller | 98.0 | 77.0 | 63.5 | 96.4 | - | 95.0 |
duck | 60.1 | 42.7 | 27.2 | 52.6 | - | 77.7 |
eggbox* | 98.9 | 78.9 | 69.6 | 99.2 | - | 97.1 |
glue* | 99.1 | 72.5 | 80.0 | 95.7 | - | 99.4 |
hole | 78.4 | 63.9 | 42.6 | 81.9 | - | 52.8 |
iron | 96.8 | 94.4 | 75.0 | 98.9 | - | 98.3 |
lamp | 97.3 | 98.1 | 71.1 | 99.3 | - | 97.5 |
phone | 93.6 | 51.0 | 47.7 | 92.4 | - | 87.7 |
平均值 | 88.8 | 72.6 | 56.0 | 86.3 | 62.7 | 88.6 |
*对称对象
由测试结果可以看出,本文算法在无需后优化算法(细化算法,在粗姿态的基础上继续迭代优化)中有着最高的平均准确率,并且在13个类别中的8个类别准确率领先于其他算法。相比于同样使用热图回归关键点的BetaPose,本文算法的准确率提升了16.2%,主要原因在于我们使用的热图回归损失函数HWing Loss可以提升热图回归的质量。本文算法相比于PVNet的平均准确率虽然只领先2.5%,但是PVNet需要额外分割图像,训练收敛困难。并且PVNet使用像素级的方向向量作为关键点的间接表达方式,关键点推理阶段计算复杂度较高。同时,本文算法的准确率相比于PoseCNN提升了26.1%;而PoseCNN使用DeepIM优化后,算法准确率仍然不及本文算法。可以说本文算法有非常优秀的单目标姿态估计准确性。
(15) |
(16) |
(17) |
其中分别代表关键点定位、姿态平移向量、姿态旋转矩阵的测量值,则分别代表关键点定位、姿态平移向量、姿态旋转矩阵的真实值。从
/cm | /pixel | /cm | /(°) | |
---|---|---|---|---|
ape | 9.74 | 1.47 | 0.95 | 2.76 |
bench | 28.69 | 2.90 | 0.87 | 1.84 |
cam | 17.15 | 2.02 | 0.84 | 1.97 |
can | 19.34 | 2.84 | 0.80 | 1.32 |
cat | 15.26 | 2.11 | 0.90 | 2.33 |
duck | 25.94 | 1.78 | 1.08 | 2.76 |
driller | 10.71 | 4.72 | 0.87 | 1.76 |
eggbox* | 17.63 | 3.93 | 1.35 | 1.69 |
glue* | 16.48 | 2.23 | 1.25 | 2.58 |
hole | 14.82 | 2.29 | 1.00 | 2.37 |
iron | 30.31 | 5.17 | 1.13 | 2.37 |
lamp | 28.55 | 5.12 | 1.24 | 2.19 |
phone | 20.83 | 2.74 | 0.92 | 2.18 |
平均值 | / | 3.02 | 1.02 | 2.16 |
*对称对象
以cat类别为例,
图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 部分遮挡目标姿态估计结果(绿色框为真实姿态的目标三维边界框,蓝色框为估计姿态的目标三维边界框)
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)
算法 | Ours | [ | [ | [ | [ | [ |
---|---|---|---|---|---|---|
ape | 23.6 | 17.6 | 2.5 | 15.8 | 9.9 | 59.2 |
can | 55.6 | 53.9 | 17.5 | 63.3 | 45.5 | 63.5 |
cat | 16.1 | 3.3 | 0.7 | 16.7 | 0.8 | 26.2 |
driller | 59.5 | 19.2 | 1.1 | 65.7 | 41.6 | 55.6 |
duck | 33.7 | 62.4 | 7.7 | 25.2 | 19.5 | 52.4 |
glue* | 48.3 | 39.6 | 10.1 | 49.6 | 46.2 | 71.7 |
hole | 47.3 | 21.3 | 5.5 | 39.7 | 27.0 | 52.5 |
平均值 | 40.6 | 31.0 | 6.4 | 39.4 | 27.2 | 54.4 |
*对称对象
由
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个轮次,测试结果如
损失函数 | HWing Loss | MSE Loss | HWing Loss | MSE Loss |
---|---|---|---|---|
训练轮次 | 30 | 30 | 10 | 10 |
ape | 64.8 | 47.3 | 56.2 | 41.2 |
bench | 99.2 | 92.4 | 98.4 | 47.7 |
cam | 88.3 | 85.2 | 84.5 | 64.4 |
can | 96.8 | 93.5 | 96.9 | 83.9 |
cat | 82.7 | 69.4 | 79.5 | 62.1 |
driller | 98.0 | 91.9 | 95.1 | 33.6 |
duck | 60.1 | 44.5 | 53.8 | 88.6 |
eggbox* | 98.9 | 98.4 | 97.7 | 66.9 |
glue* | 99.1 | 92.8 | 91.4 | 86.9 |
hole | 78.4 | 73.6 | 71.9 | 57.2 |
iron | 96.8 | 95.8 | 96.0 | 93.1 |
lamp | 97.3 | 90.7 | 92.6 | 86.9 |
phone | 93.6 | 87.1 | 92.5 | 80.4 |
平均值 | 88.8 | 81.7 | 85.1 | 68.7 |
*对称对象
可以看出在ADD(-S)指标中,使用HWing Loss相比于使用MSE Loss,平均准确率提升7.1%,每个类别都有所提升。作为对比,
究其原因是HWing Loss能在训练热图回归网络时,能更关注热图前景像素的误差,并且相比于MSE Loss,HWing Loss在小误差部分有更高的梯度,可以使网络更加快速收敛。
损失函数 | HWing Loss | MSE Loss | ||
---|---|---|---|---|
训练轮次 | 30 | 10 | 30 | 10 |
前景像素误差 | 0.139 9 | 0.151 5 | 0.161 6 | 0.207 7 |
全局像素误差 | 0.007 4 | 0.009 1 | 0.001 1 | 0.001 9 |
5 结论
本文分析了用于关键点回归热图的性质,并指出MSE Loss不利于热图回归的问题。为了解决这个问题,本文提出适用于热图回归的Heatmap Wing Loss。同时利用热图性质,改进热图推断关键点的方法。以此为基础,改进基于关键点定位的单目标姿态估计的算法,经实验验证,本文的单目标姿态估计算法在LINEMOD数据集上的ADD(-S)指标平均准确率达到了88.8%,相比于近期其他算法有更好的姿态估计准确率。算法运行速率最快可达到25 fps,适用于实时处理。
- 我用了一个很复杂的图,帮你们解释下“23版最新北大核心目录有效期问题”。
- 重磅!CSSCI来源期刊(2023-2024版)最新期刊目录看点分析!全网首发!
- CSSCI官方早就公布了最新南核目录,有心的人已经拿到并且投入使用!附南核目录新增期刊!
- 北大核心期刊目录换届,我们应该熟知的10个知识点。
- 注意,最新期刊论文格式标准已发布,论文写作规则发生重大变化!文字版GB/T 7713.2—2022 学术论文编写规则
- 盘点那些评职称超管用的资源,1,3和5已经“绝种”了
- 职称话题| 为什么党校更认可省市级党报?是否有什么说据?还有哪些机构认可党报?
- 《农业经济》论文投稿解析,难度指数四颗星,附好发选题!
- 期刊知识:学位论文完成后是否可以拆分成期刊论文发表?
- 号外!出书的人注意啦:近期专著书号有空缺!!