1:FPGA與生產力

 

FPGA被稱為萬能芯片,通過邏輯編程,可以實現基本上所有功能,其具體原理可見《大話FPGA-“萬能的芯片?”》。

 

那么問題來了,所以如果用FPGA加速人工智能,實現深度學習算法,難度大不大?

 

難度很大!

 

如果從AI算法開始,然后從verilog開始編寫,調試,優化,再下載到FPGA中運行,中間需要眾多的人力,物力,沒有個一年半載,很難有收獲。

 

但是,如果有一個FPGA的APP庫,里面有各種人工智能APP,可以下載相應的程序到FPGA中,例如下圖所示:

 

 

有人臉識別的智能相機,缺陷檢測,ReID(行人檢測/行人跟蹤技術),語音識別,多目標人臉識別,智能駕駛輔助等等。

 

這些應用直接編譯下載相應應用到FPGA中,用基于現成的應用進行開發,相對流程就簡化很多,達到“即下即用”的效果。

 

可以很快形成的生產力。

 

即使有定制的需求,也可以迅速評估路線的可行性,在此基礎上二次開發。

 

這個就比直接從verilog編碼開始要更快一些,也效率更高。

 

那這個怎么操作?

 

2:怎么做

 

用FPGA搭建了一個人臉識別系統需要幾步?如果用搭載zynq ultrascale+  FPGA的  KV260??偣灿昧巳剑?/p>

 

第一步:組裝配件:

KV260是一個基于zynq ultrascale+的FPGA系統,內部包括CPU,FPGA,GPU等等資源。

紅色的散熱片下面就是Zynq UltraScale+的芯片。上面有一個四核A53處理器,還有256K LC的邏輯資源的FPGA,屬于“雙劍合璧”的架構。

 

配件包括,

1:電源: 系統供電。

2:SD卡:燒寫操作系統。

3:攝像頭:視頻輸入。

4:USB轉串口線:系統串口輸出。

5:網線:用于連接互聯網,下載智能應用。

6:HDMI線:用于視頻輸出。

 

 

 

然后將這些部件組裝起來。

 

 

第二步:下載應用

1:下載linux系統下載到TF卡里,插入TF卡,上電后linux啟動。

2:連接網線,檢查鏈接性,可以直接ping一下網關,看看是不是連接成功

3:可以上網后,直接選擇安裝相應的應用,就是智能攝像頭,可以人臉識別。

 

下圖是下載安裝應用,點擊下載命令后 ,注意,一定要在root模式下下載,sudo dnf install packagegroup-kv260-smartcam。

 

安裝時間有點長,裝上后,讓子彈飛一會。

 

 

第三步:啟動測試

 

啟動應用開始測試,在linux系統中掛載應用,然后啟動啟動人工智能的應用。

 

sudo smartcam -mipi -W 1920 -H 1080 -r 30 --target dp

 

 

這個和大象關在冰箱里分為幾步有異曲同工之妙!

 

然后,效果怎么樣。

 

3:效果怎么樣?

 

這玩意是這個樣子的。

 

 

我利用這個FPGA系統裝在了一個直播桿,然后配上了一個顯示器,看起了有點像一個基于工業用相機的直播室。

 

有了這個“直播室”,看了一下,沒有美顏效果。直播就算了。

 

看看這玩意AI效果如何?

 

于是給KV260看了一個歐洲杯足球比賽頒獎視頻。

 

為什是歐洲杯頒獎,主要是這個視頻里同時出現的人多,并且畫面一直在動,主要想測試一下,這個系統的處理能力,

 

1:人臉識別的數量。

 

2:處理時延。

 

那種兩三個人的視頻,測試不出這個人工智能芯片的能力。

 

并且畫面一直不動,對于時延也沒有太高的要求。像是小區門禁的那個人臉識別就會感覺明顯延遲。

 

那可以看看KV260能不能識別視頻中多少人臉?

 

 

這個比賽是歐洲杯頒獎的比賽,可以看到,kv260立即就識別到了所有奪冠隊員的面部。

 

