當前位置: 華文星空 > 汽車

入行自動駕駛需要哪些知識儲備,學習自動駕駛需從哪方面入門?

2018-10-09汽車

1. 前言

由於前段時間在寫畢業論文,陷入了打字疲倦期,加上過年擺爛,偷了一大波懶,一直沒更新知乎。這段時間也有不少小夥伴私信或加我微信來催更。其中被問到最多的問題是,不知道怎麽去入門自動駕駛(我也發現有不少童鞋想自學入局自動駕駛,這確實是一個比較有錢途的工作,新能源+智能汽車也是國家大力推薦的,缺點是有點卷,優點是錢多),於是乎就想簡單寫篇文章來介紹一下我自己的入門方法,大家也可以在評論區進行討論和補充哈。
自動駕駛的知識需求還是比較廣泛的,我個人比較喜歡將其分為基礎知識、編程能力、演算法能力三個部份,其中基礎知識包括對自動駕駛的認知、深度學習、模型的搭建與部署、研究領域的知識、git的使用、電腦基礎知識(電腦組成、多執行緒、作業系統)等;編程能力包括python、C++、pytorch、linux、LeetCode、ros、最好能掌握cuda、cmake等知識;演算法能力即為你研究領域的一些重要論文,其如何創新,如何提高效能,需要多讀精度論文,才能很好掌握。

2. 引言

在秋招面試的時候,有一位面試官看我了解的內容比較廣泛,並且本身是車輛/機械出生,問我研究生是怎麽轉專業自學到自動駕駛的,問我推薦的學習路徑是什麽樣的(說來好笑,車輛工程入局自動駕駛被認為是轉專業,雖然我覺得他說的沒錯,研究生確實是從零開始自學的)。
我當時回復大致是這樣的,當時的回復也獲得了面試官的認可,下面序號代表先後順序,可以給大家參考一下。先看B站入門,再讀知乎等總結文章了解論文大意,然後粗讀或精讀論文(最好是開源論文,可以對照程式碼進行學習),開原始碼和框架很重要(公司的框架與開源都大同小異),然後可以時刻關註一些分享會或者數據集競賽的top論文。

  1. 跟B站大佬入門深度學習,李沐、吳恩達
  2. 看對口方向的經典知乎文章(如CNN系列、點雲系列、BEV系列、transformer系列)
  3. 精讀經典論文
  4. 看開原始碼+開源框架(如openpcdet、openmmlab)
  5. 看aiday(如Tesla,引領時代的技術潮流)
  6. 看CVPR的分享會
  7. 看競賽的top文章+程式碼(nuscenes、waymo榜單)

下面具體寫一下如何入門自動駕駛,自動駕駛需要掌握哪些知識,並給一些我個人比較喜歡的學習資料。

3. 基礎知識

3.1 自動駕駛基礎


自動駕駛一般分為感知、決策規劃、控制、包括仿真、數據幾大塊。在很多公眾號或者知乎上都有相應的介紹。由於博主主要做感知和數據這個方面的,主要對這個方面進行知識介紹。大家可以根據自己研究方向去尋找相應的資料。


3.2 機器學習與深度學習


自動駕駛離不開AI,AI離不開深度學習。深度學習算機器學習的一個子類別,需要對機器學習有所了解,但是面試一般不會問。機器學習推薦看吳恩達大佬的B站課程 [中英字幕]吳恩達機器學習系列課程_嗶哩嗶哩_bilibili
深度學習需要重點掌握,是AI的基礎。也可以看吳恩達的B站影片 【中英字幕】吳恩達深度學習課程第一課 — 神經網絡與深度學習_嗶哩嗶哩_bilibili。博主最喜歡的深度學習資料是李沐大佬的動手學深度學習 00 預告【動手學深度學習v2】_嗶哩嗶哩_bilibili,建議反復觀看,鞏固記憶。影片裏面可以找到課件和學習資料。


3.3 電腦基礎


了解即可,不需要重點掌握。本人看過王道的電腦組成、作業系統、電腦網絡等B站影片,如果是電腦專業,應該都非常了解了。王道電腦考研 電腦組成原理_嗶哩嗶哩_bilibili、王道電腦考研 作業系統_嗶哩嗶哩_bilibili


3.4 影像感知演算法


感知演算法,按需學習,我當初是看Bubbliiiing 和 李沐的B站UP主的影片入門的,非常推薦。Bubbliiiing的個人空間-Bubbliiiing個人主頁-嗶哩嗶哩影片


