[论文笔记] MapTR: Structured modeling and learning for online vectorized hd map construction

Liao, Bencheng, et al. “Maptr: Structured modeling and learning for online vectorized hd map construction.” arXiv preprint arXiv:2208.14437 (2022).

要点总结:

MapTR 将地图元素(路沿, 车道线, 人行横道等)分成两类—线和多边形, 然后使用DETR策略对每个实例预测出一个数量为N的点集, 接着让预测的线和多边形和其对应GT匹配, 最后计算预测线—GT线, 预测多边形—GT多边形的loss;

文章的主要贡献点: 如何匹配预测与GT点集和计算其loss?

[论文笔记] MapTR: Structured modeling and learning for online vectorized hd map construction_第1张图片

模型如何输出M组N个点集? M记为Instance数量, N记为每个Instance所包含的点数量

参考上图, Map Decoder会生成N个point query 和 M个instance query, 分别作为点和实例的Query; 接下来将这两组Query进行组合, 得到M*N个Query(?怎么进行组合), 再使用head将组合的Query进行回归, 这里就得到M个instance, 每个instance中包含N个点;

通过上一步, 得到了M个instance, 每个Instance包含N个点; 这里的instance可能是线或者多边形, 针对这两种类型, point-level 匹配会有一些差异;

接下来是MapTR的核心部分!

模型预测的M个instance如何与GT进行匹配? (instance-level matching)

首先计算M个instance和K个GT(假设有K个线或多边形)的位置cost(文中记为 L p o s i t i o n L_{position} Lposition) , 会得到M*K的代价矩阵, 再使用匈牙利匹配找到了预测instance和GT的匹配关系, 再加上Focal预测类别; 这两项loss就可以让预测instance匹配GT, 并得到预测instance的类别; 如下图

在这里插入图片描述

? 这里的 L F o c a l L_{Focal} LFocal L p o s i t i o n L_{position} Lposition 计算loss 吗?

预测instance匹配到了GT, 该怎么计算loss?

需要注意的是, GT中的线或者多边形表示的地图元素是无序的;

  • 线: 只有两种顺序, 从从头出发或者从尾出发
  • 多边形: 可以从中任意选一点从两边扩散, 所以有2*N种排序

网络模型需要学习到点之间的顺序关系, 再将这些点连接起来, 才能确定线或多边形的形状; 所以网络模型预测输出的点是默认有序的!

这两者之间的差异会带来什么问题呢?

假设, GT的点都是有序的, 那么只需要简单计算预测点集和GT点集每个点距离, 这个instance的loss就可以容易计算出来了, 所以如何硬给GT的点加一个顺序会变简单很多, 可以解决这个问题, 但模型的泛函性能可能不会太好;

MapTR为了解决这个问题, 提出了一个简单的策略排序匹配—计算loss(自己取的名字): 即将所有排序都展开, 在计算预测instance中每个点和排序中每个点的曼哈顿距离, 找到距离最小的排序, 再计算两个点集之间的点到点的距离, 该距离就是预测instance和GT的最终loss;

排序匹配, 可以想象成上一步的instance匹配,

  • 线存在两种排序, 从从头出发或者从尾出发, 分别计算预测instance点和两种排序的曼哈顿距离, 距离最小的即为最佳排序;
  • 多边形存在2N种排序, 把2N种都拉直, 再计算预测instance点和所有排序的曼哈顿距离,距离最小的即为最佳排序;

在这里插入图片描述

计算loss,

最终的loss由三部分组成, 分类loss, 点对点loss, 和Edge Direction Loss;

  • 分类loss: 对于每个点计算分类loss
  • 点对点loss: 点和点之间的曼哈顿距离
  • Edge Direction Loss: 向量点组成的向量的夹角的余弦相似度, 用来约束线的形状

更好看的样式 Notion

Ref: 手撕MapTR

你可能感兴趣的:(论文笔记,bev,map)