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

基于FPGA的卷積神經網絡定點加速

2020-10-18 12:57:00雷小康尹志剛趙瑞蓮
計算機應用 2020年10期
關鍵詞:方法模型

雷小康,尹志剛,趙瑞蓮

(1.北京化工大學信息科學與技術學院,北京 100029;2.中國科學院自動化研究所,北京 100190)

(*通信作者電子郵箱zhigang.yin@ia.ac.cn)

0 引言

近年來,人工神經網絡在日常生活中的應用越來越廣泛,卷積神經網絡(Convolutional Neural Network,CNN)是一種源自人工神經網絡的機器學習算法,它簡化了傳統識別算法中復雜的特征提取和數據重建的過程,在視頻監控、機器視覺、圖像搜索、模式識別等領域得到越來越廣泛的應用。

隨著深度學習的普及和Caffe、Tensorflow、Torch 等深度學習框架的成熟,卷積神經網絡模型的識別精度越來越高。比較有名的有:LeNet-5[1]手寫數字識別卷積神經網絡,精度達99%以上;AlexNet[2]模型和VGG-16[3]模型的提出突破了傳統圖像識別的精度;GooLeNet[4]和ResNet[5]推動了卷積神經網絡的應用,但是卷積神經網絡參數也隨之越來越多,龐大的計算量導致CNN 模型很難移植到手機端或嵌入式芯片中。因此,如何在保證卷積神經網絡模型精度的前提下,對深度卷積神經網絡進行壓縮和加速,并在嵌入式設備上部署,已成為一個重要的研究課題。

早期有學者提出了一些CNN 模型壓縮方法,如:Denil等[6]使用低秩分解的方法減少了深層網絡模型的動態參數數量;Sainath 等[7]研究了深度神經網絡中最終加權層的低階矩陣分解方法以進行聲學建模。但是低秩分解方法計算成本高昂,并且需要大量的重新訓練來達到收斂。自2016 年以來Han 等[8-10]提出通過設定閾值來修剪權值參數,結合K-Means聚類和霍夫曼編碼進一步壓縮網絡,達到網絡稀疏化的目的;Iandola 等[11]提出Fire Module 模型結構,用更小的卷積核代替較大的卷積核,通過減少參數數量進行模型壓縮。這兩種方法雖然減少了網絡參數,但是卷積計算仍然采用浮點數卷積運算,計算復雜度并沒有降低。

Gysel[12]提出一種對卷積神經網絡定點化仿真的工具Ristretto,將浮點數仿真表示為定點數,采用一系列CNN 模型定點化方法,研究不同定點化模型與精度損失之間的關系;Rajasegaran 等[13]提出膠囊網絡,采用3D 動態路由卷積算法,雖然一定程度上減少了參數數量,但是CNN 模型參數依然使用浮點數存儲,卷積計算采用浮點數卷積運算,模型參數的存儲大小不變,無法在嵌入式硬件上實現。Zhao 等[14-16]提出基于現場可編程門陣列(Field Programmable Gate Array,FPGA)的卷積神經網絡加速方法,將CNN 參數定點量化,但是沒有考慮成本較低的硬件資源的限制。

FPGA 是一種集成電路,包含大量的定點計算單元,與圖形處理器(Graphics Processing Unit,GPU)相比,FPGA 具有低功耗低成本的特點,并且在大多數情況下能達到GPU 相近的加速效果。

綜合上述研究,本文針對傳統浮點數卷積計算復雜度高、浮點模型占用存儲空間大以及運行速度慢的問題,提出一種基于FPGA 的優化定點卷積計算方法。本文的主要工作包括以下幾個方面:

1)本文通過設計動態定點量化方法,將浮點CNN 模型的權值參數和各層特征圖參數動態量化為定點模型;

2)考慮數據的存儲方式及卷積核的特點,將參數量化為7-bit,設計參數復用和流水線卷積計算方法,在精度損失很小的情況下,卷積計算速度加速比達到18.69。

1 卷積神經網絡模型參數預處理

為提高訓練結果的準確性,卷積神經網絡在訓練過程中一般會使用多種優化方法,但是,在模型訓練完成之后的前向推理過程,預先對卷積神經網絡模型參數進行處理,可以減少前向推理的計算量,有利于對模型定點量化,提高運算速度。

