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

基于FPGA的快速櫻桃缺陷檢測與識別系統設計

2020-09-18 06:15:54裴悅琨連明月
食品與機械 2020年8期
關鍵詞:指令優化檢測

裴悅琨 - 谷 宇 連明月 -

(1. 大連大學遼寧省北斗高精度位置服務技術工程實驗室,遼寧 大連 116622;2. 大連大學大連市環境感知與智能控制重點實驗室,遼寧 大連 116622)

卷積神經網絡(convolutional neural networks,CNN)是目前性能較好的深度學習算法之一。通過其網絡模型和足夠的訓練數據集,CNN可以為某些任務生成復雜的功能,勝過傳統的人工算法。目前,CNN已成功應用于手寫體數字識別及交通標志識別[1-2]等,并且取得了較好的效果。

基于CNN的水果品質檢測大多是在軟件平臺上實現。劉云等[3]基于CNN對蘋果進行分塊缺陷檢測,并且在軟件平臺上進行訓練和測試,檢測速度達到5個/s,且正確率高達97.3%;裴悅琨等[4]對櫻桃的缺陷進行檢測和識別,利用CNN對采集的櫻桃圖片進行測試,基于CPU的軟件平臺上識別速度可達25個/s;伍錫如等[5]構建一個多層卷積神經網絡,在英特爾i5平臺上對水果采摘機器人視覺識別系統進行測試,單張水果圖像的識別速度只需0.2 s。這些軟件平臺都是基于通用的處理器,然而CNN具有很高的并行度,通用處理器主要用來控制指令調度、執行和邏輯判斷,并不適合用來大量的并行計算[6]。因此基于軟件方式的CNN在實時性和能耗方面都不能適應實際水果檢測中場外作業的需求。目前大部分對于CNN的研究主要還是采用GPU,但是對于GPU功耗大的問題一直存在,所以在需要電池供電的嵌入式設備中也是很難得到應用。

現場可編程門陣列(field programmable gate array,FPGA)具有強大的并行處理能力、靈活的可配置特性和超低功耗,使其成為CNN實現平臺的理想選擇。王巍等[7]充分利用CNN的并行計算特征,進行了CNN算法的FPGA并行結構設計,提高了資源利用率且計算效率也得到大幅提升;Ma等[8]使用RTL編譯器完成CNN網絡的硬件加速,使用FPGA在100 MHz的工作頻率下得到2倍的性能提升,然而上述基于硬件描述語言(HDL)或者邏輯圖的設計方法難度較大,周期較長并且在數學運算上存在許多弊端,極大地阻礙了FPGA中進行人工智能的快速開發[9]。Danopoulos等[10]的研究充分地展現了FPGA快速開發的優勢,將網絡框架移植到FPGA的ARM(基于Zynq-7000)處理器中,在Xilinx的SDSoC開發環境中設計硬件加速器,并利用硬件加速器顯著提高神經網絡執行速度。

試驗擬采用美國Xilinx公司發布的SDSoC開發環境,通過使用C/C++在目標平臺上完成完整的硬件/軟件系統的編譯、實現、調試執行等全過程[11]。利用卷積網絡并行結構的特點,采用高級語言映射卷積神經網絡模型并進行優化設計,通過處理器系統(Processing System,PS)和可編程邏輯(Programmable Logic,PL)的協同處理實現一個完整的軟硬件系統,為櫻桃的快速、準確地檢測分級提供新的方法和策略。

1 卷積神經網絡

相比普通的圖像處理算法,卷積神經網絡僅需少量的預處理,識別范圍廣,能容許圖像的畸變,對幾何變形具有很好的魯棒性,其經典網絡模型包含卷積層、池化層、全連接層等結構。其中卷積層即特征提取,針對圖像上存在的特征進行局部感知,緊接著進行多層卷積獲取全局信息。

池化層也叫下采樣層。主要用作降低特征維度,減小過擬合的發生,同時增強系統的容錯性。

全連接層即輸出層,主要對數據進行歸一化處理,避免數據值大的節點對分類造成影響,最終進行正確的圖片分類。

