999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA加速的低功耗的MobileNetV2網絡識別系統

2023-06-02 06:48:46孫小堅林瑞全方子卿
計算機測量與控制 2023年5期

孫小堅,林瑞全,方子卿,馬 馳

(福州大學 電氣工程與自動化學院,福州 350000)

0 引言

卷積神經網絡善于從海量數據中提取目標的特征,由于其出色的分類識別能力,已被廣泛的應用于圖像分類、語音識別、醫療診斷、國防安全等領域。龐大的參數量使得卷積神經網絡部署在資源有限的嵌入式設備上存在困難。輕量級網絡的誕生,很大程度上降低了網絡的參數量,適合部署在小容量的嵌入式設備上,應用于目標分類的場景[1-3],輕量級網絡如MobileNetV2[4],采用深度可分離的卷積結構,在減少了網絡參數量的同時又能保證識別精度。

目前將CNN部署在嵌入式設備上主要有幾種方式,如處理器CPU、GPU、專用集成電路(ASIC,application specific integrated circuit)和現場可編程門陣列(FPGA,field programmable gate array)等。將CNN部署于傳統的處理器CPU上,會帶來高延遲。若是使用并行計算GPU會存在較大的功耗。使用專用的集成電路ASIC雖然性能好,但是成本較高。FPGA具有實時性、低功耗、可重構的優點,特別適用于作為CNN的硬件加速器。將AI領域主流的CNN網絡部署在FPGA上的工作仍然面臨著內存帶寬不足和計算并行度低的限制。由于FPGA片內存儲資源有限文獻[5]將卷積計算中間緩存放在了片外DDR上,文獻[6]則把DDR當做權重數據的存儲區,這樣雖能緩解片內存儲的壓力,但是片外的DDR存在帶寬的限制,同時也增加了額外的功耗。而文獻[7-8]將參數均存在片內存儲資源上,無需訪問片外DDR,雖然降低了系統功耗,但是需要足夠大的片內存儲資源。在探索提升計算并行度的方案上,文獻[9-11]采用單一的計算結構,不同的卷積層復用該計算結構,可以將大部分資源分配給該計算結構,最大程度提升該計算陣列的并行度,但是難以適應不同卷積的計算方式,導致效率低下。文獻[12-13]以全流水線的形式將CNN網絡展開,層與層之間流水計算,每層分別占用不同的資源,資源消耗較大,適用于淺層次的網絡,無法部署深層次的網絡。文獻[14]綜合了單一計算結構與全流水線結構的優點,針對MobileNetV2網絡提出了一種半流式結構,該結構只針對專用的CNN設計,結構固定,通用性不強。

針對上述問題,本文采用量化感知訓練的方式在量化的過程中對模型進行二次訓練將模型精度由靜態量化的73.33%提升到了93.89%,壓縮模型尺寸為原來的1/4,用8位定點整數表示權重與緩存。將壓縮后的權重參數全部存放在片內,克服了片外存儲帶寬限制的同時,降低了功耗,硬件加速部分功耗僅為6.13 W;并且優化了存儲器的存儲結構與數據的讀取方式,根據不同層的卷積計算方式與并行度設計權重和輸入數據在BRAM中的排列方式,進一步節約了內存,卷積運算中對輸入圖片數據進行復用減少了對內存的訪問次數;提出了一種層內、層間協同配合的流水線結構,在卷積層內,相鄰PW層間流水線展開,采用十二級流水線的設計方法,極大的提升了網絡的實時性,在短暫延時后,能夠實現每0.64 ms推斷一張圖片。通過實驗分析與對比,本文的方法在一定程度上解決了將CNN網絡部署在FPGA上時內存帶寬不足和計算并行度低所帶來的限制,同時還降低了功耗。

1 輕量級網絡MobileNetV2及其量化處理

1.1 輕量級網絡MobileNetV2

MobileNetV2由gogle團隊于2018年提出,采用深度可分離卷積,即將一個標準的卷積層拆分為逐層卷積(DW,depthwise convolution)與逐點卷積(PW,pointwise convolution)操作。使得網絡的參數量與計算量大為降低,但是卻能保持較高的準確率,因此被廣泛的應用于小容量嵌入式應用場景。MobileNetV2的網絡結構如表1所示,其中t代表著縮放系數,c代表輸出通道數,n代表重復次數,s代表著步長。

表1 MobileNetV2網絡結構

