本發(fā)明涉及目標(biāo)檢測(cè),尤其涉及一種面向yolov5棗類創(chuàng)傷目標(biāo)檢測(cè)的fpga硬件加速系統(tǒng)、方法、存儲(chǔ)介質(zhì)和電子設(shè)備。
背景技術(shù):
1、目前,近年來(lái),隨著科技的不斷進(jìn)步和人工智能領(lǐng)域的蓬勃發(fā)展,圖像智能識(shí)別與檢測(cè)技術(shù)在各個(gè)領(lǐng)域都取得了顯著進(jìn)展,包括棗類創(chuàng)傷目標(biāo)檢測(cè)技術(shù)。隨著現(xiàn)代農(nóng)業(yè)的發(fā)展和農(nóng)民收入水平的提高,棗類作為重要的農(nóng)產(chǎn)品,其種植規(guī)模逐漸擴(kuò)大,然而,棗類受到各種疾病和創(chuàng)傷的威脅,這使得對(duì)棗類創(chuàng)傷進(jìn)行目標(biāo)檢測(cè)成為農(nóng)業(yè)生產(chǎn)中的關(guān)鍵環(huán)節(jié)。傳統(tǒng)的目標(biāo)檢測(cè)算法存在著諸多問(wèn)題,如檢測(cè)效率低、準(zhǔn)確性差、資源消耗高等,尤其是在復(fù)雜場(chǎng)景下的棗類創(chuàng)傷目標(biāo)檢測(cè)方面表現(xiàn)不佳。然而,近年來(lái),隨著機(jī)器學(xué)習(xí)和gpu并行技術(shù)的不斷發(fā)展,新型目標(biāo)檢測(cè)算法層出不窮,這些算法在棗類創(chuàng)傷檢測(cè)方面呈現(xiàn)出了良好的潛力。其中,yolo(you?only?look?once)系列是當(dāng)前應(yīng)用最為廣泛的目標(biāo)檢測(cè)算法之一。通過(guò)多次版本迭代和算法優(yōu)化,yolo算法在性能上取得了顯著的優(yōu)勢(shì)。然而,實(shí)現(xiàn)對(duì)棗類創(chuàng)傷的精準(zhǔn)檢測(cè)仍然面臨一定挑戰(zhàn)。這可能是由于棗類創(chuàng)傷形態(tài)的多樣性、光照條件的變化、以及圖像中可能存在的遮擋等因素所致。
2、目前,基于深度學(xué)習(xí)的棗類創(chuàng)傷識(shí)別方法相比傳統(tǒng)圖像識(shí)別方法,能夠自動(dòng)提取目標(biāo)特征,且識(shí)別準(zhǔn)確率更高,因此越來(lái)越多的學(xué)者對(duì)該方法進(jìn)行研究。然而,深度學(xué)習(xí)算法通常具有網(wǎng)絡(luò)層數(shù)多、參數(shù)量大、模型復(fù)雜等特點(diǎn)。目前,大多數(shù)深度學(xué)習(xí)加速工具依賴于高性能的cpu或gpu設(shè)備,但這些設(shè)備的功耗高、體積大、發(fā)熱明顯,使得其難以在復(fù)雜的棗園環(huán)境中應(yīng)用。與cpu和gpu相比,fpga具有高并行性、可重構(gòu)性和低功耗的優(yōu)點(diǎn),成為深度學(xué)習(xí)部署神經(jīng)網(wǎng)絡(luò)的主流硬件。
3、北京工業(yè)大學(xué)在其擁有的發(fā)明專利技術(shù)申請(qǐng)“一種面向yolo算法可快速部署的通用硬件加速器系統(tǒng)平臺(tái)”專利申請(qǐng)?zhí)枺?02210056834.9,公開(kāi)號(hào):cn?114662681a中公開(kāi)了一種面向yolo算法可快速部署的通用硬件加速器系統(tǒng)平臺(tái)用于yolo算法硬件實(shí)現(xiàn)。設(shè)計(jì)了一種包含arm子系統(tǒng)、fpga子系統(tǒng)和片外存儲(chǔ)器的通用硬件加速器系統(tǒng)平臺(tái),能夠快速部署不同版本的yolo算法,實(shí)現(xiàn)了模塊化設(shè)計(jì)和高效計(jì)算。arm子系統(tǒng)負(fù)責(zé)邏輯控制和小規(guī)模數(shù)據(jù)處理,fpga子系統(tǒng)通過(guò)并行計(jì)算和資源優(yōu)化執(zhí)行yolo算法的高密度計(jì)算,片外存儲(chǔ)器則處理大規(guī)模數(shù)據(jù)存儲(chǔ)。然而,該系統(tǒng)也存在一些不足之處,如系統(tǒng)架構(gòu)和模塊化設(shè)計(jì)增加了復(fù)雜性和開(kāi)發(fā)維護(hù)成本,適應(yīng)其他神經(jīng)網(wǎng)絡(luò)算法的能力有限,高密度計(jì)算對(duì)fpga資源要求較高,且數(shù)據(jù)傳輸和存儲(chǔ)效率在處理大規(guī)模數(shù)據(jù)時(shí)可能成為瓶頸。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是提供一種面向yolov5棗類創(chuàng)傷目標(biāo)檢測(cè)的fpga硬件加速系統(tǒng)、方法、存儲(chǔ)介質(zhì)和電子設(shè)備,能夠利用fpga的高并行性對(duì)改進(jìn)后的yolov5神經(jīng)網(wǎng)絡(luò)進(jìn)行加速,以實(shí)現(xiàn)對(duì)棗類創(chuàng)傷目標(biāo)的實(shí)時(shí)檢測(cè)。
2、本發(fā)明采用的技術(shù)方案為:
3、一種面向yolov5棗類創(chuàng)傷目標(biāo)檢測(cè)的fpga硬件加速系統(tǒng),包括arm端、fpga端、axi總線以及外部存儲(chǔ)設(shè)備sd卡;arm端負(fù)責(zé)讀取ddr中的數(shù)據(jù)、各個(gè)模塊初始化、調(diào)度整個(gè)yolov5算法網(wǎng)絡(luò)的前向推理、yolo?head檢測(cè)和非極大值抑制得到檢測(cè)框;fpga端主要包括步長(zhǎng)為2和1的3×3卷積ip、步長(zhǎng)為1的1×1卷積ip、上采樣ip、步長(zhǎng)為2的5×5最大池化ip以及矩陣加法ip;arm端和fpga端通過(guò)axi總線連接;
4、其中,arm負(fù)責(zé)整個(gè)神經(jīng)網(wǎng)絡(luò)加速器的調(diào)度運(yùn)行,經(jīng)過(guò)層融合與量化后的權(quán)重與待檢測(cè)圖像存儲(chǔ)在sd卡中,將權(quán)重和檢測(cè)圖像全部讀入片外存儲(chǔ)器ddr中:首先將輸入圖像通過(guò)axi總線載入片上塊存儲(chǔ)器bram中,之后arm將根據(jù)yolov5的網(wǎng)絡(luò)結(jié)構(gòu)依次調(diào)用yolo加速器中的卷積單元、池化單元等計(jì)算單元,同時(shí)通過(guò)axi總線加載對(duì)應(yīng)的權(quán)重并將中間結(jié)果再次存入ddr中,等待下個(gè)網(wǎng)絡(luò)層的計(jì)算;當(dāng)所有網(wǎng)絡(luò)層計(jì)算完畢后,將網(wǎng)絡(luò)的輸出特征圖存入ddr中,由arm進(jìn)行檢測(cè)框解碼以及非極大值抑制nms處理得到檢測(cè)結(jié)果。
5、包括如下步驟:
6、s1:構(gòu)建基于改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型,具體的:為了降低模型復(fù)雜度,將基于改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型的第一層卷積設(shè)置為可重復(fù)利用次數(shù)更多的3×3卷積,同時(shí)將基于改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型中的激活函數(shù)設(shè)置為leakyrelu;
7、s2:對(duì)基于改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型進(jìn)行訓(xùn)練得到最佳模型的權(quán)重?cái)?shù)據(jù);
8、s3:將卷積層與bn層進(jìn)行層融合,隨后將最佳改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型的權(quán)重?cái)?shù)據(jù)進(jìn)行平方定點(diǎn)量化后導(dǎo)出為二進(jìn)制bin文件用于神經(jīng)網(wǎng)絡(luò)加速器的初始化;
9、s4:利用vivado?hls工具設(shè)計(jì)改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)網(wǎng)絡(luò)加速器ip,具體的,采用了雙緩沖機(jī)制,在片上bram中創(chuàng)建兩個(gè)緩沖層使加載和計(jì)算操作同時(shí)進(jìn)行,從而達(dá)到覆蓋加載時(shí)間,提高加速器的吞吐量;
10、s5:利用vivado工具使加速器頂層ip的輸入輸出特征圖接口與讀取權(quán)重偏置接口通過(guò)axi總線與zynq?ps端相連,同時(shí)使加速器中各個(gè)網(wǎng)絡(luò)層ip的配置信息通過(guò)axi-lite總線與zynq?ps端相連。利用vitis工具宏觀調(diào)度網(wǎng)絡(luò)的有序運(yùn)行,使每個(gè)網(wǎng)絡(luò)層ip從ddr中正確地讀取到輸入特征圖和權(quán)重偏置,并將計(jì)算結(jié)果正確地保存到ddr中。
11、所述的步驟s2具體包括如下步驟:構(gòu)建棗類創(chuàng)傷檢測(cè)數(shù)據(jù)集,利用構(gòu)建的數(shù)據(jù)集對(duì)改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型進(jìn)行訓(xùn)練,具體的:
12、通過(guò)設(shè)計(jì)的圖像數(shù)據(jù)采集裝置采集樣本、利用人工和機(jī)器聯(lián)合標(biāo)注制作標(biāo)簽,構(gòu)建多品種、跨產(chǎn)地、標(biāo)準(zhǔn)統(tǒng)一、指標(biāo)完善的棗類數(shù)據(jù)集;
13、根據(jù)現(xiàn)實(shí)分揀需求和對(duì)采樣數(shù)據(jù)的觀察分析,初步將大棗分為正常類normal、干癟類crannied、壓傷類crushed、劃痕類plicated,對(duì)數(shù)據(jù)集中出現(xiàn)的反光,陰影等現(xiàn)象使用光照矯正算法進(jìn)行預(yù)處理,提高圖像質(zhì)量;
14、對(duì)于少占比樣本類別采用cyclegan和auto?augment圖像增強(qiáng)策略等技術(shù)進(jìn)行樣本擴(kuò)充;
15、對(duì)數(shù)據(jù)集處理完成后,利用構(gòu)建的棗類創(chuàng)傷檢測(cè)數(shù)據(jù)集對(duì)改進(jìn)yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型進(jìn)行訓(xùn)練,得到最佳權(quán)重?cái)?shù)據(jù)。
16、所述的步驟s3具體包括如下步驟:具體的:融合前的卷積層和bn層的原理如下:
17、yconv=wx+b其中,w為權(quán)重,x為輸入,b為偏置,yconv為卷積輸出;
18、其中ybn為bn層的輸出,yconv為卷積輸出,為x的平均值,σ2為x的方差,γ和β為可學(xué)習(xí)參數(shù),ε為防止分母為零的極小值;
19、層融合后卷積與bn層的輸出如下:
20、其中:y為卷積bn融合后輸出,w為卷積權(quán)重,b為卷積偏置,為x的平均值,σ2為x的方差,γ和β為可學(xué)習(xí)參數(shù),ε為防止分母為零的極小值;
21、層融合后的卷積bn層的權(quán)重記為:y=w′x+b′其中:y為卷積bn融合后輸出,w′為融合后權(quán)重,b′為融合后偏置,w為卷積權(quán)重,b為卷積偏置,為x的平均值,σ2為x的方差,γ和β為可學(xué)習(xí)參數(shù),ε為防止分母為零的極小值;進(jìn)行層融合后,一次卷積運(yùn)算即可代表一次卷積加上一次bn運(yùn)算,減少了中間結(jié)果的緩存次數(shù);
22、對(duì)融合后權(quán)重進(jìn)行平方量化,可以將乘法運(yùn)算轉(zhuǎn)化為移位運(yùn)算,從而可以利用fpga上的查找表lut資源實(shí)現(xiàn),降低了dsp乘法器的消耗,有利于提高資源利用率,加快推理速度。
23、所述的平方量化的原理如下:對(duì)于位寬為m的權(quán)重ω,量化值縮放因子α乘以量化級(jí)數(shù),
24、
25、將原始的權(quán)重值映射為2的m次冪,量化函數(shù)定義為下:
26、
27、為原始權(quán)重到量化權(quán)重的映射函數(shù),函數(shù)h(·)為將權(quán)重值的值域從[-1,+1]映射到[0,1],平方量化后的權(quán)重值2b與激活函數(shù)值a相乘時(shí)等價(jià)于a移位b次,公式如下:
28、
29、所述的步驟s4中改進(jìn)后的yolov5卷積神經(jīng)網(wǎng)絡(luò)加速器主要包括步長(zhǎng)為2和1的3×3卷積ip、步長(zhǎng)為1的1×1卷積ip、上采樣ip、步長(zhǎng)為2的5×5最大池化ip以及矩陣加法ip。
30、所述的步驟d中,針對(duì)計(jì)算量最大的3×3與1×1卷積ip設(shè)計(jì)了最大分塊傳輸計(jì)算的策略:每次在bram申請(qǐng)一個(gè)完整輸出特征圖大小的數(shù)組,每次計(jì)算tr×tc×tm個(gè)數(shù)據(jù),根據(jù)卷積核的參數(shù)和輸入特征圖的形狀逆推出對(duì)應(yīng)的輸入特征圖和卷積權(quán)重的坐標(biāo)進(jìn)行卷積運(yùn)算并依次遍歷整個(gè)輸出特征圖,具體的:
31、假設(shè)輸入圖像的寬和高為fm_size,卷積核的補(bǔ)零位數(shù)padding為p,大小為k,步長(zhǎng)為s,則輸出特征圖的形狀為:
32、
33、根據(jù)輸出特征圖的形狀倒推出輸入特征圖的大小為:
34、fm_size=ofm*s-(2*p+s-k)
35、當(dāng)一次讀取的輸出特征圖的塊形狀為tr時(shí),則對(duì)應(yīng)的輸入特征圖的塊形狀trin為:
36、trin=(tr-1)*s-2*p+k
37、通過(guò)在輸出特征圖上依次移動(dòng)計(jì)算塊遍歷整個(gè)輸出圖后將最終輸出特征圖分塊傳入ddr中;根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)中特征圖形狀分布將tr和tc設(shè)置盡可能大,根據(jù)板卡資源限制使tm盡可能大,使加速器達(dá)到最高性能。
38、所述的步驟s5中每個(gè)網(wǎng)絡(luò)層配置信息包括的輸入特征圖大小、輸入特征圖通道數(shù)、輸出特征圖大小、輸出特征圖通道數(shù)、核大小、步長(zhǎng)、以及激活使能,具體的:
39、(1)當(dāng)核大小為3時(shí),調(diào)用3×3卷積ip讀取相應(yīng)的權(quán)重和偏置進(jìn)行計(jì)算,同時(shí)判斷卷積核步長(zhǎng)為1和2的兩種情況完成不同的計(jì)算策略最后根據(jù)激活使能判斷時(shí)候?qū)τ?jì)算結(jié)果進(jìn)行l(wèi)eakyrelu激活,將計(jì)算結(jié)果緩存至ddr中;(2)當(dāng)核大小為1時(shí),調(diào)用1×1卷積ip讀取相應(yīng)的權(quán)重和偏置進(jìn)行計(jì)算,最后根據(jù)激活使能判斷時(shí)候?qū)τ?jì)算結(jié)果進(jìn)行l(wèi)eakyrelu激活,將計(jì)算結(jié)果緩存至ddr中;
40、(3)當(dāng)核大小為5時(shí),調(diào)用5×5最大池化ip對(duì)輸入特征圖進(jìn)行步長(zhǎng)為2的池化操作,將計(jì)算結(jié)果緩存至ddr中;
41、對(duì)于上采樣層和矩陣加法層,可以事先約定這兩種層的核大小,再結(jié)合輸入輸出特征圖大小和通道數(shù)與yolov5網(wǎng)絡(luò)結(jié)構(gòu)中相關(guān)層的輸入輸出特征圖大小和通道數(shù)進(jìn)行對(duì)比從而調(diào)用正確的計(jì)算ip進(jìn)行計(jì)算;
42、最終,上述三個(gè)計(jì)算結(jié)果保存至ddr中后,由arm利用訓(xùn)練得到的錨框數(shù)據(jù)對(duì)計(jì)算結(jié)果進(jìn)行檢測(cè)框解碼,解碼后再進(jìn)行nms處理濾去冗余檢測(cè)框,得到最終的目標(biāo)位置、目標(biāo)類別和類別置信度。
43、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述的計(jì)算機(jī)程序被處理器執(zhí)行時(shí),使所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行任意一項(xiàng)所述的面向yolov5棗類創(chuàng)傷目標(biāo)檢測(cè)的fpga硬件加速方法。
44、一種電子設(shè)備,包括:存儲(chǔ)器和處理器,所述存儲(chǔ)器上存儲(chǔ)有可在所述處理器上運(yùn)行的程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)任一所述的面向yolov5棗類創(chuàng)傷目標(biāo)檢測(cè)的fpga硬件加速方法。
45、本發(fā)明通過(guò)采用了單個(gè)計(jì)算單元分時(shí)復(fù)用的架構(gòu),同時(shí)采用了最大分塊傳輸計(jì)算的策略,極大地減少了fpga資源量的占用,可以向下兼容資源量不多的低成本fpga1,實(shí)現(xiàn)了基于yolov5的棗類創(chuàng)傷目標(biāo)檢測(cè)模型在fpga上的加速,具有高并行,低功耗和低成本的優(yōu)點(diǎn),保證了其較快的檢測(cè)速度和更高的檢測(cè)精度,具有較高的可靠性和實(shí)時(shí)性,