1:FPGA與生產(chǎn)力
FPGA被稱為萬能芯片,通過邏輯編程,可以實現(xiàn)基本上所有功能,其具體原理可見《大話FPGA-“萬能的芯片?”》。
那么問題來了,所以如果用FPGA加速人工智能,實現(xiàn)深度學習算法,難度大不大?
難度很大!
如果從AI算法開始,然后從verilog開始編寫,調(diào)試,優(yōu)化,再下載到FPGA中運行,中間需要眾多的人力,物力,沒有個一年半載,很難有收獲。
但是,如果有一個FPGA的APP庫,里面有各種人工智能APP,可以下載相應的程序到FPGA中,例如下圖所示:
有人臉識別的智能相機,缺陷檢測,ReID(行人檢測/行人跟蹤技術),語音識別,多目標人臉識別,智能駕駛輔助等等。
這些應用直接編譯下載相應應用到FPGA中,用基于現(xiàn)成的應用進行開發(fā),相對流程就簡化很多,達到“即下即用”的效果。
可以很快形成的生產(chǎn)力。
即使有定制的需求,也可以迅速評估路線的可行性,在此基礎上二次開發(fā)。
這個就比直接從verilog編碼開始要更快一些,也效率更高。
那這個怎么操作?
2:怎么做
用FPGA搭建了一個人臉識別系統(tǒng)需要幾步?如果用搭載zynq ultrascale+ FPGA的 KV260??偣灿昧巳剑?/p>
第一步:組裝配件:
KV260是一個基于zynq ultrascale+的FPGA系統(tǒng),內(nèi)部包括CPU,F(xiàn)PGA,GPU等等資源。
紅色的散熱片下面就是Zynq UltraScale+的芯片。上面有一個四核A53處理器,還有256K LC的邏輯資源的FPGA,屬于“雙劍合璧”的架構。
配件包括,
1:電源: 系統(tǒng)供電。
2:SD卡:燒寫操作系統(tǒng)。
3:攝像頭:視頻輸入。
4:USB轉串口線:系統(tǒng)串口輸出。
5:網(wǎng)線:用于連接互聯(lián)網(wǎng),下載智能應用。
6:HDMI線:用于視頻輸出。
然后將這些部件組裝起來。
第二步:下載應用
1:下載linux系統(tǒng)下載到TF卡里,插入TF卡,上電后linux啟動。
2:連接網(wǎng)線,檢查鏈接性,可以直接ping一下網(wǎng)關,看看是不是連接成功
3:可以上網(wǎng)后,直接選擇安裝相應的應用,就是智能攝像頭,可以人臉識別。
下圖是下載安裝應用,點擊下載命令后 ,注意,一定要在root模式下下載,sudo dnf install packagegroup-kv260-smartcam。
安裝時間有點長,裝上后,讓子彈飛一會。
第三步:啟動測試
啟動應用開始測試,在linux系統(tǒng)中掛載應用,然后啟動啟動人工智能的應用。
sudo smartcam -mipi -W 1920 -H 1080 -r 30 --target dp
這個和大象關在冰箱里分為幾步有異曲同工之妙!
然后,效果怎么樣。
3:效果怎么樣?
這玩意是這個樣子的。
我利用這個FPGA系統(tǒng)裝在了一個直播桿,然后配上了一個顯示器,看起了有點像一個基于工業(yè)用相機的直播室。
有了這個“直播室”,看了一下,沒有美顏效果。直播就算了。
看看這玩意AI效果如何?
于是給KV260看了一個歐洲杯足球比賽頒獎視頻。
為什是歐洲杯頒獎,主要是這個視頻里同時出現(xiàn)的人多,并且畫面一直在動,主要想測試一下,這個系統(tǒng)的處理能力,
1:人臉識別的數(shù)量。
2:處理時延。
那種兩三個人的視頻,測試不出這個人工智能芯片的能力。
并且畫面一直不動,對于時延也沒有太高的要求。像是小區(qū)門禁的那個人臉識別就會感覺明顯延遲。
那可以看看KV260能不能識別視頻中多少人臉?
這個比賽是歐洲杯頒獎的比賽,可以看到,kv260立即就識別到了所有奪冠隊員的面部。
這個效率很高,我數(shù)了一下,最多時,有22張人臉可以可以同時被識別捕捉到。主力和替補全部都捕捉到了。
能夠同時捕捉到22張人臉,這個也體現(xiàn)了這個芯片的人臉的識別能力。
并且畫面一直在動態(tài)切換,具體時延控制不錯,只不過就沒有辦法定量來分析一下。
4:系統(tǒng)及原理
看完FPGA實現(xiàn)這個系統(tǒng)的效果了,下面我們來點干貨。
人工智能芯片系統(tǒng),需要有哪些部分組成?
CPU系統(tǒng):負責OS運行,系統(tǒng)初始化,數(shù)據(jù)流控制,信號傳輸,外設管理等等。
DPU系統(tǒng):(Deep Learning Processor Unit,深度學習處理器)負責深度學習算法的加速,是一個智能加速引擎引擎。
簡單來說:兩個部分,控制和計算。
這個就是經(jīng)典的CPU+FPGA的方案,很多嵌入式工業(yè)領域都用此方案,一般是ARM+FPGA;
ARM負責控制管理,各種外設的管理,F(xiàn)PGA負責AI加速
而Zynq UltraScale+就是把這兩個做到了一個芯片上,下圖就是這個芯片的架構。
其主要資源包括:四核CPU A53,一個Mali GPU,還有支持實時CPU,雙核R5F。
DPU這個詞,讓人聯(lián)想到xilinx收購深鑒科技,這場收購當時在業(yè)界引起了很大影響力。
當時深鑒科技的核心技術,就是基于FPGA的DPU(Deep Learning Processing Unit)技術,當時,深鑒科技號稱神經(jīng)網(wǎng)絡壓縮編譯技術,它不僅可以將神經(jīng)網(wǎng)絡壓縮數(shù)十倍而不影響準確度,還可以使用“片上存儲”來存儲深度學習算法模型,減少內(nèi)存讀取,大幅度減少功耗。
現(xiàn)在來看,不知道在Zynq UltraScale+這款芯片上,是不是一脈相承的技術實現(xiàn),從性能上還是很強的。
其主要的工作流程和性能指標如下圖所示:
支持11路mipi的攝像頭,11個攝像頭,應該足夠一個車需要用到的攝像頭。
反正能夠支持到這么多攝像頭的芯片,我印象中還是最多的。
除此之外,最重要的是,這顆芯片F(xiàn)PGA可編程資源非常豐富:256K logic Cell; (logic cell 內(nèi)部就是LUT和REG )。 其在333Mhz 其配置在可編程邏輯的 深度學習處理器DPU能力達到1.3Tops。
除了智攝像頭,還有一些其他的應用可以供不同應用選擇
例如智能駕駛,語音識別,安防檢測等等。
這里重點提一下ADAS(高級駕駛輔助系統(tǒng))利用安裝于車上的各式各樣的傳感器, 在第一時間收集車內(nèi)外的環(huán)境數(shù)據(jù), 進行靜、動態(tài)物體的辨識、偵測與追蹤等技術上的處理, 從而能夠讓駕駛者在最快的時間察覺可能發(fā)生的危險, 以引起注意和提高安全性的主動安全技術。包括駕駛員疲勞預警和身份識別,人臉識別在乘用車的個性化駕駛艙,以及未來的商業(yè)模式都是非常必要的。也有一些原型在做。
總結一下:
1:處理能力:KV260用了zynq ultrascale+ mpsoc 這顆芯片,內(nèi)部有四核應用處理器,GPU,實時處理器,以及256K LC的FPGA,硬件資源足夠來處理人工智能方面的應用。
2:外設接口:KV260支持11路攝像頭,能夠支持類似汽車輔助設備ADAS ,先進駕駛輔助系統(tǒng)這類應用。
3:軟件配套:除了硬件之外,還有很多的軟件套件,例如人臉識別,入侵檢測,自動駕駛等等一些應用,方便二次開發(fā)。
FPGA通過深度學習可以達到毫秒級別的應用,吞吐量大,時延低,這個可能一個優(yōu)勢。前面的人臉測試中,同時識別22張人臉,也側面說明了人臉識別的數(shù)量很多,延時較低。
為什么是22張,是因為找的視頻中也就是22張人臉。
當然,這個測試只是提供一個肉眼可以感受的角度。實際的應用可以根據(jù)需求進行測試,從測試結果進行評估,從而加速design in的過程。