郭 鋒,柳 駿,王裘瀟,徐 海,萬廣雷
(1.國網(wǎng)浙江省電力有限公司 a.設(shè)備部,b.臺州供電公司,杭州 310007;2.國網(wǎng)信通產(chǎn)業(yè)集團(tuán) 安徽繼遠(yuǎn)軟件有限公司,合肥 230088)
隨著人工智能技術(shù)的發(fā)展與進(jìn)步,基于圖像識別技術(shù)的無人機(jī)巡檢在電力系統(tǒng)獲得了廣泛的應(yīng)用.與傳統(tǒng)的人工巡檢相比,無人機(jī)巡檢技術(shù)顯著提高了輸電線路巡檢的工作效率,減少了作業(yè)人員的工作量,對于復(fù)雜和危險(xiǎn)區(qū)域的巡檢工作具有獨(dú)特的優(yōu)勢.
基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識別技術(shù)在無人機(jī)巡檢[1-2]及電力系統(tǒng)故障分析[3-4]方面得到了廣泛的關(guān)注與應(yīng)用[5-6].劉萬軍等[7]通過構(gòu)建自適應(yīng)卷積神經(jīng)網(wǎng)絡(luò)增強(qiáng)模型,實(shí)現(xiàn)了基于迭代次數(shù)和識別結(jié)果的權(quán)值優(yōu)化;林剛等[8]提出了一種基于強(qiáng)泛化的卷積神經(jīng)網(wǎng)絡(luò),通過對濾波器參數(shù)的控制實(shí)現(xiàn)了對輸電線路覆冰層厚度的有效識別;王淼等[9]通過采用閾值分割和邊緣檢測的方法,實(shí)現(xiàn)了絕緣子缺陷的自動(dòng)偵測識別;王萬國等[10]通過對DPM、SPPnet和Faster R-CNN識別算法的分析對比,最終利用Faster R-CNN實(shí)現(xiàn)了電力小部件的定位識別.
隨著問題復(fù)雜度的增加,人工神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力和分類能力也日益提升,即導(dǎo)致卷積神經(jīng)網(wǎng)絡(luò)規(guī)模的增加[11-12].為了實(shí)現(xiàn)對電力系統(tǒng)電網(wǎng)故障的無人機(jī)在線監(jiān)測,降低系統(tǒng)運(yùn)行過程中硬件資源消耗,本文利用FPGA硬件資源的可重構(gòu)特性,研究了一種針對電網(wǎng)巡檢故障識別的低功耗神經(jīng)網(wǎng)絡(luò)加速方法.該方法采用直接映射的方式,將卷積層和全連接層的計(jì)算分別映射至獨(dú)立的計(jì)算核心,實(shí)現(xiàn)不同運(yùn)算特征與硬件資源之間的匹配,從而提高系統(tǒng)資源利用效率.
基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識別技術(shù)是一種兼具計(jì)算密集型和數(shù)據(jù)密集型特征的人工智能技術(shù).系統(tǒng)在實(shí)際運(yùn)行過程中,不僅需要消耗大量的計(jì)算機(jī)資源,且運(yùn)行過程耗時(shí)多、功耗大.通過對卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行過程的分析發(fā)現(xiàn),其對輸入圖像進(jìn)行初步處理的卷積層具有計(jì)算密集型特征;而位于神經(jīng)網(wǎng)絡(luò)末端的全連接層,則具有數(shù)據(jù)密集型特征.
將卷積層輸入特征圖像由R、C、M三個(gè)特征參數(shù)來表示,其中,R與C分別表示圖像的長和寬,M表示特征圖像的數(shù)量.卷積核由參數(shù)K與S表示,其中,卷積核尺寸為K,卷積步長為S,則輸入特征圖像的長與寬即可表示為RS+K和CS+K,輸入特征圖像的數(shù)量為N.
分析卷積運(yùn)算過程可知,計(jì)算機(jī)在進(jìn)行卷積處理的過程中包含了6層基本循環(huán),具有大量的重復(fù)運(yùn)算過程.但各個(gè)運(yùn)算過程具有一定的獨(dú)立性,程序的運(yùn)行順序不會(huì)對計(jì)算結(jié)果產(chǎn)生影響.因此可以利用循環(huán)分片與增加計(jì)算并行度的方法,提高計(jì)算速度和硬件資源的利用效率.
全連接層用于對圖像特征進(jìn)行分類,假設(shè)xi為全連接層的輸入神經(jīng)元,yj為輸出神經(jīng)元,對應(yīng)的權(quán)值數(shù)據(jù)為wij,則yj可表示為
(1)
全連接層的每個(gè)輸入神經(jīng)元均與所有的輸出神經(jīng)元相連,因此需要使用大量的權(quán)值數(shù)據(jù).若能夠采用批處理的方式增加權(quán)值數(shù)據(jù)復(fù)用度,或利用平衡剪枝技術(shù)來消除數(shù)據(jù)冗余,則可以大幅度提高系統(tǒng)的計(jì)算效率.
由于FPGA具有高度的硬件可重構(gòu)特性,因此本文將卷積神經(jīng)網(wǎng)絡(luò)的不同網(wǎng)絡(luò)層進(jìn)行單獨(dú)部署.并根據(jù)上文的分析做出有針對性的優(yōu)化,進(jìn)而提升軟硬件之間的適配性.
卷積神經(jīng)網(wǎng)絡(luò)加速器由控制模塊、數(shù)據(jù)傳輸模塊和計(jì)算模塊3部分組成.為了提升加速器的運(yùn)行效率,將前一個(gè)計(jì)算核心的輸出直接作為后續(xù)計(jì)算的輸入.此外,通過挖掘網(wǎng)絡(luò)層間并行度,可以降低各核心對權(quán)值數(shù)據(jù)的緩存容量需求.
對卷積運(yùn)算進(jìn)行循環(huán)展開時(shí),將卷積神經(jīng)網(wǎng)絡(luò)中間層及輸出層部分循環(huán)進(jìn)行分片,形成多個(gè)子循環(huán),每個(gè)子循環(huán)的大小分別為Tm和Tn.考慮到輸入圖像參數(shù)較大,因此對該層循環(huán)進(jìn)行大小為Th的分片計(jì)算.通過對原算法循環(huán)進(jìn)行展開,使得卷積層計(jì)算并行度變?yōu)門m×Tn×Th,與之相對應(yīng)的,權(quán)值緩存容量需設(shè)定為Tm×N×K2.通過以上循環(huán)展開策略,可以使每個(gè)權(quán)值數(shù)據(jù)的復(fù)用度達(dá)到R×C.
全連接層分片循環(huán)展開計(jì)算過程與之類似,將原先大小為M與N的循環(huán)分別進(jìn)行Tm和Tn的循環(huán)展開.設(shè)置FPGA上的處理核心數(shù)量為Tm,并令各處理核心的輸入和乘法器數(shù)量為Tn,使系統(tǒng)的計(jì)算并行度變?yōu)門m×Tn.
在全連接層運(yùn)算并行度為Tm×Tn的情況下,可以將權(quán)值緩存的大小也設(shè)置為相同值.為了提升計(jì)算效率,本文將全連接層的輸入特征數(shù)據(jù)全部緩存在FPGA上.
全連接層屬于數(shù)據(jù)密集型計(jì)算,計(jì)算過程中需要訪問大量的權(quán)值數(shù)據(jù).為了緩解片外訪存壓力,本文采用平衡剪枝技術(shù)對其進(jìn)行優(yōu)化.
設(shè)有兩個(gè)輸出神經(jīng)元y1、y2,兩個(gè)神經(jīng)元對應(yīng)的權(quán)值數(shù)量分別為w1和w2時(shí),當(dāng)w1>w2,則對y1所對應(yīng)的權(quán)值數(shù)據(jù)進(jìn)行裁剪;反之,則對y2對應(yīng)的權(quán)值數(shù)據(jù)裁剪.在此基礎(chǔ)上,通過多次重訓(xùn)練彌補(bǔ)精度損失.
對于剪枝后的全連接層可分別設(shè)置一個(gè)權(quán)值矩陣和信息矩陣,用于保存剪枝后的剩余權(quán)值及權(quán)值矩陣的索引值.全連接層的計(jì)算核心結(jié)構(gòu)如圖1所示.與卷積層計(jì)算核心相比,該結(jié)構(gòu)增加了雙索引緩存和輸入神經(jīng)元選擇器.通過該結(jié)構(gòu),可以有效消除全連接層的計(jì)算、存儲、訪存冗余.

