自學自動駕駛技術應該採取什麼樣的學習路線?
02-01
學過高等數學、線性代數、概率統計,也懂一點編程,還需要學什麼?Python? C++? 演算法?深度學習?計算機視覺?數值計算?
如果題主不是打算做自動駕駛系統工程師,那麼並不需要將你有限的精力分散到各個模塊去,到頭來哪樣都不精,喪失競爭力。建議選擇一個方向專攻,解決最核心的問題,做到無可替代即可。以感知模塊為例,你需要從理論基礎到工程實踐雙管齊下。
首先,弄清楚核心問題: 簡單來說,感知模塊無非要解決障礙物檢測,場景語義分割,目標跟蹤三類問題(這三類問題會相互穿插,最好不要失衡;未來也有可能會大一統)。
其次,對這三類問題針對性學習:從論文中明白這三個問題公認的理論(分析)工具各自是什麼:深度學習目標檢測,深度學習場景分割(機器學習里的條件隨機場),圖優化(貝葉斯後驗概率等)。學習過程中會有些數學理論障礙卡住你,這個時候帶著問題再去學習數學知識,會更明確你的目的和限制條件,也更節約時間(對於中短期快速學習,一定要先有問題再進行學習)。感知相關的工程數學知識大概包括: 各種優化,各種回歸,概率統計(貝葉斯、多維高斯、主成分、馬爾可夫過程),線性代數(奇異值分解等),很少的微積分,基本的極線幾何,概率圖(理論成分偏多)…。這些數學工具是解決這三個問題的通用工具,在你設計好相關問題的模型後,基本可以利用數學工具的組合解決問題。難點在於怎麼針對感知模塊開發目標去設計問題,建立問題的模型。順便提一下,現在比較火的深度學習目標檢測,場景分割,其實也是基於簡單的微分鏈式法則,也沒逃出上面所提的數學工具範疇。但深度學習難能可貴的是將這一理論轉換成了特定的工具,並且針對這一工具湧現了很多問題分析的新角度,提升了解決問題的效率與效果。深度學習弱化了你的理論知識要求,但提升了對數據質量、以及你對問題進行深度學習工程化建模、訓練方法的要求。最後,是工程化能力的提升。如上段最後所說,深度學習工具的應用熟練度、將問題轉化為深度學習框架的熟練度、訓練方法的熟練度是一定要提高的;目標跟蹤使用各種數學工具以及與深度學習結合的熟練度需要提高;代碼編寫能力一定要提高。擴展一下,基本上的元思考方式是: 弄清楚該專業核心問題;通過較新的綜述(以及其他方式)了解大概的理論工具脈絡以及最新最有效的工具,搭建相關的知識架構圖;提升工程分析能力(業務相關的問題建模能力);提升末端工具使用的熟練度;以及超越標杆的信心與自我驅動力。自動駕駛是一個系統工程,裡面涉及到很多知識點。現在主要有雲側和端側兩大塊,雲側主要包括建圖地圖、訓練學習、模擬模擬,端側主要包括感測、感知、定位、決策、控制,還有就是這些功能支撐的通信、系統、計算等。
建圖地圖主要內容是分割檢測、姿態優化、地圖生成等,需要有2D/3D視覺、Robotics相關的專業知識。
訓練學習包括數據標註管理、訓練平台、編譯優化等內容,需要有高性能計算、分散式系統、編譯優化等知識。模擬模擬包括場景構建、數據獲取等,需要具有高等幾何、CG、前後端系統、物理引擎等知識。系統主要是實時安全系統方向。通信既包括協議硬體、也包括軟體協作框架。
計算是指各種計算平台,包括FPGA、GPU、ASIC等,需要學習HDL、體系結構、基礎庫等。感測就是各種感測器原理特性調優定製等,可以自己選擇相應的方向學習。感知就是基於各種感測器數據做分割、檢測、跟蹤、重建等,主要是CV相關內容。定位是給出當前位姿、速度、運動狀態等,需要對GNSS、IMU、車輛硬體和SLAM、Robotics等演算法有掌握。決策包括是給出車輛的行動規劃,涉及A*/RRT避障、螺旋線軌跡生成、狀態機等知識,主要是控制方向內容。
控制是實現決策內容,主要涉及車輛動力學、車輛通信、控制原理等。在選定自己方向以後可以按照相應內容學習實踐,當然每個糊口的方向也絕不僅僅是一兩門課程那麼簡單,但是有些共性的基礎還是要掌握好的,比如CS編程系統、機器學習深度學習、概率建模、機器人學等,另外就是多多實踐。謝邀。我在自動駕駛方面算是走了些彎路,一開始理論知識不充足,論文讀的太少,把太多的時間投入到工程上(C++編程)。建議從經典的斯坦福、CMU論文入手,看看paper里涉及哪些演算法並努力學習(概率論、矩陣論和優化理論,我認為這三個經常用到,並且屬於智商捉急的部分)。
我是菜鳥 ,目前是通過udacity的自動駕駛課。
現在正在上 利益無關推薦閱讀: