返回列表

9th place solution

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

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

第9名解决方案

作者: tarokd | 比赛: Google Smartphone Decimeter Challenge

首先,我要感谢主办方组织了一场激动人心的比赛。

在这里,我介绍一下我的解决方案。
我的解决方案利用了通过多普勒频移预测的车辆速度,这基本上比基线位置更可靠。

1. 利用多普勒频移预测速度

车辆的速度可以使用 PseudorangeRateMetersPerSecond 来估计,如下所示:
https://www.kaggle.com/c/google-smartphone-decimeter-challenge/code

2. 通过CNN进行平滑

将一个简单的一维卷积网络应用于预测的速度进行平滑处理。

3. 在基线中提取可靠点

我根据速度和相对位置之间的一致性,在基线中提取了可靠点。
如果满足以下条件,基线中的连续点将被分组:

其中:

  • xt:时间索引 t 处的基线位置,
  • vt:时间索引 t 处的速度,
  • ts, te:一致组起点和终点的时间索引,

3. 对一致组应用吸附网格(Snap-to-grid)(仅限SJC)

对一致组应用吸附网格。
网格点是通过真实值的线性插值生成的。
为了避免吸附到道路的另一侧,将车辆的方向角度添加到每个网格点。
通过解决以下优化问题获得最佳网格点:

其中:

  • gt:xt 吸附到的网格点的索引,
  • ugt:与网格点处车辆方向角度对齐的单位向量。

g(xt, vt, xgt, ugt) 的第一项是与基线位置和网格点之间距离相关的成本。
g(xt, vt, xgt, ugt) 的第二项是速度方向角度与网格点方向角度偏差的成本。
上述优化问题可以使用 Dijkstra 算法求解。

4. 基于速度的插值

一致组中的基线位置是固定的。
通过固定它们,对一致组之间的点施加了边界条件。
为了满足边界条件,通过解决以下优化问题来修改速度:

其中:

  • \sigma(|vt|) 是取决于 vt 范数的标准差,这是使用训练集估计的,
  • t^{e}_{c}:第 c 个一致组的终点时间索引,
  • t^{s}_{c+1}:第 (c+1) 个一致组的起点时间索引。

然后,一致组之间的位置插值如下:

5. 对插值点应用吸附网格(仅限SCJ)

对插值点应用吸附网格的方式与一致组几乎相同(边界条件已修改)。

6. 基于速度的平滑

通过迭代求解“4. 基于速度的插值”中的优化问题对位置进行平滑,如下所示:

7. 集成

  • 我使用了多种条件来生成一致组并将它们平均。
  • 同一集合中的手机位置以相同的权重进行平均。

8. 结果

训练集: 2.331 / 公榜: 3.758 / 私榜: 2.597

9. 遗留问题

  • 使用 IMU 数据减少速度的预测误差。
  • 检测停止点并将它们收缩为一点以减少累积误差。
    虽然一致组施加的边界条件减少了累积误差,但停止点可能会对速度插值造成
同比赛其他方案