在 2021 年夏天大学二年级结束后,我决定从事当时最先进的项目之一——从头开发自动驾驶软件并在真车上实现。在公开我的代码的一些主要部分并发布演示视频后,我收到了很多关于该项目的问题。因此,我决定分享开发过程背后的故事。
我一直对与人工智能和机器学习相关的任何事物着迷。计算机能够学习的想法和软件开发的完整范式转变对我来说非常鼓舞人心。但是,我根本无法理解它。2021 年 2 月左右,我开始学习可以说是最受欢迎的 Coursera 相关主题课程——机器学习、深度学习专业化和TensorFlow 专业证书的一部分。
我非常支持动手学习,所以我想在我感兴趣的领域选择一个项目,我可以应用我的知识。作为特斯拉的忠实粉丝,我从一开始就被自动驾驶汽车和计算机视觉的世界所吸引——然而,我想超越仅仅在 GTA 汽车中实现神经网络,所以我把这个想法带到了下一级。
经过初步研究,由于时间和预算的限制,我“定下”了一个自主转向机构。很快就很明显,即使单独驾驶也是一项非常具有挑战性的任务。我通过研究车道检测和路径规划等任务的各种算法,从可以说是更传统的显式分解问题的方法开始。然而,由于这个项目旨在加深我对深度学习的一些浅薄知识,我更倾向于使用神经网络的端到端方法。很快,我偶然发现了一篇NVIDIA 论文从 2016 年开始,它讨论了 CNN 的实现,该 CNN 将视频输入的原始像素映射到转向命令,结果非常好。还有很多可用的实现,这激发了我创建自己的实现。
系统的高级概述非常简单:
- 在汽车前部安装摄像头系统
- 获取任意给定时间的转向角值
- 将这两个配对并通过神经网络传递它们