特斯拉神经网络初探
先递上特斯拉的AI 模型HydraNets(2020)
2022年,特斯拉宣布将在其自动驾驶车辆中发布一种全新的算法:Occupancy Networks,主要用来解决以下两个问题:
问题1:检测到的物体不是数据集中训练的对象;
问题2:在基于LiDAR的系统中,可以根据检测到的物体确定对象的存在 但在计算机视觉系统中,必须首先使用神经网络检测对象。 而神经网络模型不一定会检测出物体的存在,若系统判断失误,必然导致汽车事故;
传统CNN视觉以下5大问题:
1、地平线的深度极其不一致,只有2个或多于2个的像素决定了一个大区域底面的深度;
2、无法看到遮挡物前面的物体与开过去的车辆。
3、计算机视觉系统提供的是2D影像,但世界是3D 的,自动驾驶汽车需要3D的影像。
4、对于路面上放置的障碍物,计算机视觉系统里一般设置成固定的矩形。 而很多物体的形状都不是完整的矩形,其异性部分很难得以体现。
5、不属于数据集的对象,毕竟路面上面出现的物体千奇百怪,数据集很难涵盖到所有的对象。
a.可变形的障碍物,如两节的挂车,不适合用3D bounding box来表示;
b.异形障碍物,如翻倒的车辆,3D姿态估计会失效;
c.不在已知类别中的障碍物,如路上的石子、垃圾等,无法进行分类;
Occupancy Networks 是特斯拉开发的新算法,基于名为 occupancy grid mapping 的机器人思想;包括将3维世界划分为一个网格单元,然后定义哪个单元被占用,哪个单元是空闲的。
Occupancy Network 的想法是获得体积占用率。它使用“占用”而不是检测来实时显示道路信息。网络模型可以超过 100 FPS 的速度运行,这就大大提高了其模型的检测速度
第一个改善问题:是特斯拉一直提到的Bird Eye View(鸟瞰图),在 2020 年特斯拉 AI 日上,Andrej Karpathy 介绍了特斯拉的鸟瞰网络。该网络展示了如何将检测到的物体、可驾驶空间和其他物体放入 2D 鸟瞰视图中。但是很多时候我们需要一个3D的界面来呈现到自动驾驶系统,毕竟我们的世界是3维的。2D图像在道路上或多或少的会出现相应的问题,对比鸟瞰图,Occupancy Networks网络呈现出来的是一个3D场景,这样系统就可以看到真实物体的3D体积
另一个问题:在计算机视觉领域,我们输出的检测模型都是使用一个标准的方方正正的矩形来表示,无论是汽车,人物,信号灯等,当计算机视觉系统检测完成后,总是按照一个矩形框来实时显示画面。但是当汽车顶上有杂物,或者卡车旁边有挂钩等,计算机视觉系统一般会屏蔽掉此部分的特性,但是在道路上面,这样的物体确实存在,若被忽略,肯定会出现车祸等问题。
22年CVPR上的网络架构Occupancy network
在左侧,特斯拉8个摄像头拍摄到的8个画面图片会被发送到由Regnet和BiFPN组成的主干网络;
然后,注意力模块采用位置图像编码并使用QKV矩阵来计算注意力机制,这里Q是固定的数据(比如汽车,人物,交通灯,路标等等)。
经过注意力机制后,会产生一个占用体积特征,然后模型会将其之前时间的的体积特征(t-1、t-2 等)融合,以获得4D 占用特征网络。
最后,我们获得两个输出:Occupancy Volume, Occupancy Flow。特斯拉在这里实际上做的是预测光流。在计算机视觉中,光流是像素从一帧到另一帧的移动量,在自动驾驶系统中,我们除了要进行对象检测外,还需要时间方面的信息
生成 3D 体积后,使用 NeRF将输出与经过训练的 3D 重建场景进行比较。
NeRF是一个3D重建模型,可以把输入的图片生成一个3D场景