广告

特斯拉自动驾驶如何做数据标注?

2022-10-09 汽车电子与软件 阅读:
要想成功训练出一个网络,对数据有什么样的要求?第一你需要有大量的数据,其次你需要干净的数据,更重要的是需要大量的corner cases。
o3Hednc

o3Hednc

o3Hednc

特斯拉的auto-labeling分析o3Hednc

  这是Tesla Auto-Labelling 的整个pipeline, 它会有视频片段,大概就是10s到60s的视频,这些视频来源可以是他们车队采集,或者是shadow mode 上传的,这些视频片段包括了图像,IMU,GPS,Odometry(里程计)的数据,压缩成一个个packages,传到服务器上面。o3Hednc

  然后服务器上面会有Offline Neural Networks, 离线神经网络,这里相当于一个大规模模型,是他们针对图像上的物体做的。o3Hednc

  检测识别精度会比较准,会对不同的camera输出的图像做预处理,可以输出semantic segmentation, depth estimation,还可以多帧之间点matching的结果;o3Hednc

  接着通过一个机器人行业流行的AI 算法,在我们看来就是利用nerf,SLAM等算法,把整个三维场景重建出来,然后构建出不同的label, 有道路的重建,动态/静态物体的重建,这样就可以打包成不同的labels,其实label这一模块是依托于大模型的输出的,所以tesla 在整个autolabelling 和网络训练的过程,其实是让车端运行的neural network去蒸馏大网络的输出,是这样的一个过程。o3Hednc

  接着我们会有一个问题:tesla是怎么重建道路的呢?或者会有疑问,检测网络是有了(HydraNet),然后数据是怎么获得的呢?o3Hednc

o3Hednc

  首先会用一个隐式MLP(multilayer perceptron)表示道路,然后给每一个道路(x,y)的request,然后可以收获 Ground Height, Lane Line, Crub, Asphalt(沥青), crosswalk 等信息,可以视为BEV视角下的一个栅格化表示。o3Hednc

o3Hednc

  获得这些信息之后,我们可以把他们投影到8个camera上,如上图右上的地方,相当于对每一个点作分类处理,如车道线。右下的图片是大模型对右上图做的一个Segmentation的结果,当3D投影结果跟2D 重合的时候,我们就认为我们道路重建准确。o3Hednc

  为了让大家更加理解这个过程,其实这个过程是基于一篇 paper,ECCV 2020 NeRF的 paper, (Mildenhall, Ben, et al. "Nerf: Representing scenes as neural radiance fields for view synthesis." ECCV, 2020.)o3Hednc

  Nerf 所解决的是一个什么问题呢?可以看到图片中下放nearest input 这一部分,有一些离散的,不同视角下的一些输入,然后我们的目的是输出一个三维重建的图,作为物体的重建。o3Hednc

  然后nerf对物体的重建的过程也比较有意思,一般我们表示一个物体,例如会用match去表示,或者用各种显式去表示,但这篇文章并没有用一种显式的方式去表示,而是用一个多层神经网络,即MLP,去表示物体的本身。o3Hednc

o3Hednc

  如上图左边,当我们有(x,y,z,θ,ϕ),即三维空间点x,y,z,以及视角θ,ϕ;如图(a),在每条射线上的每个点,都带着(x,y,z),以及(θ,ϕ)信息,通过MLP后输出RGB信息,如果我们采集的点越来越多,我们得到更多不同的RGB,这样我们就可以把整个物体重建出来,也就是说我们要让这个网络过拟合某一个特殊的场景,其实这个MLP表示的就是这个场景本身。o3Hednc

  在图(b)中,我们在不同视角下会有一ground truth(真值),即不同视角下的图片。然后当图(b) output 中 2D 的投影与我们的真值吻合的时候,我们就可以认为这3D的modelling 建立得比较好。然后从input隐式3D,通过MLP,到2D的过程,这一流程其实也就是一个渲染的过程。用到了Volume Rendering, 并且整个pipeline是可导的,保证了rendering loss function 可以把梯度反向传播回到MLP,不断地去优化我们的模型,模型就会逐渐贴近我们的这个三维物体。o3Hednc

  这个过程里面,有一点很重要,就是MLP这个模型,可以理解为物体本身,如果对应到Tesla 方案上,MLP就是道路本身(一个隐式表示)。o3Hednc

  可能说的有点散了,我们现在来梳理一下,具体来说:o3Hednc

  为什么要这么做呢?因为我们需要一ground truth 来给Tesla vision去训练, 然而我们又怎么去建立这个ground truth 呢?o3Hednc

  答案:借鉴NeRF的思想,这过程有几处具有挑战的地方:o3Hednc

  1. 在场景重建的时候,我们需要获得每一个摄像头的位置信息,比如说我们需要知道每个摄像头的外参,这里TESLA可能是通过SLAM(camera+IMU)来获得相机在帧与帧之间的转移矩阵;o3Hednc

  2. 第二个挑战是要保证渲染的过程是一个可微渲染,这样才能对道路模型进行梯度优化。o3Hednc

  Restructuring the Road 结果:重建的结果还是挺好的。o3Hednc

o3Hednc

