Comma.ai自驾车神经网络使用TensorFlow中的客户端/服务器架构,为什么?

在comma.ai的自驾车软件中,他们使用了客户端/服务器架构。两个进程是分别启动的,分别是server.pytrain_steering_model.py

server.py通过http和套接字将数据发送到train_steering_model.py

他们为什么使用这种技术?这不是一种复杂的数据传输方式吗?难道不更容易让train_steering_model.py自己加载数据集吗?


回答:

仓库中的文档DriveSim.md链接到了一篇标题为学习驾驶模拟器的论文。在论文中,他们提到:

由于问题复杂性,我们决定使用可分离网络来学习视频预测。

他们还提到他们使用的帧率是5 Hz。

虽然这句话是唯一直接回答您问题的,但它并不完全清晰,让我们来分解一下所讨论的任务:

  • 从摄像头获取图像
  • 对图像像素进行预处理/降采样/归一化
  • 将图像通过自编码器提取代表性特征向量
  • 将自编码器的输出传递给RNN,以预测适当的转向角度

“问题复杂性”指的是他们处理的是一长串大图像,这些图像(正如他们在论文中所说)“高度不相关”。有许多不同的任务在进行中,因此网络方法更加模块化——除了允许他们并行工作外,它还允许在不被单个硬件达到其计算能力阈值的情况下扩展组件。(而且请想想:这只是转向方面。Logs.md文件列出了车辆的其他组件需要关注的,这些组件不包括在这个神经网络中——油门、刹车、转向灯、加速度等)。

现在让我们快进到自驾车中的实际实现。车辆上肯定会有不止一个神经网络在运行,每个都需要限制大小——微型计算机或嵌入式硬件,计算能力有限。因此,一个组件能做的工作有一个自然的上限。

将这一切联系起来的事实是,汽车已经使用网络架构运行——CAN总线实际上是车辆内部的计算机网络。因此,这项工作只是计划将一个极其复杂的任务的各个部分分配给多个分布式组件(这些组件的能力有限),使用已经到位的网络。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注