與MobileNetV1[15]相比MobileNetV2參數更少,準確度卻更高,改進的地方在于它采用了倒殘差瓶頸模塊(Inverted residual block)先用1×1 conv 將k維網絡進行升維到tk維,后通過1×1 DW層進行特征的提取,最后由1×1 conv操作重新降低為k維。倒殘差瓶頸模塊輸出部分借鑒了RseNet[16]的short-cut操作,當中間DW層進行下采樣時(stride=2)時,直接輸出,當中間DW層不進行下采樣(stride=1)時,瓶頸模塊輸入與輸出相加,具體操作如圖1所示。

圖1 倒殘差瓶頸模塊具體操作

1.2 網絡的量化處理

通常PC端保存訓練好的卷積神經網絡模型參數為32位的浮點數。MobileNetV2網絡的參數量為3.4 M,FPGA的片內BRAM資源十分的有限,如果網絡的參數均采用32浮點數表示存入FPGA中,FPGA內存將嚴重不足。這就需要對網絡模型進行量化處理,壓縮模型參數,緩解FPGA內存不足的壓力。量化方式有靜態量化、動態量化、量化感知訓練3種方式,前兩種方法是針對訓練好的模型進行量化,而量化感知訓練則會對模型進行二次訓練。小型的網絡,如果采用前兩種量化方式會帶來較大的精度損失[17],而量化感知訓練不僅可以壓縮模型參數,且模型的精度損失還較小,與此同時相較于浮點數運算,FPGA更加擅長處理定點數運算。因此本文采用量化感知訓練的方式,將32位浮點數參數用INT8型表示。

假設卷積的權重參數為w,偏置為b,輸入為x,輸出激活值為a,卷積運算可以表示為下式所示:

(1)

用Xfloat表示浮點實數,q表示量化后的定點數,S為量化的尺度因子,Z則表示0經過量化后對應的數值。則浮點數與定點數的轉化公式如公式(2)與公式(3)所示:

Xfloat=S(q-Z)

(2)

(3)

將公式(1)中的w、b、x分別用量化后的定點數表示,同時偏置的量化尺度因子取為Sb=SwSx就得到了公式(4)。

(4)

量化感知訓練在對網絡進行二次訓練的過程中將式(2)加入到了它的前向傳播的訓練過程,卷積計算時將浮點數轉化為定點數。計算完成后進行反量化操作,通過式(3)將定點數重新轉化為浮點數。在網絡訓練的反向傳播過程中則按浮點數的計算方式進行,以此來提高模型對量化效應的適應度,最終提高量化后模型的精度每一層的量化操作按照式(5)進行

(5)

其中:r代表要量化的實數值,a,b是該實數的量化范圍,即該層Tensor里的最小值與最大值,n則代表量化級數,若最終需量化為8位則n=28=256。

在PyTorch框架下對東北大學發布的熱軋帶鋼表面缺陷數據集進行試驗測試,輸入圖片尺寸為96×96×3,運用靜態量化將模型參數壓縮至INT8型后缺陷分類正確率下降到了73.33%,采用量化感知訓練方式將模型參數壓縮至INT8型的同時進行再次訓練,在未采用按通道(per-channel)優化的情況下8輪EPOCH后,正確率可以達到93.89%,如圖2所示。

圖2 熱軋帶鋼表面缺陷分類正確率

未量化前浮點數模型的精度為96.10%,量化后精度損失為2.21%,滿足精度要求。

2 MobileNetV2網絡識別系統的硬件設計

2.1 系統整體結構

系統的整體架構如圖3所示,由Host上位機、硬件加速模塊(Accelerator)、顯示模塊(LCD)組成。其中網絡的權重,經量化后根據DW、PW層的并行度以及數據讀取規則進行有序排列,提前寫入On-chip Memory中。上位機只負責通過PCIE總線傳輸輸入圖片數據到Input-buffer中。硬件加速部分在監測到圖片數據已經加載完成后,從On-chip Memory讀入權重,即開始前向推理加速。硬件加速模塊對應著MobileNetV2網絡結構進行部署,主要由Conv2d層、DW層、PW層、池化層(Pooling Layer)組成。最終分類結果顯示在Virtex-7 FPGA掛載的LCD上。

圖3 MobileNetV2網絡識別系統整體結構

2.2 存儲器與數據讀取的優化策略

針對片內資源短缺的問題,為了進一步的節約片內BRAM的存儲資源,本文提出了一種存儲器與數據讀取的優化策略,優化了權重與緩存的存儲結構以及數據的讀取方式。

將一個最基本的卷積運算展開,要做到多通道并行,最簡單的方法就是將每一路通道上的輸入圖片與權重數據,分別用一個BRAM存儲。這樣做程序實現簡單,但由于MobileNetV2網絡輸入通道數量最多可達1 280,這樣的實現方法會造成片內BRAM資源的嚴重浪費,本文根據FPGA片內BRAM資源的構成特點,采用一個地址拼接多個通道數據的方式將卷積計算合理的在輸入、輸出通道進行展開,根據卷積計算的特點,上一層卷積的輸出通道并行度需與下一層輸入通道的并行度保持一致,且該數值應為MobileNetV2網絡每層通道數的公因數,18 K BRAM空間按512×36進行配置則每層網絡中權重消耗的18 K BRAM資源與輸入通道、輸出通道并行度的關系如式(6)所示:

(6)

其中:Dataw表示權重數據在BRAM中每個地址的數據位寬,Pin、Pout則表示卷積運算輸入通道與輸出通道設置的并行度,nw代表量化的位寬,由于采用的是8位量化所以這里的nw=8。Depth表示BRAM的數據深度,Cin、Cout為本層網絡的輸入與輸出通道數,卷積核的尺寸大小為K*K。最終可由Depth與Dataw的數值大小確定本層網絡消耗的18 K BRAM資源數。結合Virtex-7 FPGA片內資源情況通過計算可知當每層的Pin、Pout都取4時,在兼顧網絡推理速度時能夠留有一定的存儲裕度,為了進一步提升處理速度,在MobileNetV2網絡計算密集的層增大了輸入與輸出通道的并行度。每層網絡權重消耗的BRAM資源數值情況與并行度如表2所示。

表2 MobileNetV2每層網絡存儲資源消耗情況

以PW層為例,數據的存儲結構與讀取方式如圖4所示。假設輸入圖片的尺寸為Map(k×k×n),權重則為Weight(n×m)。在PW層設計的并行度為16,即在一個時鐘周期完成16組的1×1的逐點卷積運算。需要在一個周期內讀入4個通道的輸入數據,ram里的每個地址存入由4個通道拼接成的32位寬的數據,同理Weight-rom中的每個地址拼接了4個通道的各4個權重,即一個地址存入128位寬的數據。

圖4 數據的存儲結構與讀取方式

數據的讀取方式按輸入圖片尺寸大小進行地址跳轉讀取,如輸入圖片的尺寸為(k×k×n)則每時鐘周期按addr0、addrk^2、…addr(n-1)k^2進行跳轉讀取。頻繁的數據訪問會帶來額外的功耗,因此在卷積計算過程中應加強數據的復用來減少訪問的次數,降低功耗。可采用多個卷積核共享輸入圖片數據的方法減少對內存的訪問次數[10],具體實現如下:在第一個CLK讀入層間緩存中的M11~M14,同時讀入4個通道的各4個權重值,W11~W14、W21~W24、W31~W34、W41~W44進行相乘后各自累加,n個通道累加完畢后,同時輸出4個輸出通道的同一位置的數,拼接后存入一個地址。

2.3 量化模塊的硬件實現

量化模塊依據上文公式(4)進行實現,卷積計算累加的結果,需要乘上對應的量化乘數,量化乘數為浮點數的表示形式,要變成定點數的表示形式則需先進行放大,找出誤差合適的M0乘數。使得乘法在定點數上進行,乘法結果通過右移位進行縮小還原,最終重新截成int8型數據輸出,整個過程流水線排開,具體實現過程如圖5所示。

圖5 量化模塊的硬件結構

2.4 DW層設計與實現

DW卷積不同于一般的常規卷積,它的一個卷積核只負責一個通道,輸入圖片的通道數經過DW層后,通道數不變,在DW層并行度上,按4輸入通道與卷積核內并行相結合的策略,DW層的卷積過程如圖6所示。

圖6 DW層并行結構

DW層硬件架構如圖7所示,在并行計算上,將卷積計算從輸入通道展開。每個輸入通道將3×3的窗口數據分別送入每組由9個乘法器組成的乘法陣列中,在下一個周期通過加法樹將乘結果累加起來,存入32位的Sum寄存器中,經過量化單元量化及Relu后,截成8位的整型數據。最后對每個通道的卷積結果進行拼接,存入BRAM的地址中。

圖7 DW層的硬件架構

2.5 PW層設計與實現

