阅读笔记-NVAutoNet: Fast and Accurate 360 3D Perception for Self-Driving

论文链接:https://arxiv.org/pdf/2303.12976.pdf

Title


1. 动机和贡献

  • 之前多视角的方法一般才有后融合的方式实现360°感知,即每个视角独立完成感知,然后利用空间关系进行融合。但存在的问题是,独立的单目感知其预测误差差异可能很大,导致融合困难,经常导致很多的FP。(当然冗余检测对安全性很重要)
  • 汽车公司一般很多生产线,比如SUV,sedan等,每个车型的尺寸不一致,摄像头挂载的位置也不同。因此算法对相机的内外参的容忍度也很重要。
  • 对于self driving而言,其实时性也至关重要。

本文贡献:

  • 图像和bev 的特征抽取器使用NAS在特定硬件上搜索获得,高指标低延时
  • 在特征层面实现对特征的融合。这样的做法有个好处是增大了对view 数的鲁棒性。
  • 提出了一种基于MLP的2d-to-3d的隆起模块,该模块不依赖于深度估计,而是显示的利用了相机的内外参,这样当模型训练完成,因为相机内外参是输入参数,因此可以适用于不同的挂载方式。
  • 所有的下游任务都被形式化为检测任务,能够直接利用上游结果。

其中第三点应该是本文的核心。

2. 本文方法

pipeline

本文方法整体的pipeline如上图所示,输入是能够覆盖360°场景的多个视角的图像\{I_i\}_{i=1}^{N_{view}},以及每个视角对应相机的内外参。 图像首先送入到2D encoder中进行特征编码,这里不同的图像可以对应不同的encoder,也可以是相同的encoder,文中的方法和我们的方法相同,前视单独一个encoder,周视一个encoder,鱼眼数据一个encoder。然后 每个视角的图像特征经过 uplifted 操作转成BEV特征,多个视角的BEV特征通过add 操作形成全视角的BEV特征,然后在该BEV特征上即可进行类似2D图像上的3D目标检测操作,经过BEV encoder抽取特征用于下游的3D检测,free space和parking space的划分。

2.1 2D Image Feature Extractors

这里文中提到几点:

  • 不同视角图像的encoder可以划分group,同一个group使用相同的encoder
  • encoder结构是使用NAS搜索的,平衡了精度和延迟
  • 结构中去掉了skip-connections以获得更高的吞吐量。
  • 类似FPN的结构,coarser feature map经过上采样与finer feature map融合获得更丰富的语义信息。

2.2 Image-to-BEV Transformation and Fusion

本文方法的核心部分。

2.2.1 BEV 平面到BEV 网格

这个就是真实场景到模型表示的转换,BEV 网格以自车为中心点刻画周围平面的特征,每个网格表示一块区域,就是分辨率的概念。一般而言,一个网格表示的区域大小是相同的,也有随着距离变化分辨率发生变化的。本文使用G^{bev} \in R^{W^{bev}\times H^{bev}} 表示BEV网格。

2.2.2 2D图像到BEV的uplifting(隆起)操作

文章提供了一种基于MLP的数据驱动的相机到BEV的变换函数,该方法以查表的方式显式的利用相机的内外参,因此一旦模型训练好以及拿到相机的配置参数就能拿到较好的泛化性。
该方法的motivation 是注意到图像中像素的行列与BEV上极坐标的位置有较强的几何关系, 具体而言,图像中的每一列都对应着BEV上以过消失点的一条曲线(这里说曲线的原因是因为存在相机畸变),而不像之前方法一样认为每一列对应BEV上的一条射线。那uplifting的目的就是学习出每一列到BEV对应曲线的拟合,从而分配特征。图2 左子图给出了图像每一列在BEV上的映射关系。形式化表述而言,使用I^c表示图像I的某一列,首先根据相机的内外参将该列的每一个像素点映射到BEV上并将他们转换为极坐标,即\{b_i=[a_i, d_i]\}, 使用多项式拟合该极坐标下的曲线a=f^c(d),注意每一列的曲线是不同的,从而对于图像任意列而言,给定其径向距离能计算出其角度。
假定相机能拍摄的最远距离为r, 使用对数空间将径向距离划分\hat{h} 个bins,对数空间保证近处的分辨率更大,远处的分辨率更低。图像某一列的特征表示为F_{cam}^c, 那么BEV变换网络可以定义为F_{polar}^c = \mathcal{B}(F_{cam}^c)\in R^{\hat{h}\times C}, 于是通过查表法,极坐标表示的BEV每个位置的特征可以从图像中获得,从而构成BEV特征,其过程如图2右图所示。多个视角的BEV特征融合方法采用的加法,加法操作能够允许网络独立于相机视角个数。

image.png

2.2.3 基于MLP的BEV变换

上一节说的将图像的特征映射到BEV的函数\mathcal{B}(\cdot) 由MLP构成, MLP仅有一层隐层,且每一列的MLP不共享参数。这么做是因为MLP能够刻画全局的信息,由于图像本身损失了深度信息以及目标可能存在不同高度,这么做对将图像特征转换到准确的BEV位置很重要。

2.2.4 极坐标与笛卡尔坐标的对比

BEV网格G^{bev} 在下游的检测精度以及检测范围都很重要,对于自动驾驶而言,高速路段甚至需要预测前向200m,一般笛卡尔坐标系是0.25m的分辨率,相当于1600x1600的网格,太大。而且在实践中,一般越近需要的精度越高,而越远的距离段分辨率可以降低。而极坐标按角度和log空间的深度划分,可以有效使用小的BEV大小刻画整个范围。

