返回列表

8th place solution

447. Google Smartphone Decimeter Challenge | google-smartphone-decimeter-challenge

开始: 2021-05-12 结束: 2021-08-04 自动驾驶感知 数据算法赛
第8名解决方案

第8名解决方案

作者: Michał Stolarczyk
比赛排名: 第8名

复现基线

作为我的初始预测,我使用了与此讨论中描述的方法类似的方法,但增加了一个技巧。我多次拟合加权最小二乘法(WLS),每次都移除残差最大的测量值。我复现的基线在交叉验证(CV)得分上略优于主办方提供的基线。

利用相对位置改进基线

这一部分包含三个步骤:

  • 我利用累积德尔塔范围、伪距、卫星位置和复现的基线,计算了连续时间戳之间在东北天(ENU)坐标系中的速度。之后,我移除了异常值并对预测结果进行了平滑处理。
  • 然后,我使用上一步得到的速度、IMU数据和基线训练了一个卷积神经网络,该网络同样预测ENU坐标系中的速度。模型的平均绝对误差约为0.25m/s。
  • 最后一步,我应用加权最小二乘法将相对预测与派生文件中的数据相结合。对于每个时间戳,它解决了以下优化问题:

$$ argmin_{x, b_{-k}, ..., b_k} \sum_{i=-k}^k \sum_{j=1}^{n_i} w_{ij} (|| s_{ij} - \Delta x_i - x|| + b_i -p_{ij})^2 $$

其中:

  • \( k \) - 控制窗口大小的参数。
  • \( x \) - 时间戳 \( t \) 处的手机位置
  • \( b_i \) - 时间戳 \( t + i \) 处的手机钟差
  • \( n_i \) - 时间戳 \( t + i \) 处的伪距测量数量
  • \( w_{ij} \) - 第 \( j \) 个伪距测量不确定度的倒数乘以 \( 1 + 0.25|i| \)
  • \( s_{ij} \) - 时间戳 \( t + i \) 处第 \( j \) 颗卫星的位置
  • \( \Delta x_{i} \) - 模型对时间戳 \( t + i \) 和 \( t \) 之间相对位置的预测
  • \( p_{ij} \) - 时间戳 \( t + i \) 处修正后的第 \( j \) 个伪距测量值

参数 \( k = 10 \) 对我来说效果最好,因此窗口大小为21。该模型有24个未知数——每个时间戳3个用于位置,1个用于钟差。它的参数数量是单时间戳WLS的6倍,但测量值数量是其21倍。缺点是,相对位置中的任何误差都会影响该解决方案的性能。

改进市区的基线

由于测试数据中市区的所有路段也存在于真值数据中,我对每个时间戳应用了以下算法:

  • 选择真值文件中距离基线预测小于30米的所有点——我们称它们为候选点
  • 对于每个候选点 \( x_j \) 估计钟差:\( b_j = \mathrm{median}_i ( || s_i - x_j || - p_i ) \)
  • 找到具有以下最低值的 \( k \) 个点:
    $$ \sum_{i=1}^{n} w_i | || s_i - x_j || - b_i - p_i | $$
    并返回它们的中心点。

使用中位数而不是平均值来计算钟差,以及使用残差的绝对值而不是平方值非常重要,因为这有助于处理市区中非常嘈杂的测量值。

后处理

之后,我应用了以下步骤来改进预测:

  • 误差修正模型——它预测当前预测与真值之间的差异。这是一个简单的一维卷积神经网络。该模型的特征基于当前预测和IMU。
  • 当速度为零时聚合预测。
  • 聚合来自不同手机的预测。
同比赛其他方案