圖1 全連接層計(jì)算核心結(jié)構(gòu)
考慮到卷積層與全連接層輸入特征數(shù)據(jù)量的差異,本文對卷積層和全連接層采取不同的批處理模式,以提高計(jì)算的效率.
卷積層輸入數(shù)據(jù)量較多,各卷積層對不同前饋輸入數(shù)據(jù)按照非批處理模式依次計(jì)算.而全連接層輸入數(shù)據(jù)量較少,可以等待卷積層完成計(jì)算后,再以批處理的方式對其進(jìn)行集中處理.
半批處理模式下,假設(shè)全連接層進(jìn)行一次批處理的數(shù)據(jù)量為G,則權(quán)值數(shù)據(jù)的復(fù)用度將增加G倍.因此采用半批處理技術(shù)時(shí),全連接層計(jì)算核心的緩存大小為該層輸入特征數(shù)據(jù)的尺寸乘以G.
計(jì)算機(jī)硬件設(shè)計(jì)領(lǐng)域,通常采用Roofline模型用來分析系統(tǒng)的性能.本文利用Roofline模型,通過構(gòu)建組合優(yōu)化模型來確定最優(yōu)并行策略.
設(shè)FPGA部署的網(wǎng)絡(luò)模型共有α個(gè)網(wǎng)絡(luò)層、β個(gè)卷積層,則全連接層有α-β個(gè).卷積層計(jì)算核心的并行優(yōu)化設(shè)計(jì)參數(shù)為Tm、Tn、Th;全連接層計(jì)算核心的并行優(yōu)化設(shè)計(jì)參數(shù)為Tm、Tn、B,其中,B為批處理的大小,因此變量函數(shù)表示為
x=(Tmi,Tni,Thi,B),i∈[1,α]
(2)
實(shí)際加速器部署中,各運(yùn)算核心除了滿足循環(huán)展開的限制條件外,還需滿足FPGA平臺硬件資源的限制.
首先,各個(gè)計(jì)算并行度要滿足其對應(yīng)的循環(huán)大小的限制;其次,各個(gè)計(jì)算核心的內(nèi)積單元計(jì)算利用率需滿足σ≥0.8.
FPGA緩存的約束條件需要考慮緩存容量和訪問并發(fā)度兩方面因素.首先,各計(jì)算核心的緩存總?cè)萘啃枰獫M足目標(biāo)FPGA平臺的片上塊存儲器生產(chǎn)器(BRAM)容量約束,即
(3)
式中:θBRAM為BRAM的容量大小;E為權(quán)值緩存大小;F為輸入緩存大小;I為索引緩存容量;i∈[1,β]時(shí)用于卷積層的權(quán)值緩存計(jì)算;i∈[β+1,α]時(shí)用于全連接層的權(quán)值緩存計(jì)算.
設(shè)全連接層每個(gè)索引緩存數(shù)據(jù)大小為a,則索引緩存容量為
Ii=aTmiTni
(4)
數(shù)據(jù)的訪問并發(fā)度受FPGA平臺BRAM的數(shù)量約束,可表示為
(5)
式中:JBRAM為FPGA平臺上BRAM的數(shù)量;A為權(quán)值緩存的訪問并發(fā)度;D為輸入緩存的訪問并發(fā)度;Z為全連接層的索引緩存訪問并發(fā)度.
由Roofline模型可知,計(jì)算機(jī)平臺的計(jì)算量和訪問量決定了其理論計(jì)算性能的上限.本文設(shè)置目標(biāo)函數(shù)為f1和f2,其中f1用于表征計(jì)算吞吐量,f2用于表征系統(tǒng)的訪存比,其表達(dá)式分別為
(6)
(7)
式中:Ui、Vi、Hi、Li及Ki分別為Tmi、Tni、Thi、Ei及Fi的上限值;Tmj、Tnj、Thj分別為第j個(gè)層間流水級對應(yīng)的循環(huán)展開的大小;w為硬件的工作頻率;P為卷積層輸入數(shù)據(jù)的訪存總量;Q為輸出數(shù)據(jù)的訪存總量;Wconv為卷積層的權(quán)值數(shù)據(jù);Wfc為全連接層的權(quán)值數(shù)據(jù)的片外訪存量;NINDEX為全連接層索引數(shù)據(jù)訪存總量.
為了求解上述組合優(yōu)化模型,本文采用遺傳算法對變量空間進(jìn)行搜索求解.將并行變量以整型數(shù)組的形式編碼為染色體,變量個(gè)數(shù)為染色體長度,設(shè)置遺傳算法的交叉概率為0.75,變異概率為0.15.種群大小設(shè)置為變量個(gè)數(shù)的150倍,進(jìn)化代數(shù)為500.此外,使用FPGA進(jìn)行片上系統(tǒng)設(shè)計(jì)的過程中,還需綜合考慮硬件資源開銷、時(shí)鐘頻率限制等影響因素.因此在使用遺傳算法的基礎(chǔ)上,還需要對結(jié)果進(jìn)行篩選,以確定系統(tǒng)的最優(yōu)性能.
為了驗(yàn)證模型的有效性,本文分析了LetNet-5和AlexNet卷積神經(jīng)網(wǎng)絡(luò)在同類型FPGA平臺上優(yōu)化前后的工作性能,以說明文中提出的設(shè)計(jì)方案的性能.
本文使用了Rainman Accelerator加速卡,其具有Cortex-A9雙核處理器,1 GB DDR4板載內(nèi)存和1 GB Flash存儲器,支持使用RainBuilder編譯器開發(fā)平臺對其進(jìn)行開發(fā).在Rainman FPGA平臺上,按照本文所提出的優(yōu)化方案對LetNet-5和AlexNet卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行部署,優(yōu)化參數(shù)分別如表1和表2所示.同時(shí)以未優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)作為對照組,對無人機(jī)采集到的同一組電網(wǎng)巡檢故障圖片進(jìn)行特征識別分析.

