學(xué)習(xí)三維點(diǎn)云,應(yīng)該學(xué)什么

本篇文章整理自三維點(diǎn)云課程開(kāi)課儀式上黎嘉信博士的寄語(yǔ),該寄語(yǔ)關(guān)于學(xué)習(xí)新知識(shí)的態(tài)度,相信會(huì)對(duì)大家有很大啟發(fā)和收獲。
各位同學(xué)晚上好,歡迎來(lái)到三維點(diǎn)云這門課。這門課一共有九次課,涉及的內(nèi)容會(huì)比較多,包括一些經(jīng)典的數(shù)據(jù)結(jié)構(gòu)、傳統(tǒng)機(jī)器學(xué)習(xí)理論以及深度學(xué)習(xí)等等。
大部分算法實(shí)現(xiàn)起來(lái)其實(shí)并不復(fù)雜,但背后的原理也不簡(jiǎn)單,或者說(shuō)不同的實(shí)現(xiàn)方法會(huì)有不同的效率。我們?cè)谥v解的時(shí)候會(huì)偏重于算法背后的邏輯和原理,而作業(yè)全部是需要代碼實(shí)踐算法的具體應(yīng)用。
下面跟大家分享3點(diǎn)心得:第1點(diǎn)是學(xué)習(xí)能力和工程能力;第2點(diǎn)是想象能力;第3點(diǎn)是對(duì)深度學(xué)習(xí)和傳統(tǒng)方法的理解。
1 學(xué)習(xí)能力和工程能力
學(xué)習(xí)能力。在學(xué)習(xí)能力這一點(diǎn)上,我覺(jué)得最基礎(chǔ)的就是要習(xí)慣去看文檔和源碼,比如這門課需要用到Open3D等一些可視化的庫(kù),或者一些基礎(chǔ)的矩陣運(yùn)算庫(kù)。
第一期課的時(shí)候就有同學(xué)問(wèn)用Open3D做可視化怎么劃線、怎么劃點(diǎn)?說(shuō)實(shí)話,我對(duì)這個(gè)問(wèn)題是比較震驚的,因?yàn)槲矣X(jué)得Open3D的文檔做得相當(dāng)好,里面有且不止有一個(gè)例子。
當(dāng)然,通常情況下在群里問(wèn)這類問(wèn)題也是會(huì)回答的,你就會(huì)覺(jué)得“這樣挺好的呀,因?yàn)椴挥米约嚎次臋n并且能很快解決,難道不好嗎”。
其實(shí),我覺(jué)得這是不對(duì)的,看文檔是一種最基礎(chǔ)的能力,而且是需要鍛煉的。看文檔的時(shí)候同時(shí)也可以鍛煉一下自己看源碼的能力,比如說(shuō)PCL的代碼文檔其實(shí)做得不怎么好,經(jīng)常需要自己去看源碼。所以,總結(jié)起來(lái)就是紙上得來(lái)終覺(jué)淺,絕知此事要躬行。
工程能力。我覺(jué)得很重要的一點(diǎn)就是要變通。
舉個(gè)例子,在第一期課程時(shí),要做激光雷達(dá)在自動(dòng)駕駛場(chǎng)景下的地面檢測(cè)實(shí)戰(zhàn)項(xiàng)目,地面是水平的。然后有同學(xué)就問(wèn)“用RANSAC這個(gè)方法提取地面,但RANSAC提取出來(lái)的有可能是垂直的平面(比如建筑的墻體),那此時(shí)該怎么辦”,這個(gè)問(wèn)題就好像說(shuō)你拿著一個(gè)棍子,進(jìn)電梯橫著拿的時(shí)候被門卡住了進(jìn)不去,然后問(wèn)怎么辦?那能怎么辦?你把棍子豎過(guò)來(lái)不就進(jìn)去了嗎?
同樣的,對(duì)RANSAC也有太多的辦法去做變通,比如說(shuō)出現(xiàn)垂直面的時(shí)候,你就放棄這組參數(shù)重新采樣,重新求解不就完事了嗎?再比如把檢測(cè)出來(lái)的垂直面里面的點(diǎn)刪掉,再跑一次RANSAC,那通常你會(huì)得到水平面,而不是垂直面。
當(dāng)然做變通的前提是你要理解這個(gè)算法在做什么事情,如果你不知道的話,當(dāng)然就沒(méi)有辦法做什么變通了。但如果只是跟著課件上的步驟去寫代碼,那就不叫理解了。我們要能夠在腦袋中想象出來(lái)這個(gè)算法的關(guān)鍵動(dòng)作,這才叫理解。
正因?yàn)槿绱?,我們本門課程的實(shí)踐作業(yè),核心算法都不允許大家直接調(diào)用PCL的函數(shù),而是自己寫代碼實(shí)現(xiàn)。
2 想象力
很多問(wèn)題和算法的公式很復(fù)雜,很難做到說(shuō)分分鐘就寫下來(lái),但是我們可以將這些理論和公式通過(guò)想象來(lái)轉(zhuǎn)化成直覺(jué)。
比如說(shuō)第一節(jié)課的PCA和KPCA,來(lái)來(lái)去去就是找一個(gè)方向,投影數(shù)據(jù)原始空間不行,那就找另外一個(gè)空間。那以后我們遇到SVM,就會(huì)發(fā)現(xiàn)這些直覺(jué)是通用的,那么這就是舉一反三。
此外,點(diǎn)云算法里面有很多操作是在三維空間甚至高維空間,這種高維空間的想象能力也需要我們?nèi)ヂ囵B(yǎng)。比如說(shuō)八叉樹在遞歸算法的時(shí)候看著很復(fù)雜,但其實(shí)它的核心思想就是:一個(gè)球體跟一個(gè)正方體的空間關(guān)系,有沒(méi)有相交,有沒(méi)有一個(gè)包圍另外一個(gè)。如果能在腦海里面去想象出八叉樹的構(gòu)建過(guò)程,以及最鄰近搜索是怎么去遍歷這個(gè)空間中的結(jié)構(gòu),那么這個(gè)問(wèn)題就可以轉(zhuǎn)化成一個(gè)幾何問(wèn)題,而且是在腦海里面可以構(gòu)建、可以想象的問(wèn)題,那么八叉樹就會(huì)變得非常簡(jiǎn)單。
3 深度學(xué)習(xí)與傳統(tǒng)方法
關(guān)于深度學(xué)習(xí)和傳統(tǒng)方法。這門課70%是關(guān)于傳統(tǒng)方法,為什么呢?
第一個(gè)原因是點(diǎn)云和圖像不太一樣,點(diǎn)云是三維的,所以很多幾何和優(yōu)化的解法可以用起來(lái);第二個(gè)原因是我們對(duì)深度學(xué)習(xí)的看法,應(yīng)該要足夠的冷靜。
巴菲特一句經(jīng)典語(yǔ)錄“別人恐懼的時(shí)候我貪婪,別人貪婪的時(shí)候我恐懼”,那這對(duì)于深度學(xué)習(xí)來(lái)說(shuō)也是合適的。當(dāng)每個(gè)人上來(lái)都說(shuō)深度學(xué)習(xí),當(dāng)高中生都會(huì)用Pytorch, Tensorflow甚至發(fā)CVPR的時(shí)候,我們就應(yīng)該反思一下我們要怎么對(duì)待深度學(xué)習(xí)。
前幾年,學(xué)術(shù)界的一個(gè)趨勢(shì)是能不能把算法做成端到端,現(xiàn)在變成了為什么要做到端到端。我覺(jué)得這是個(gè)好事,對(duì)于一些已經(jīng)知道怎么去建模怎么去求解的問(wèn)題,如果非要用深度學(xué)習(xí)來(lái)解決,那效果不一定比傳統(tǒng)方法好。
比如:點(diǎn)云配準(zhǔn)。最近有一些論文是用深度學(xué)習(xí)做ICP,從學(xué)術(shù)的角度上看這是非常有意義的,但從工程的角度看,幾乎沒(méi)有落地的應(yīng)用,因?yàn)閭鹘y(tǒng)方法安全可靠,可以解釋,而且效果還好,成本還低。
所以通過(guò)這門課,我希望大家能夠?qū)c(diǎn)云相關(guān)的算法有一個(gè)整體的概念,能夠在科研或工作過(guò)程中多思考一下“為什么要用深度學(xué)習(xí),哪些地方要用深度學(xué)習(xí),什么地方更適合用傳統(tǒng)方法”,這種冷靜的思考才能將深度學(xué)習(xí)用在刀刃上,發(fā)揮最大的作用。
還有另外一個(gè)原因,就是我覺(jué)得深度學(xué)習(xí)比傳統(tǒng)方法要簡(jiǎn)單很多,只要你能理解反向傳播,那么很多深度學(xué)習(xí)都是大同小異,所以學(xué)起來(lái)會(huì)更簡(jiǎn)單一點(diǎn)。
4 Trick
還有最后一個(gè)問(wèn)題要跟大家分享一下,我的看法就是關(guān)于所謂的工程Trick,就是一些奇技淫巧。三維點(diǎn)云這門課的重點(diǎn)是每一個(gè)算法的原理,而不是工程實(shí)現(xiàn)的Trick,盡管我會(huì)盡量講解一些我知道的工程Trick,但是大家要知道工程領(lǐng)域千差萬(wàn)別。
即使同一個(gè)問(wèn)題在不同的場(chǎng)景下的Trick也是不一樣的,我自己是做自動(dòng)駕駛、無(wú)人機(jī)的,所以我知道一些具體場(chǎng)景下具體的Trick,但是我不知道機(jī)械臂做物體抓取的Trick呀,那是不是就意味著我去面試一家做機(jī)械臂的企業(yè)時(shí),我就會(huì)被摁在地上摩擦?我相信不會(huì),所以工程能力和學(xué)術(shù)能力不是你知道多少Trick,更多的是你對(duì)各種算法的理解有多深入,變通的能力有多強(qiáng)。
工程Trick是無(wú)窮無(wú)盡,而算法的理論是有限的,所以千萬(wàn)不要去追求所謂的Trick,而忽略了理論,所以遇到這門課第三、四節(jié)課滿屏的公式,大家不要跳過(guò)公式看結(jié)論,而是要將公式好好地消化成直覺(jué)??偟膩?lái)說(shuō),這是授之以魚還是授之以漁的問(wèn)題,Trick是可以吃的那個(gè)魚,但理論知識(shí)和變通能力是有三點(diǎn)水的那個(gè)漁。
文章由該期課程學(xué)員陳方圓 和 hqc2020整理