王淑青,張鵬飛,要若天,魯東林,頓偉超
(1.湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北武漢 430068;2.武漢大學(xué)電氣與自動(dòng)化學(xué)院,湖北武漢 430072)
太陽能作為主要新能源之一,安全隱患低,可適用性強(qiáng)。太陽能在利用過程中不會(huì)造成環(huán)境污染,并且儲(chǔ)量大,維護(hù)成本較低,是很合適的代替能源[1-2]。由于太陽能電池片產(chǎn)出量巨大,所以生產(chǎn)工藝要求也越來越嚴(yán)格,太陽能電池片的表面質(zhì)量直接影響著光能的吸收效率[3]。在太陽能電池片的生產(chǎn)過程中,由于機(jī)械故障及人為原因,不可避免地會(huì)對(duì)電池片表面造成各種損傷,根據(jù)損傷的情況可劃分為破損、劃痕、斷柵、污漬4種主要缺陷類型,這些缺陷對(duì)發(fā)電效率有極大的負(fù)面影響。因此,為保證太陽能電池片的生產(chǎn)質(zhì)量,在生產(chǎn)流程中增加太陽能電池片表面缺陷檢測環(huán)節(jié)是非常有必要的。
近年來,基于機(jī)器視覺和計(jì)算機(jī)視覺的檢測方法被不斷地應(yīng)用于太陽能電池片表面缺陷檢測,如視覺顯著性檢測法、魯棒視覺檢測法、數(shù)據(jù)增強(qiáng)法以及卷積神經(jīng)網(wǎng)絡(luò)等方法[4-9]。這些方法雖然都能有效地檢測出太陽能電池片表面的某種缺陷,但是并沒有對(duì)生產(chǎn)過程中可能出現(xiàn)的多種缺陷進(jìn)行檢測,缺陷類型不夠全面,并且檢測效率偏低。
為了解決上述問題,本文提出了一種改進(jìn)YOLOv5的太陽能電池片表面缺陷檢測方法。在模型的輸入端設(shè)計(jì)了一種動(dòng)態(tài)反饋多尺度訓(xùn)練的數(shù)據(jù)增強(qiáng)方法,以提高小缺陷的特征訓(xùn)練精度,并優(yōu)化了訓(xùn)練過擬合問題;采用指數(shù)線性單元(ELU)激活函數(shù)替換了Leaky ReLU激活函數(shù),解決了神經(jīng)元“死亡”問題的同時(shí),使輸出值更接近于0,加快收斂速度;在模型輸出端采用聚焦的高效交叉損失函數(shù)(F-EIOU)來提高分類和定位精度。
太陽能電池片表面缺陷檢測方法主要采用YOLOv5s卷積神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)與YOLOv4網(wǎng)絡(luò)較為相似,為高實(shí)時(shí)性、高精度的one-stage檢測網(wǎng)絡(luò)[10]。YOLOv5s主要由輸入端、Backbone、Neck以及輸出端組成,如圖1所示。
圖1 太陽能電池片表面缺陷檢測模型結(jié)構(gòu)
模型輸入端采用Mosaic數(shù)據(jù)增強(qiáng),隨機(jī)使用4張?zhí)柲茈姵仄瑘D片進(jìn)行裁剪并拼接為一張圖片,同時(shí)采用自適應(yīng)錨框計(jì)算增強(qiáng)方式,將預(yù)測框和真實(shí)框進(jìn)行差值計(jì)算,反向更新網(wǎng)絡(luò)參數(shù),從而豐富圖像數(shù)據(jù)集。
Backbone由CSPDarknet53(cross stage paritial dark network 53)+Focus結(jié)構(gòu)構(gòu)成,是主要的特征提取基準(zhǔn)網(wǎng)絡(luò)。其中,CSPDarknet53將特征圖大小由608逐次下降到18,起到下采樣的作用,通過特征映射和跨層次連接將電池片特征分解且合并,在減少計(jì)算成本的同時(shí)提高了特征提取的精度。Focus結(jié)構(gòu)的核心為切片操作,保證了特征圖寬度,提高了電池片細(xì)節(jié)特征的學(xué)習(xí)能力。
Neck部分由特征空間金字塔(FPN)和路徑聚合網(wǎng)絡(luò)(PAN)構(gòu)成,不僅使用FPN將太陽能電池片特征圖的高層信息進(jìn)行傳遞融合,獲取預(yù)測特征圖,而且加入兩個(gè)PAN結(jié)構(gòu),自下向上傳達(dá)了強(qiáng)定位特征,進(jìn)一步加強(qiáng)特征融合效果,從而強(qiáng)化了網(wǎng)絡(luò)對(duì)太陽能電池片圖像的缺陷分類和檢測能力[11]。
模型輸出端采用GIOU_Loss作為邊界框損失函數(shù),已解決邊界框不重合時(shí)的問題。并使用非極大值抑制NMS進(jìn)行后處理,以便更好地識(shí)別多目標(biāo)選框,提高模型檢測精度。
尺度變化是指模型在不同尺度下的不公平以及對(duì)尺度較低的缺陷目標(biāo)檢測質(zhì)量差的現(xiàn)象。動(dòng)態(tài)尺度訓(xùn)練范式可以有效緩解目標(biāo)檢測中尺度變化的問題。YOLOv5s模型輸入端中的Mosaic數(shù)據(jù)增強(qiáng)雖然對(duì)訓(xùn)練圖像都進(jìn)行了拼接操作,但其中有一些較大的特征并不需要重復(fù)此操作也可以達(dá)到很好的訓(xùn)練效果,反而限制了處理尺度變化的能力。為此本文改進(jìn)了一種動(dòng)態(tài)反饋策略來應(yīng)對(duì)這個(gè)問題,如圖2所示。
圖2 動(dòng)態(tài)反饋尺度訓(xùn)練流程圖
在每次訓(xùn)練迭代中,獲取太陽能電池片表面缺陷的損失比例作為反饋,如果當(dāng)前迭代中的損失比例低于某一閾值,則判定此時(shí)可以通過補(bǔ)償?shù)姆绞絹韮?yōu)化網(wǎng)絡(luò)不平衡狀態(tài)。如果損失比例小于或等于閾值,采取隨機(jī)剪裁、縮放的方式將4張?zhí)柲茈姵仄砻嫒毕輬D像隨機(jī)拼接成一張圖片作為輸入數(shù)據(jù)。否則,如果統(tǒng)計(jì)的損失值超過閾值,則采用常規(guī)圖像作為輸入數(shù)據(jù),具體表示如式(1)所示:
(1)
如圖3所示,為常規(guī)圖像和k=4的拼接圖像,在模型訓(xùn)練中,缺陷特征訓(xùn)練框左上角的0,1,2,3分別表示太陽能電池片表面的破損、劃痕、斷柵、污漬4種缺陷類型??梢钥闯觯趧?dòng)態(tài)尺度反饋訓(xùn)練中,通過改進(jìn)的拼接方式可以將較小的缺陷目標(biāo)按比例進(jìn)行尺度變化處理,而且拼接圖像和常規(guī)圖像大小相同,并不會(huì)額外增加網(wǎng)絡(luò)計(jì)算量,較好地優(yōu)化了太陽能電池片小尺度缺陷目標(biāo)的訓(xùn)練精度,同時(shí)避免了已經(jīng)訓(xùn)練好的特征重復(fù)訓(xùn)練導(dǎo)致額外計(jì)算量,提升了特征訓(xùn)練速度。
(a)常規(guī)圖像 (b)拼接圖像
太陽能電池片表面缺陷檢測運(yùn)用于工業(yè)檢測時(shí),最重要的是模型的高精度和高定位效果,模型訓(xùn)練好后,基本不會(huì)影響檢測速度。因此本文采用效果更好的ELU激活函數(shù)替換網(wǎng)絡(luò)中間層和隱藏層中的Leaky ReLU激活函數(shù),即圖1模型結(jié)構(gòu)中的CBL,CSP1_X和CSP2_X模塊。
Leaky ReLU激活函數(shù)主要解決了神經(jīng)元“死亡”的問題,保證了數(shù)據(jù)反向傳播過程中,梯度不為0。而ELU激活函數(shù)具備了Leaky ReLU 激活函數(shù)的所有特點(diǎn),如式(2)所示:
(2)
式中α為超參數(shù),α=1。
ELU激活函數(shù)在所有點(diǎn)都是連續(xù)可微的,更好地解決了梯度消失和梯度爆炸問題,相比Leaky ReLU激活函數(shù)可以在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中加快訓(xùn)練速度并提高準(zhǔn)確度。雖然ELU是指數(shù)線性單元,但與Leaky ReLU不同,ELU也有一個(gè)負(fù)值,這會(huì)導(dǎo)致其均值向0偏移。由于這種偏移,模型的訓(xùn)練將比Leaky ReLU激活函數(shù)收斂的更快。雖然ELU激活函數(shù)計(jì)算速度較慢,但是相比之下,ELU激活函數(shù)所具備的更快的收斂性使模型的訓(xùn)練速度比Leaky ReLU激活函數(shù)更快,具備更好的泛化性,所以準(zhǔn)確性也更高,Leaky ReLU和ELU激活函數(shù)對(duì)比如圖4所示。
(a)Leaky RELU
在太陽能電池片缺陷檢測中沒有缺陷重疊的情況,而YOLOv5s網(wǎng)絡(luò)輸出端的邊界框損失函數(shù)為GIOU_Loss結(jié)合加權(quán)的非極大值抑制(NMS),這種方法對(duì)于篩選遮擋重疊的目標(biāo)較為有效,但并不適用于太陽能電池片表面缺陷的檢測,為此,本文采取一種聚焦的高效交叉損失(F-EIOU Loss)作為邊界框損失函數(shù)。十字交叉聯(lián)合(IOU)損失函數(shù)是最為基礎(chǔ)的邊界框損失函數(shù),而CIOU損失函數(shù)是在其基礎(chǔ)上的進(jìn)一步優(yōu)化[12]。本文采用的F-EIOU損失函數(shù)則結(jié)合了CIOU損失函數(shù),如式(3)所示。
LF-EIOU=IOUγ·LEIOU
(3)
式中γ為控制異常值的抑制程度參數(shù),γ∈(0,2]。
LEIOU如式(4)所示,可分為3個(gè)部分,即IOU損失函數(shù)LIOU,距離損失函數(shù)Ldis和方向損失函數(shù)Lasp。
LEIOU=LIOU+Ldis+Lasp=1-IOU+
(4)
如圖5所示,為GIOU損失函數(shù)和F-EIOU損失函數(shù)在10、50、150次迭代下最左側(cè)目標(biāo)框和最右側(cè)錨點(diǎn)框的優(yōu)化過程,可以看出GIOU損失在優(yōu)化過程中無法有效測量目標(biāo)框和錨點(diǎn)框之間的差異,忽略了錨點(diǎn)框信息的重要性,導(dǎo)致邊界框回歸模型優(yōu)化收斂過程緩慢,并且定位不準(zhǔn)。而本文采用的F-EIOU損失開發(fā)了邊界框回歸損失的潛力,該損失函數(shù)采用了基礎(chǔ)的IOU損失并結(jié)合了距離和方向損失來明確度量重疊區(qū)域、中心點(diǎn)和邊長3個(gè)關(guān)鍵幾何因子的差異,并在此基礎(chǔ)上采用參數(shù)控制損失回歸中的異常值。通過上述策略實(shí)現(xiàn)了高效且準(zhǔn)確的太陽能電池片表面缺陷的檢測。
圖5 GIOU和F-EIOU損失優(yōu)化過程對(duì)比
本實(shí)驗(yàn)的訓(xùn)練平臺(tái)采用的CPU為Intel(R)Core (TM)i5-10600KF、內(nèi)存16 GB、顯存8 GB、GPU為NVIDIA GeForce RTX 2070S,滿足深度學(xué)習(xí)模型訓(xùn)練的硬件配置要求。實(shí)驗(yàn)操作系統(tǒng)為Windows 10,軟件為PyCharm 2020.2.2、Matlab R2020a、Python 3.8;GPU 加速包為CUDA11.1和CUDnn10.1。
網(wǎng)絡(luò)模型訓(xùn)練采用Pytorch1.7.1,訓(xùn)練初始化COCO和VOC數(shù)據(jù)集中的類別、類別名稱和訓(xùn)練路徑等相關(guān)參數(shù)。圖像輸入尺寸寬高設(shè)為640×640,采用Adam算法進(jìn)行訓(xùn)練優(yōu)化,最大的迭代輪數(shù)設(shè)為500,單次圖片訓(xùn)練數(shù)設(shè)為8,動(dòng)量因子設(shè)為0.9,權(quán)重衰減系數(shù)設(shè)為0.000 5,學(xué)習(xí)速率設(shè)為0.001。
太陽能電池片數(shù)據(jù)集制作是最基礎(chǔ)的步驟,同時(shí)也是實(shí)驗(yàn)前最重要的步驟。數(shù)據(jù)集包含合格與不合格兩大類,在不合格的太陽能電池片中,包含了破損、劃痕、斷柵、污漬4種缺陷類型。由于太陽能電池片在整個(gè)工業(yè)線生產(chǎn)中出現(xiàn)表面缺陷的比例較小,為使數(shù)據(jù)集數(shù)據(jù)更加豐富,符合模型訓(xùn)練標(biāo)準(zhǔn),本文通過隨機(jī)選取太陽能電池片圖像進(jìn)行隨機(jī)旋轉(zhuǎn)、鏡像、亮度調(diào)節(jié)、隨機(jī)切片等數(shù)據(jù)擴(kuò)充方法優(yōu)化數(shù)據(jù)集,具體操作如圖6所示。
圖6 數(shù)據(jù)集擴(kuò)充方法
優(yōu)化后的太陽能電池片數(shù)據(jù)集共包含5 440張圖片,有的圖片含有多種缺陷,其中無缺陷圖片2 060張,破損1 542張、劃痕765張、斷柵772張、污漬761張;模型訓(xùn)練集、驗(yàn)證集、測試集按7:2:1比例隨機(jī)分配。數(shù)據(jù)集制作完成后,使用LableImage對(duì)數(shù)據(jù)集進(jìn)行標(biāo)注,如表1所示。表格中每行都代表了一個(gè)缺陷目標(biāo)的位置信息,標(biāo)簽代表具體目標(biāo)的標(biāo)注類別,x,y,w,h為相對(duì)于整幅圖片尺度的歸一化值,位于0~1之間。x、y分別為標(biāo)注框的中心點(diǎn)在x軸及y軸方向的坐標(biāo);w、h分別為標(biāo)注框的寬、高。
表1 標(biāo)注數(shù)據(jù)
模型的性能評(píng)估主要通過損失值(Loss)曲線與平均精度值均值mAP(mean average precision)來進(jìn)行評(píng)估,mAP根據(jù)在太陽能電池片數(shù)據(jù)集上預(yù)測到的精確值(Precision)和召回率(Recall)決定,如式(5)所示:
(5)
式中:Precision為預(yù)測結(jié)果中正確的比例;Recall為全部目標(biāo)中被正確預(yù)測出的比例;TP為被正確劃分的正類樣本的數(shù)量;FP為被正確劃分的負(fù)類樣本的數(shù)量;FN為被錯(cuò)誤劃分的正類樣本的數(shù)量。
精確值和召回率構(gòu)成了P-R曲線,P-R曲線下方所占面積為平均精度(AP),對(duì)應(yīng)的所有太陽能電池片表面缺陷類別的平均值,即為mAP。
模型訓(xùn)練完成后,通過訓(xùn)練日志內(nèi)的指標(biāo),經(jīng)適當(dāng)?shù)钠交幚砝L制相應(yīng)曲線,對(duì)改進(jìn)后的模型進(jìn)行評(píng)估。如圖7所示,為改進(jìn)YOLOv5與原始網(wǎng)絡(luò)的邊界框損失值對(duì)比。
圖7 模型損失曲線對(duì)比
由圖7可知,F(xiàn)-EIOU損失相比GIOU損失在訓(xùn)練前期損失值下降較快,隨著迭代次數(shù)的增加,逐漸趨于平穩(wěn),并且損失值較小,證明了改進(jìn)后的損失函數(shù)具有更快的收斂速度和更好的回歸精度。圖8為改進(jìn)YOLOv5模型與原始模型的訓(xùn)練精度對(duì)比。
圖8 模型訓(xùn)練精度對(duì)比
由圖8可知,改進(jìn)YOLOv5模型的精度值雖然在訓(xùn)練前期由于動(dòng)態(tài)反饋特性和ELU激活函數(shù)的相對(duì)復(fù)雜性,曲線上升較慢,但隨著訓(xùn)練輪次的增加,優(yōu)勢逐漸體現(xiàn),訓(xùn)練精度較快提升,并且超越了原始網(wǎng)絡(luò)模型的精度值,證明改進(jìn)的模型對(duì)太陽能電池片缺陷特征的訓(xùn)練性能有顯著的提升。同時(shí)可以看出,改進(jìn)的YOLOv5的檢測精度值相比原始網(wǎng)絡(luò)有一定的提升,模型檢測性能增強(qiáng)。
在與原始網(wǎng)絡(luò)模型對(duì)比的基礎(chǔ)上,為進(jìn)一步驗(yàn)證模型的檢測性能,在保持訓(xùn)練平臺(tái)的配置信息不變的情況下,使用Faster-RCNN、SSD、YOLOv4等網(wǎng)絡(luò)模型在相同訓(xùn)練集上進(jìn)行訓(xùn)練[13-15]。最終選擇各網(wǎng)絡(luò)模型的最佳權(quán)重在測試集上進(jìn)行對(duì)比分析,對(duì)比結(jié)果如表2、表3所示。
表2 模型檢測的缺陷類別AP值對(duì)比 %
表3 模型檢測性能對(duì)比
由表2和表3可知,與Faster-RCNN,SSD,YOLOv4以及YOLOv5s模型相比,改進(jìn)的YOLOv5的mAP值分別提高了12.5%,19.1%,8.8%,3.7%,并且檢測速度比YOLOv5s模型提升了0.7幀/s,進(jìn)一步驗(yàn)證了改進(jìn)后的模型對(duì)太陽能電池片表面缺陷檢測的性能更強(qiáng)。改進(jìn)后的模型對(duì)太陽能電池片表面缺陷檢測的結(jié)果如圖9所示。
圖9 改進(jìn)YOLOv5的太陽能電池片表面缺陷檢測結(jié)果
由圖9可知,改進(jìn)的YOLOv5不僅能精確識(shí)別太陽能電池片表面較大的缺陷,同時(shí)對(duì)尺度較小的缺陷也能精確定位,并有著較高的識(shí)別效果。
本文提出了一種改進(jìn)YOLOv5模型的太陽能電池片表面缺陷檢測方法。該方法優(yōu)化了原始模型輸入端的數(shù)據(jù)增強(qiáng)方式,替換了骨干網(wǎng)絡(luò)的激活函數(shù),并在輸出端改進(jìn)了邊界框回歸損失函數(shù)。通過上述改進(jìn),提高了模型的特征提取和訓(xùn)練收斂速度,優(yōu)化了模型過擬合問題,加強(qiáng)了缺陷目標(biāo)的定位精度,從而提升了太陽能電池片表面缺陷的檢測精度及效率,對(duì)工業(yè)生產(chǎn)中的太陽能電池片的質(zhì)量保障有著實(shí)際意義。