Restructuring the Road 结果 ● Static Objects 静态物体标注o3Hednc

  整个静态物体的构建过程,其实就是一个SLAM,然后把地图重建出来。建完图后,我们可以把地图当作psudo lidar了,可以用lidar算法去做目标检测等任务。当然,也可以人工去标注,但tesla 大概率是大模型做auto labeling, 然后人工去做refine。o3Hednc

o3Hednc

● Dynamic Objects 动态物体标注o3Hednc

  对于动态物体的标注,如运动的车辆等:o3Hednc

  1.首先第一个,用psudo lidar 的方式,构建出深度信息。tesla 在这方面估计会有很多大模型,并且利用自监督的深度估计算法去得到距离信息,据发布会说这效果也做得挺好。o3Hednc

  2.利用radar,直接得出深度信息。因为在auto-labeling 的过程中,其实是离线的,所以可以用到前后帧的信息,即事件发生之前,与之后的信息模型都能知道,可以做一个全局优化。 并且在离线训练的状态下,也没有实时的要求,tesla 在这过程可以上一些复杂的算法,来达到更加好的效果。o3Hednc

  3. 然后Tesla 通过 Static objects & Dynamic objects 的方法,对路面及行人信息做出标注。由于离线训练,可以知道当前帧前后的信息,所以即使行人被车挡住了,跟进时序信息,也可以追踪车后的行人。o3Hednc

o3Hednc

o3Hednc

o3Hednc

  车辆自动标注调研o3Hednc

  关于车辆标注,我们也找了一些自动化标注的资料:Zakharov, Sergey, et al. "Autolabeling 3d objects with differentiable rendering of sdf shape priors."CVPR2020o3Hednc

  详情请看:o3Hednc

  https://www.youtube.com/watch?v=VQcDcYsWk00o3Hednc

o3Hednc

  TRI的这篇工作中,首先使用车辆的三维模型训练一个SDF模型(类似Nerf,也是三维场景的一种表示),该SDF模型含有latent code(上图中的SDF vector)。通过修改latent code,可以控制车辆的形状,以生成不同的车型。o3Hednc

  当获取到输入图像后,首先进行segmentation,并预估一个车辆的初始位置。根据车辆的初始位置及SDF模型,可以渲染出车辆在图像上的投影。结合车辆的segmentation,车辆位姿及其二维投影,可以构建出2D、3D两个loss。对loss做梯度下降,优化SDF vector及车辆位姿。o3Hednc

  当车辆投影在二维上跟分割结果重合、三维上和lidar点重合时,车辆的形状及位姿较为准确,从而获取车辆的三维标注信息。作者使用该方法在KITTI数据集上生成的数据,在BEV指标下达到了人工标注的性能。o3Hednc

o3Hednc

● Auto-labeling Datasets 预览o3Hednc

  我们可以看到整个clip相当于对整个场景做三维重建了,然后最近有一趋势,即把车身信号,image,lidar point cloud, prediction, 等数据都整合到一起,形成一段video clip,这我比较方便我们去train multi-task model。o3Hednc

  特斯拉的数据集包含了车的位置,行人的位置,以及周围场景信息,算是比较丰富的数据集。目前学术界所开源的自动驾驶数据集并没有这么丰富,例如waymo open datasets 普遍是一段一段的,perception and prediction模块之间的标注也没有集合到一起。Nuscene虽然有给到各种数据,但也不是那么让人满意。o3Hednc

  这里我们PerceptionX 先宣传一波我们自建的数据集OpenLane,集合了当前自动驾驶数据集未涉及到的标注任务,是 community 首次推出真实场景 3D 车道线标注;同时也是规模最大的、同时包含了车道线和物体检测等内容,方便后续感知任务的扩展。o3Hednc

  OpenLanes数据集下载链接:o3Hednc

  https://opendatalab.com/OpenLaneo3Hednc

o3Hednc

● Removing radar:o3Hednc

  这里仍然不得不提到特斯拉利用autolabeling pipeline在自动驾驶上去雷达的举措,相信有很多文章也提到过,radar跟camera在一些场景下会产生矛盾,例如在高速通过拱桥的时候,桥是静态物体,但路面的车是动态物体,radar检测到的桥容易mismatch并错误认为车也是静态物体,然后tesla自动驾驶在高速上减速了。o3Hednc

  但这不是重点,重点是右边的部分,要去掉radar,就需要camera做得比radar要好,但在右边这种一系列的大雾场景,传统的相机做的检测、深度估计任务确实没有radar好,这种问题可以怎么解决呢?o3Hednc

  Tesla 派了一庞大的车队,采集了1万+恶劣天气场景的video clips, 然后通过auto-labeling pipeline,一周内就标注完了,然后送到网络里面去训练,最后得到的效果如下所示:o3Hednc

o3Hednc

  正是因为特斯拉拥有开篇总结的三点自动标注的技术和要求,才能在短时间内收集大量且在特殊场景的数据,对数据进行快速(自动)标注,达到模型快速迭代,快速解决corner cases的效果,应对了第一段我们提到的“打造自动驾驶的数据闭环”中的核心技术。o3Hednc

责编:Ricardo
文章来源及版权属于汽车电子与软件,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
汽车电子与软件
汽车电子与软件
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了