果树栽培技术网(www.5stat.com)已开通!
当前位置:果树栽培技术网 > 果树品种 > 树莓 > 正文

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

03-15 09:03:28 树莓

无人驾驶虽然入门门槛很高,但是还是可以通过一些简化的模型迅速上手。例如比较有名的DonkeyCar,其实就是一个简单低成本的玩具车,基于树莓派和Python,利用Keras深度学习框架实现自动驾驶。即使没有实车,也可以在Donkey Car官网下载模拟器,用程序控制模拟器中的小车。感兴趣的同学可以看看社区和文档

目前还有一些比赛也在使用donkey car帮助大家低门槛地进入自动驾驶领域。例如中国人工智能学会主办的2018模拟驾驶比赛,比赛提供了一些奖金,还为进入决赛的选手免费提供donkeycar实车线下比拼。此外,中国人工智能学会还会颁发证书,所以可以向想要入门自动驾驶,想保研、申请奖学金的同学推荐一下。此外,网上还有不少简单的攻略,例如下面是一篇来自github的自动驾驶相关研究,我对这篇文章进行了编译并在此发布,希望能帮助更多感兴趣的朋友上手自动驾驶。

欢迎大家相互交流,项目地址:https://biendata.com/kernel/detail/427

导入相关库

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

步骤1:获取驾驶数据

数据集由 ~7900 个图像和手动开车时收集的转向角组成。大约三分之二的图像与线之间的汽车。另外三分之一的车开始偏离航线,并且驶回线路之间。

路径是

数据集由 2 个 pickled 数组组成。X 是图像阵列,Y 是相应转向角度的阵列。

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

结果:

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

步骤2:拆分数据

在这里,我们将洗牌(shuffle)我们的数据,并将数据分成三部分。训练数据将用于训练我们的驾驶模型,使用验证数据避免过度拟合模型,测试数据用于测试我们的模型是否学到了什么。

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

输出:7892

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

输出:7892

步骤3:增强训练数据

为了加倍我们的训练数据并防止转向偏差,我们翻转每个图像和转向角并将其添加到数据集中。还有其他的方法来增加使用翻译和假阴影驾驶数据,但我没有使用这些自动驾驶仪。

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

结果:12626

步骤4:建立驾驶模式

这种驾驶模式将是一个端到端的神经网络,接受图像阵列作为输入,并输出-90(左)和90(右)之间的转向角。 要做到这一点,我们将使用一个完全连接图层的3层卷积网络。该模型基于 Otavio 的 Carputer,但不产生油门值输出,不使用过去的转向值作为模型的输入,并且使用较少的卷积层。

使用 TensorFlow 后端

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

输出:

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

步骤5:训练模型

我已经学会了很难的方法,即使这一切都是完美的,如果你没有正确地训练,你的自动驾驶仪将无法工作。我遇到的最大的问题是过度适应模型,以至于在很少的情况下都不能正常工作。 这里是 2 个 Keras回调,将节省您的时间。

警告 - 如果仅使用CPU,则需要很长时间(3小时)

我在没有 CUDA 兼容 GPU 的 Dell XPS 笔记本电脑上运行,因此速度非常慢,并且冻结。为了加速训练,您可以使用带有 GPU 的 EC2 实例。Keras 和 Tensorflow 已经加载了几个实例图像。

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

对于这个笔记本,我只会训练模型 4 个时代(epochs)。

输出:

树莓派自动驾驶:使用 Keras 与 Tensorflow 构建车道跟踪自动汽车

步骤6:评估性能

版权保护: 本文由 果树栽培技术网 原创,转载请保留链接: http://www.5stat.com/shumei/20190315/27520.html