卷積過程如圖1所示:輸入層的圖像首先通過多個卷積層、修正線性單元(rectified linear unit,ReLU)以及最大池化層運算,之后進入全連接層,最后通過輸出層得到最終的分類結果。

圖1 卷積神經網絡結構

針對櫻桃缺陷的特點,設計CNN模型。該模型包括卷積層、修正線性單元、最大池化層以及全連接層。模型設計如表1所示。

表1 CNN模型設計

2 櫻桃缺陷檢測與識別系統結構設計

2.1 系統結構

櫻桃缺陷檢測與識別系統的結構設計如圖2所示。主要包括圖像采集、HDMI接口、SD卡數據讀取、圖像預處理、PL端加速和終端顯示等模塊。其中系統全局控制在ARM處理器完成,主要負責HDMI接口調用、數據傳輸,對圖像進行預處理,并完成加速函數對PL端的寫入工作,最終PS端將分類結果顯示在終端顯示器上。

圖2 系統結構設計框圖

由于卷積模塊和硬件接口模塊計算密集且模塊化較強,因此將其模塊放入FPGA的PL端實現。該系統優點是在Xilinx的SDSoC開發環境中采用軟硬件結合的形式,復用卷積模塊以及使用優化指令對卷積層和數據傳輸進行優化,節省資源,提高識別效率。

2.2 網絡映射

整個網絡模型移植到Zynq 7020 SoC以便在ARM內核上運行。為了使網絡在Zynq上運行,必須使用SDSoC環境中包含的ARM交叉編譯器對整個模型進行交叉編譯。SDSoC是Xilinx提供的基于IDE的框架,該框架允許為Zynq平臺開發硬件/軟件嵌入式系統。該平臺提供了定義,集成和驗證硬件加速器的能力,該硬件加速器將加速特定功能,稍后將對其進行描述,生成ARM軟件和FPGA比特流,同時生成SD映像,以便脫機進行SD卡讀取[12]。SDSoC網絡映射開發流程如圖3所示。

圖3 SDSoC網絡映射開發流程

2.3 硬件設計

該系統通過HDMI接收、輸出圖片,采用輸入輸出級優化、通用矩陣乘法函數復用優化以及卷積操作并行化設計,實現對輸入輸出級設計和CNN計算密集的卷積層加速。

對于HDMI接收設計,可調用相關IP進行驅動。因此硬件設計的重點即數據傳輸優化、通用矩陣乘法函數復用和卷積操作并行化設計和優化。

2.3.1 數據傳輸優化 數據傳輸優化主要包括PS和PL接口優化和數據傳輸方式優化。如圖4所示,PortA和PortB接口分別為PS端和PL端接口,Data Mover為PS和PL之間進行數據傳輸的方式。因此,數據傳輸優化即對PortA、PortB和Data Mover進行優化設計。

圖4 數據傳輸接口

通常大部分的權重參數和算法模型存在DDR中,PS和PL則通過AXI標準總線接口進行數據的交互,AXI接口包括通用AXI接口(AXI_GP)、加速器一致性接口(AXI_ACP)和高性能接口(AXI_HP)[13]。

鑒于訪問DDR延遲會導致讀寫速度緩慢,在PS端與PL端對數據的傳輸進行優化。傳輸接口及傳輸方式的相關優化指令:

//system port

#pragma SDS datasys_port(input:AXI_HP,output:AXI_HP)

//data mover

#pragma SDS datamem_attribute(input:PHYSICAL_CONTIGUOUS|

NON_CACHEABLE,output: PHYSICAL_CONTIGUOUS|NON_CACHEABLE)

#pragma SDS data copy(input[0:WIDTH*HEIGHT],output[0:WIDTH*HEIGHT])

//accelerator

#pragma SDS dataaccess_pattern(input:SEQUENTIAL,output:SEQUENTIAL)

SDS datasys_port指令用于直接約束PS端總線接口類型,試驗選擇HP類型。AXI_HP接口具有高性能和高帶寬的特性,其內部配置異步FIFO作為高速數據讀寫的緩沖。相反AXI_GP則是沒有配置緩沖的中低速接口,AXI_ACP主要實現PS中cache和PL單元之間的一致性接口,因此都不適合。