PW為點卷積操作,用于對上一層的輸出map在深度方向進行加權組合。在PW層采取了4輸入通道與4輸出通道相結合的并行方式。在一個CLK同時讀取4輸入通道同一個位置的數據與4組通道上的權重進行計算,依次按輸入通道方向讀取輸入Map數據,經過n個CLK后遍歷整個輸入通道,輸出4個輸出通道同一位置的數據。PW層的并行設計如圖8所示。

圖8 PW層并行結構

每個時鐘周期輸入由4個輸入通道拼接而成的32位數據進入乘累加陣列,當前4通道累加結果存入Sum1_1寄存器中與先前通道的累加結果Sum1相加,1×1的點卷積將輸入通道遍歷后,輸出最終的累加結果給量化模塊,Relu操作后輸出8位整型數,最后將4個輸出通道結果拼接成32位數存入Bram中,PW層的硬件實現如圖9所示。

圖9 PW層的硬件架構

2.6 層內層間協同配合的流水線結構

構成MobileNetV2網絡的卷積層類型為標準卷積層、DW卷積層、PW卷積層,其中標準卷積層的計算量可由公式(7)得到,DW卷積層、PW卷積層的計算量可由公式(8)、(9)計算得出。

Osc=h*w*Cin*Cout*K*K

(7)

Odw=h*w*Cin*K*K

(8)

Opw=h*w*Cin*Cout

(9)

h和w分別為輸出特征圖的行數與列數,Cin和Cout為輸入與輸出的通道數,K為卷積核的尺寸。

當輸入為96*96*3時可得MobileNetV2網絡各部分的計算量如表3所示。PW層的計算量占到了總網絡計算量的89.79%,因此在相鄰兩個PW層間設計層間流水計算結構可以大幅度提升網絡的實時性。

表3 MobileNetV2網絡各部分計算量

本文在MobileNetV2網絡相鄰的PW層內及層間以流水線的方式運行計算,流水結構如圖10所示。數據從PW1層輸入直到PW2層結果輸出,一共采用了十二級流水線的設計方式。

圖10 十二級流水線

在相鄰的PW層間流水線計算結構設計如圖11所示,點卷積操作只需單個點的像素就能進行卷積操作,但是完整輸出一次操作結果需要遍歷整個輸入通道。PW1的權重為(m,n)的二維數組形式,這里m為輸出通道數,n為輸入通道數。PW層并行度設置為k=4,則PW1層在一個周期讀取前一層輸出的4張圖片的4個數據后,同時讀取4組n輸入通道上的4個數,即4×4個權重數據,進入PW1層計算。在下一個周期PW1模塊讀取下一組輸入數據后,權重則按輸入通道的方向讀取下一組4×4個權重數據,以此類推遍歷整個輸入通道完成一組運算。PW1層的輸出圖片尺寸為(y,y,m),當遍歷完整個輸出通道,m張圖片的首位數據全部寫入緩存時,PW1層發給PW2一個start信號,PW2開始讀入數據進行運算,PW2層的權重讀取順序與PW1層一致。點卷積運算不改變輸入圖片的尺寸大小,由于PW2的輸入、輸出通道數的乘積大于PW1,即x×m≥m×n,所以PW2遍歷完整個輸入、輸出通道的時間要大于等于PW1。PW2只需延遲等待PW1層寫入緩存的m張圖片的首位數據后啟動,PW1的寫和PW2讀就不會發生沖突,兩層就能以流水的計算方式同時運行計算。

圖11 層間流水計算結構

3 結果分析

3.1 實驗環境

本文采用Xilinx Virtex-7 VC707開發板作為實驗平臺,該開發板芯片具有485 760個邏輯單元、2 800 DSP、37.08 MB的Block RAM,所用開發工具為Vivado 2018.3,采用Verilog語言進行編程,PC端網絡的訓練與量化采用了基于Python的PyTorch框架,CPU型號為Inter Core i5 -6200U,主頻為2.3 GHz。下面討論實現的效果及性能比較。

3.2 資源與能耗

主要資源消耗情況如表4所示,其中LUT資源表示查找表,BRAM代表片內存儲資源,FF為觸發器資源,DSP為計算單元。LUT、FF、DSP資源主要用在了卷積功能模塊以及數據流的實現上,消耗量均不大。由于本文為了減少片外DDR的訪問降低系統功耗,將所有的權重及層間緩存都布置在了片內BRAM中,所以片內BRAM資源消耗較大。

表4 資源占用情況

整個系統的能耗如圖12所示,在200 MHz時鐘下整體功耗為8.24 W,扣除數據傳輸接口PCIE功耗2.108 W,整個硬件加速部分的功耗僅為6.13 W。