1.1 卷積神經網絡

卷積神經網絡一般包含輸入層、卷積層、激活層和全連接層。本文采用的CNN 模型包括輸入和權值參數的卷積計算、批量歸一化、激活層和池化層,最后一層使用YOLO[17]層檢測目標的坐標位置。

卷積計算本質上是大量數據的乘累加操作,公式如下:

其中:m為輸入特征圖個數;n為卷積計算后輸出特征圖個數;為第l層的第j個特征圖;wij為第i通道的第j個權值參數矩陣。

目前大多數CNN 模型在訓練時都會在每個卷積層后面增加批量歸一化(Batch Normalization,BN)層[18]。BN 層用于將數據歸一化,可以有效解決梯度爆炸問題,加速網絡收斂,并且可以解決過擬合的問題,一般放在卷積層之后,計算公式如下:

其中:γ為縮放因子;μ為均值;σ2為方差;φ為很小的正數,本文取值為10-6;β為偏置;為式(1)中卷積計算結果;為經過BN計算后的結果。

激活層本文采用ReLU 函數作為激活函數,計算公式如下:

本文池化層使用最大值池化。

1.2 權值參數預處理

BN 層在訓練時起到了積極作用,但是會導致在網絡前向推理時多了一層運算,占用了更多的計算資源,在一定程度上會降低運算速度。因此,本文將BN 層的參數合并到卷積層的權值參數中,來提升模型前向推理的計算速度。依據式(1)~(2)可得:

展開后得到:

經過變換,卷積計算和BN 計算由式(1)~(2)轉化為式(6),每一次的卷積計算都減少了開方和除法操作,一定程度上可以加速卷積計算。

2 CNN模型參數定點化優化方法

參數預處理將卷積神經網絡簡化為只包含卷積層、池化層和激活層,主要計算量在卷積層,本文針通過對卷積層的權值和輸入特征參數定點量化,將卷積層的浮點卷積計算轉換為高效的定點卷積計算,提高運算速度。

2.1 權值參數定點化

在FPGA 中浮點運算相較于定點運算要耗費數倍的資源和時間,統計不同網絡模型權值參數的分布可以發現,不同CNN 模型的權值大致對稱分布在零值兩側,且不同卷積層的權值參數具有顯著的動態范圍,在對其定點量化[12]時,若將所有層的參數量化為同一個范圍,會造成較大的精度損失。

本文設計動態指數定點量化的方式對權值參數進行量化,在對每一層參數進行量化時,將每層參數分組為具有指數為常數fl的組中,分配給小數部分的位數在該組內是恒定的,但與其他組相比是不同的。每個網絡層分為三組,分別用于層輸入、權重、層輸出,可以更好地覆蓋每層輸入參數和權重參數的動態范圍。

圖1 權值參數動態定點量化Fig.1 Dynamic fixed-point quantization of weight parameters

動態定點量化計算公式如式(7)所示:

其中:B是量化的位寬長度;s是符號位;fl是不同卷積層的量化指數位長度;是定點數的尾數部分。

卷積計算時使用定點化后的CNN 模型,卷積計算轉化為定點數的尾數部分進行乘累加運算,將運算的結果使用每層的量化尺度再進行量化,之后參與下一層的卷積計算,依此類推,直到完成所有的卷積計算。

2.2 輸入參數定點化

在對輸入層數據量化時,由于每次傳入的圖片數據不一樣,每一層計算的輸出差異很大,因此每次的輸入不能直接確定量化范圍。卷積計算時,每層的輸入都計算量化位寬會增加前向推理運算時間。為了減少計算量并且保證精度損失不大,本文采用Kullback-Leibler(KL)散度來計算輸入參數定點化的尺度[19]。

首先構建一種由32-bit 數據向n-bit 定點數的映射關系,該映射中的邊界并不是兩種數據類型的最大值(圖2(a)),而是設置一個閾值T(圖2(b)),將這個閾值與n-bit 定點數的最大值(例如8-bit 定點數最大為127)構建映射關系,計算輸入尺度fl_in。

