专访中科创达王璠:怎样做好嵌入式人工智能的算法开发?
目前在人工智能領域,不管是學術圈還是工業圈,大家都認同一個趨勢,那就是在很多應用場景上計算需要落地到設備上,讓設備擁有智能化——即嵌入式的AI,這個是人工智能領域新開辟出的一個分支。
?中科創達技術總監王璠堅定的對雷鋒網說。
在近日(4月28日)的北京GMIC大會新技術演示Show上,王璠向外界展示了中科創達在嵌入式人工智能方面所做的工作。這位百度出身的90后的技術總監,目前帶領著一支30人的 ThunderView 技術團隊專注于嵌入式AI的算法研究。我們現在做的工作是將深度學習放在嵌入式設備上,王璠進一步解釋道。
↑ 王璠
那么什么是嵌入式 AI 呢?
據雷鋒網了解,所謂嵌入式AI,就是設備無須聯網通過云端數據中心進行大規模計算去實現人工智能,而是在本地計算,在不聯網的情況下就可以做實時的環境感知、人機交互、決策控制。
談及嵌入式AI和云端計算的AI的區別,王璠告訴雷鋒網,對于一般的AI系統,數據可以在服務器端進行計算,人們往往會通過增加模型的大小、網絡的深度,調用盡可能多的計算資源,以期得到更加精確的計算結果。而對于嵌入式AI來說,就需要反其道而行之了,王璠總結道,云端計算的AI致力于如何更好的解決問題,而嵌入式的AI則致力于如何更加經濟的解決問題。
嵌入式AI的應用場景有哪些?
對于嵌入式AI的應用場景,王璠表示,云端計算雖然精確度高,但并不是所有的場景都適合,比如:
-
輔助駕駛或者自動駕駛系統,如果在云端計算,設備端采集到數據后上傳,計算完成后再返回終端,這樣會不可避免的帶來一定的延時,而在駕駛的場景中,這種延時意味著危險系數的提高。
-
數據安全,比如家里安裝了一個監控攝像頭,用來關注老人和孩子的安全,上傳到云端的計算也意味著隱私被泄露的風險提升。
-
脫機,雖然現在通信技術發展的很快,但是仍然會碰到在地下停車場、商場里沒有信號的情況,這時候就不能指望云端計算有很好的用戶體驗了。
所以,嵌入式的人工智能還是有很大的市場需求的。
同樣是做嵌入式的人工智能,地平線CEO余凱曾經說過,嵌入式AI的應用場景地平線看好三個方向:安防、智能家庭、智能駕駛。對此,王璠也表示贊同,同時表示這三個方向在實現難度上也是逐漸遞增的。
從算法方面來看,目前ThunderView算法解決方案包括深度學習算法、算法優化、算法集成三個部分。王璠提到,深度學習算法和算法優化這兩個部分在執行過程中是高度耦合在一起的,同時算法優化部分的工作非常重要,難度也最大。目前他們已經在圖像處理、機器視覺等領域取得了一些成果,王璠告訴雷鋒網:
在2017年的國際消費類電子產品展覽會(CES)及世界移動通信大會(MWC)上,我們團隊攜手高通公司在高通展臺上展示了我們的物體識別及智能拍照引導算法。這些算法獨立運行在高通的便攜設備上,支持單機運行,不需要聯網。實時識別物體,實時對用戶的拍照行為進行引導。
也是在今年的MWC上,我們聯合ARM公司在ARM展臺展示了食品識別及熱量估算的算法。利用在ARM設備上的深度學習引擎,我們在ARM雙攝設備上展示了食品識別和熱量估算的移動應用程序。
↑ MWC2017高通展臺展示的ThunderView 算法技術
因為對于深度學習的網絡模型而言,如果一個應用場景優化的比較好的話,是可以將其適配到不同的任務中的。所以目前我們的選擇是先把基本場景做好,然后再將技術推廣至不同的領域。比如現在和高通的合作是在檢測方面,和ARM的合作是在分割和識別方面,而我們的目標是要在每一個領域至少做到業界?state of the art 的水平,王璠信心滿滿的告訴雷鋒網(公眾號:雷鋒網)。
那么如何更加經濟的用嵌入式AI解決問題呢?
王璠表示,嵌入式設備的計算資源有限,雖然移動芯片的計算能力突飛猛進,拿現在能力最強的高通驍龍835為例,它的單精浮點運算性能為630GFLOPS,比起2000年前后的超算,已經可以進入前100了。但是比起現在PC端的Tesla P100,其單精浮點運算性能可達10TFLOPS,仍有十幾倍的差距。這就意味著嵌入式AI和PC端的玩法將完全不同。
一般來說嵌入式的開發層級從上到下可以分為:應用層(Application),算法層(AI Algorithms),操作系統層(OS),驅動層以及芯片層。由于移動芯片計算能力的限制,嵌入式人工智能除了需要優化算法層之外,還需要關注底層驅動和操作系統的優化——這就需要算法團隊不僅在操作系統領域里經驗豐富,還需要和芯片廠商有緊密的合作。
同時,對于嵌入式,用戶對功耗和發熱等性能要求又極為敏感。所以王璠表示,綜合這些因素后,現階段我們做嵌入式的計算必須要有高效、經濟的算法。而要達到這個目標,則需要從硬件和軟件兩方面著手。
硬件
對于中科創達,硬件是基于高通、ARM這些廠商的芯片。不僅如此,王璠提到,他們在技術層面的合作已非常深入,目前的合作方式為硬件廠商開發加速引擎,并將芯片提前提供給中科創達算法團隊來開發技術,這個過程中硬件廠商會基于算法團隊提出的一些意見來改進引擎。王璠舉了個例子,中科創達在MWC2017上和高通合作系統,高通在硬件優化上面提供了很大的幫助,他們內部開發了一個完全針對與深度學習算法的加速引擎,使運算獲得了5倍左右速度的提升。一個好的引擎,可以讓AI系統落地到嵌入式設備上取得事半功倍的效果。
軟件
軟件方面則需要更加經濟的計算模型,在保證準確率的前提下,盡量減少計算量。
首先是一個經濟的網絡設計。
用深度學習的方法來處理AI,很多時候是一個搭積木的過程。隨著現在人工智能方面開源的程度越來越大,從網上能得到的公開資源諸如文章、網絡結構、評測、訓練好的模型等等都很多,善用這些資源,把各模塊嵌到網絡里面,達到既滿足你當前的需求,又具有更好效果的網絡。
第二,從繁入簡。傳統的AI的算法,都是在一個很龐大的集群來運行的。在這種情況下,網絡的大小可能到幾百兆,甚至幾個G,速度也比較慢。假如要放到嵌入式上,就需要從繁入簡。這里有兩個方法:
-
一個是老師-學生模型,設計一個小網絡,從原有的復雜網絡里面學習它的知識。典型的方案是 Hinton 提出的模型蒸餾,包括現在很多的半監督學習也會用類似的方式來做。這是特別有效的縮減網絡規模的方式。
-
另外一點就是裁減和近似。這里的關鍵在于縮減之后,很可能會降低性能,這時就需要算法工程師需要做出平衡和取舍了,什么樣的程度才可以在滿足當前需求的同時達到最佳的效果。
第三點,適用場景。對于不同的任務場景,最優的網絡設計是不一樣的。尤其在嵌入式上,需要盡可能的讓運行速度更快。測試集和用戶實際使用場景是不一樣的,所以在模型設計好后還需要根據用戶可能碰到的實際情況做適配。
↑ MWC2017ARM展臺展示的ThunderView 算法技術
第四點是共享參數。盡可能的用同一套參數來完成多種不同的任務。比如在MWC上,創達和ARM聯合做的一個技術,主要是做食物的識別和卡路里的計算。我們需要完成的任務,降到算法層級來說,需要第一知道是什么食物,第二要知道這個食物在哪里,輪廓是多大,知道體積后才能估計它有多少卡路里。在做食物分類的時候,在深度學習的參數內部已經包含了很多關于這個食物的信息。當最后把分割任務加進去的時候,實際上并沒有浪費任何一個多余的參數,只是最后抽出來一些特征,做一個簡單的擬合,就可以得到一個比較好的效果。
最后,王璠總結道,要想嵌入式人工智能玩得好,必須做到軟硬件的充分結合。
本文作者:谷磊
本文轉自雷鋒網禁止二次轉載,原文鏈接
總結
以上是生活随笔為你收集整理的专访中科创达王璠:怎样做好嵌入式人工智能的算法开发?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Imation亏损额急剧增长 CEO仍表
- 下一篇: 脑芯编:窥脑究竟,织网造芯(二)