表1 LetNet-5卷積神經(jīng)網(wǎng)絡(luò)并行優(yōu)化參數(shù)

表2 AlexNet卷積神經(jīng)網(wǎng)絡(luò)并行優(yōu)化參數(shù)
在優(yōu)化后的Rainman FPGA平臺上對目標(biāo)檢測模型進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果如圖2所示.LetNet-5與AlexNet卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)行峰值吞吐量可達(dá)750億次/s和900億次/s.與之相比,優(yōu)化前的峰值吞吐量僅有560億次/s和600億次/s,運(yùn)行峰值吞吐量分別提高了34%和50%.可以看出,原有的神經(jīng)網(wǎng)絡(luò)模型層間流水計(jì)算過程占用了大量資源.通過挖掘?qū)娱g計(jì)算的并行性,對神經(jīng)網(wǎng)絡(luò)進(jìn)行分片計(jì)算,能夠充分挖掘FPGA平臺的計(jì)算性能.

圖2 系統(tǒng)峰值吞吐量對比
由于卷積層、全連接層之間計(jì)算特征與硬件特征之間的差異,LetNet-5和AlexNet在原平臺上進(jìn)行模型訓(xùn)練時(shí),計(jì)算資源的利用率僅有25%和83%,能效為16億次/W和20億次/W.采用本文方案優(yōu)化后,通過直接映射的方式將各層網(wǎng)絡(luò)映射到獨(dú)立的計(jì)算核心,并根據(jù)卷積層與全連接層不同的運(yùn)算特征對其進(jìn)行單獨(dú)優(yōu)化,使得網(wǎng)絡(luò)層和硬件資源的運(yùn)算得以匹配,從而整體上提高加速器的運(yùn)行效率.如圖3所示,優(yōu)化后的LetNet-5和AlexNet資源利用效率可達(dá)到90%和95%,資源利用率為原來的3.6倍和1.14倍.如圖4所示,優(yōu)化后的能效分別為31億次/W和36億次/W,是優(yōu)化前的1.94倍和1.8倍.

