李 夫,陶青川,馬進德
(四川大學電子信息學院,成都 610065)
當今社會快速發展,各種智能設備走進我們的生活,電力作為其能源支持已經在我們的生活中不可或缺。因此,電力部門安全、穩定地輸送電力,滿足社會的生產生活需求,已經成為我們開展日常生活的基本保障。與此同時,違反法律的竊電行為時有發生[1],尤其是在一些違規經營的地下小作坊、成規模的私下“挖礦”人員更是寄希望于竊電來逃過電力部門的監管;同樣,竊電手段也是層出不窮[2],最常見的便是對家用智能電表進行非法改裝,改裝手法以對電表進線處焊點短接最為普遍。這種違法的竊電行為不僅造成國家電力部門財產嚴重損失,更存在著出現電路故障而引發火災事故的風險。所以對智能電表定期進行有效的安全檢查十分有必要。
當前電力部門對家用智能電表的檢查手段[3]主要是人工檢查。人工肉眼檢查不僅對檢查人員的反竊電經驗和視力要求頗高,還存在著主觀性引發的誤檢、長時間連續檢查時檢測效率低下等諸多缺點[4]。近年來,基于大數據[5]、邊緣AI[6]等技術的反竊電方法在一定程度上改善了此窘境。此外,針對PCB 的缺陷檢測算法[7]也可以應用到電能表表盤上。竊電行為中對進線處短接的情況最為常見,此處焊點信息能十分直觀地反映有無竊電行為,但針對此處的反竊電算法并不多見,因此給電路部門提供一種精準且高效的焊點檢測方法對竊電的違法行為進行沉重打擊具有十分重要的意義。
針對智能電表焊點顏色統一、排列緊密以及元器件細小、數量眾多的特點,本文提出了一種基于DeepLabV3+改進的語義分割算法來對焊點進行分割。實驗表明,該算法對焊點分割準確率高,推理速度快,對于反竊電研究具有重要意義。
語義分割[8]作為深度學習的重要研究領域之一,一直是該領域研究的熱點,也誕生了許多種適用于不同應用場景的分類網絡。在Long等[9]提出全卷積神經網絡(fully convolutional networks,FCN)后,各種在FCN 基礎上改進的分割算法不斷涌現。其中,最為經典的是Ronne-berger 等[10]提出的U-Net 分割網絡。U-Net 網絡針對FCN 池化操作存在的降低特征圖分辨率的缺陷,采用了編碼解碼結構恢復特征,因網絡結構中編碼器與解碼器組成大寫字母U 的形狀而得名。U-Net在編碼器中利用特征提取獲取圖像信息;在解碼器中利用特征恢復獲取高層特征;此外,還在高層特征和淺層特征間加入跳躍連接,最大限度還原原圖像空間信息以此克服FCN的缺陷。但是U-Net模型計算量較大,在面對電能表元器件排列緊密這種復雜情況時,依然存在推理時間太長的缺點。Google 團隊提出的MobileNets[11]是一種基于卷積神經網絡(convolutional neural network,CNN)的輕量級語義分割模型,該模型在參數量和計算量都較小的情況下獲得了較高的精確度,因此非常適合部署到運算資源有限的移動端平臺上。Mobile-NetV2[12]減少參數量的核心是其深度可分離卷積模塊,可加快網絡收斂速度。MobileNetV2 還借鑒ResNet 的殘差結構引入了線性瓶頸模塊和倒置殘差結構減少了信息丟失、提高了模型性能。MobileNetV3[13]在MobileNetV2 的 基 礎 上 引 入 了SE(squeeze-and-excitation)注意力模塊到瓶頸結構中,通過壓縮(squeeze)與激勵(excitation)兩種操作起到強化突出特征、減弱細微特征的效果,從而實現優化通道權重分配。此外,Mobile-NetV3采用了NAS(network architecture search)優化網絡模塊進行塊級搜索,再結合NetAdapt 進行層級搜索找到優化效果最理想的模型。但是SE注意力機制中的兩個連接層需要較大計算量,需要更長推理時間。
DeepLabV3+[14]是Google 團隊提出的一系列DeepLab模型[15-16]中最好的語義分割模型,Deep-LabV3+在DeepLabV3[17]的基礎上加入了一個Decode 模塊來細化分割結果,該模型的整體網絡結構如圖1所示。

