在所有事情開始之前,要把相關的環境設置好。首先你要有OpenCV(對于視覺工程師方向),至少一個深度學習框架(TensorFlow, Kaffe, Keras等,新手推薦用Keras),Ubuntu。還要掌握C++, Python, 和基本的機器學習知識。
C++在AI類工作中有怎樣的重要性?
C++對于你找AI視覺方向的工作是比較重要的。以下幾個工作Title是要求你必須會C++的:
AI Engineer / Computer Vision Engineer / Self-driving Car Engineer / Image Processing Engineer / SLAM Engineer
GPGPU Engineer
而這四類工作Title并不要求你一定會C++:
* Data Scientist(Python, R etc.)
* Deep Learning Scientist
* NLP engineer (Python)
* Machine Learning Engineer (Pyhton, Java)
如何準備C++?
C++11中最重要的是Smart pointer,很容易考到。其次還有STL(vector, map etc.) 添加,刪除,排序。類也會考察,類里有很多前綴后綴,如const, static, override, virtual,pure virtual等,這些需要清楚地記得。
然后說到刷題,LeetCode上Easy和Medium的題,起碼要刷三百道。最好是能一邊上現成的算法課,一邊用C++刷題練習。
關于用到的資料,向大家推薦一本C++的書:Effective C++。這本書比較薄,三天內就能看完,可以不用看得太細,它對編程風格的講解是比較值得一看的。比如你可以了解到面對過程的編程風格和面向對象的編程風格。
最后給大家推薦一個YouTube播主:Cppnuts。他把C++的每個知識點總結成三到五分鐘的視頻,講得很不錯,大家可以關注。
找AI視覺方向的工作,你需要哪些必要的圖像知識?
特征點: Harris角點檢測,SIFT,SURF,ORB。例如,面試官可能會問你:在SLAM系統中,我們為什么要用ORB,而不用SIFT和SURF?答案是因為ORB比SIFT和SURF快,并且精度也不錯。
描述子和匹配,FLANN算法
相機模型:相機內參,外參數,相機標定。這部分其實是3D的概念,是視覺中的一大塊,但不需要了解得太深,現在這個領域絕大部分還是基于深度學習,只需這些基本的概念了解清楚。
基本的大塊概念:圖像配準,運動檢測,光流算法等。
OpenCV:很重要,任何一個關于圖像的工程師職位都對OpenCV有要求。Mat基本操作遍歷必須會,其他的東西可以根據算法推演。
CUDA:這是找工作過程中非常容易贏得優勢的一門技術。任何一個項目如果你說你用了CUDA,并解釋得清除完整,會讓面試官刮目相看。雖然CUDA有優勢但學起來并不容易,內容比較多。
你需要哪些深度學習的知識積累?
至少熟悉一種框架:如Caffe,Tensorflow,Pytorch,MXNet等。推薦TensorFlow和Keras。Keras適合新手,比較簡單,并且和TensorFlow是一樣的。對于TensorFlow,推薦《TensoFlow實戰》這本書。
至少一次Kaggle項目的經歷:Kaggle項目的名次最好在15%以內,這樣只需寫一個。如果沒有名次,就可以多寫幾個項目。寫在簡歷上的項目要突出兩點:第一,你把模型重新訓練了一遍。第二,你Ensemble了Multiple models。 Dogs and Cats的獲獎感言中講了一些他做Kaggle的經歷,推薦大家去看,可以借鑒他的話用在面試中。歷屆冠軍說的一些感言有很多是十分有用的。
對于這些模型,能夠迅速說出其優點:GoogleNet V12345, VGG, ResNet, MobileNet, AlexNet。
模型選擇方面:了解Fine tune,參數訓練的技巧(如何設定初值,如何調參等)
各種面試的小問題:如你平時喜歡用什么Optimizer?為什么神經網絡越深越好?為什么網絡要Thin呢?Gradient Vanish造成的原因?為什么會造成Overfitting?怎樣克服Overfitting?你怎么看Overfitting?Batch Normalization是什么?還有Range of each hyper parameter,SVM和分類算法的對比,數據集大小和切割等。
關于面試準備過程中的Tips
不要想著準備好了再面試。其實”準備好“是一個難以界定的概念,也許你永遠都達不到所謂的“準備好”的狀態,等你準備好時很多職位都沒有了,會錯失很多機會。
多面試,才知道職位究竟需要什么技能。AI的職位不像軟件工程師職位那樣有相對固定的需要準備的知識點,醫療方向有醫療方向需要準備的東西,無人機有無人機需要準備的東西。多面試才能知道這個職位到底需要什么技能。但是不要一開始就面大公司,可以從一些小公司練手,積攢經驗后再面大公司,并且大公司盡量找內推。
通過面試失敗總結經驗,建立一個自己的Cheatsheet。當你準備去面試一個陌生的領域,通過把每次面試的經驗寫在Cheatsheet上,你就會逐漸知道面試官需要什么樣的項目,你要如何潤色自己的項目。
如果拿不到面試可以嘗試投國內公司練手。投國內的公司可能拿到面試的機會更大一些,通過這些面試一樣可以積攢經驗。國內公司可能對算法方面沒那么嚴苛,但其他方面可以對你有很大的指導性,并且問的問題很實際,很接地氣。
面試中可能會面對哪些失敗?
回復很少:有時候你可能沒有把簡歷寫到Recruiter能看懂的程度。如果你簡歷寫得不夠直白,Recruiter沒看懂,他可能就pass了你的簡歷。我們要把項目中最重要的關鍵詞突出出來,并且可能需要寫一個general的cover letter,讓Recruiter了解你。我們自己也可以去LinkedIn加Recruiter,越多越好,可以直接把簡歷發給他,增加Recruiter回復的概率。
公司其實并不招人:有時候公司把招聘信息發布在網上,但其實他并不想招人,他就是要招不到人,才能給自己公司里的人辦H1b。這個時候面試官可能會出特別難的題,這種情況大家需要理性識別,不要一次遇到太難的面試就懷疑自己,從而喪失信心。
代碼沒時間準備:這其實是最不應該出現的問題。代碼在AI工程師求職中是很重要的。每個公司至少有兩輪代碼的面試,Online或者白板面試。大家一定要勤刷題。
項目不夠吸引人:打造一些實習經歷,實習是最重要的,有了實習對找全職是非常有幫助的。
心態已崩:找工作的難度大,但很多時候多堅持一會就能找到工作了。你要知道,如果你是MS最終做了AI,你已經為自己省了兩到三年轉行的時間。
現在AI有這些比較熱門的方向
-
工程師
+關注
關注
59文章
1570瀏覽量
68514 -
AI
+關注
關注
87文章
30833瀏覽量
268997 -
C++
+關注
關注
22文章
2108瀏覽量
73636
發布評論請先 登錄
相關推薦
評論