圖3 優(yōu)化前后資源利用率對比

圖4 優(yōu)化前后能效對比
為了比較優(yōu)化后LetNet-5和AlexNet卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行電網(wǎng)故障識別方面的速度和準(zhǔn)確率,本文將電網(wǎng)巡檢的4種典型故障作為卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本,對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并統(tǒng)計(jì)訓(xùn)練完成時(shí)間.
每種故障選擇200張圖片進(jìn)行訓(xùn)練,訓(xùn)練完成后,每種故障選擇50張圖片,由系統(tǒng)對故障進(jìn)行識別,并統(tǒng)計(jì)故障識別的準(zhǔn)確率.
表3為優(yōu)化前后系統(tǒng)訓(xùn)練圖片處理的平均時(shí)間對比.由表3中數(shù)據(jù)可知,優(yōu)化后LetNet-5網(wǎng)絡(luò)對單張圖片處理的時(shí)間約為原來的0.2~0.25倍,即處理效率約為優(yōu)化前的4~5倍;AlexNet網(wǎng)絡(luò)對單張圖片的處理時(shí)間約為原來的0.35~0.5倍,即處理效率約為優(yōu)化前的2~3倍.

表3 優(yōu)化前后計(jì)算時(shí)間比較
表4為優(yōu)化前后故障識別率對比.由表4數(shù)據(jù)可知,對于異物搭掛和倒桿、斷桿兩種故障,優(yōu)化前后識別率基本保持不變或略有提高,均在90%以上.這是由于這兩種故障一般都具有明顯的故障特征,容易被計(jì)算機(jī)識別.對于絕緣子破損和金具脫落這兩種故障,優(yōu)化后的LetNet-5網(wǎng)絡(luò)和AlexNet網(wǎng)絡(luò)比優(yōu)化前的識別率提高約10%,說明本文的優(yōu)化方案能夠在保持原有的識別精度上進(jìn)一步提高系統(tǒng)識別的準(zhǔn)確率.

