为了进行如此复杂的感知任务,特斯拉在神经网络结构的选择上做了很多考量。2.1. Single task network vs Multi tasks network2.2. Loosely coupled heads vs Tightly coupled heads松耦合指的是每个相机单独进行感知,然后将不同相机的感知结果利用Filter或其他技术进行拼接(stitch),例如1.0版本的Smart Summon就采用了这一方法,利用不同相机检测到的curb进行拼接的到停车场的Occupancy Grid的地图,从而在这个地图进行导航。Figure 2 基于Occupancy Grid的老版本Smart Summon但是在不同相机和不同frame间track不同的grid是一件困难的工作。在新版本的Smart Summon中,Tesla采用了对不同相机Feature层输入一个Fusion Layer进行Feature层面的融合,然后输入Birdeye View Network,最终在Birdeye的基础上再分支成不同的heads进行如Object Detection, Road Line Segmentation, Road edge detection等输出。Figure 3 利用各相机直接进行Birdeye View输出,可输出道路边缘,隔离带,通行区域等分割结果最终FSD使用的是一个规模巨大的Multi-head network,其中主干网络采用类似ResNet-50的架构用以进行Feature的提取,功能分支采用与FPN/DeepLabV3/UNet类似的结构用以实现不同功能的输出。Figure 4 不同相机间特征共享的架构Figure 5 不同相机负责不同的功能分支最终FSD的网络架构如上面两图所示的共享Backbone加上众多功能Heads的多任务HydraNet,不同相机负责不同的功能,且网络引入了RNN的结构来进行跨时间的感知预测,例如前向3相机Main+ Narrow+ Fisheye+ Pillar 相机的feature负责车道线检测追踪,Pillar+ Fisheye加上过去时刻的输出一同负责Cut-in(加塞)检测等。不同功能在不同相机中共享层次结构是基于一些cross features可以促进各自任务的观察而设计的,同时有些任务间共享层次结构又会相互影响,应以避免。例如动态物体和红绿灯就不应该共享过于底层的Feature,但是车道线检测和可通行区域就应共享更多的底层特征。Karpathy还提到他发现的一些有趣的现象,例如在训练部分网络的时候同时使用5个task的loss来获得更好的features,但是训练得到的网络只会用于5个task中的3个任务的inference使用。
03
Training
训练这样一个拥有48个网络,1000多个感知输出的庞大的Multi-task模型是十分苦难的,单次训练就要花费70000GPU小时,更别说模型训练要经过多次迭代,调优等过程,虽然为了提高训练效率,Tesla自研了专门用于训练的Dojo Computer,但是训练过程仍充满了各种挑战。3.1. Loss Function在庞大的HydraNet中,所有的子任务的Heads最终都通过加权平均的办法整合到一个Loss里面,训练的过程就是优化这个整合后的Loss。这些不同子任务的weights则是这个模型的hyperparameter。学术研究中有通过自动的方法找到最优的子任务权重的办法,但是当子任务数量扩展到数百上千后,这样的自动方法就变得不可使用。最终这些子任务权重的选择变成一个十分需要谨慎思考,且一旦确定不能轻易更改的超参数。选择这些超参数需要综合考虑许多因素,例如:
一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J