3.5 模型部署


一般來說,模型部署在公司會有單獨一個團隊來負責最佳化,但是建議還是了解一些模型部署的內容,面試的時候偶爾會問。但是博主還沒有學得很好,大家有不錯的資料可以分享一下


3.6 git的使用


工作中必備的技能,如何去團隊合作,如何管理程式碼。可以看看【狂神說Java】Git最新教程通俗易懂_嗶哩嗶哩_bilibili
當然,博主也寫了一篇git的知乎,是自己實際使用的一些記錄,可能改得稍微亂了一點。但是基本是自己使用中遇到的常用問題,基本能覆蓋日常使用需求,大家也可以了解一下。精通Git:介紹及常用命令指南

4. 編程能力

對於程式設計師來說,編程能力自然是重中之重。面試基本都會出一道LeetCode編程題進行考察。編程的內容比較多,都建議大家掌握,包括python、C++、pytorch、linux、LeetCode、ros、cuda、cmake等。
編輯器推薦vscode,外掛程式很多,網上資料多。


4.1 python


python是相對最簡單的程式語言,但是也是日常快速開發中使用得最多的。因此需要首先掌握python的使用。python的資料很多很多,B站上就有一大堆,大家隨意食用。黑馬程式設計師Python教程_600集Python從入門到精通教程(懂中文就能學會)_嗶哩嗶哩_bilibili


4.2 C++


在面試中,優先使用C++,而不是python。(用python可能會被面試官吐槽)。C++也是必需技能,其套用更廣泛,執行速度更快(面試也經常問到)。推薦黑馬程式設計師的C++影片,比較基礎易懂,內容也很全面,資料也很多,建議反復食用。黑馬程式設計師匠心之作|C++教程從0到1入門編程,學習編程不再難_嗶哩嗶哩_bilibili


4.3 pytorch


pytorch是深度學習必備,博主看的是 【莫煩Python】PyTorch 神經網絡_嗶哩嗶哩_bilibili。這塊內容建議搭配論文和開原始碼或開源框架食用。在日常使用中能熟能生巧。


4.4 linux


linux是必備基礎知識,基本操作必須會。B站資料很多,自行食用。


4.5 LeetCode


面試必備,工作中幾乎無用。食之無味,棄之可惜。沒事多刷刷LeetCode,hot100必須能自己獨立做出來,面試大部份考裏面的內容。
也可以搭配B站,或者其他總結資料一起看,資料很多。
一周刷爆LeetCode,演算法大神左神(左程雲)耗時100天打造演算法與數據結構基礎到高級全家桶教程,直擊BTAJ等一線大廠必問演算法面試題真題詳解(馬士兵)_嗶哩嗶哩_bilibili


4.6 ros


了解即可,用於通訊,傳遞訊息。實際工作大多離不開ROS。古月居的ROS教程是最經典的,推薦。
【古月居】古月·ROS入門21講 | 一學就會的ROS機器人入門教程_嗶哩嗶哩_bilibili


4.7 cuda


了解為主,最好熟練掌握。實際工作中,寫算子最佳化等需要用到,多並行能提高執行速度,充分使用GPU的能力。
CUDA編程基礎入門系列(持續更新)_嗶哩嗶哩_bilibili
github專案包含程式碼、網誌、課件pdf下載地址:https:// github.com/sangyc10/CUD A-code


4.8 cmake


C++的編譯,搭配C++一起使用。推薦基於VSCode和CMake實作C/C++開發 | Linux篇,開篇-課程簡介_嗶哩嗶哩_bilibili。

5. 演算法能力

專業演算法能力需要根據自己的領域自行尋找資料,多看論文,多記筆記。大力推薦readpaper,讀論文神器。https:// readpaper.com
如果是深度學習領域,可以看看李沐大神的讀論文系列,都是精品。跟李沐學AI的個人空間-跟李沐學AI個人主頁-嗶哩嗶哩影片
如果是感知領域,可以看看博主之前寫的一些內容,作為入門使用,最好能看論文。影像2D目標檢測總結、點雲3D目標檢測總結、視覺transformer:VIT, swin transformer,DETR等、BEV系列一:BEV介紹和常用BEV演算法簡介

大家有什麽疑惑或者推薦的資料,歡迎留言或私信討論。PS: 為什麽知乎寫文章,標題上下必須額外空一行,不然會把正文和標題一起當做標題。不知道是不是我設定的問題,導致文章空位有點多。