表4 優(yōu)化前后故障識別率對比
本文研究了一種應(yīng)用于FPGA平臺的低功耗卷積神經(jīng)網(wǎng)絡(luò)電網(wǎng)巡檢故障圖像識別方法,得出主要結(jié)論如下:
1)本文提出的循環(huán)分片和增加并行度的方法提高了計(jì)算機(jī)資源的利用率.采用重訓(xùn)練的平衡剪枝技術(shù)緩解全連接層片外訪存壓力,同時(shí)卷積層采用非批處理模式,全連接層以批處理的方式對數(shù)據(jù)進(jìn)行集中處理,對FPGA的計(jì)算性能進(jìn)行了優(yōu)化.
2)在Rainman FPGA硬件平臺上進(jìn)行模型訓(xùn)練分析表明,優(yōu)化后的LetNet-5和AlexNet卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)行峰值吞吐量比優(yōu)化前分別提高了34%和50%,資源利用率可達(dá)到原來的3.6倍和1.14倍,優(yōu)化后的能效是優(yōu)化前的1.94倍和1.8倍.
3)優(yōu)化后的LetNet-5網(wǎng)絡(luò)對圖片處理效率約為原來的4~5倍,AlexNet網(wǎng)絡(luò)對圖片處理效率約為優(yōu)化前的2~3倍.同時(shí),兩種網(wǎng)絡(luò)均能夠在保持原有識別精度的基礎(chǔ)上進(jìn)一步提高系統(tǒng)識別的準(zhǔn)確率.