SDS data mem_attribute用于約束矩陣數據存放地址的連續性。硬件綜合時,SDSoC平臺會選擇傳輸連續內存更快的AXI_DMA_Simple,而不是AXI_DMA_SG。

SDS data copy指令約束內存大小,意味著SDSoC會將硬件加速器的接口通過AXI總線直接連接到PS的存儲器,對其進行一定內存大小的數據傳輸。

SDS dataaccess_pattern指令約束訪問數據的方式,在CNN中都是按照圖像每行像素的順序進行卷積操作,所以將SEQUENTIAL設置為數據訪問的方式,那么綜合時自動生成順序訪問的接口協議(例如ap_fifo),而不是生成隨機訪問的接口,大大提高了數據訪問速度。

采用綜上4條優化指令,可以在連續的物理空間中按照數據流的方式訪問數據,降低數據傳輸延遲,增大數據吞吐率。試驗中,傳輸圖像及權重偏置信息均采用此方式加載。

2.3.2 通用矩陣乘法函數復用 CNN中最為密集的計算是卷積,每個卷積層都要進行線性矩陣乘法和加法運算即通用矩陣乘法(GEMM)函數,利用FPGA來實現可以有效地提高卷積計算效率,并降低功耗,區別在于特征圖的尺寸不同。對于這一結構上的差異,應將其同構化達到復用的目的。

在不造成卷積運算誤差的前提下,對所要進行卷積操作的特征圖進行補零。如圖5所示,除了輸入特征圖,之后的卷積操作的特征圖的寬和高均小于輸入特征圖尺寸,因此對其進行填補零值,使其尺寸與輸入特征圖尺寸相同。因此,與權重的矩陣乘法操作使每一層的卷積運算具有了同構性。在SDSoC中可以專門定義通用矩陣乘法(GEMM)函數并且每一次卷積都可以調用該函數,卷積運算可以復用相同的控制電路,從而節省硬件資源的開銷。

圖5 特征圖同構化

2.3.3 卷積操作并行化

(1) 矩陣分塊優化:對于卷積層中較大的數組拆分為多個較小的數組,用于增加數據訪問的并行性。通過使用ARRAY _PARTITION指令對數組進行分塊。在文中優化卷積操作使用下述代碼結構。對二維數組進行降維,將二維數組分解為若干個小寄存器,提高并行度。相關指令:

#pragma HLSarray_partition variable=in_Bcomplete dim=2

(2) 流水線優化:流水線優化能夠將一個延時較大的操作切割成多個小操作并行執行,這樣就大大增加了總體的運行速度。采用PIPELINING約束指令來使結構執行流水線操作。為了不消耗太多的硬件資源并且不浪費太多的數據延遲,綜合考慮選擇在第2層循環內添加優化命令,可以使得工作頻率提高將近1倍。流水線優化使用PIPELINING指令:

for(index_a = 0; index_a< A_NROWS; index_a++){

for(index_b = 0; index_b< A_NCOLS; index_b++){

#pragma HLS PIPELINE

//next operations

}}

(3) 循環展開優化:默認情況下,卷積的所有嵌套循環都是按順序執行的。循環展開優化可以提高循環迭代之間的并行性,增加FPGA計算資源的利用率。如圖6所示,將特征圖和權重通過移位寄存器分別展開,并且進行并行乘加運算。

圖6 循環展開優化

在卷積過程中,通過使用UNROLL優化指令對for循環進行展開。展開最內層for循環,每一層權重的乘積作為一個獨立的處理單元(PE),使得PE核最小化。將第3層for循環展開作為PE的并行數量,用來一次獲得多個輸出層的部分和,部分代碼:

//multiply accumulate broken into individual operators

#pragma HLS UNROLL

for(index_d = 0; index_d< B_NCOLS; index_d++){

floatresult + = weights[index_c][index_d]*input_fm[index_c+i][index_d+j];

}

output_fm[i* A_NROWS +j]=result;

(4) 函數內聯優化:此外,試驗還使用了函數內聯優化指令INLINE,去除子函數層次結構,通過減少函數調用開銷來改善延遲。指令:

#pragma HLS INLINE self

3 實現

3.1 硬件實現

