返回列表

13th place solution

435. Indoor Location & Navigation | indoor-location-navigation

开始: 2021-01-28 结束: 2021-05-17 共享出行与停车 数据算法赛
第13名解决方案

第13名解决方案

作者:Olaf Placha
比赛排名:第13名

首先,我要感谢 @kokitanisaka 提供的统一wifi数据集,@robikscube 提供的网格对齐代码,@saitodevel01 提供的成本最小化方法,以及 @joelqv 提供的MLP和shapely笔记本。它们真的非常有帮助!

我的流程如下(这是简化版,但展示了我解决方案的核心思想):

  1. 训练楼层预测 LSTM。我将预测的楼层作为后续模型的输入。
  2. 训练一个 BiLSTM 堆叠模型,以2秒的频率预测位置。我使用了平滑处理后的 wifi 和 beacon RSSI 值以及 IMU 数据。架构图见:链接
  3. 使用统一的wifi数据集训练一个 MLP 堆叠模型。
  4. 对步骤2和步骤3的结果进行集成。
  5. 训练一个 LSTM 来预测两个航点之间的距离。我使用了来自100多栋建筑的全部数据。它达到了70厘米的精度。
  6. 训练增量修正 LSTM。请参考我之前的帖子
  7. 对步骤4、5和6的结果进行成本最小化处理。

此时,路径轨迹看起来非常有希望,通常只是发生了位移。所以我决定想出一种方法将它们平移到走廊中。我定义了一个成本函数,计算路径中每个预测坐标到最近航点的平方距离并将其求和(我也使用了通过 BFS 计算的到走廊的距离,得分稍差,但不需要航点)。目标是最小化这个成本(目的是找到局部最小值)。迭代算法的工作原理如下:

  • 对于 [-1, -0.5, 0, 0.5, 1] x [-1, -0.5, 0, 0.5, 1] 中的每个向量 v,计算按此向量平移路径后的成本。
  • 选择使成本最小的平移向量,并按此向量平移路径。
  • 重复此过程直到成本收敛。

结果可以在 这里这里 找到(这项技术与其他团队使用的方法不同,所以我建议看看结果 :))。

最后是网格对齐。

我使用了自动生成的航点,创建过程如下:

  • 使用 shapely 创建楼层掩码。
  • “淹没”每个训练航点周围的区域。
  • 在保持不变的区域创建密集网格。
    结果掩码示例见 这里

再次感谢大家参与这次比赛。这是我第一次参赛。以后我肯定会参加其他的比赛。

同比赛其他方案