確定這種映射關系的閾值T和尺度采用KL 散度。不同的網絡閾值T和每層的尺度是不同的,32-bit 浮點數映射到n-bit 定點數相當于重新編碼信息,在選擇閾值T和尺度時應盡量保證減少信息的丟失,設置一個矯正數據集來進行輸入尺度的選取,計算最小化KL 散度來確定最佳尺度,如式(8)所示:

其中:P[x]和Q[x]是兩個離散概率分布;x為量化到不同位寬長度的參數個數。

當式(8)中KL 取最小值時,得到閾值T,通過式(9)計算得出每層參數的尺度fl_in:

圖2 輸入定點化閾值選擇策略Fig.2 Fixed-point threshold selection strategy of inputs

3 基于FPGA的定點化CNN加速設計

針對第2 章提出的CNN 定點化方法,考慮Arm 處理器與FPGA 之間的交互,設計了基于FPGA 的CNN 加速計算模型,如圖3 所示。本文提出的定點計算模型主要分為五個模塊,分別為參數量化模塊、參數加載模塊、輸入模塊、卷積計算模塊和輸出模塊。

圖3 定點計算模型Fig.3 Fixed-point computation model

3.1 參數量化

參數量化模塊是預先計算定點CNN 模型,將定點后的參數存儲在文件中,卷積計算時,直接使用定點化后的參數文件。該模塊由三部分構成:第一部分是卷積核(權值參數)經過量化器進行量化,量化方法使用2.1 節中的方法,計算出n-bit權值參數以及每層參數的尺度fl_w;第二部分是使用2.2節中的方法確定輸入量化尺度fl_in,經過矯正數據集(k張圖片)計算出fl_in;第三部分使用2.1 節中的方法對偏置進行int-32量化,得到定點化后的偏置。根據fl_w和fl_in計算每層整體尺度fl,計算方法如式(10)所示:

其中:l指第l層卷積。

最后將定點化后的權值參數、尺度fl以及偏置存儲在文件中,得到定點化后的CNN模型。

3.2 參數加載

在卷積運算時,需要將定點化后的CNN 模型參數文件加載到FPGA 內部存儲器Block-RAM 中。本文使用vivado HLS工具設計讀取參數文件的接口,使用AXI(Advanced eXtensible Interface)高速總線接口,如圖4所示。

圖4 數據加載接口設計Fig.4 Data loading interface design

首先ARM 處理器將參數文件中的參數讀取到雙倍數據率同步動態隨機存取存儲器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR)中,再將輸入參數、權值參數和輸出參數的地址通過AXI 總線配置到FPGA 中,FPGA 將數據讀取到Block RAM 中,一些接口配置信息存儲在Inf中,中間層計算結果存儲在Temp中。

3.3 輸入模塊

輸入模塊是對輸入圖像像素值的預處理,RGB 三通道的圖像作為輸入,將圖像像素值利用2.2 節介紹的方法進行定點化,得到定點化后的輸入數據。

3.4 卷積加速

本文使用vivado HLS 高層次綜合工具完成FPGA 硬件編程部分,根據卷積計算特性,設計了一種卷積加速計算的方法。

首先考慮數據的復用。由于FPGA 內部存儲資源有限,每個卷積核(權重參數)會多次與特征圖進行卷積,所以在卷積計算前,將特征圖矩陣進行拆分,分批加載數據,將大矩陣拆分為小的矩陣,再將小矩陣依次加載到FPGA的Block-RAM中緩存。本文使用的模型每一層的特征圖的長和寬均為16的倍數,因此將每一層的特征圖拆分為邊長為16 的小矩陣,分批對16×16 的特征圖與3×3 的卷積核進行卷積計算,最終將計算結果合并在一起。

其次考慮卷積計算的流水線操作。加速卷積計算采用將3×3卷積核及拆分后的16×16小特征圖矩陣,循環展開及流水線卷積計算,偽代碼如下所示:

3.5 輸出模塊

該模塊將3.4 節中卷積計算的結果合并到一個大矩陣中,作為下一層的輸入參數,循環計算得到最后一層的計算結果,最后一層計算的結果返回到ARM 中參與YOLO 層的分類和檢測計算。

