周得永 , 高龍琴
(揚(yáng)州大學(xué)機(jī)械工程學(xué)院,江蘇 揚(yáng)州 225127)
太陽能作為綠色無污染的可再生能源正受到日益廣泛的關(guān)注且被廣泛應(yīng)用。作為太陽能的發(fā)電載體,太陽能電池也得到了大規(guī)模的應(yīng)用[1]。由于太陽能電池在生產(chǎn)過程中可能會產(chǎn)生斷柵、隱裂等缺陷,而這些缺陷對電池的轉(zhuǎn)換效率和使用壽命有著嚴(yán)重的影響,嚴(yán)重時將危害太陽能電池組件甚至整個光伏發(fā)電系統(tǒng)的穩(wěn)定性,因此缺陷檢測是太陽電池生產(chǎn)過程中的重要環(huán)節(jié)。太陽能電池板電致發(fā)光(EL)測試技術(shù)因具有操作簡便、檢測速度快、成本較低等優(yōu)點(diǎn)而成為目前光伏行業(yè)常用的缺陷檢測技術(shù)之一[2]。隨著人工智能技術(shù)的發(fā)展,許多優(yōu)秀的深度學(xué)習(xí)目標(biāo)檢測算法被提了出來??偟膩碚f,深度學(xué)習(xí)圖像目標(biāo)檢測算法大致可分為兩類:一類是基于區(qū)域推薦的目標(biāo)檢測算法,這類算法首先利用區(qū)域推薦產(chǎn)生候選目標(biāo),然后使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行處理。比較具有代表性的算法有RCNN、Fast RCNN、Faster RCNN、Mask RCNN等,這些算法的優(yōu)點(diǎn)是精度比較高,缺點(diǎn)是因為計算量過大而不能夠?qū)δ繕?biāo)進(jìn)行實(shí)時的檢測。另一類是基于回歸的目標(biāo)檢測算法,這類算法將目標(biāo)檢測作為回歸問題進(jìn)行處理,直接預(yù)測目標(biāo)的類別和位置。具有代表性的算法有SSD、YOLOv3等。這類算法的優(yōu)點(diǎn)是能滿足實(shí)時應(yīng)用的需求,缺點(diǎn)是相較于RCNN系列算法而言檢測精度偏低[3]。2018年Redmon等[4]提出的YOLOv3目標(biāo)檢測模型相較于前代YOLO模型采用了更深層的網(wǎng)絡(luò)模型結(jié)構(gòu)和多尺度檢測等技術(shù),達(dá)到檢測速度與精度的平衡,提升了對小目標(biāo)物的檢測效果[5]。
本文對太陽能電池板常見的斷柵、隱裂缺陷利用YOLOv3目標(biāo)檢測模型進(jìn)行檢測。利用K-means聚類算法對太陽能電池板缺陷數(shù)據(jù)集進(jìn)行聚類后得到適合本數(shù)據(jù)集的先驗框,從而加速模型收斂。實(shí)驗表明YOLOv3檢測模型可以準(zhǔn)確地檢測和識別太陽能電池板電致發(fā)光圖像中的缺陷。
1.1.1 骨干特征提取網(wǎng)絡(luò)
YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。采用了Darknet-53作為骨干特征提取網(wǎng)絡(luò),該網(wǎng)絡(luò)是一個純卷積神經(jīng)網(wǎng)絡(luò),使用了卷積層、批規(guī)范化層、激活層結(jié)合的結(jié)構(gòu)作為網(wǎng)絡(luò)的基本組件。Darknet-53通過卷積層改變卷積核的步幅來實(shí)現(xiàn)特征圖尺寸變化。除此以外,Darknet53還借鑒了ResNet的殘差結(jié)構(gòu),使得網(wǎng)絡(luò)性能有了明顯的改善[6]。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
1.1.2 多尺度特征融合
低層的特征語義信息比較少,但是目標(biāo)位置信息準(zhǔn)確。高層的特征語義信息比較豐富,但是目標(biāo)位置信息比較粗略。YOLOv3借鑒FPN(Feature Pyramid Networks)的思想,利用上采樣將高層的特征語義信息和低層的特征語義信息進(jìn)行特征融合,提高了對小物體的檢測精度。
1.1.3 模型預(yù)測
在檢測層結(jié)構(gòu)中,分別對特征圖像進(jìn)行了32倍降采樣、16倍降采樣以及8倍降采樣,從而生成了3種不同尺度的特征圖,在多尺度特征圖上進(jìn)行檢測,提高了較小目標(biāo)的檢測效果。
YOLOv3算法的損失函數(shù)包括定位損失、置信度損失和分類損失。通過查閱相關(guān)資料及其源碼,發(fā)現(xiàn)YOLOv3的損失函數(shù)除了定位損失中的寬高誤差損失外,其他誤差損失均使用二元交叉熵[7]。YOLOv3的損失函數(shù)如式(1)所示。
其中,帶*號的參數(shù)表示真實(shí)值,不帶*號的對應(yīng)參數(shù)表示模型的預(yù)測值。xi,yi,wi,hi表示預(yù)測框中心點(diǎn)的橫縱坐標(biāo)以及寬高。S表示劃分的網(wǎng)格數(shù)量,B表示先驗框個數(shù)。Ci表示置信度,Pi表示分類概率。表示第i個網(wǎng)格中的第j個先驗框有目標(biāo)其值為1,否則為0。表示第i個網(wǎng)格中的第j個先驗框沒有目標(biāo)其值為1,否則為0。在YOLOv3的損失函數(shù)中為了提高對小物體的檢測精度會乘上一個(2-wi×hi)的比例系數(shù)。
在暗箱中使用近紅外工業(yè)相機(jī)對通電后的太陽能電池板進(jìn)行圖片采集??偣膊杉教柲茈姵匕咫娭掳l(fā)光圖片1 024張。使用數(shù)據(jù)標(biāo)記工具labellmg對圖片中的缺陷進(jìn)行逐一標(biāo)記,并生成xml格式的缺陷類別和位置信息文件。并按照8∶1∶1的比例將圖片劃分為訓(xùn)練集、驗證集和測試集。
本文實(shí)驗環(huán)境如下:Windows10 64位操作系統(tǒng),處理器Intel(R) Core(TM) i5-10300H CPU @ 2.50 GHz 2.50 GHz,顯卡GTX1650TI,運(yùn)行內(nèi)存16 G。編程語言為Python3.7.10,深度學(xué)習(xí)框架為Pytorch。
圖片的訓(xùn)練和測試輸入尺度均采用416×416大小。YOLOv3網(wǎng)絡(luò)默認(rèn)使用的先驗框參數(shù)是在COCO和PASCAL VOC兩個數(shù)據(jù)集聚類得到的[8]。針對太陽能電池板缺陷數(shù)據(jù)集,運(yùn)用K-means聚類生成3種尺度的9個先驗框:(12×17),(18×12),(24×14),(35×11),(18×22),(34×15),(50×13),(66×12),(85×12)。小尺寸的先驗框在高分辨率特征圖上用于檢測小目標(biāo),大尺寸的先驗框在低分辨率特征圖上用于檢測大目標(biāo)。YOLOv3網(wǎng)絡(luò)模型訓(xùn)練總計迭代1 000次,初始的學(xué)習(xí)率設(shè)置為0.001,每迭代50次學(xué)習(xí)率下降0.8倍。 YOLOv3訓(xùn)練過程中損失值變化曲線如圖2所示。
從圖2可以看出,隨著迭代次數(shù)的增加,曲線逐漸收斂。當(dāng)?shù)螖?shù)超過900時,損失值大小幾乎不再變化。就參數(shù)收斂的整體情況看,網(wǎng)絡(luò)訓(xùn)練結(jié)果較為理想。
圖2 損失值變化曲線
在本文的實(shí)驗中,使用mAP(mean Average Precision)作為目標(biāo)檢測精度的指標(biāo)。mAP指的是多個類別平均準(zhǔn)確率的平均值。AP指的是單個類別的平均準(zhǔn)確率,衡量的是模型在某一類別上識別效果的好壞[9]。本文使用的AP為AP50,即預(yù)測框與真實(shí)框的交并比在大于50%的單類別的平均準(zhǔn)確率[10]。mAP的值越大表示模型的總體識別準(zhǔn)確率越高。
YOLOv3算法在測試集上斷柵的AP值為90.08%,隱裂的AP為73.55%,則YOLOv3算法對太陽能電池板缺陷檢測的mAP為81.81%。不同缺陷類別的平均準(zhǔn)確率如圖3所示。YOLOv3算法對太陽能電池板電致發(fā)光圖片進(jìn)行缺陷檢測的效果如圖4所示??梢钥闯?,YOLOv3檢測模型對太陽能電池板電致發(fā)光圖像能實(shí)現(xiàn)比較準(zhǔn)確的檢測與識別,整體檢測效果較為理想。
圖3 不同缺陷類別的平均準(zhǔn)確率
圖4 YOLOv3檢測效果
為了提高太陽能電池板缺陷的檢測效率,本文提出了一種基于 YOLOv3 的圖像缺陷檢測與識別方法。實(shí)驗結(jié)果表明,本文使用的方法在太陽能電池板缺陷檢測上能夠取得較好的效果,尤其在斷柵的檢測上效果比較理想。但是,由于隱裂本身具有形狀不固定、尺寸較小的特點(diǎn)因而對隱裂的檢測精度較低。因此在以后的研究中,將重點(diǎn)解決太陽能電池板缺陷檢測中對隱裂的檢測問題,以獲得更高的檢測精度。