嵌入式人工智能是計算機視覺的一個方向,隨著深度學習的興起,在算法層面的準確度也相應提高,與之前相比,嵌入式人工智能的視頻分析就是把云端或本地服務器的處理能力放到嵌入式系統上,使得它能夠非常低功耗和實時的進行本地處理。
嵌入式人工智能顧名思義就是機器和人的交互。目前來看,我們身邊許多嵌入式人工智能設備,如攝像頭、機器人等,它們都需要強大的本地實時交互、計算的能力,這也意味著前端設備上需要有智能化的能力。
嵌入式人工智能環境感知方面,需要實時的理解和響應,即使網絡條件差,或者沒有網絡,也需要能夠正常工作。為了解決這些問題,深度學習必須在前端有限的計算資源和功耗下運行。
然而嵌入式人工智能深度學習算法,計算量非常大,通常需要運行在高性能的服務器上,對于在前端運行提出了非常高的要求。這些正是嵌入式視覺的機遇與挑戰。
深度學習針對嵌入式人工智能方面的優化,主要有網絡結構優化,模型壓縮,定點化,二值化,結合SIMD,緩存,多線程,異構計算的優化。
網絡結構優化
基于一個初始版本,對網絡結構進行調整,某些層的修改,參數的調整,使得它能夠在不降低精度的情況下速度更快。
模型壓縮剪枝
把一些不必要的分支給砍掉,在進行一個預測的時候,計算量相對會減少一些,速度變快。
定點化,二值化
深度學習模型的參數都是浮點數,相對來說它的計算比整數要復雜一些,特別在一些低端的芯片,乘法器都不夠多的情況下,浮點的性能就會比較差。如果把它轉成定點整數運算,那么在精度下降1%的情況下,它的速度將會帶來幾倍的提升。
二值化比定點化更進一步,一個權重值只占用一個比特,并且可以將乘法運行轉換為異或操作,在特定硬件上并行性會更高,執行速度會更快,非常適合在低端芯片上使用。
SIMD,緩存,多線程
SIMD,單指令多數據,一次一條指令做多個操作,增加緩存命中,減少內存訪問。一些不同的算法如果放在不同的線程中去跑,對外提供的整體組合的效果會非常的快。
異構計算
與硬件相關比較大,根據我選擇的不同的硬件、不同的方案、定制化指令的不同,硬件選擇都會接觸到異構計算。
將高性能服務器上運行的算法,遷移到嵌入式平臺實時運行,其難度非常大,除了算法軟件層面的優化,還需要充分利用硬件提供的計算能力。在硬件選擇方面,更是需要選取最適合的方案才能搭配出最優的性價比。
硬件選擇
ASIC專用芯片
在人工智能早期,只有少數公司用到這個方案,所以它的受眾并不會特別大。
基于GPU的方案
GPU中有多核并發的優勢,在上面運行深度學習的復雜運算時,可以進行并行運算。同時,GPU本身支持定點、、浮點的操作,用GPU方案,相對來說能達到一個幾倍的加速。
基于FPGA的方案
FPGA對開發人員的要求非常高,首先要對軟件很熟悉,又要非常熟悉硬件,現在有些公司提供的一些解決方案,相當于能夠直接將深度學習的模型導到他們做的FPGA方案上去,然而,他們并不知道內部是如何優化的,整個FPGA方案的成本會非常高。
基于DSP的方案
伴隨著一些大公司如高通、CEVA等廠商的使用,它的出貨量變得非常大,所以單片的成本非常低。DSP可以進行數字信號處理,以圖像來說,它有專門的并行操作可以對圖像進行快速訪問并計算。
純CPU方案
與前面說的四種優化方式相比,它的場景非常大,對于我們來說更多注重的是它優化的方向。因為所有方案里面都是有CPU的,它是一個必不可少的方案,如果在CPU上做的很快,那么在一些硬件、協處理器的情況下,速度會更加提升。
嵌入式人工智能前端設備智能化前景廣闊。嵌入式人工智能硬件+算法一體化的解決方案,以最優的性價比提供給客戶,才是嵌入式視覺解決方案的核心競爭力。