我已經(jīng)在美國一家科技公司工作快六年了过椎。
在這六年中猴仑,我由一名剛剛從學(xué)校畢業(yè)的研究生廊镜,經(jīng)過多個大小項目的洗禮,從普通的電子工程師焰情,做到了公司研究部門的研究工程師。我的技術(shù)水平剥懒,在這期間得到了極大的鍛煉和擴展内舟;我的交流能力和表達(dá)水平,在這期間也得到了不小的提升初橘;我的情商和人際交往能力验游,通過公司提供的培訓(xùn)課程和自己的實踐,也在穩(wěn)步有計劃地進(jìn)展保檐。
愛因斯坦曾經(jīng)說過:
當(dāng)我們的知識之圓擴大之時耕蝉,我們所面臨的未知的圓周也一樣。
隨著技術(shù)水平的提升夜只,我發(fā)現(xiàn)自己需要在技術(shù)上擴展和深挖的地方越來越多垒在;而隨著在公司工作年份的增加,我所要承擔(dān)的責(zé)任也越來越多扔亥,相應(yīng)的需要學(xué)習(xí)的通用技能也越來越多场躯。我曾經(jīng)在這兩篇文章(《新時代的職業(yè)規(guī)劃》以及《個人計劃谈为,這么理解就對了》)中敘述了職業(yè)規(guī)劃和個人計劃的重要性。那么作為理論之上的實踐踢关,我就在這里描述一下我的職場進(jìn)階計劃伞鲫。
專業(yè)技能篇
我是一名信號處理算法工程師(Digital Signal Processing (DSP) Algorithm Engineer)。在所在公司签舞,我主要負(fù)責(zé)的是數(shù)字信號處理的算法設(shè)計與驗證秕脓,現(xiàn)有產(chǎn)品算法的維護(hù)和性能提升,以及新產(chǎn)品和新算法的研究和設(shè)計儒搭。在研究生期間吠架,我的研究方向是數(shù)字圖像處理(Digital Image Processing (DIP))以及模式識別(Pattern Recognition)。本來在畢業(yè)時师妙,我想去找數(shù)字圖像處理相關(guān)的工作诵肛,但是機緣巧合我找到了現(xiàn)在所在的公司,開始做信號處理相關(guān)的工作默穴。
雖然數(shù)字圖像處理的本質(zhì)也是數(shù)字信號處理怔檩,但是在具體的算法設(shè)計和應(yīng)用上還是有極大的不同,這就導(dǎo)致了我必須不斷學(xué)習(xí)才能盡快融入工作的要求中蓄诽。久而久之薛训,持續(xù)學(xué)習(xí)的習(xí)慣就養(yǎng)成了。我覺得自己應(yīng)該在未來的一兩年將下面的技術(shù)吃透或者充分了解仑氛,從而在保持核心技術(shù)競爭力的同時乙埃,兼顧未來的技術(shù)發(fā)展。
數(shù)字信號處理
數(shù)字信號處理其實是所有平臺的本質(zhì)锯岖,不論是語音介袜、視頻、光波出吹、還是雷達(dá)波遇伞,想要被計算機處理,都需要通過模數(shù)轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號捶牢。那么深入理解數(shù)字信號處理的本質(zhì)鸠珠,以及相應(yīng)的算法和套路,就是作為一個DSP工程師混飯吃的根本技能了秋麸。
在研究生階段學(xué)習(xí)的課程渐排,我使用的教科書是John G. Proakis的這本《Digital Signal Processing (4th Edition)》。既然作為教科書灸蟆,那么它必然就是兼容并包驯耻,理論描述非常翔實和清晰。但是它的問題同樣也在與此,也就是說這本書作為參考書是非常好的可缚,可以隨時查閱相關(guān)的理論和信息孽水,但是作為一個DSP工程師來說,僅僅有扎實的理論基礎(chǔ)是必要的但是不足夠的城看。
在數(shù)字信號處理領(lǐng)域,通過MATLAB來做系統(tǒng)設(shè)計和模擬杏慰,以及算法原型的設(shè)計测柠,是常見的工作手段和方法。那么學(xué)習(xí)和練習(xí)MATLAB的編程方法和技巧缘滥,以及應(yīng)用在數(shù)字信號處理的基礎(chǔ)理論上轰胁,就是DSP工程是的看家本領(lǐng)了。最近一段時間Python語言非吵螅火赃阀,甚至蓋過了同樣作為腳本語言的MATLAB的風(fēng)頭,但是在數(shù)字信號處理領(lǐng)域擎颖,MATLAB目前依然是首先被許多公司采用的工具榛斯,也是我這六年以來一直在使用的順手工具。在我之前的學(xué)習(xí)中搂捧,使用過的Vinay K. Ingle的這本《Digital Signal Processing Using MATLAB》是一本非常棒的驮俗,將經(jīng)典理論和具體代碼應(yīng)用相結(jié)合的好書,我曾經(jīng)跟著書把所有的代碼都敲了一遍允跑,非常有收獲王凑。
除此之外,還有幾本數(shù)字信號處理的書籍非常推薦:
Steven Smith - 《Digital Signal Processing: A Practical Guide for Engineers and Scientists》
Richard G. Lyons - 《Understanding Digital Signal Processing》
Alan V. Oppenheim - 《Oppenheim: Discret Signal Process》
數(shù)字信號處理的理論是非常經(jīng)典的聋丝,應(yīng)該在相當(dāng)長的時間里不會有太大的變化索烹,而不斷鞏固自己的信號處理知識,其實就是練功者在訓(xùn)練自己的內(nèi)功心法弱睦,或者是健身愛好者在鍛煉自己的核心力量百姓。而作為信號處理領(lǐng)域的從業(yè)者,我所要做的就是將基礎(chǔ)不斷夯實每篷,并且結(jié)合MATLAB將理論通過代碼從容實現(xiàn)瓣戚,然后結(jié)合項目里具體的應(yīng)用,將這些理論充分在項目中展現(xiàn)出來焦读。
傳感器應(yīng)用
最近幾年子库,隨著物聯(lián)網(wǎng)(Internet of Things (IoT))熱度的迅速提升,以及以特斯拉等自動駕駛汽車公司的迅速興起矗晃,傳感器的應(yīng)用就變得非常重要了仑嗅。總的來說,我們每天都在跟無數(shù)的傳感器打交道:到處都是的攝像頭仓技,是一種光學(xué)傳感器鸵贬;最新的iPhone X使用的是近紅外點陣投影技術(shù),同樣是一種光學(xué)傳感器脖捻;手機上還有各種各樣的傳感器阔逼,比如距離傳感器、陀螺儀地沮、磁力計嗜浮、加速度傳感器等等。而自動駕駛汽車上摩疑,更是需要強大的光學(xué)攝像頭+電波雷達(dá)+激光雷達(dá)三者強力融合的系統(tǒng)來作為汽車的感知單元危融。如果說數(shù)字信號處理系統(tǒng)是大腦,那么各種各樣的傳感器就是眼睛和耳朵雷袋。雷鋒網(wǎng)有一篇文章《自動駕駛汽車到底需要哪些類型的傳感器吉殃?看完這篇你就懂了》很好地總結(jié)了這些傳感器在自動駕駛汽車上的應(yīng)用。
我很幸運楷怒,在大學(xué)本科的時候就主攻數(shù)字圖像處理的算法蛋勺,在研究生階段接觸了激光雷達(dá),并且設(shè)計了一些圖像數(shù)據(jù)和激光雷達(dá)數(shù)據(jù)融合的算法和應(yīng)用率寡。在畢業(yè)之后的工作崗位上迫卢,我有充分沉浸在電波雷達(dá)相關(guān)的信號處理和算法設(shè)計上∫惫玻總體來說乾蛤,我已經(jīng)具備了自動駕駛汽車所需要的光學(xué)攝像頭+電波雷達(dá)+激光雷達(dá)的相關(guān)知識和技能,而且我對自動駕駛汽車的傳感器應(yīng)用非常感興趣捅僵。
那么接下來要做的家卖,就是深入了解和實踐這些傳感器在自動駕駛場景的應(yīng)用,讓自己的經(jīng)驗和認(rèn)知能夠緊跟行業(yè)技術(shù)發(fā)展庙楚;而且我并不擅長設(shè)計這些傳感器上荡,我需要提升的是數(shù)據(jù)融合的能力,因為在單位時間內(nèi)大量數(shù)據(jù)的到來馒闷,如何更好地將這些數(shù)據(jù)整合以及做出低誤檢率的算法設(shè)計酪捡,就是核心技能了。
在提到傳感器數(shù)據(jù)處理的時候纳账,不得不提的是卡爾曼濾波這項技術(shù)逛薇。因為傳感器總是包含噪聲的和不完全準(zhǔn)確的,那么如何得到有效的系統(tǒng)狀態(tài)估計和參數(shù)值預(yù)估就變得非常重要疏虫∮婪#卡爾曼濾波是一種高效率的遞歸濾波器啤呼,它的主要用途就是通過處理包含噪聲的輸入數(shù)據(jù),來對所在系統(tǒng)的內(nèi)部參數(shù)進(jìn)行動態(tài)估計呢袱,以及根據(jù)系統(tǒng)之前的狀態(tài)和當(dāng)前觀測數(shù)值官扣,預(yù)估下一時刻的可能的觀測數(shù)值。我非常喜歡研究卡爾曼濾波和各種非線性變種羞福,以及具體的項目應(yīng)用惕蹄,因為我認(rèn)為這是一種理論模型和現(xiàn)實應(yīng)用的完美結(jié)合,是算法設(shè)計的終極目標(biāo)治专。Paul Zarchan的這一本《Fundamentals of Kalman Filtering》是一本關(guān)于卡爾曼濾波的經(jīng)典著作焊唬,而且配有詳盡的MATLAB源代碼。如果對Python更感興趣看靠,那么可以關(guān)注Roger R. Labbe在Github上的《Kalman and Bayesian Filters in Python》,我覺得他對卡爾曼濾波的講解非常深入淺出液肌,適合初學(xué)者從基本概念入手挟炬,由淺入深進(jìn)行學(xué)習(xí)。這兩本書都是我正在努力攻讀的嗦哆,而且應(yīng)該會和數(shù)字信號處理的書籍一起谤祖,終身學(xué)習(xí)和應(yīng)用。
機器學(xué)習(xí)/深度學(xué)習(xí)
從大約2012年老速,吳恩達(dá)教授在谷歌大腦部門通過大規(guī)模分布式集群計算機開發(fā)超大規(guī)模神經(jīng)網(wǎng)絡(luò)粥喜,來讓計算機自動學(xué)習(xí)識別貓,這一個項目開始橘券,以深度學(xué)習(xí)為代表的人工智能應(yīng)用就在近幾年飛速地發(fā)展開來额湘。在這期間,國內(nèi)誕生了諸如曠視科技旁舰、商湯科技為代表的視覺人工智能公司锋华,以及諸如寒武紀(jì)、深鑒科技為代表的深度學(xué)習(xí)芯片公司箭窜;傳統(tǒng)的大型科技公司阿里巴巴毯焕、騰訊、百度都通過深度學(xué)習(xí)磺樱,在數(shù)據(jù)智能纳猫、語音圖像識別、自動駕駛汽車等領(lǐng)域收獲了巨大的技術(shù)進(jìn)步竹捉。
其實現(xiàn)在大家談?wù)撟疃嗟纳疃葘W(xué)習(xí)芜辕,只是機器學(xué)習(xí)這個領(lǐng)域的一個小的分支:深度學(xué)習(xí)基于的是以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的,通過多層次神經(jīng)元結(jié)構(gòu)的非線性結(jié)合活孩,來對數(shù)據(jù)進(jìn)行由淺入深的多層次抽象的算法物遇。而機器學(xué)習(xí)乖仇,分成三個大方向:有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)询兴、以及增強學(xué)習(xí)∧松常現(xiàn)在應(yīng)用最多的深度學(xué)習(xí),屬于機器學(xué)習(xí)里面的有監(jiān)督學(xué)習(xí)诗舰,也就是說我們需要給深度學(xué)習(xí)模型提供大量的帶標(biāo)注的真實數(shù)據(jù)警儒,然后通過對模型的建立,以及對模型結(jié)果的對錯的目標(biāo)函數(shù)的設(shè)計和優(yōu)化眶根,來實現(xiàn)整個深度學(xué)習(xí)系統(tǒng)的不斷完善蜀铲。
我2017年花了不少時間學(xué)習(xí)深度學(xué)習(xí)和機器學(xué)習(xí)的基礎(chǔ)知識,總的來說還是收獲非常大的属百,主要是通過學(xué)習(xí)讓自己形成了一個機器學(xué)習(xí)的思維方式记劝。我主要是通過斯坦福大學(xué)的兩門公開課進(jìn)行學(xué)習(xí)的:吳恩達(dá)教授的《CS229: Machine Learning 機器學(xué)習(xí)》以及李飛飛教授的《cs231n: Convolutional Neural Networks for Visual Recognition 視覺識別卷積神經(jīng)網(wǎng)絡(luò)》。前者主要是對經(jīng)典機器學(xué)習(xí)里諸如線性回歸族扰、支持向量機厌丑、混合高斯EM算法、主成分分析等等算法進(jìn)行講解和描述渔呵,而后者則將重心放在卷積神經(jīng)網(wǎng)絡(luò)在圖像識別怒竿、分割、解析上的應(yīng)用扩氢。這兩門課太經(jīng)典了耕驰,以至于我已經(jīng)學(xué)了不止兩遍,而且對機器學(xué)習(xí)課程里的每一個公式录豺,我都跟隨吳恩達(dá)教授的講解進(jìn)行了推導(dǎo)朦肘,收獲非常大。
提到深度學(xué)習(xí)双饥,就不能不提到現(xiàn)在流行的各種軟件框架:經(jīng)典的Caffe厚骗,流行的Tensorflow、PyTorch等等兢哭。我現(xiàn)在的主要任務(wù)领舰,就是在夯實了機器學(xué)習(xí)以及深度學(xué)習(xí)的基礎(chǔ)知識之后,通過Tensorflow框架來做一些自己的小項目迟螺,從而打通理論到實踐的通絡(luò)冲秽。這樣一來,在未來的某個時間矩父,也許我就可以通過自己設(shè)計的小項目的鍛煉锉桑,達(dá)到大公司需要的深度學(xué)習(xí)從業(yè)者所需要的能力,給自己未來的發(fā)展多開拓出一條道路窍株。
嵌入式平臺/并行處理平臺
我在本科的時候民轴,通過電子設(shè)計大賽接觸了凌陽公司的單片機攻柠;在研究生的時候,通過選擇的電子系統(tǒng)設(shè)計課程后裸,接觸了FPGA和Verilog硬件描述語言瑰钮;現(xiàn)在通過對深度學(xué)習(xí)的認(rèn)識,我知道GPU在深度學(xué)習(xí)中的大規(guī)模應(yīng)用以及其重要性微驶±饲矗總而言之,對嵌入式平臺和并行處理平臺的認(rèn)識和應(yīng)用因苹,在現(xiàn)在就顯得非常重要了苟耻。
我學(xué)習(xí)和使用過下面這些平臺:
單片機/嵌入式:
KST-51 單片機開發(fā)板:適合單片機入門,配套教程很好
韋東山 JZ2440:韋東山老師的開發(fā)板扶檐,重點是配套的經(jīng)典驅(qū)動編寫教程
ODROID-XU4:三星Exynos5422處理器凶杖,6核CPU加上Mali-T628GPU,性能非常強勁
FPGA:
Digilent Nexys 2 Sprtan-3E FPGA Trainer Board: Xilinx經(jīng)典的Spartan-3E系列FPGA
米聯(lián)客 MIZ702N: 學(xué)習(xí)Xilinx Zynq SoC的優(yōu)秀硬件平臺
小梅哥 AC620:配套教程非常棒
CrazyBingo的VIP_Board:圖像處理算法的FPGA實現(xiàn)獨一無二
GPU:
英偉達(dá) GTX 1080:英偉達(dá)10系列的顯卡款筑,深度學(xué)習(xí)訓(xùn)練必備
英偉達(dá) Jetson TX2:英偉達(dá)的GPU嵌入式平臺官卡,非常適合無人機、機器人醋虏、自動駕駛汽車等等應(yīng)用
在這幾年,通過這些平臺的學(xué)習(xí)和練習(xí)哮翘,對各個系統(tǒng)都有了不少的認(rèn)識颈嚼。我認(rèn)為在未來,F(xiàn)PGA和GPU會是應(yīng)用的主要戰(zhàn)場饭寺,那么我就應(yīng)該將學(xué)習(xí)和練習(xí)的重心阻课,放到他們身上。對于FPGA艰匙,我現(xiàn)在正在做自己設(shè)計的攝像頭限煞、SDRAM、FPGA员凝、VGA這樣一個圖像采集和顯示的小項目署驻,讓自己理順這個數(shù)據(jù)通路,同時鞏固自己對FPGA設(shè)計流程的理解健霹。對于GPU旺上,我在討論深度學(xué)習(xí)的時候已經(jīng)指出,自己會設(shè)計一些圖像識別的項目糖埋,在建立數(shù)據(jù)庫之后宣吱,通過Tensorflow框架在GPU上進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。同時我也要對GPU的架構(gòu)和硬件結(jié)構(gòu)進(jìn)行學(xué)習(xí)瞳别,以及英偉達(dá)的CUDA平臺征候,通過軟硬件的完美結(jié)合杭攻,讓數(shù)據(jù)處理更快更有效率。Tolga Soyata的這本《GPU Parallel Program Development Using CUDA》是一本非常有意思的書疤坝,雖然題目是GPU編程兆解,但是它從CPU多線程開始講起,結(jié)合具體案例和代碼層層深入卒煞,讓我看完之后收獲非常多痪宰。
總結(jié)
還記得在大學(xué)剛?cè)雽W(xué)的時候,我們電子信息工程學(xué)院的院長在新生見面會上說:
你們將來從事的會是“IT行業(yè)”畔裕,諧音就是“挨踢行業(yè)”衣撬,這意味著你們必須不斷前進(jìn),否則就要被后來的人踢屁股了扮饶。
當(dāng)然這是玩笑話具练,但是也道出了作為電子行業(yè)從業(yè)者的現(xiàn)實:我必須在技術(shù)上不斷充實自我,不斷拓展自己的技術(shù)和能力上的邊界甜无,不斷擴大自己技術(shù)視野的寬廣程度扛点,這樣才能在激烈競爭中站穩(wěn)腳跟,不斷前進(jìn)岂丘。
希望在文中出現(xiàn)的書籍和資料等信息對你有用陵究。下一次我會談?wù)勎以谕ㄓ眉寄苌蠈ψ约旱恼雇?/p>