在硬件設備上,基于Xilinx Zynq7020開發板實現網絡的加速,開發板為異構芯片,該芯片有2個ARM A9處理器作為處理系統(PS),還有一個可編程邏輯(PL)XC7Z020用于硬件加速,開發板如圖7所示;此外,開發板通過SONY IMX222 CMOS相機對采集的櫻桃圖片進行測試,試驗還配有一臺顯示器用于測試結果的終端顯示,如圖8所示。

1. SONY IMX222 CMOS相機 2. 圓頂光源 3. 櫻桃樣本 4. Xilinx Zynq7020開發板 5. 終端顯示器

圖7 Xilinx Zynq7020開發板結構圖

在硬件模塊化設計上,試驗基于Xilinx Vivado 2016.4軟件,將數據傳輸模塊,通用矩陣乘法模塊以及接口模塊分別生成各個硬件IP,完成硬件模塊化設計。數據的內部傳輸采用AXI Interconnect模塊,即AXI互聯矩陣,能夠實現將主設備和從設備的互聯;外部數據傳輸采用 HDMI模塊實現圖像數據傳輸,并利用異步FIFO模塊作為幀緩沖區,緩存數據。內部PS模塊包含一個Zynq處理器硬核,實現各IP初始化與配置。定義的Mmult模塊實現卷積操作,其內部通用矩陣乘法IP在卷積層進行復用。

分別在PC機、純ARM軟件和試驗加速器3種平臺進行試驗,結果如表2所示。

表2 PC機、純ARM和試驗加速器3種平臺比較

3.2 制作并訓練數據集

在制作數據集的過程中,在實驗室的環境下對采摘來的櫻桃進行圖像采集。為了能覆蓋每個櫻桃的完整表面,試驗使用Basler acA2000-50gc工業相機對櫻桃的6個不同角度進行采集;利用Matlab對圖像進行裁剪、旋轉、縮放等操作來擴大樣本數據;最后將所有的待訓練圖像統一成32×32規格大小。部分樣本示例如圖9所示。

訓練在Caffe平臺下進行,操作系統為Ubuntu16.04,使用Python搭建CNN模型,采用監督式學習的方法對櫻桃樣本進行訓練。最后的全連接層的輸出通道即分類數,將櫻桃分為3類,分別為:裂口、完好和畸形。用于訓練的櫻桃圖片18 000張,采用人工標記的方法對訓練樣本進行標記。

4 結果與分析

4.1 數據集測試

試驗選取600張櫻桃原圖進行測試,每個分類各200張,將裂口和畸形的櫻桃歸為缺陷櫻桃。試驗先在PC機上利用Python進行測試,再將測試圖片放入FPGA進行測試,如表3所示,可以發現在FPGA上,準確率幾乎沒有下降。

4.2 實際圖片測試

工程編譯完成之后,.BIN文件會自動在release目錄下的sd_card文件夾下生成。將.BIN文件拷貝到SD卡中,設置開發板為SD卡啟動模式。連接好終端顯示器,顯示器左上角為識別出櫻桃結果的黃色標簽,試驗運行結果部分展示如圖10所示。

圖10 試驗運行結果部分展示

Zynq XC7Z020資源包括:18 K大小的Block RAM 140個,查找表(LUT) 53 200個,觸發器(FF)106 400個和數字信號處理器(DSP)220個,文中2個硬件加速函數在硬件中的資源占用使用情況和運行時長如表4所示。

表4 硬件加速函數資源占用和運行時長

輸入同樣尺寸大小的圖片在不同平臺下分別進行測試,如表5所示。結果表明在純ARM軟件中對單張櫻桃圖片檢測處理需要57.89 ms,而在硬件平臺上需26.42 ms,其檢測處理速度是純ARM軟件的2.19 倍。

表5 純ARM軟件與試驗加速器對櫻桃圖片處理時長比較

裴悅琨等[4]選用CPU型號為intel(R)Core(TM) i5-6500 CPU @ 3.20GHzHP LV2011的PC機對櫻桃進行檢測,測試實際圖片時在網絡中將輸入圖片的尺寸縮放為64×64,因此將FPGA中網絡的縮放尺寸改為64×64,并與文獻[4]的處理時間進行比較,如表6所示。

