2021-08-22 18:24:57 索煒達電子 1284
項目編號:E448
文件大?。?92M
源碼說明:帶中文注釋
開發(fā)環(huán)境:Verilog
簡要概述:
DCNN(Deep Convolution Neural Network)是深度學習中的一項關鍵技術,已經被廣泛應用于目標檢測、圖像分類及語音識別等智能處理領域。隨著需求的不斷發(fā)展,需要設計具有小尺寸、低功耗、快速度、高精度的實時處理系統(tǒng),然而DCNN由于層數(shù)深,參數(shù)多,導致計算量和數(shù)據(jù)量很大,難以滿足應用需求,必須研究并設計具有更低復雜度的網絡結構及其高效并行架構。FPGA(Field Programmable Gate Arrays)相比運行串行指令流的CPU(Central Processing Unit)可以實現(xiàn)并行操作,且有著比GPU(Graphics Processing Unit)更高的性能功耗比,是目前解決DCNN實時處理的主流平臺。但傳統(tǒng)基于RTL(Register Transfer Level)的FPGA應用開發(fā)方式靈活性、可移植性和可擴展性低,極大影響了開發(fā)效率。HLS(High Level Synthesis)可以將高級抽象語言如C、C++和System C自動轉化為硬件描述語言(HDL:Hardware Description Language)VHDL/Verilog,為FPGA高效設計提供了新的思路和工具。
本文通過對現(xiàn)有相關研究的分析、總結和改進,給出了一系列在軟件層面上如何構建和訓練小巧高效且利于硬件加速的網絡方法,在FPGA實現(xiàn)時如何減少資源、降低功耗及提高速度的方法,以及在HLS中如何增加設計靈活性、可移植性和可擴展性的方法,具有很好的實用價值。并結合這些方法構建和訓練了一個網絡,命名為EfficientNet,使用HLS在FPGA上對其進行了推斷加速。通過與其他網絡和平臺的對比,驗證了這些方法的有效性。本文的主要工作和貢獻如下:
設計實現(xiàn)了一種輕量化的深度學習網絡EfficientNet。針對傳統(tǒng)網絡參數(shù)量及計算量大且不利于硬件加速的問題,本文在保證精度的前提下,分析了以深度可分離卷積代替標準卷積、以步進代替池化、以平均池化代替全連接的方法,提出了尺寸不變通道增減交替的方法,并對這些方法進行了集成,從而構建了一個低復雜度的DCNN網絡,并命名為EfficientNet。實驗結果表明EfficientNet在公開的Flower_photos數(shù)據(jù)集上的分類精度為89.3%,相比Inception-v3,在參數(shù)量和計算量減少至約五、六十分之一的情況下,精度損失僅有5.7%。
在FPGA上設計實現(xiàn)了EfficientNet的推斷加速系統(tǒng)。圍繞減少資源、降低功耗和提高速度這些方面,本文引入了分塊機制,選擇和設計了適用于本文的數(shù)據(jù)重利用方式,采用了流式輸入卷積電路,提出了深度流水并行架構,并結合這些方法對本文設計的網絡EfficientNet在FPGA(ZCU102開發(fā)板@244Mhz)上進行了推斷加速。實驗表明EfficientNet FPGA推斷加速系統(tǒng)僅占用了ZCU102開發(fā)板上不到一半的資源,處理速度可達 @36fps,達到了實時處理的要求,比CPU(E5645 @2.40GHz*2 六核)快約66倍、比GPU(Tesla K80)快近2倍,同時功耗相比GPU低近2倍。
編寫了DCNN函數(shù)模板庫并提出了一種設計空間探索模型Design Space Exploration。為解決傳統(tǒng)FPGA設計靈活性、可重用性和可擴展性低的問題,本文充分利用了HLS基于C開發(fā)的優(yōu)勢,使用C++的模板功能編寫了DCNN所需的部分函數(shù)并匯集成庫,參數(shù)化了各配置信息,規(guī)范了輸入輸出接口,以及提出了一種設計空間探索模型Design Space Exploration。使得后續(xù)研究人員可以很方便地對該HLS庫修改和擴充,并且不用局限于本文所設計的EfficientNet架構,可以根據(jù)自身需求按本文給出的評估方式去調用本文編寫的函數(shù)庫并設置參數(shù),來實現(xiàn)適用于自己的網絡。
關 鍵 詞:DCNN, FPGA, HLS, 快速度, 低功耗, 高精度,小尺寸
文件列表: