張 凱 羅 欣 孫志剛 肖 力
(華中科技大學人工智能與自動化學院 武漢 430074)
定子絕緣故障在大型發(fā)電機故障中占有重要比例,定子表面因為其鐵芯過熱造成脫漆、碳化、縫隙等絕緣劣化故障,直接影響發(fā)電機整體運行[1]。當前對發(fā)電機定子表面的絕緣缺陷檢測幾乎都是依靠人工抽轉(zhuǎn)子檢測[2],這種人工缺陷判別的方式受人為因素影響較大。而利用以爬壁機器人為載體的視覺系統(tǒng)拍攝定子表面圖像,可以在不抽轉(zhuǎn)子的情況下,進行膛內(nèi)定子表面缺陷自動檢測,避免因人工檢測造成的漏檢、誤檢、差異化檢測的問題,很大程度地節(jié)約周期檢修成本。
近年來,以Faster-RCNN[3]為代表的二階段網(wǎng)絡(luò)和以YOLO[4]系列、SSD[5]系列為代表一階段的網(wǎng)絡(luò)在物體表面缺陷檢測上得到了廣泛的應(yīng)用。如蔡超鵬等利用Faster R-CNN設(shè)計了一套金屬表面缺陷自動檢測平臺[6],實現(xiàn)了金屬軸表面的缺陷檢測和定位,檢測精度達到了94%,但其單幀檢測速度在200ms左右,達不到實時性要求;黃鑫元[7]等利用基于深度可分離卷積的YOLOv3網(wǎng)絡(luò)實現(xiàn)了鋼絲繩表面損傷診斷的方法,平均精度為77%,同時將YOLOv3模型大小縮減了3倍??偟貋砜?,一階段網(wǎng)絡(luò)較二階段網(wǎng)絡(luò)在速度上有明顯優(yōu)勢,特別是隨著YOLOv4的出現(xiàn),一階段網(wǎng)絡(luò)在主流公開數(shù)據(jù)集上的精度和速度都均超越的二階段網(wǎng)絡(luò),并且也在物件的表面缺陷檢測中廣泛應(yīng)用。Huafu Deng[8]等將級聯(lián)的YOLOv4網(wǎng)絡(luò)用于金屬表面的復雜裂紋檢測,該方法比傳統(tǒng)的檢測方法精度有很大提高,并且比YOLOv4的檢測速度快28%。雖然這些檢測網(wǎng)絡(luò)精度基本能滿足要求,但其體積都比較龐大,對硬件性能要求較高,無法在嵌入式設(shè)備上進行部署,難以在工業(yè)界推廣使用。
基于輕量化改造的思想,本文將改進的MobileNetv3[9]網(wǎng)絡(luò)替換原始YOLOv4的主干特征網(wǎng)絡(luò),精簡YOLOv4網(wǎng)絡(luò)特征融合網(wǎng)絡(luò),并通過減小卷積核,合并卷積層和批量歸一化層的方式得到了一種輕量化的YOLOv4檢測網(wǎng)絡(luò)模型Tiny-YOLOv4。實驗結(jié)果表明,本文檢測網(wǎng)絡(luò)模型的精度優(yōu)于YOLOv4,模型體積大小和檢測速度遠超過原始YOLOv4。
YOLO系列檢測網(wǎng)絡(luò)是一類基于回歸思想的一階段目標檢測網(wǎng)絡(luò),目前已經(jīng)演進到第四個版本YOLOv4[10]。YOLOv4整體結(jié)構(gòu)如圖1所示,其結(jié)構(gòu)可分為CSPDarknet53主干網(wǎng)絡(luò),PAN[11]特征融合網(wǎng)絡(luò),YOLO檢測層網(wǎng)絡(luò)三部分。其主干網(wǎng)絡(luò)有72個卷積層,共進行了5次下采樣。在結(jié)構(gòu)上通過引入跨階段局部網(wǎng)絡(luò)結(jié)構(gòu)(CSP結(jié)構(gòu)[12])來解決深度CNN中網(wǎng)絡(luò)優(yōu)化的梯度信息重復問題,進而減少網(wǎng)絡(luò)計算量。在特征融合層利用路徑聚合結(jié)構(gòu)(PAN結(jié)構(gòu))融合兩個特征金字塔對應(yīng)的尺度特征,增強了該網(wǎng)絡(luò)在三個特征尺度的特征提取能力和對不同尺度目標的檢測能力。
圖1 YOLOv4整體網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLOv4使用最后三次下采樣的特征圖大小作為目標檢測的三個尺度,再經(jīng)過兩次上采樣后得到52×52大小的特征圖輸出,再利用步長為2的卷積進行兩次下采樣,得到兩個堆疊順序相反的特征金字塔,將兩個金字塔對應(yīng)的三個尺度的特征層進行通道融合,并分別送入檢測層,最終得到13×13×27,26×26×27,52×52×27這三個尺度的結(jié)果特征圖,分別用于檢測大、中、小三個尺度的目標。
MobileNetv3是Google公司通過NAS[13]設(shè)計的一種基于強化學習的自搜索網(wǎng)絡(luò)。該網(wǎng)絡(luò)有大小兩個版本:MobileNetv3-Large和MobileNetv3-Small。相比其前兩代網(wǎng)絡(luò),其主要有如下優(yōu)點。
1)沿用了MobileNetv2[14]中的深度可分離卷積方式和具有線性瓶頸層的倒殘差結(jié)構(gòu)。其中,深度可分離卷積將普通卷積分解為一次深度卷積和一個點卷積。當輸入特征圖大小為Dk×Dk×M,輸出特征圖的大小為Dk×Dk×N,卷積核大小為K×K,則一次普通卷積的計算量為
而深度可分離卷積的計算量為深度卷積和點卷積計算量之和,即:
則普通卷積和深度可分離卷積計算量之比為
可見,當卷積核大小為3,通道數(shù)為256時,深度可分離卷積的計算量僅為普通卷積的1/9。
2)MobileNetv3在倒殘差結(jié)構(gòu)中的深度卷積和點卷積之間引入了擠壓與激勵SE[15](Squeezeand-Excitation)結(jié)構(gòu),如圖2所示,對于輸入C×W×H大小的特征圖,經(jīng)過SE模塊后,將C個通道都賦予不同的權(quán)值,讓網(wǎng)絡(luò)學習到特征圖不同通道之間的關(guān)系,能夠讓模型更加關(guān)注信息量最大的通道特征,而抑制不重要的通道特征。
圖2 倒殘差結(jié)構(gòu)中擠壓與激勵網(wǎng)絡(luò)結(jié)構(gòu)
3)使用hard-swish激活函數(shù)代替swish激活函數(shù)來降低計算量,Hard-swish函數(shù)表達式如下:
由于swish激活函數(shù)對嵌入式平臺而言計算量過大,hard-swish函數(shù)通過將swish函數(shù)分段線性化,在不犧牲精度的前提下減小了計算量,圖3給出了swish激活函數(shù)和hard-swish激活函數(shù)的曲線圖。
圖3 swish與h-swish對比圖
為使改進的YOLOv4體積更小,本文采用網(wǎng)絡(luò)輕量化的思想,將改進的輕量級網(wǎng)絡(luò)MobileNetv3作為YOLOv4的主干特征提取網(wǎng)絡(luò),設(shè)計出了一種輕量化的YOLOv4網(wǎng)絡(luò)Tiny-YOLOv4。
MobileNetv3借鑒了MobileNetv1[16]中的深度可分離卷積思想,相比于YOLOv4的主干網(wǎng)絡(luò)CSPDarkNet53,其既保持了較強的特征提取能力,又很大程度減少模型的體積。本文從提高前向推理速度的角度對MobileNetv3做了如下改進。
1)采用小卷積核減少計算量
小卷積核是減少參數(shù)量的重要途徑,在MobileNetv3的bottleneck模塊的深度卷積中,使用5×5的卷積核來增大卷積核的感受野,而本文使用兩個3×3卷積代替一個5×5卷積來達到相同效果,卷積過程如圖4所示。
圖4 兩次3×3卷積示意圖
兩次3×3卷積的感受野和一個5×5卷積是相同的,在通道相同情況下,前者計算量僅為后者的0.7倍。
2)合并卷積層和批量歸一化層
批量歸一化層(Batch Normalization,BN)用于將數(shù)據(jù)進行歸一化處理,能使網(wǎng)絡(luò)在訓練時加速收斂,并能夠防止過擬合現(xiàn)象發(fā)生,其計算公式為
xconv表示由卷積層輸入到BN層的特征圖,μ和σ2分別表示特征圖節(jié)點的均值和方差,?為很小的偏移量。γ和β分別表示縮放因子和偏置值,是需要網(wǎng)絡(luò)訓練的參數(shù)。xconv的計算公式為其中xin表示卷積層的輸入,w表示卷積核的權(quán)值。
盡管BN層在訓練時起到了積極的作用,但在網(wǎng)絡(luò)進行前向推理時,BN會影響其速度。因此本文將MobileNetv3的卷積層和BN層進行合并,用以加速網(wǎng)絡(luò)的推理過程,合并公式如下所示:
則將卷積層和BN層合并后,新的卷積計算方為
其中
將BN層的權(quán)值融合到卷積層的計算中,可以避免網(wǎng)絡(luò)在進行前向推理時計算BN的參數(shù),而只需計算原始卷積層的權(quán)值和偏置來達到相同的計算效果,進而達到提高網(wǎng)絡(luò)推理速度的目的。
YOLOv4主干網(wǎng)絡(luò)中跨階段網(wǎng)絡(luò)CSP結(jié)構(gòu)的使用,避免了在網(wǎng)絡(luò)優(yōu)化中梯度信息的重復使用,減少了計算量的同時又能保持準確率不變,降低了計算瓶頸。鑒于CSP結(jié)構(gòu)的該優(yōu)點,本文算法也在特征融合層引入了輕量化的CSP結(jié)構(gòu)。圖5(a)和圖5(b)分別給出了原始YOLOv4中使用的CSP結(jié)構(gòu)和本文所設(shè)計的輕量化CSP結(jié)構(gòu)。
圖5 CSP結(jié)構(gòu)圖
對兩種跨階段局部連接(CSP)結(jié)構(gòu),本文一方面將原始YOLOv4的CSP結(jié)構(gòu)中Mish激活函數(shù)換成了計算量較小的hard-swish激活函數(shù),另一方面通過將CSP結(jié)構(gòu)中的兩個卷積層(圖中兩個單獨的Conv2D模塊)的計算結(jié)果直接進行通道融合后,再共用一個BN層和激活函數(shù),這樣避免了這兩個卷積塊都單獨計算批量歸一化和激活值,來進一步減小網(wǎng)絡(luò)的計算量。
經(jīng)過上述輕量化改進后,本文Tiny-YOLOv4模型的可訓練參數(shù)量由原始YOLOv4的64.1M減少到7.3M,模型參數(shù)量縮減程度達64%,進而從結(jié)構(gòu)設(shè)計上極大地減小了YOLOv4模型的體積。本文設(shè)計的Tiny-YOLOv4網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖6所示。
圖6 本文Tiny-YOLOv4的整體網(wǎng)絡(luò)結(jié)構(gòu)圖
網(wǎng)絡(luò)中將MobileNetv3網(wǎng)絡(luò)中5×5的卷積核替換成兩個3×3的卷積核以減小計算量。同時主干網(wǎng)絡(luò)分別輸出了52×52×40,26×26×112,13×13×960三個尺度的特征圖,再送入Tiny-YOLOv4算法的PAN特征融合層。
在PAN特征融合網(wǎng)絡(luò)結(jié)構(gòu)中,本文使用結(jié)合了跨階段局部連接結(jié)構(gòu)的卷積模塊CSP_Conv2D代替原始YOLOv4網(wǎng)絡(luò)中的5個堆疊卷積塊。再經(jīng)過兩次上采樣和兩次下采樣之后,形成了兩個反向的特征金字塔,將兩個金字塔對應(yīng)大小的特征層進行通道融合,送入Tiny-YOLOv4的檢測層網(wǎng)絡(luò),最終輸出13×13×27,26×26×27,52×52×27三個尺度的結(jié)果特征圖用于計算三個尺度的預測框。
實驗中電腦的硬件環(huán)境為Inter(R)Xeon E5-2603 v4 CPU,內(nèi)存為8G,GPU為NVIDIA GTX1080Ti,顯存為11G。深度學習框架是pytorch1.6,GPU加速庫版本為CUDA10.2,Cudnn7.6.5。
本文定子鐵芯表面圖像數(shù)據(jù)集通過發(fā)電機膛內(nèi)爬壁機器人上的微距相機采集。其中腔內(nèi)爬壁機器人以及實驗平臺如圖7所示,履帶式永磁吸附爬壁機器人通過外部旋轉(zhuǎn)軌道進入發(fā)電機腔內(nèi)壁,安裝在小車頭部的視覺模塊拍攝定子鐵芯表面圖像,再通過USB數(shù)據(jù)線傳回上位機。
圖7 現(xiàn)場圖像采集平臺
獲得的圖像數(shù)據(jù)集包含四種缺陷樣本(漆瘤、掉漆、油污、鐵芯縫隙)共為397張,其中漆瘤圖像114張,掉漆圖像87張,油污圖像93張,鐵芯縫隙圖像103張。四種缺陷的典型圖片如圖8所示。
圖8 發(fā)電機定子表面典型缺陷種類
為了擴充數(shù)據(jù)樣本并增強模型的泛化能力,本文采用加噪聲、裁剪、翻轉(zhuǎn)、銳化、鏡像五種方式將原始樣本數(shù)量擴增到8000張,并按照8:1:1的比例進行訓練集,驗證集和測試集的分配。
本文分別對YOLOv3、YOLOv4、經(jīng)過直接整合的MobileNetv2-YOLOv4,MobileNetv3-YOLO4以及本文Tiny-YOLOv4共5種網(wǎng)絡(luò)進行訓練,以便將本文網(wǎng)絡(luò)與其余四種網(wǎng)絡(luò)進行性能對比。
使用對應(yīng)的預訓練權(quán)重分別初始化五種網(wǎng)絡(luò)。每個網(wǎng)絡(luò)均使用下述方法訓練:將網(wǎng)絡(luò)的初始動量設(shè)置為0.9,初始學習率調(diào)整為0.001,訓練批次大小設(shè)置為16。先凍結(jié)主干網(wǎng)絡(luò),進行50個輪次的預熱訓練后,再將學習率設(shè)置為0.0001,將解凍后的整體網(wǎng)絡(luò)再訓練100個輪次。
為了對比各個模型的性能,本文使用精度,召回率,平均精度,均值平均精度,作為評價標準,四種指標的計算方法如下:
式中,TP、FP、FN分別表示真正樣本數(shù)目,假正樣本數(shù)目,假負樣本數(shù)目,precision表示精度,recall表示召回率,A P表示單類目標的平均精度,mAP為所有類別的平均精度的均值,n為目標類別數(shù)。本文將上述5種模型分別在發(fā)電機定子表面缺陷測試集上(包含漆瘤、油污、鐵芯縫隙、掉漆各200張)進行測試,實驗中設(shè)定目標框與預測框的IOU檢測閾值為0.5。表1給出了5種網(wǎng)絡(luò)模型在測試數(shù)據(jù)集上的平均精度AP和召回率recall對比結(jié)果。
由表1中的mAP指標來看,YOLOv3的檢測精度相對最低為95.8%,特別是對漆瘤這類缺陷精度只有88.7%,遠低于其余四種網(wǎng)絡(luò)。而原始YOLOv4,MobileNetv2-YOLOv4,MobileNetv3-YOLOv4模型的mAP值分別為97.6%,97.6%,97.4%。而本文網(wǎng)絡(luò)Tiny-YOLOv4的均值平均精度mAP比YOLOv4高0.7%,比經(jīng)過直接整合的兩種網(wǎng)絡(luò)Mobile-Netv2-YOLOv4和MobileNetv3-YOLOv4分別高0.7%和0.9%。說明本文的Tiny-YOLOv4檢測網(wǎng)絡(luò)在本文數(shù)據(jù)集上是有效的,而且精度上優(yōu)于其余四種網(wǎng)絡(luò)。由于本文的網(wǎng)絡(luò)結(jié)構(gòu)輕量化設(shè)計,使本文算法較其余四種網(wǎng)絡(luò)在權(quán)重大小和參數(shù)量上表現(xiàn)出較好的性能。表2給出了五種網(wǎng)絡(luò)權(quán)重模型大小和計算量(BFLOPS)對比結(jié)果。
表1 不同模型精度對圖
表2 不同網(wǎng)絡(luò)模型大小和計算量(BFLOPS)
根據(jù)表2的五種模型大小和計算量(BFLOPS)得出,YOLOv3,YOLOv4模型大小分別為246.4M和256.3M,網(wǎng)絡(luò)計算量分別為32.77和29.89,兩種模型對硬件計算性能要求較高,適合于高性能計算平臺上的部署。而本文網(wǎng)絡(luò)大小僅為39.6M,比YOLOv4體積減少84.5%,同時精度優(yōu)于原始YOLOv4,說明本文算法適合在嵌入式設(shè)備上的進行部署。
為了測試不同模型在部署時的計算性能,本文將Tiny-YOLOv4與其余四種網(wǎng)絡(luò)在訓練平臺上進行了前向推理測試。測試時,使用相同圖像推理400次,再取其平均值作為網(wǎng)絡(luò)模型的單張推理時間。
表3給出了五種模型單幀推理速度對比結(jié)果。本文Tiny-YOLOv4的推理時間為15.3ms,幀率達到了65.4幀/s,在五種網(wǎng)絡(luò)模型中速度最快,而YOLOv4的單幀推理速度為28.0ms,比本文網(wǎng)絡(luò)慢12.7ms。而且本文網(wǎng)絡(luò)比MobileNetv2-YOLOv4和MobileNetv3-YOLOv4的單張推理時間分別快4.5ms和1.1ms。說明本文算法在推理速度和檢測精度上均優(yōu)于其余四種網(wǎng)絡(luò)。圖8給出了本文算法部分檢測效果圖。
表3 不同模型推理速度對比
圖9 本文算法在測試集中部分檢測結(jié)果
針對大型發(fā)電機定子表面缺陷檢測任務(wù),本文結(jié)合MobileNetv3設(shè)計出了一種輕量化的YOLOv4檢測網(wǎng)絡(luò)Tiny-YOLOv4。通過在結(jié)構(gòu)上對YOLOv4的輕量化改進,使得本文網(wǎng)絡(luò)模型精度在本文定子表面缺陷數(shù)據(jù)集上優(yōu)于YOLOv4的同時,模型大小和推理速度均遠超YOLOv4,并且也超過了兩種直接整合的網(wǎng)絡(luò)MobileNetv2-YOLOv4和Mobile-Netv3-YOLOv4,說明本文對YOLOv4輕量化改進是有效的。本文算法在模型大小上的優(yōu)勢,使得其具有在嵌入式邊緣設(shè)備上進行定子表面缺陷檢測的應(yīng)用前景。