圖12 系統功耗

表5列出了本文實現與CPU、GPU平臺性能的對比。200 MHz時鐘下本文的硬件實處理單張圖片僅耗時0.64 ms,能耗比為27.74 GOP/s/W 是CPU平臺的92倍,GPU平臺的25倍。可見將CNN部署在FPGA上無論從推理時間還是功耗上都具有極大的優勢。

表5 不同平臺性能對比

表6列出了在不同的FPGA平臺實現CNN的性能對比,可以看出本文較文獻[14]、[19]和文獻[20]在計算性能上存在一定的優勢,雖然計算性能上較文獻[18]還有一定差距,但是在功耗上優勢明顯,能效比(Gop/s/W)較高。在追求高計算性能的同時能夠兼顧功耗,達到計算性能與功耗兩者的平衡,更加適用于實際的應用場景。

表6 不同FPGA實現性能對比

4 結束語

本文提出的基于FPGA加速的低功耗的MobileNetV2網絡識別系統,將權重和緩存均放入片內存儲,克服了片外存儲帶來的帶寬限制與額外的功耗,小型網絡量化會帶來較大的精度損失,因此采用量化感知訓練的方式進行二次訓練提高網絡的精度。為了進一步節約片內存儲資源,優化了數據存儲結構,復用了輸入特征圖。在相鄰的PW卷積層內與層間以流水線的方式展開,極大的提升了網絡的實時性。

本文設計的MobileNetV2網絡雖然將權重和層間緩存均放入片內存儲,在一定程度上克服了片外存儲帶來的帶寬限制,但是受限于片內BRAM資源,每層的并行度并不能設計的足夠高,如何在有限的片內BRAM資源下,進一步提高網絡的并行度是需要在未來的研究中考慮的問題。

主站蜘蛛池模板: 成人在线综合| 国产亚洲精品无码专| 色噜噜狠狠狠综合曰曰曰| 国产xxxxx免费视频| 亚洲中文无码av永久伊人| 亚洲黄色高清| 精品视频在线观看你懂的一区| 欧美激情视频二区| 亚洲日韩AV无码一区二区三区人 | 成人在线欧美| 777午夜精品电影免费看| 欲色天天综合网| 亚洲国产无码有码| 高清无码手机在线观看| 天天激情综合| 九九这里只有精品视频| P尤物久久99国产综合精品| 亚洲av色吊丝无码| 国产午夜在线观看视频| 大学生久久香蕉国产线观看 | 欧洲高清无码在线| 天天视频在线91频| 亚洲乱强伦| 亚洲国产系列| 日本AⅤ精品一区二区三区日| 欧美一区日韩一区中文字幕页| 精品少妇三级亚洲| 91精品小视频| 日本国产一区在线观看| 久久伊伊香蕉综合精品| 人妻夜夜爽天天爽| 精品国产网| 日韩 欧美 小说 综合网 另类| 国产内射一区亚洲| 美女无遮挡拍拍拍免费视频| 中文字幕不卡免费高清视频| 久久久精品无码一二三区| 国产成人久久777777| 国产亚洲日韩av在线| 精品少妇人妻av无码久久| 99久久精品国产自免费| 美女毛片在线| 精品国产成人av免费| 国产精品亚洲综合久久小说| 国产女人在线| 91精品国产91久久久久久三级| 久久久精品国产SM调教网站| 国产剧情无码视频在线观看| 99久久国产综合精品2023| 欧美色综合网站| 国产人免费人成免费视频| 国产欧美另类| 亚洲日韩AV无码精品| 四虎国产精品永久一区| 五月婷婷欧美| 欧美性精品| 午夜人性色福利无码视频在线观看| 夜精品a一区二区三区| 亚洲 欧美 偷自乱 图片 | 91精品专区国产盗摄| 久久久噜噜噜| 九九久久精品国产av片囯产区| 欧美α片免费观看| 日韩在线观看网站| 国产91全国探花系列在线播放| 香蕉eeww99国产在线观看| 欧美精品H在线播放| 亚洲欧美日本国产综合在线| 亚洲精品无码专区在线观看 | 三区在线视频| www成人国产在线观看网站| 青青操国产| 日本不卡在线| 天堂在线视频精品| 欧美成人午夜视频| 高清无码一本到东京热| 青草视频久久| 毛片a级毛片免费观看免下载| 亚洲Av激情网五月天| 久久久久亚洲av成人网人人软件| 国产99视频精品免费观看9e| 99999久久久久久亚洲|