表6 CPU平臺與試驗加速器對櫻桃圖片處理時長比較

由表6可以看出,當輸入圖像尺寸擴大一倍時,一幅圖片的處理時長為42.59 ms,對比原來圖像尺寸延長了16.17 ms,與文獻[4]的CPU平臺處理時長相當,但是試驗系統所使用的時鐘頻率與CPU平臺相差甚遠,若使用性能更好的FPGA,速度應超過CPU平臺。而且試驗系統具有小型化、手持化的特點,與CPU平臺相比具有很強的實際應用價值。

5 結論

試驗利用SDSoC快速開發平臺,協同處理PS端與PL端,實現一個快速櫻桃檢測的軟硬件系統。通過對系統硬件設計及優化,大大提高了系統的計算性能,與純ARM軟件和CPU實現的算法相比,使用軟硬件協同處理對算法的加速效果明顯,滿足實時性與低成本的要求。試驗系統可以不使用PC機,便攜性大大提高,同時可拓展性好,具有很大的市場空間。

試驗系統還有進一步優化的空間,比如增加學習樣本種類、建立合理的分類分級邏輯和改進神經網絡模型結構等。同時筆者正在嘗試其他水果數據應用于此系統,以使其能檢測更多水果缺陷,最終形成一個實用的快速自動水果缺陷檢測與識別系統。

猜你喜歡
指令優化檢測
聽我指令:大催眠術
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
主站蜘蛛池模板: 国产欧美日韩在线一区| 2020国产精品视频| 欧美无专区| 亚洲乱强伦| 在线播放91| 麻豆精品在线播放| 制服丝袜国产精品| 国产精品yjizz视频网一二区| 国产精品女熟高潮视频| 欧美激情网址| 亚洲成人精品在线| 免费Aⅴ片在线观看蜜芽Tⅴ| 免费人成在线观看视频色| 爆操波多野结衣| 强乱中文字幕在线播放不卡| 欧美在线国产| 亚洲伊人久久精品影院| 国产精品偷伦在线观看| 国产精品视屏| 无码内射中文字幕岛国片| 免费无码又爽又黄又刺激网站 | 人妻中文字幕无码久久一区| 亚洲欧洲日韩综合色天使| 亚洲国产成人久久精品软件| 一区二区三区四区在线| 亚洲成人高清在线观看| 色国产视频| 色成人综合| 在线欧美日韩国产| 中文字幕va| 亚洲色图欧美视频| 亚洲综合久久一本伊一区| 国产丝袜一区二区三区视频免下载| 亚洲无码免费黄色网址| 亚洲资源站av无码网址| 日韩毛片免费| 欧美三级视频在线播放| 国产精品第一区在线观看| 久久99国产综合精品女同| 青青青国产视频手机| 国产亚洲第一页| 国产一区亚洲一区| a毛片免费观看| 国产18页| 国产日韩丝袜一二三区| 久久国产精品影院| 成人a免费α片在线视频网站| 亚洲第一精品福利| 成人免费网站在线观看| 国产a v无码专区亚洲av| 无码在线激情片| 亚洲欧美精品一中文字幕| 午夜精品福利影院| 国产18在线| 香蕉久久国产超碰青草| 沈阳少妇高潮在线| 欧美国产中文| 中文字幕久久精品波多野结| 自拍偷拍一区| 国产成人一二三| 亚洲午夜国产片在线观看| 亚洲va欧美ⅴa国产va影院| 欧美影院久久| 再看日本中文字幕在线观看| 亚洲精品日产精品乱码不卡| 国产精品区网红主播在线观看| 18黑白丝水手服自慰喷水网站| 欧美亚洲一区二区三区导航 | 潮喷在线无码白浆| 婷婷激情亚洲| 国产综合日韩另类一区二区| 国产成人免费| 国产午夜不卡| 中文字幕在线日本| 国产免费精彩视频| 丝袜高跟美脚国产1区| a欧美在线| 国内精品小视频在线| 久久久久国产一级毛片高清板| 在线国产91| 波多野结衣一区二区三区AV| 蝌蚪国产精品视频第一页|