圖1 DeepLabV3+網絡結構
DeepLabV3+主要分為Encoder 和Decoder 兩部分,Encoder 在DeepLabV3 的基礎上改進了Backbone;Decoder 是DeepLabV3+新提出的部分,它對高層特征和低層特征做進一步融合,提高了空間信息的恢復程度。
Encoder 部分分為Backbone 和ASPP 兩個模塊,Backbone 有改進的ResNet 和加入可分離卷積的Xception 兩種分類網絡。待預測圖經過Backbone 提取特征后輸出最后一層卷積(feature maps)和低級特征(low-level features)兩部分,并分別作為ASPP模塊和Decoder部分的輸入。
ASPP 模塊以Feature Maps 為輸入,使用一個1*1 普通卷積、三個3*3 的膨脹卷積共四個包含BN 和激活層的空洞卷積塊和一個包含池化、卷積、BN、激活層的全局平均池化塊得到五組Feature Maps,再通過一個1*1 的卷積塊進行特征壓縮后送入到Decoder 部分。其中三個膨脹卷積的膨脹率分別為6、12、18,假設以Hrk表示卷積核大小為k,膨脹率為r的卷積運算,則ASPP模塊的輸出可表示為
其含義是將膨脹率分別為6、12、18的膨脹卷積進行疊加,從而獲得多個尺度的信息增益。膨脹率的代數表達式為
其中:x[i+r×s]表示輸入信號;y[i]表示輸出Feature Map;r代表采樣步長;s代表卷積核的大小;w[s]代表卷積核大小為s的卷積參數。
在Decoder 部分中為了不掩蓋ASPP 模塊輸出的重要性,會先用一個1*1的卷積把Backbone輸出的Low-Level Features 的通道數從256 降到48。接著將ASPP 模塊的輸出進行插值上采樣,再將兩者通過Concat連接起來并通過一個3*3的卷積塊以獲取更加準確的分割結果,最后經過插值上采樣得到預測圖。
ShuffleNetV2 是由Ma 等[18]在2018 年提出的輕量級分類網絡。在此論文中,作者首先提出了輕量化的分類網絡應遵循的四個準則:
(1)輸入輸出通道數一致時,內存訪問量MAC最小;
(2)分組數過大的分組卷積會增加MAC;
(3)碎片化操作對并行加速不友好;
(4)Element-wise 操作帶來的時間和內存消耗不應該被忽略。
ShuffleNetV2 是在此四個準則的基礎上設計出來的,它的基本模塊如圖2(a)所示,引入了“通道拆分”算子,在每個單元的開始,c個輸入特征通道被分成兩個分支,其中一個分支有c-c′個通道,另一分支有c′個通道(通常c′=c/2)。ShuffleNetV2 滿足上述四個準則的設計體現在以下四點:在圖2(a)中的右邊分支是1*1 卷積。因為“通道拆分”已經可以實現分組,故該分支沒有使用分組卷積,由此滿足準則2;輸入輸出通道數一致,滿足準則1;網絡碎片化操作數量小,滿足準則3;將Shuffle-NetV1中的Add操作改為了沿通道方向堆疊,元素級操作僅存在于其中一個分支中,逐元素操作帶來的內存消耗和時間消耗比較小,滿足準則4;為了防止“近親繁殖”現象,利用“通道洗牌”算子使兩個分支信息進行交流。Shuffle-NetV2 的空間下采樣模塊如圖2(b)所示,由于移除了“通道拆分”操作,所以輸出通道數翻倍。表1 顯示了ShuffleNetV2 整體網絡結構,ShuffleNetV2使用Conv5卷積層來進行特征融合,在Stage2、Stage3、Stage4 的 第 一 個Block 中,Stride 都為2,輸出通道數會翻倍,表中標記為0.5×、1×、1.5×和2×代表依據通道數而產生的四種復雜度的網絡。

圖2 ShuffleNetV2結構

