论文阅读:端到端自动驾驶UniAD详解(一)

1,199 阅读1分钟

UniAD概览

image.png

BEV特征提取

采用BEVFomer模型结构,对环视图像提取BEV特征,如下图所示

image.png

数据流过程:

  1. tt时刻的NN张环视图像,经过图像Backbone(例:ResNet-101)得到NN张图像对应的特征:Ft={Fti}i=1NF_t=\{F_t^i\}^{N}_{i=1},其中FtiF^i_t表示tt时刻的第ii个视角的图像的特征;

  2. t1t-1时刻的BEV特征Bt1B_{t-1}和BEV queries QbevQ_{bev} (预先定义的维度与BEV特征一致的可学习参数),经过时序自注意力机制(TSA, temporal self-attention)模块,得到经过TSA后的BEV queries QbevQ_{bev}

Qbev=DeformAtten(Qbev,Bt1,Bt1)Q_{bev}=\mathrm{DeformAtten}(Q_{bev},B_{t-1},B_{t-1})
  1. TSA后的BEV queries QbevQ_{bev}Ft{Fti}i=1NF_t\{F_t^i\}_{i=1}^{N},经过空间交叉注意力机制(SCA, Spatial Cross-Attention)模块,得到经过SCA后的BEV queries QbevQ_{bev}
Qbev=DeformAtten(Qbev,Ft,Ft)Q_{bev}=\mathrm{DeformAtten}(Q_{bev},F_{t},F_{t})
  1. 经过6个(TSA+Norm+SCA+Norm+FF+Norm)的组合模块之后,输出tt时刻的BEV特征BtB_t.

其中DeformAtten(Q,K,V)\mathrm{DeformAtten}(Q,K,V)表示,以QQ为查询向量信息源,KK为键的信息源,VV为值的信息源的Deformable Attention机制算子。

TrackFormer

TrackFormer基于MOTR模型的整体结构,将原模型中每帧的2D图像输入,改为BEV特征作为输入,如下图所示

image.png

TrackFormer将上图中的Video Stream的每一帧图像和Enc模块,替换为上一步由BEV特征提取模块得到的BB,即每帧的BEV特征。

从时序的BEV特征输入,经过MOTR模型推理,到输出目标轨迹,需要经过以下步骤:

  1. T1T_1时刻的BEV特征Bt1B_{t_1},与Detect Query qdq_d一起作为输入,经过Transformer Decoder解码器,得到Hidden States(隐状态),同时输出T1T_1帧的目标和轨迹;

  2. Hidden States再经过QIM(查询交互模块)得到T2T_2帧的Tracked Query qtrq_{tr}

  3. Detect Query qdq_dT2T_2帧的Tracked Query qtrq_{tr}进行拼接,与T2T_2帧的图像特征,一起输入到Transformer Decoder解码器,得到T2T_2帧的Hidden States,同时输出T2T_2帧的目标和轨迹;

  4. 循环执行上述步骤,根据TiT_i帧的状态信息,进行Ti+1T_{i+1}帧的轨迹预测,i=2,3,4,i=2,3,4,\dots

Detect Query和Track Query

image.png

Detect Query是一个可学习的查询向量,维度为NdetdN_{det}*dNdetN_{det}为最大检测目标个数,长度固定,dd为负责每个目标的查询向量长度。它负责检测第一次出现的目标。

Track Query是一个可学习的查询向量,维度为NtrdN_{tr}*dNtrN_{tr}为当前存在目标轨迹个数,长度随着目标轨迹的产生和消失而变动,dd为负责每个目标轨迹的查询向量长度。它负责维护目标的轨迹信息。

Detect Query和Track Query拼接起来,一起作为查询向量,结合由BEV特征BB产生的键和值,参与到Transformer Decoder模块,负责检测新出现的目标和维护已有目标的轨迹。

QIM(查询交互模块)

此模块负责目标轨迹的产生和消失,维护轨迹的生命周期。

训练阶段,通过匈牙利匹配算法,Detect Query与Ground Truth中第一次出现的目标,根据两者的IoU大小进行Bipartite matching配对,确定每个位置负责检测的目标框;Track Query与Ground Truth中对应轨迹ID的目标,根据两者IoU大小进行进行Bipartite matching配对。

推理阶段,Detect Query根据检测框的阈值大小来确定要保留的检测,而Track Query中,需某个目标轨迹的阈值持续低于某个值一段时间后,才进行删除。

MapFormer

采用Panoptic SegFormer模型结构的transformer encoer模块、location decoder模块和mask decoder模块,对环视图像的BEV特征进行全景分割,得到map信息: lanes,、boundaries、pedestrian crossings和 drivable area.

image.png

数据流过程:

  • 环视图像的BEV特征,经过Flatten之后,作为Featue Token,输入到Transformer Encoder模块,得到Encoder的输出FF
  • FFNthN_{th}个 Things Queries,输入Location Decoder模块,得到NthN_{th}个 location-aware Things Queries;
  • NthN_{th}个 location-aware Things Queries和NstN_{st}个 Stuff Queries,输入Mask Decoder模块,得到每类的分割mask和对应的分类;

MotionFormer、OccFormer和Planner

除了上述模块之外,UniAD还包括MotionFormer模块、OccFormer模块和planner模块,我将在此系列文章的第二篇中进行详细讲解:

  • MotionFormer捕获B+物体+地图之间的交互信息(作为k和v),并预测每个物体的未来轨迹,由于场景中每个物体的行动可能会对其他物体产生重大影响,该模块为所有考虑的物体做出联合预测。
  • 同时,我们设计了一个自车查询,以明确地对自车进行建模,并与其他物体交互。
  • OccFormer使用BEV特征B作为查询,物体motion信息作为k和v,并且预测物体未来occupancy的情况
  • 最后,Planner使用来自MotionFormer的表达性自车查询来预测规划结果,并通过避开OccFormer预测的占用区域来避免碰撞。
  • Planner利用来自MotionFormer的自车查询来预测规划结果,并将其自身远离OccFormer预测的占用区域,以避免碰撞。