一、前言
自动驾驶的知识需求比较广泛,可分为基础知识、编程能力和算法能力三个部分。其中,基础知识包括对自动驾驶的认知、深度学习、模型搭建与部署、研究领域的知识、git的使用、计算机基础知识(计算机组成、多线程、操作系统)等;编程能力包括python、c++、pytorch、linux、LeetCode、ros、cuda、cmake等;算法能力包括研究领域的一些重要论文,如何创新、如何提高性能的,需要多读高质量文章。
二、学习顺序
先看B站入门,再读知乎等总结文章了解论文大意,然后粗读或者精读论文(最好是开源论文,可以对照代码进行学习),开源代码和框架很重要,然后可以关注一些分享会或数据集竞赛的top论文。
- 跟B站大佬入门深度学习,李沐、吴恩达
- 看对口方向的经典知乎文章,如CNN系列、点云系列、BEV系列、transformer系列
- 精度经典论文
- 看开源代码+开源框架,如openpcdet、openmmlab
- 看AIDay,如特斯拉、引领时代的技术潮流
- 看CVPR的分享会
- 看竞赛的Top文章+代码,如nuscenes、waymo榜单
三、基础知识
1. 自动驾驶基础
自动驾驶一般分为感知、决策规划、控制、仿真、数据几大块。可以通过公众号、知乎等途径了解。
2. 机器学习与深度学习
自动驾驶离不开AI,AI离不开深度学习。深度学习算机器学习的一个子集,需要对机器学习有所了解。机器学习推荐看吴恩达的B站课程,深度学习需要重点掌握,是AI的基础,也可以看吴恩达的B站视频。原博主最喜欢的深度学习资料是李沐的动手学深度学习,建议反复观看,巩固记忆。视频里可以找到课件和学习资料。
3. 计算机基础
了解即可,不需要重点把握。可以看王道的计算机组成、操作系统、计算机网络等B站视频。
4. 图像感知算法
感知算法,按需学习,原博主最初看Bubbliiiing和李沐的B站视频入门,非常推荐。
5. 模型部署
一般来说,模型部署在公司会有单独一个团队来负责优化,但是建议还是了解一些模型部署的内容,面试偶尔会问。
6. git的使用
工作中的必备技能,如何去团队合作,如何管理代码。可以看【狂神说Java】git最新教程通俗易懂_辟哩辟哩_bilibili。或者知乎->精通Git:介绍及常用命令指南。
四、编程能力
面试基本都会出一道LeetCode编程题进行考察。编程内容比较多,建议大家掌握,包括python、c++、pytorch、linux、LeetCode、ros、cuda、cmake等。编辑器推荐vscode,插件很多,网上资料多。
1. python
python相对最简单的编程语言,但是也是日常快速开发中使用得最多的。因此需要首先掌握python的使用。python的资料很多,B站上可随意使用。推荐黑马程序员Python教程_600集Python从入门到精通教程(懂中文就能学会)。
2. c++
在面试中,优先使用c++,而不是python。c++是必备技能,其应用广泛,运行速度更快。推荐黑马程序员的c++视频,比较基础易懂,内容也很全面,资料很多,建议反复使用。
3. pytorch
pytorch是深度学习必备,推荐【莫烦Pytorch】Pytorch神经网络_辟哩辟哩_bilibili。建议搭配论文和开源代码或开源框架使用,熟能生巧。
4. linux
linux是必备基础知识,基本操作必须会。B站随意使用。
5. LeetCode
面试必备,工作中几乎无用。没事多刷,hot100必须能自己独立做出来,面试大部分考里面的内容,也可以搭配B站等资料使用。
6. ros
了解即可,用于通信、传递消息。实际工作大多离不开ROS。古月居的ROS教程最经典,推荐。
7. cuda
了解为主,最好熟练掌握。实际工作中,写算子优化等需要用到,多并发能提高运行速度,充分使用GPU能力。github项目包含代码、博客、课件pdf下载地址:https://github.com/sangyc10/CUDA-code
8. cmake
c++的编译,搭配c++一起使用,推荐基于VSCode和CMake实现C/C++开发。
五、算法能力
多看论文、多做笔记。大力推荐readpaper读论文神器https://readpaper.com。如果是深度学习领域,可以看看李沐的读论文系列,都是精品。跟李沐学AI的个人空间-跟李沐学AI个人主页-辟哩辟哩视频
如果是感知领域,可以看看原博主【智驾机器人技术前线】之前在知乎写的一些内容,作为入门使用,最好能看论文。