表1 ShuffleNetV2整體網絡結構
ShuffleNetV2 高效并且精度高的原因可以總結為以下兩點:第一,高效的構建塊可以使網絡承載更多的特征通道和網絡容量;第二,構建塊之間的“直接相連”是一種特征重用,這種特征重用在相鄰的構建塊之間作用更強。DenseNet 因為啟用了特征復用,所以性能比較強大,而ShuffleNetV2 各個塊之間通過“通道拆分”的方式,正好滿足類似于DenseNet 的特征復用的模式,即相鄰的塊有更多的共享復用特征,距離較遠的有更少的共享復用特征。
DeepLabV3+針對DeepLabV3 計算消耗大、推理速度慢的問題,將主干網改進為Xception,并且取得了一定效果。在此基礎上,本文結合反竊電的檢測場景特點,對DeepLabV3+做了如下改進:
(1)將主干網改進為輕量級的分類網絡ShuffleNetV2進一步提升檢測效率。
(2)在ASPP 模塊中加入2*2 膨脹卷積,通過調整膨脹率更好地分割密集的電阻元器件和焊點。
1.3.1 主干網的改進
雖然以Xcepiton 作為主干網進行特征提取可以有很好的分割精度,但在反竊電場景下,有以下兩個實際特點:①焊點細小且排列緊密;②檢測設備算力有限。針對上述兩點需求,本文在保留DeepLabV3+的ASPP 模塊和Decoder 部分的基礎上將主干網改進為ShuffleNetV2,構建更輕量級的DeepLabV3+網絡模型。
ShuffleNetV2 的低層特征中較好地提取了焊點這種尺寸較小的物體的特征信息,搭配Deep-LabV3+的Decoder部分可以通過Concat對低層特征進行融合,這樣能充分發揮ShuffleNetV2 和Decoder 的優勢。此外,輸入圖像經過stage2、stage3、stage4多次卷積或池化操作混合特征后,特征大小僅為12×12。而焊點在輸入圖像的占比本身很小,本文的網絡模型設計能夠防止焊點特征在多次卷積中丟失。
1.3.2 ASPP模塊的改進
ASPP 模塊使用的不同尺度膨脹卷積能夠通過調整卷積核的感受野獲得多個尺度的信息。因此膨脹卷積針對較大特征物體能很有效地提升,但這個提升在焊點這種細小的物體的分割場景并不明顯甚至有弊無利。
針對此場景,本文對原有ASPP 模塊做出改進,新增一個2*2卷積核,調整膨脹率以獲得對焊點更好的分割效果。改進后的網絡結構如圖3所示。
本文實驗所用數據集來自對電力系統提供的電能表PCB 和手工制作的異常焊點進行圖像采集,在不同光照、角度、距離下拍攝,共獲得高清圖像6507 張,經過數據增強后數據集擴展到10100 張圖片,并按照8∶1∶1 的比例進行隨機劃分,分別作為訓練集、測試集和驗證集。
輸入圖經過分割將會被分為焊點和背景兩類,為了能獲得更理想的訓練效果,將所有訓練集圖像像素統一為512×512的整數倍,為了防止失真,縮放的時候對需要調整的圖像添加灰條。
訓練模型所用硬件平臺配置為Intel(R)Core(TM)i5-6500 CPU@3.2 GHz, Nvidia GeForce GTX 1080Ti 11 GB GPU,8 GB內存的服務器,安裝Ubuntu20.04操作系統,CUDA11.4,Python3.7。
本文實驗分為兩步:實驗一對比改進的Deep-LabV3+模型與以Xception、MobileNetV2、MobileNetV3 為主干網的DeepLabV3+,以及傳統的語義分割網絡U-Net 模型指標以驗證改進點(1)的實際效果;實驗二是在實驗一的基礎上進行的,在以ShuffleNetV2 為主干網的同時,對比原有的ASPP 模塊和改進的ASPP 模塊的模型效果以驗證改進點(2)的實際效果。
本實驗以mIoU(mean intersection over union)、mPA(mean pixel accuracy)、參數量、推理時間和模型大小等作為衡量模型分割效果的指標,對比了改進的DeepLabV3+和以Xception、MobileNetV2、MobileNetV3為主干網的DeepLabV3+,以及傳統的語義分割網絡U-Net 的模型效果。Shuffle-NetV2 的網絡結構中可以通過調整Block 的輸出通道數為0.5×、1.0×、1.5×、2.0×來調整模型復雜度,為了更好地權衡模型精度和內存占用,本文將四個通道輸出數分別訓練四個模型來對比。實驗結果如表2所示。