4 實驗與結果分析

4.1 實驗設計

考慮本文方法需要在硬件FPGA 上實現加速計算,因此選擇C語言編寫的基于YOLO-V3深度學習框架Darknet,利用Xilinx的HLS工具將C語言綜合為硬件描述語言,縮短硬件開發周期。

本文在人臉數據集和船舶數據集兩個數據集上驗證,兩個數據集為Pascal VOC 格式的標準數據集。人臉數據集包含1 665 張1 280×720 的高清圖像,分別為5 個人不同角度的圖片,其中隨機選取1 278 張作為訓練集,剩余387 張作為測試集;船舶數據集包含7 618 張圖片,分為帆船、航母、貨船、游輪、游艇和戰艦六類,隨機選取5 484 張圖片作為訓練集,2 134 張圖片作為測試集。本文設計的CNN 模型為15 層的卷積網絡,模型大小為1 545 KB。

實驗分為兩部分:

第一部分使用不同量化位寬對參數定點化,分析不同量化位寬對精度的影響,計算模型的精度、召回率和平均準確率(mean Average Precision,mAP)。mAP 評價的是目標預測位置的準確率,mAP越大,預測的坐標位置越接近真實位置。

第二部分,針對定點化后的CNN 模型使用FPGA 加速前向推理計算,分析加速效果。該部分使用第一部分定點化效果較好的模型,使用vivado SDK 工具測試CNN 模型在ARM 上的運行速度,使用vivado HLS 綜合工具,設計FPGA 加速方法,測試CNN模型的加速效果。

4.2 實驗結果與分析

針對實驗的第一部分,考慮不同量化位寬對精度、召回率和mAP的影響,針對人臉數據集進行驗證,結果如表1所示。

表1 不同量化位寬下的人臉數據集識別結果精度Tab.1 Recognition accuracy results under different quantization bit widths on face dataset

在船舶數據集上的驗證結果如圖5~6 所示。圖5 僅對權值進行定點化,圖5(a)為保持每層的輸入特征值原始位寬(32-bit)不變,每類平均準確率(Average Precision,AP)值隨量化位寬的變化情況;圖5(b)為mAP 值、精度和召回率隨量化位寬的變化情況。圖6 對輸入特征值和權值都進行定點化,圖6(a)為每層的輸入特征值和權值同時定點化,每類AP值隨量化位寬的變化情況;圖6(b)為每層的輸入特征值和權值同時定點化,mAP值、精度和召回率隨量化位寬的變化情況。

圖5 權值定點化結果Fig.5 Results of fixed-point processing of weights

由圖5~6可看出:本文方法在僅對權值定點化和對權值、輸入特征值同時定點化兩種方式下差異很小,可以滿足兩種不同的量化方式,具有較好的魯棒性。綜合表1 還可看出:權值和輸入參數量化位寬大于7-bit 時,精度和mAP 影響不大;量化位寬小于7-bit時,精度和mAP影響較大。

當權值參數壓縮到8-bit 或者7-bit 時,壓縮比率較大,且精度損失很小。考慮到使用的卷積核大小為3×3,一個卷積核占用63-bit,可以用一個64-bit 的數據類型一次性讀取一個完整的卷積核的數據進行運算,充分利用FPGA 資源,高效讀取數據。因此本文最終采用7-bit的定點模型作為FPGA 的加速目標,針對人臉檢測的CNN 模型定點量化后的CNN 模型大小由1 545 KB 壓縮為344 KB,壓縮后的權重參數文件大小約為原來的22%。

使用2.3 節數據復用和流水線計算方法,將代碼綜合成電路,硬件資源利用情況與文獻[20-21]方法對比如表2 所示,LUT(Look-Up-Table)利用率為54.7%,Block RAM 利用率為65.3%,DSP(Digital Signal Processor)資源中的乘加器利用率高達94.5%,可以看出本文方法較為充分地利用了FPGA的資源。

表2 資源利用情況 單位:%Tab.2 Resource utilization conditions unit:%