這個效率很高,我數了一下,最多時,有22張人臉可以可以同時被識別捕捉到。主力和替補全部都捕捉到了。

 

 

能夠同時捕捉到22張人臉,這個也體現了這個芯片的人臉的識別能力。

 

并且畫面一直在動態切換,具體時延控制不錯,只不過就沒有辦法定量來分析一下。

 

4:系統及原理

 

看完FPGA實現這個系統的效果了,下面我們來點干貨。

 

人工智能芯片系統,需要有哪些部分組成?

 

CPU系統:負責OS運行,系統初始化,數據流控制,信號傳輸,外設管理等等。

 

DPU系統:(Deep Learning Processor Unit,深度學習處理器)負責深度學習算法的加速,是一個智能加速引擎引擎。

 

簡單來說:兩個部分,控制和計算。

 

這個就是經典的CPU+FPGA的方案,很多嵌入式工業領域都用此方案,一般是ARM+FPGA;

 

ARM負責控制管理,各種外設的管理,FPGA負責AI加速

 

而Zynq UltraScale+就是把這兩個做到了一個芯片上,下圖就是這個芯片的架構。

 

 

其主要資源包括:四核CPU A53,一個Mali GPU,還有支持實時CPU,雙核R5F。

 

DPU這個詞,讓人聯想到xilinx收購深鑒科技,這場收購當時在業界引起了很大影響力。

 

當時深鑒科技的核心技術,就是基于FPGA的DPU(Deep Learning Processing Unit)技術,當時,深鑒科技號稱神經網絡壓縮編譯技術,它不僅可以將神經網絡壓縮數十倍而不影響準確度,還可以使用“片上存儲”來存儲深度學習算法模型,減少內存讀取,大幅度減少功耗。

 

現在來看,不知道在Zynq UltraScale+這款芯片上,是不是一脈相承的技術實現,從性能上還是很強的。

 

其主要的工作流程和性能指標如下圖所示:

 

支持11路mipi的攝像頭,11個攝像頭,應該足夠一個車需要用到的攝像頭。

 

反正能夠支持到這么多攝像頭的芯片,我印象中還是最多的。

 

除此之外,最重要的是,這顆芯片FPGA可編程資源非常豐富:256K logic Cell; (logic cell 內部就是LUT和REG )。  其在333Mhz  其配置在可編程邏輯的 深度學習處理器DPU能力達到1.3Tops。

 

 

除了智攝像頭,還有一些其他的應用可以供不同應用選擇

 

例如智能駕駛,語音識別,安防檢測等等。

 

這里重點提一下ADAS(高級駕駛輔助系統)利用安裝于車上的各式各樣的傳感器, 在第一時間收集車內外的環境數據, 進行靜、動態物體的辨識、偵測與追蹤等技術上的處理, 從而能夠讓駕駛者在最快的時間察覺可能發生的危險, 以引起注意和提高安全性的主動安全技術。包括駕駛員疲勞預警和身份識別,人臉識別在乘用車的個性化駕駛艙,以及未來的商業模式都是非常必要的。也有一些原型在做。

 

總結一下:

 

1:處理能力:KV260用了zynq ultrascale+  mpsoc 這顆芯片,內部有四核應用處理器,GPU,實時處理器,以及256K LC的FPGA,硬件資源足夠來處理人工智能方面的應用。

 

2:外設接口:KV260支持11路攝像頭,能夠支持類似汽車輔助設備ADAS ,先進駕駛輔助系統這類應用。

 

3:軟件配套:除了硬件之外,還有很多的軟件套件,例如人臉識別,入侵檢測,自動駕駛等等一些應用,方便二次開發。

 

FPGA通過深度學習可以達到毫秒級別的應用,吞吐量大,時延低,這個可能一個優勢。前面的人臉測試中,同時識別22張人臉,也側面說明了人臉識別的數量很多,延時較低。

 

為什么是22張,是因為找的視頻中也就是22張人臉。

 

當然,這個測試只是提供一個肉眼可以感受的角度。實際的應用可以根據需求進行測試,從測試結果進行評估,從而加速design in的過程。