我用飞桨做了一个无人驾驶智能车

2020-02-07 投稿人 : www.neuun.cn 围观 : 919 次

[飞桨开发者说]吴东宇,北京铁人,在科学技术方面深入研究了算法工程师,主要是在深度研究、无人驾驶等方面。

我观察了以前所有的智能车竞赛和教学实验,发现使用传统视觉算法的视觉智能车只能在特定的赛道上行驶。一旦轨道环境发生变化,必须修改大量代码才能运行。算法适应性差是制约智能车辆场景适应性的重要因素。然而,“人工智能车”可以通过深度学习算法和通过真实数据采集对模型进行新的训练来解决这个问题。基于飞桨平台,我们迅速开发了一款“无人智能车”,已经实现了道路检测和交通识别(红绿灯/限速牌/人行道/停车位)等功能。本文将揭示“基于飞桨的无人智能车”的具体实现过程和效果。

步骤1:如图1所示,在智能车的硬件配置中,高性能处理器是实现深度学习算法运行的必要条件。目前,英特尔处理器、NVDIA GPU、百度Edgeboard系列和恩智浦i.MX8系列等流行的高性能处理器被选为智能车的主处理器。

图1。智能车辆硬件框架

步骤2:处理器问题解决后,智能车辆必须面对深度学习框架和深度学习算法的选择,才能识别道路和交通标志。目前,流行的深度学习框架有Tensorflow、PaddlePaddle、Caffe、PyTorch等。我们选择飞桨作为本地化的深度学习框架,并与一站式开发平台人工智能工作室(AI Studio)合作,为用户提供高质量的开发服务。借助飞行螺旋桨平台发布的官方支持的工业模型和高性能推理引擎Plash Lite,开发和部署自然语言处理、计算机视觉、推荐引擎等诸多领域的应用。可以快速实现。

在车道线识别中,我们使用卷积神经网络。有线电视新闻网在图像领域有着重要的应用价值。结合实际测试经验,我们的智能车采用5个卷积层和2个全连接层组成车道线网络模型。智能车的总体工作流程可分为4个步骤:数据集创建、数据处理、模型训练和部署预测。

数据采集

手柄遥控智能车在轨道上以合适的速度运行,记录每帧图像和相应的转弯角度。捕获的图像如图2所示。

图2中采集的图像集

代码分析:

运行的程序包括三个过程:获取句柄数据、保存图像数据和保存转弯数据。通过创建互斥体,图像数据和角度信息被逐个保存。最后,将数据转换成npy文档以备下次调用。

图3数据采集代码分析

图像预处理

预处理采集的图像信息,提取图像中的跑道,并保存处理后的图像。处理后的图像如图4所示。

图4已处理数据

代码分析:

依次读取数据集中的图像,根据颜色阈值限制对每个图像的颜色信息进行二值化,并将其保存到特定的目录中,如图5所示。

图5数据处理代码分析

模型训练

构建一个以卷积神经网络为主体的深度学习网络框架,并将图像和转角信息放入模型中进行训练,最终得到训练好的模型,如图6所示。

图6模型训练

参数,如损失函数、优化方案、层数、卷积核大小等。是在这个过程中通过飞行螺旋桨框架定义的。具体代码如图7所示。

Figure 7 Model Training Code Analysis

Deployment Forecast

将人工智能工作室获得的飞板有线电视新闻网模型下载到终端,并通过局域网将其传输到智能车的主处理器上,然后在智能车的主处理器上使用Spark Lite实现模型调用。

然后将智能车放入轨道。智能车可以调用训练好的模型,根据实时采集的图像信息输出相应的转弯角度,实现自主操作。具体的实现代码如图8所示。

图8