新闻  |   论坛  |   博客  |   在线研讨会
如何理解自动驾驶,SLAM,BEV,训练数据源常见术语?(2)
计算机视觉工坊 | 2023-08-15 21:49:53    阅读:208   发布文章

在统一的坐标系下,多角度的照片才能正确得“环绕”出周边的景象。另外还有一些单目(Monocular)摄像头的BEV方案,它们有的不考虑Ego坐标系,因为只有一个朝向正前方(Yaw,Pitch,Roll全部为0)的摄像头,而且原点就是这个摄像头本身,所以直接从相机坐标系跳到世界坐标系。

Frustum,这个东西在3维渲染领域通常叫做“视锥体”,用来表示相机的可视范围:

图片

图9红面和绿面以及线框包围起来的空间就是视锥体,绿面通常叫做近平面(Near Plane),红面叫做远平面(Far Plane),线框构成的角度叫做FOV,如果CCD/CMOS成像的高宽相同,那么近平面和远平面就都是正方形,一个FOV就足以表示,反之,就要区分为FOVx和FOVy了,超出这个视锥体范围的物体都不考虑进计算。图7中由6个三角面构成了组合的可视范围,实际上应该是6个俯视的视锥体构成,能看出视锥体之间是有交叠区域的,这些区域有利于DNN在训练/推理中对6组数据做相互矫正,提高模型准确性,在不增加相机数量的前提下,如果想扩大这个交叠区域,就必须选择FOV更大的相机,但FOV越大的相机一般镜头畸变就会越严重(反畸变再怎么做也只能一定程度上的矫正图片),物体在图片上的成像面积也越小,干扰DNN对图片上特征的识别和提取。


BEV是个庞大的算法族,倾向于不同方向的算法选择,粗略得看,有Tesla主导的以视觉感知流派,核心算法建立在多路摄像头上,另外一大类是激光雷达+毫米波雷达+多路摄像头的融合(Fusion)派,国内很多AD公司都是融合派的,Google的Waymo也是。严格得讲,Tesla正在从BEV(Hydranet)过渡到一种新的技术:Occupancy Network,从2维提升到3维:

图片

图10无论是2维的还是3维的,都在试图描述周遭空间的Occupany(占用)情况,只是一个用2维棋盘格来表述这种占用情况,一个是用3维的积木方式表述占用。DNN在度量这种占用时采用的是概率,比如我们直观看到某个格子上是一辆车,而DNN给出的原始结果是:这个格子上,是车的可能性有80%,是路面的可能性为5%,是行人的可能性为3%。。。。。所以,在BEV代码里,一般将各种可能出现的物体分了类,通常是两大类:1)不常变化的:车辆可通信区域(Driveable),路面(Road),车道(Lane),建筑(Building),植被(Foliage/Vegetation),停车区域(Parking),信号灯(Traffic Light)以及一些未分类静态物体(Static),它们之间的关系是可以相互包容的,比如Driveable可以包含Road/Lane等等。2)可变的,也就是会发生移动的物体:行人(Pedestrian),小汽车(Car),卡车(Truck),锥形交通标/安全桶(Traffic Cone)等等这样分类的目的是便于AD做后续的驾驶规划(Planning,有的翻译成决策)和控制(Control)。而BEV在感知(Perception)阶段就是按照这些物体在格子上出现的概率打分,最后通过Softmax函数将概率归一取出最大的那个可能性作为占用这个格子的物体类型。但这有个小问题:BEV的DNN模型(Model)在训练阶段,是要指明照片中各个物体是啥?也就是要在标注数据(Labeled Data)上给各种物体打上类型标签的:

图片