2.2.5 BEV 特征抽取

使用基于CNN backbone提取融合后BEV的特征,提取后的特征用于3D检测头。

3. 感知任务

3.1 3D目标检测

  • 本文检测任务对应9个自由度:位置点[r, a, e], 长宽高[d_x, d_y, d_z],以及roll, yaw, pitch角决定的方向矩阵R \in R^{3\times 3}, 这之前方法一般仅估计yaw角;
  • 为了避免NMS的后处理,采用set prediction的方式匹配gt和预测;
  • 具体而言,假设输入特征\hat{F}_{bev} \in R^{M\times N \times C},然后具有5个head,分别对应class,位置,大小,角度和立方体参数的不确定度,和FCOS任务头很类似。
  • classification 头预测k+1类,第1个元素表示是否是前景目标
  • position 头, r, a, e 分别表示径向距离、角度和高程,也是基于anchor的
  • dimension头, 长宽高,单位为m
  • orientation,预测yaw,pitch和roll的sine和cosine值
  • 训练loss:
    image.png

    image.png

    每个式子里的\sigma是用于自主学习loss权重时的正则项。L^{loc}, L^{rot}都是L1损失,box 使用的是比值。

3.2 3D Freespace

Freespace, 也称为可行驶区域,指道路边界以内且没有被任何障碍物占据的区域。本文将Freespace表示为radial distance map(RDM), RDM是由等角度的bin和对应的距离来表示,每个bin只预测一个值,在生成gt时是从中心点发射射线,其射线与gt的polygon的交叉点构成Freespace的目标。这样的好处是可以直接使用预测结果构建freespace,而不用后处理。除了径向距离,每个bin还有一个边界场景label,如vehicle和vru等。于是每个freespace的gt label表示为(r, c), r是径向距离向量,c是边界语义向量。
具体模型实现时,CNN+两个head,分别预测距离向量和语义向量。这里需要注意因为划分的是bins所以其输出的大小就是确定的,比如bins num=360,那就是预测360\times C的向量。
训练loss:
L_{fsp}(G, P) = L_{fsp}^{reg}(\hat{r}, r) + L_{fsp}^{cls}(\hat{c}, c) \\ L_{fsp}^{reg} = L_{fsp}^{iou}(\hat{r}, r) + L_{fsp}^{sim}(\hat{r}, r)
其中分类损失是标准的focal loss,而回归损失定义如下,这里说是iou其实就是比值回归。
L_{fsp}^{iou}(\hat{r}, r) = \sum_{i=1}^{N_{bins}} \frac{min(r_i, \hat{r}_i)}{max(r_i, \hat{r}_i)} \\ L_{fsp}^{sim}(\hat{r}, r) = \sum_{i=1}^{N_{bins}}\Big(1.0 - \frac{l_i^{i+1}\cdot \hat{l}_i^{i+1}}{\Vert l_i^{i+1}\Vert \Vert \hat{l}_i^{i+1}\Vert } \Big)
其中l_i^{i+1}表示第i个bin中的顶点到第i+1个bin中的顶点的向量。

3.3 3D Parking Space

车位检测需要预测的目标包括车位中心点位置,长宽和角度,角度0~180, 每个车位还划分为3类: 倾斜、侧方和垂直。模型和3D检测头一致(这里是说也用极坐标的方式?但看loss又不像) 损失函数一样包括回归和分类,回归函数如下
L_{prk}^{reg}(g_i, d_i) = \sum_{s\in \{cx, cy, l, w, \theta\}}(g_i^s - d_i^s)^2

3.4 多任务学习

尽可能的让不同任务的loss赋值相近,因此每个任务的loss weight定义如下:

image.png

其中c_t 是可以预先指定的先验,以针对某些更难或者更重要的权重,w_t则保证不同loss的梯度量级相同。最开始时w_i=1, 尽管c_i 也需要手动调整,但其代价比调整w_i要小很多。

4. 实验和结果

4.1 3D目标检测

  • position error:相对radius 误差, 绝对角度误差(度)和绝对高度误差(米)【实验里的该值不知道咋融合的】
  • Orientation error: \Vert log(R^{-1}\hat{R}) ,旋转矩阵的相似度
  • shape error:LWH的相对误差
  • safety mAP:安全区域内的mAP

4.2 3D Freespace

  • Relative gap: 相对径向距离误差
  • Absolute gap: 绝对径向误差(meter)
  • Success rate: 成功估计的angular bin的比例。relative gap小于10%则认为成功估计
  • Smoothness: 径向距离的总变化值\sum_{i=1}^{N_{bins}}|r_i - r_{i-1}|
  • Classification error: 每个边界点的分类误差

4.3 Parking Spaces

这里需要注意的是其匹配阈值IOU更加严格,需要大于70%

具体实验这里不贴了,贴一点比较感兴趣的。

4.4 IPM vs MLP based 2D-to-BEV view Transformation

image.png

4.5 针对不同生产线的泛化性

这里不同产品线的相机内参差不多,但外参差距很大,可以发现一个产品线训练的模型,仅需其他产品线轻量的finetune就能得到很好的性能。


image.png

4.6 可视化

image.png

5.

5. 总结

  • 该方法中将每一列图像以学习的方式投影到BEV平面,会考虑更多的高度信息,实验也表明其比IPM性能更好;
  • 极坐标的表示形式更符合IPM后BEV的分布,使用极坐标确实能够更好的处理映射过程中的拖影问题;这个也能控制计算复杂度,也可以扩展到transformer结构。
  • Freespace的形式化表述方式感觉也更加合理。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容