姜 瑾, 李 明, 朱美強, 陳家樂
(中國礦業(yè)大學信息與控制工程學院, 江蘇 徐州 221000)
近年來, 光伏電站在全世界大規(guī)模應用.太陽能電池板若出現(xiàn)裂紋會影響發(fā)電效率,甚至導致更嚴重的故障,因此太陽能電池板的裂紋檢測是光伏電站設(shè)備健康監(jiān)測的重要內(nèi)容.由于晶體硅太陽能電池板的表面缺陷不易通過肉眼分辨,一般需要特殊成像技術(shù)來凸顯缺陷,其中電致發(fā)光成像(electroluminescent, EL)技術(shù)被廣泛應用于該領(lǐng)域[1].目前,基于機器視覺的太陽能電池板EL圖像表面缺陷檢測方法的研究較多,如Tsai等[2]利用傅里葉圖像重建來檢測太陽能電池板缺陷;王憲保等[3]提出了基于深度置信網(wǎng)絡(luò)的表面缺陷檢測方法; Deitsch等[4]采用傳統(tǒng)特征支持向量機和深度卷積網(wǎng)絡(luò)遷移模型檢測缺陷.上述方法多用于出廠時太陽能電池板的檢測,且樣本種類單一,數(shù)量較少.然而,與出廠時的太陽能電池板相比,室外運行中的電池板表面污染嚴重,早期出現(xiàn)的缺陷主要是裂紋,并且裂紋長短不一,與背景對比度不強,分布隨機,難以辨別.本文待檢測的太陽能電池板EL圖像, 來自8個不同地區(qū)的光伏電站, 被分割成電池單元的圖像近5萬張,圖像之間的差異較大, 采用現(xiàn)有的裂紋檢測方法難以獲得理想效果.卷積神經(jīng)網(wǎng)絡(luò)[5-6]常被用于檢測分布隨機且長短不一的裂紋,在路面、橋梁和隧道裂紋檢測等方面取得良好成效.本文擬提出一種EL圖像分割與卷積神經(jīng)網(wǎng)絡(luò)分類相結(jié)合的太陽能電池板裂紋檢測算法.
便攜式紅外電荷耦合器件(charge coupled device, CCD)相機采集的室外太陽能電池板的EL圖像一般包含大量黑色區(qū)域, 如圖1所示.由于電池板區(qū)域為不規(guī)則四邊形,故須尋找出原始圖像中的太陽能電池板區(qū)域, 并將其矯正為2 400×4 000×3像素大小的矩形圖像,然后分割成太陽能電池單元圖像.具體圖像處理流程如圖2所示.
圖像矯正中,根據(jù)透視原理可得到矯正圖像的坐標變換公式:
(1)
其中(u,v)為原始圖像的坐標, (x,y)為矯正后圖像對應的坐標,a1,a2,…,a8為變換參數(shù).已知太陽能板對應的四邊形的4個頂點坐標值及其在矯正圖像中對應的坐標值, 即可列方程求得變換參數(shù)a1,a2,…,a8.
圖像分割中, 為了凸顯電池單元的邊界線,采用銳化濾波圖像增強技術(shù), 得到增強后的圖像
(2)
其中Is為原始圖像;Im是核為(W/3,H/3)的濾波器對Is進行均值濾波后所得圖像,W,H分別為原始圖像的寬和高.
對增強后的圖像進行高斯模糊處理
(3)
其中σ為正態(tài)分布的標準偏差.
對高斯模糊處理后的圖像進行去噪點和二值化處理, 再將所得圖像的像素值向橫軸和縱軸2個方向投影累加, 分別計算并對比累加值,尋找其峰值,峰值的位置即太陽能電池單元邊界線的位置.相鄰兩峰值的坐標值相減得到相鄰兩邊界線之間的距離,求取所有相鄰邊界線距離的平均值與邊界線距離的差值,若差值絕對值小于20, 則認為找到正確分割的邊界線,邊界線的交點為電池單元的頂點.進一步地, 在校正的電池板彩色圖像基礎(chǔ)上對每個電池單元進行分割, 得到規(guī)則的電池單元圖像.將電池單元作為分類模型的輸入,檢測電池單元是否含有裂紋.
1) 分類數(shù)據(jù)集.采用人工標記的方式對943張?zhí)柲茈姵匕錏L圖像分割后的電池單元進行分類, 共得到正樣本(無裂紋)48 000多個和負樣本(有裂紋)803個,此時存在嚴重的樣本不對稱問題.樣本不對稱會造成分類器在多數(shù)樣本下分類準確率較高, 而少數(shù)樣本下的分類準確率很低.對少數(shù)樣本進行過采樣,采取隨機加入噪點、左右鏡像和上下鏡像等操作進行樣本擴充;對多數(shù)樣本進行隨機欠采樣,使得正負樣本之比為1∶1.最終訓練集共有11 248個樣本,其中正負樣本均為5 624個;測試集有1 600個樣本,正負樣本均為800個.
2) 模型細節(jié).為了快速準確地對太陽能電池板進行裂紋檢測,基于原始的VGG16模型,在每個卷積層后面添加批標準化(batch normalization, BN)層, 于是可設(shè)置較大的學習率,以加快模型的收斂速度,避免深層網(wǎng)絡(luò)的梯度消失或爆炸問題,從而提高模型的泛化能力.改進后的模型由1個輸入層、13個卷積層+BN層、5個池化層、3個全連接層和1個Softmax層組成,具體模型結(jié)構(gòu)如圖3所示.
3) 模型訓練.選擇keras深度學習框架進行模型訓練與測試.設(shè)置模型訓練參數(shù):分類模型輸入圖像大小為224×224×3像素,對訓練集采用Adam優(yōu)化器迭代50次, 訓練學習率為10-4.采用交叉熵損失函數(shù)
(4)
實驗平臺所用計算機配置為i7-6900K CPU,內(nèi)存為64 GB,GTX 1080TI GPU,顯存為11 GB,操作系統(tǒng)為Ubuntu16.04.
本文選擇查準率P、查全率R和F1值作為分類性能度量指標.分別定義
(5)
其中NTP為真正例個數(shù),NFP為假正例個數(shù),NTN為真反例個數(shù),NFN為假反例個數(shù).查準率、查全率和F1值越高, 分類性能越好.
采用本文算法對取自8個地區(qū)的943張?zhí)柲茈姵谽L樣本圖像進行分割, 正確分割率為94.17%,部分正確分割率為5.51%,錯誤分割率為0.32%.EL圖像分割結(jié)果如圖4所示.部分正確分割是因圖像模糊邊界線不明顯所致.錯誤分割是由于太陽能電池板有部分未出現(xiàn)在圖像中,擬合四邊形時找到錯誤的頂點.
本文選取深度學習中主流的分類模型, 如Alexnet[7]、VGG16[8]、VGG19[8]、Resnets18[9]、Resnets34[9]、Resnets50[9]等, 以及方向梯度直方圖(histogram of oriented gradient, HOG)+支持向量機(support vector machine, SVM)分類[10]、尺度不變特征變換(scale-invariant feature transform, SIFT)+k-means聚類+SVM分類[11]和加速穩(wěn)健特征(speeded up robust features, SURF)+k-means聚類+SVM分類[12]等檢測算法,與本文分類算法進行對比實驗.表1給出了不同算法在同一測試集上檢測裂紋的查準率、查全率和F1值.由表1可見, 本文IVGG16模型的查準率、查全率和F1值均最高, 表明本文算法的分類效果優(yōu)于其他算法.
表1 不同算法在同一測試集上的分類結(jié)果
圖5給出了不同算法在同一測試集上的觀測者操作特性曲線(receiver operating characteristic curves, ROC)和曲線下面積(area under curve, AUC).由于HOG+SVM模型分類效果最差,其AUC值僅為75.26%,同時考慮圖5的清晰度,故未繪制對應的曲線。由圖5可見, 假正例率相同時,本文分類模型的真正例率最高,且AUC值最高, 達99.13%, 進一步表明了本文分類模型的優(yōu)越性.
本文算法中分類模型的分類準確率在訓練集上達99.81%,在測試集上達96.37%.測試集樣本中含裂紋的樣本有800張, 分類錯誤32張; 無裂紋的樣本有800張,分類錯誤26張.分類錯誤的原因可能有負樣本數(shù)據(jù)量不足、含裂紋的圖像偏少且模糊、裂紋不明顯或圖像預處理質(zhì)量偏低等.本文算法預測每幅圖像平均耗時約1 ms,可滿足快速檢測的需求.
為了有效檢測太陽能電池板裂紋,本文提出一種自動檢測室外運行中太陽能電池板裂紋的算法.該算法首先對太陽能電池板EL圖像自動分割,然后將分割所得電池單元圖像置入改進的分類模型檢測.在相同的參數(shù)設(shè)置下,本文算法與主流的分類模型和相關(guān)檢測方法的對比結(jié)果表明,本文算法檢出裂紋的準確率高達96.37%, 且檢測耗時小于1 ms, 充分驗證了該算法的合理性與有效性.