图11右边的我们权当做是标注数据吧,左边是对应的相片,按照这个物体分类训练出来的DNN模型,真得跑上路面,如果遭遇了训练集里未出现的物体类型怎么办?如果模型效果不好,比如某个姿势奇葩的人体未被识别成行人和其它已知类型,又当如何?Occupancy Network为此改变的感知策略,不再强调分类了(不是不分类,只是重点变了),核心关注路面上是否有障碍物(Obstacle),先保证别撞上去就行了,别管它是什么类型。3维的积木方式表述这种障碍物更为贴切,有的地方借用了3维渲染(Rendering/Shading)领域的常见概念把这种3维表述叫做体素(Voxel),想象一下我的世界(MineCraft)就很简单了。

图片

图12以上是视觉流派的简述,混合派在干嘛?它们除了相机外,还侧重于激光雷达的数据,毫米波雷达由于数据品相太差逐渐退出,留守的去充当停车雷达了,也不能说它一无是处,Tesla虽然强调视觉处理,但也保留了一路朝向正前方的毫米波雷达,而且AD这个领域技术变化非常快,冷不丁哪天有新算法冒出又能把毫米波雷达的价值发扬光大一把。激光雷达的好处是什么:可以直接测出物体的远近,精度比视觉推测出的场景深度要高很多,一般会转化为深度(Depth)数据或者点云(Point Cloud),这两者配套的算法有很长的历史了,所以AD可以直接借用,减少开发量。另外,激光雷达可以在夜间或糟糕的天气环境下工作,相机就抓瞎了。但这几天出现了一种新的感知技术HADAR(Heat-Assisted Detection and Ranging),可以和相机/激光雷达/毫米波雷达并列的传感器级别感知技术。它的特点是利用特殊的算法把常规热成像在夜间拍摄的图片转化为周围环境/物体的纹理和深度,这个东西和相机配合能解决夜间视觉感知的问题。以前的BEV为什么不提热成像/红外相机,因为传统算法有些明显的缺陷:只能提供场景的热量分布,形成一张灰度(Gray)图,缺乏纹理(Texture),原始数据缺乏深度信息,推算出的深度精度差,如果仅仅通过从灰度图上提取的轮廓(Contour)和亮度过渡(Gradient),很难精确还原场景/物体的体积信息,并且目前的2维物体识别是很依赖纹理和色彩的。这个HADAR的出现,恰好可以解决这个问题:在较暗的环境下提取场景的深度以及纹理:

图片

图13左列,自上而下:1)基础的热成像,简称T2)用常规热成像算法从T提取的深度3)用HADAR算法从T提取的纹理图4)用HADAR算法从T提取的深度5)真实场景的深度右列,自上而下:1)这个场景在白天用可见光相机拍摄的照片2)通过照片推理的深度3)真实场景的深度HADAR的这个深度信息老牛逼了,对比一下激光雷达的效果就知道了:

图片

图14激光雷达的扫描范围是有限的,一般半径100米,从上图可以看出,没有纹理信息,远处的场景也没有深度了,扫描线导致其数据是个稀疏(Sparse)结构,想要覆盖半径更大更稠密(Dense)就必须买更昂贵的型号,最好是停下来多扫一段时间。激光雷达模块厂家在展示产品时,当然得给出更好看的图了,只有AD研发人员才知道这里面有多苦。以上都是基础的概念,作为BEV算法的入门,必须先提到LSS(Lift,Splat,Shoot):https://github.com/nv-tlabs/lift-splat-shoot老黄家的,很多文章都把它列为BEV的开山(Groundbreaking)之。它构建了一个简单有效的处理过程:把相机的照片从2维数据投影成3维数据,然后像打苍蝇一样把它拍扁,再从上帝视角来看这个被拍扁的场景,特别符合人看地图的直觉模式。一般看到这里会有疑惑的:都已经建立了3维的场景数据,3维不香么?干嘛还要拍扁?不是不想要3维,是没办法,它不是一个完善的3维数据:

图片

图15看过这玩意吧,它就是LSS的本质,从正面看,能形成一张2维照片,这个照片被LSS拉伸到3维空间后就是上图,你从BEV的视角也就是正上方向下看会是啥?什么都看不出来,所以后续要拍扁(Splat),具体过程是这样:

图片

图16


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客