針對人臉檢測模型,與文獻[20-21]方法相比,采用本文方法,在功耗增加很小的情況下,FPGA具有更高的運算峰值,加速效果更好,實驗結果如表3所示。

針對不同平臺人臉檢測模型量化前后CNN 前向推理計算耗時如表4所示。將模型量化前、量化后和FPGA加速的結果進行對比,可以看出本文提出的方法對CNN 計算速度有較大提升,加速比為18.69。

表3 FPGA加速效果Tab.3 FPGA acceleration effect

表4 定點量化卷積加速效果Tab.4 Fixed-point quantization convolution acceleration effect

5 結語

本文提出了一種基于FPGA 的卷積神經網絡定點化加速計算方法,設計了卷積計算策略,并在FPGA 上驗證本文提出的方法的有效性。通過與現有的兩個工作進行比較,本文的方法有更高的運算峰值,同時,FPGA 資源利用率較高。最后通過在人臉數據集和船舶數據集上進行精度和計算速度測試,精度損失在可接受的范圍內,模型壓縮為原來的22%,速度提升了17.69 倍,一定程度上可以滿足嵌入式設備的需求。本文提出的方法是基于特定大小的卷積核(3×3)對CNN 模型進行定點化加速研究,針對卷積核大小不是3×3 的CNN 模型并不適用,后續的研究將考慮更通用的CNN 模型,針對更加通用的CNN模型定點化進行研究。

猜你喜歡
方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
學習方法
3D打印中的模型分割與打包
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 高潮爽到爆的喷水女主播视频| 国产综合在线观看视频| 97在线公开视频| 国产精品免费露脸视频| 亚洲精选无码久久久| aaa国产一级毛片| 色成人亚洲| 2020久久国产综合精品swag| 中文字幕亚洲精品2页| 美女一级毛片无遮挡内谢| av在线5g无码天天| 亚洲国产精品无码久久一线| 欧美中文字幕在线二区| 黄色网址免费在线| 欧美精品亚洲精品日韩专区va| 免费观看无遮挡www的小视频| 亚洲av无码牛牛影视在线二区| 久操线在视频在线观看| 五月丁香在线视频| 一级成人a做片免费| 国产亚洲精品自在线| 成年人国产视频| 亚洲欧美成aⅴ人在线观看| 亚洲AV无码不卡无码| 亚洲精品男人天堂| 国产一级二级在线观看| 国产微拍精品| 日韩大片免费观看视频播放| 国产亚洲视频免费播放| 青青草国产精品久久久久| 青草91视频免费观看| 久久午夜夜伦鲁鲁片无码免费| 国产精品视频观看裸模| 日本不卡在线视频| 91年精品国产福利线观看久久| 久久毛片网| 日本高清免费不卡视频| 国产91色在线| 亚洲av无码专区久久蜜芽| 国产特级毛片aaaaaaa高清| 97青青青国产在线播放| 久久人人妻人人爽人人卡片av| 精品国产自在在线在线观看| 国产幂在线无码精品| 亚洲国产成人超福利久久精品| 久久青草精品一区二区三区| 久久超级碰| 综合色婷婷| 亚洲AV无码乱码在线观看裸奔| 国产福利免费在线观看| 国产精品9| 欧美色图久久| 久久婷婷五月综合97色| AV不卡在线永久免费观看| 日韩在线成年视频人网站观看| 色婷婷成人网| 亚洲国产看片基地久久1024| 在线视频精品一区| 99热这里都是国产精品| 国产二级毛片| 亚洲av无码久久无遮挡| 欧美翘臀一区二区三区| 国产一国产一有一级毛片视频| 欧美日韩国产在线播放| 国产va免费精品观看| 91福利免费| 性色在线视频精品| 久久国产精品波多野结衣| 亚洲高清中文字幕| 国产精品色婷婷在线观看| 爽爽影院十八禁在线观看| 国产美女无遮挡免费视频网站| 国产亚洲精品97AA片在线播放| 国产一级α片| 国产一级小视频| 免费高清毛片| 欧美97欧美综合色伦图| 亚洲自偷自拍另类小说| 午夜少妇精品视频小电影| 国产原创演绎剧情有字幕的| 亚洲高清在线播放| 精品福利网|