无人驾驶虽然入门门槛很高,但是还是可以通过一些简化的模型迅速上手。例如比较有名的DonkeyCar,其实就是一个简单低成本的玩具车,基于树莓派和Python,利用Keras深度学习框架实现自动驾驶。即使没有实车,也可以在Donkey Car官网下载模拟器,用程序控制模拟器中的小车。感兴趣的同学可以看看社区和文档
目前还有一些比赛也在使用donkey car帮助大家低门槛地进入自动驾驶领域。例如中国人工智能学会主办的2018模拟驾驶比赛,比赛提供了一些奖金,还为进入决赛的选手免费提供donkeycar实车线下比拼。此外,中国人工智能学会还会颁发证书,所以可以向想要入门自动驾驶,想保研、申请奖学金的同学推荐一下。此外,网上还有不少简单的攻略,例如下面是一篇来自github的自动驾驶相关研究,我对这篇文章进行了编译并在此发布,希望能帮助更多感兴趣的朋友上手自动驾驶。
欢迎大家相互交流,项目地址:https://biendata.com/kernel/detail/427
导入相关库
步骤1:获取驾驶数据
数据集由 ~7900 个图像和手动开车时收集的转向角组成。大约三分之二的图像与线之间的汽车。另外三分之一的车开始偏离航线,并且驶回线路之间。
路径是
数据集由 2 个 pickled 数组组成。X 是图像阵列,Y 是相应转向角度的阵列。
结果:
步骤2:拆分数据
在这里,我们将洗牌(shuffle)我们的数据,并将数据分成三部分。训练数据将用于训练我们的驾驶模型,使用验证数据避免过度拟合模型,测试数据用于测试我们的模型是否学到了什么。
输出:7892
输出:7892
步骤3:增强训练数据
为了加倍我们的训练数据并防止转向偏差,我们翻转每个图像和转向角并将其添加到数据集中。还有其他的方法来增加使用翻译和假阴影驾驶数据,但我没有使用这些自动驾驶仪。
结果:12626
步骤4:建立驾驶模式
这种驾驶模式将是一个端到端的神经网络,接受图像阵列作为输入,并输出-90(左)和90(右)之间的转向角。 要做到这一点,我们将使用一个完全连接图层的3层卷积网络。该模型基于 Otavio 的 Carputer,但不产生油门值输出,不使用过去的转向值作为模型的输入,并且使用较少的卷积层。
使用 TensorFlow 后端
输出:
步骤5:训练模型
我已经学会了很难的方法,即使这一切都是完美的,如果你没有正确地训练,你的自动驾驶仪将无法工作。我遇到的最大的问题是过度适应模型,以至于在很少的情况下都不能正常工作。 这里是 2 个 Keras回调,将节省您的时间。
警告 - 如果仅使用CPU,则需要很长时间(3小时)
我在没有 CUDA 兼容 GPU 的 Dell XPS 笔记本电脑上运行,因此速度非常慢,并且冻结。为了加速训练,您可以使用带有 GPU 的 EC2 实例。Keras 和 Tensorflow 已经加载了几个实例图像。
对于这个笔记本,我只会训练模型 4 个时代(epochs)。
输出:
步骤6:评估性能
我们可以通过绘制预测值和实际值来检查我们的模型预测是否合理。第一个图表显示我们的测试数据中存在一个学习的关系(在训练期间模型没有看到)。
第二张图,使用包含训练数据的非混洗(unshuffled)数据,来显示预测角度紧跟实际转向角度。
输出:
下一步
改善模型,这个模型是纯粹(navie)的,因为它不使用过去的值来帮助预测未来。我们可以通过将过去的转向角度作为模型的输入来进行试验,添加一个递归层,或者只是改变卷积层的结构。
添加更多数据,随着我们添加更多驾驶数据,此模型将会得到改进。 预测油门,输出目前自动驾驶仪只能转向并保持恒定的速度。一个更复杂的模型将加速在直路上,并在路缘之前放缓。
全部0条评论
快来发表一下你的评论吧 !