表2 不同網絡模型性能指標對比
實驗結果表明,基于ShuffleNetV2 改進的DeepLabV3+對比原網絡在模型參數量、推理時間和模型大小方面有明顯提升,比如CPU 上推理時間從0.44 s 縮短至0.08 s,減少了81.8%,CPU 推理時間是將PyTorch 模型轉為ONNX 模型后使用ONNX Runtime 推理加速后在反竊電設備上測出的。更小的參數量和模型大小以及更短的推理時間可以滿足反竊電場景下移動設備算力有限的需要;與主干網使用MobileNetV2、MobileNetV3 的網絡相比,改進的DeepLabV3+在參數量和模型大小相近的情況下mIoU 和mPA最多能提高0.67%,有著更好的分割精度,更重要的是推理時間能從0.22 s 減少至0.08 s,減少63.6%;與U-Net 相比,改進的DeepLabV3+在不大幅犧牲mIoU 和mPA 的前提下,仍然在模型參數量、推理時間和模型大小上有著顯著優勢,能夠滿足反竊電精度的同時大幅縮短推理時間,在CPU 上減少81.8%,在GPU 上減少39.1%。GPU 上的推理時間是在實驗平臺上分別用每個模型對測試集1010 張圖像進行10 輪預測后取平均值算出的單張圖像的推理時間。
Block 的輸出通道數的選取會明顯影響模型的參數量:通道數增加時參數量和模型大小會明顯增大,推理時間也隨之增加,與此同時mIoU 和mPA 有小幅提升。通過計算更多的通道數提升的精度收益和模型大小損失的比值,并結合竊電場景的兩點需求,本文最終選取了0.5×的通道數。
為了驗證本文改進的ASPP 焊點語義分割的模型效果,本文還進行了改進后的ASPP 與原ASPP 的對比實驗,此實驗中主干網為Shuffle-NetV2,Block 的輸出通道數為0.5×,實驗結果如表3所示。

表3 不同ASPP性能指標對比
改進后的模型算法對焊點的分割效果如圖4所示,實驗結果表明本文提出的網絡能夠精確有效地分割焊點。

圖4 改進的DeepLabV3+網絡分割效果
對分割后的圖像進行后處理以獲得焊點信息,根據焊點的個數和焊點的連通區域面積就能輕松地判斷有無焊點短接、缺失的異常:焊點短接會導致焊點個數減少并且焊點連通區域面積增大,焊點缺少會導致焊點個數減少。判斷流程如圖5所示。

圖5 焊點異常判斷流程
將檢測到的正常焊點標注虛線方框,對異常焊點標注實線方框,檢測結果如圖6所示。

圖6 后處理和檢測結果
針對反竊電算法中焊點異常檢測任務的兩個特點,本文在原有的DeepLabV3+網絡的基礎上對主干網和ASPP 模塊做出了改進,提出了一種更適合反竊電算法的輕量級網絡模型,并進行了一系列對比實驗驗證該模型的效果。對比實驗證明本文提出模型的mIoU 達到93.71%,對比原有的DeepLabV3+提高了1.24 個百分點;mPA 達到97.51%,提高了1.30 個百分點;參數量減少了82.5%,在CPU 上的推理時間減少了81.8%,在GPU 上推理時間至多能減少36.6%。該算法模型能夠準確地分割出電能表表盤上的焊點,為后續流程對竊電行為的檢測提供了良好的數據基礎。能夠為電力部門提供一個精確度更高、更輕量級的算法模型。由于PCB 電路板的高度類似性,本文提出的算法有很好的推廣性,可以應用到電路板上的其他檢測場景,例如PCB電路板元器件分類及其缺陷檢測等。