呂瀟涵
(青島科技大學(xué),山東 青島 266000)
光伏電池的基本成分是晶體硅,硅片到電池片是光伏電池生產(chǎn)的最重要流程之一。由于當(dāng)前技術(shù)水平的限制以及硅片的材料特點的制約,易造成光伏電池片出現(xiàn)劃痕、缺角、拼接縫隙過大等缺陷。這些缺陷不僅會大大降低光伏電池片的太陽能轉(zhuǎn)換效率,還會影響其使用壽命[1]。因此,在生產(chǎn)過程中快速識別出缺損電池片是一個重要步驟[2]-[3]。
目前,太陽能電池板缺陷識別方法主要分為人工目視識別、物理識別[4]和機(jī)器視覺識別三種[5]-[6]。其中,人工目視識別對判別員本身的工作經(jīng)驗和技術(shù)水平要求較高,且不具備實時性。物理識別方法主要有聲波、激光、可見光等,代價較高?;跈C(jī)器學(xué)習(xí)和計算機(jī)視覺的太陽能電池板識別方法更加方便、快捷和經(jīng)濟(jì),以實時性、精確性等優(yōu)勢成為太陽能電池板檢測識別發(fā)展的主要方向。
最初的基于計算機(jī)視覺方法的缺陷識別主要依據(jù)人工設(shè)計的特征進(jìn)行識別,如尺度不變特征變換[7]、方向梯度直方圖[8]等。但是這種手工設(shè)計的特征具有很大的局限性,讓分類模型自己學(xué)習(xí)特征無疑是一種更好的選擇。隨著以卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)為代表的深度學(xué)習(xí)的興起,基于不同網(wǎng)絡(luò)架構(gòu)的光伏電池片缺陷識別和檢測方法成為學(xué)者研究的主流,如對抗生成網(wǎng)絡(luò)[9],CNN[10][11]等。近年來,以Transformer為代表的基于注意力機(jī)制的識別模型無論是在識別速度還是檢測精度上,均向CNN發(fā)起了挑戰(zhàn),基于視覺Transformer(Vision Transformer,ViT)的各種模型在很多圖像識別領(lǐng)域獲得了目前技術(shù)水平(SOTA)的性能表現(xiàn)。但是由于Transformer本質(zhì)上學(xué)習(xí)的是序列的關(guān)聯(lián)信息,無法像CNN能夠感知圖像的全局,因此如何同時利用CNN的全局感知能力和Transformer的強(qiáng)大邏輯關(guān)聯(lián)能力還有待進(jìn)一步研究,并且Transformer的位置編碼需要人工設(shè)計模型,存在一定程度的主觀性。
為此,提出了一種基于CNN和多尺度視覺注意力機(jī)制(CNN Based Scaled ViT, CSViT)的光伏電池缺陷檢測方法。首先,基于殘差網(wǎng)絡(luò)設(shè)計了一個包含12個卷積層的特征提取網(wǎng)絡(luò),然后利用特征金字塔網(wǎng)絡(luò),融合三個尺度的淺層和深層特征,并對各個尺度的輸出進(jìn)行分割和池化,作為ViT的信息編碼輸入;其次,對于每個輸入,設(shè)計了一個分支卷積模塊以實現(xiàn)位置自編碼;最后,信息編碼和位置編碼被同時作為Transformer編碼器的輸入。在公共的太陽能電池板缺陷數(shù)據(jù)集上的實驗結(jié)果表明,CSViT在不增加計算量的情況下,提升了性能。
傳統(tǒng)意義上的全連接神經(jīng)網(wǎng)絡(luò)模型,由于每層之間的每個神經(jīng)元均和上一層的所有神經(jīng)元相連,因此參數(shù)量異常龐大,容易過擬合,并且sigmoid函數(shù)的收斂性造成梯度消失,無法訓(xùn)練較深的網(wǎng)絡(luò)模型。而CNN通過卷積核的權(quán)值共享,大大降低了網(wǎng)絡(luò)參數(shù),減小了網(wǎng)絡(luò)訓(xùn)練的難度以及對內(nèi)存的需求。公認(rèn)的第一個卷積神經(jīng)網(wǎng)絡(luò)模型LeNet-5被LeCun用于手寫字符識別中,LeNet-5包含3個卷積層、2個池化層和1個全連接層,雖然結(jié)構(gòu)簡單,卻定義了CNN的基本結(jié)構(gòu),當(dāng)前流行的CNN模型基本遵循卷積-池化來搭建。但是,以支持向量機(jī)(Support Vector Machine,SVM)為代表的統(tǒng)計學(xué)習(xí)理論依靠堅實的數(shù)學(xué)基礎(chǔ)以及在小樣本上優(yōu)秀的學(xué)習(xí)能力,在當(dāng)時迅速成為學(xué)者追崇的焦點。
經(jīng)過漫長的沉寂,從LeNet-5改進(jìn)得到的AlexNet依靠多GPU并行、ReLU激活函數(shù)等眾多的新特性,在當(dāng)年的ImageNet大賽上取得了絕對優(yōu)勢,由此掀開了以CNN為代表的深度學(xué)習(xí)熱潮。接下來的數(shù)年內(nèi),ImageNet的Top-5和Top-1,幾乎各參賽組的主流方法均是基于CNN網(wǎng)絡(luò)設(shè)計而來的,網(wǎng)絡(luò)深度由最開始的8層增加到100多層,并且網(wǎng)絡(luò)寬度也在不斷增加。目前,CNN在朝著兼顧速度與精度的輕量化方向發(fā)展,例如MobileNet和EfficientNet等,成為當(dāng)前在計算機(jī)視覺領(lǐng)域占有統(tǒng)治地位的學(xué)習(xí)模型。CNN與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的最大區(qū)別就是基于卷積核的權(quán)值共享與基于池化的特征抽象,具體介紹如下。
(1)卷積
(1)
圖1 卷積核計算過程
卷積操作涉及的超參數(shù)有卷積核(特征圖)數(shù)量、滑動步長、邊界填充等。邊界填充的目的是在卷積計算時,能夠提取圖像的邊沿信息。一般,為了能夠提取圖像不同類型的抽象信息,單個卷積層會使用多個卷積核,得到多個輸出。
(2)池化
池化就是提取輸入中某個區(qū)域的主要信息,同時也可以對出入進(jìn)行降緯。池化一般可以分為平均池化和最大池化。平均池化是將某一區(qū)域的輸入取平均值作為輸出,而最大池化是將取某區(qū)域的最大值作為輸出。具體過程如圖2所示。
圖2 池化計算過程
除了卷積和池化之外,以ReLU為代表的非線性激活函數(shù)緩解了神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中的梯度消失問題,BatchNormalization和Dropout降低了模型的過擬合,加快了訓(xùn)練速度,均稱為CNN網(wǎng)絡(luò)架構(gòu)的不可或缺的組件。
注意力機(jī)制(Attention Mechanism)是用于對不同位置信息進(jìn)行建模的一套方法,已有的基于注意力機(jī)制的方法在機(jī)器翻譯、語音識別等任務(wù)中得到了廣泛的研究。Transformer是Google團(tuán)隊在2017年提出的一種關(guān)于自然語言處理的經(jīng)典模型,其結(jié)合了自注意力(Self-attention)機(jī)制,并且沒有采用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)的順序結(jié)構(gòu),使得模型可以并行化訓(xùn)練,能夠捕捉全局信息,在當(dāng)年自然語言處理的相關(guān)競賽上取得了SOTA的結(jié)果。視覺Transformer是Transformer在圖像分類任務(wù)中的開山之作,ViT采用多層Transformer架構(gòu)完成特征提取過程,每層內(nèi)部均使用自注意力作為特征函數(shù),并利用后層Tansformer對前層特征函數(shù)的輸出進(jìn)行特征細(xì)化,逐漸捕獲到圖像全局特征,該模型架構(gòu)如圖3所示。
圖3 ViT結(jié)構(gòu)圖
ViT的整體結(jié)構(gòu)可以分為4個部分:
(1)輸入圖像的序列化
由于Transformer的原始輸入是序列向量,因此ViT首先將圖像無重疊切割成相同大小的圖像塊。設(shè)輸入X∈H×W×C為寬(W)和高(H)的C通道圖像,首先將X切割成大小p×p的圖像塊。然后將每個圖像塊拉伸為p2×C的向量,最后利用變換矩陣將輸入轉(zhuǎn)換到特定的維度D。
(2)位置嵌入
ViT利用特定的位置編碼函數(shù),對每一個變換后的圖像塊特征向量注入位置信息。需要注意的是,因為是圖像分類任務(wù),除了圖像的特征輸入外,還添加了圖像的類別信息以及對應(yīng)的位置信息。
(3)Transformer編碼
信息的編碼過程是通過堆疊多個TransformerEncoder來實現(xiàn)的,Encoder的具體結(jié)構(gòu)如圖3右側(cè)所示,包含1個Multi-head Self-attention模塊,1個Multi-layer Perceptron模塊,上面兩個模塊之后分別連接1個層歸一化單元(Layer Norm)。
(4)多層感知機(jī)(Multilayer Perceptron,MLP)
MLP Head 是最終用于分類的層結(jié)構(gòu),由全連接層和激活函數(shù)組成。ViT雖然取得了比較好的識別效果,但是將圖像分割會一定程度上破壞圖像的整體信息,且圖片進(jìn)行分patch操作后,只有在每個patch內(nèi)部有信息交互,而patch和patch之間,只有在最后的MLP Head層才有交互,patch之間的信息交互太少。另一方面,位置編碼方式存在太大的人為經(jīng)驗因素。
為了緩解圖像分割造成的整體或區(qū)域信息破壞,以及克服位置編碼人工設(shè)置隨機(jī)性大問題,本節(jié)設(shè)計了一個基于多尺度CNN和ViT的光伏電池缺陷識別模型CSViT,模型包括四個模塊,具體結(jié)構(gòu)如圖4所示,下面對不同模塊分別進(jìn)行介紹。
圖4 CSViT結(jié)構(gòu)圖
特征提取網(wǎng)絡(luò)由一個卷積層和多個殘差網(wǎng)絡(luò)構(gòu)成,模型結(jié)構(gòu)與YOLOv3類似。與YOLOv3在橫向堆疊多個殘差單元,以提升骨干網(wǎng)絡(luò)的特征提取能力不同,CSViT并沒有在同一層堆疊多個殘差單元以加深網(wǎng)絡(luò)寬度,這是因為YOLOv3的特征提取過程幾乎全部依靠骨干網(wǎng)絡(luò),而CSViT在骨干網(wǎng)絡(luò)階段主要是獲得不同尺度的特征圖,特征學(xué)習(xí)在ViT階段同樣能夠?qū)崿F(xiàn)。特征提取網(wǎng)絡(luò)的具體結(jié)構(gòu)如表1所示。
FPN(Feature Pyramid Network)最初在目標(biāo)檢測中被提取,主要是為了獲得不同尺度的特征圖,進(jìn)而實現(xiàn)在不同尺度特征圖上的目標(biāo)檢測,這樣做的好處是粗粒度特征圖主要包含輸入的全局信息,方便大目標(biāo)的檢測,反之細(xì)粒度特征圖上包含圖像更多的局部信息,有利于對小目標(biāo)的檢測。ViT中將原始輸入圖像進(jìn)行分割裁剪,因此無法獲得圖像的整體或者區(qū)域信息。為此,CSViT借助FPN的思想,通過不同尺度特征圖作為Transformer的輸入,既可以通過深層特征圖學(xué)習(xí)圖像全局信息,又可以通過淺層特征獲取圖像細(xì)節(jié)。
CSViT中利用FPN的思想,將輸入圖像進(jìn)行了三次降采樣,分別是在16倍降采樣、8倍降采樣、4倍降采樣,獲得三種尺度特征圖,大小分別是76×76、38×38、19×19(輸入圖像大小為304×304),如圖5所示。網(wǎng)絡(luò)越深,學(xué)習(xí)到的特征表達(dá)效果越好。對于8倍降采樣的特征圖,如果只使用8倍降采樣后的特征進(jìn)行識別,只是獲取了輸入圖像的淺層特征,為此通過上采樣把16倍降采樣得到的特征圖的大小提升一倍,與8倍降采樣后的特征圖進(jìn)行拼接。同理,對8倍降采樣的特征進(jìn)行步長為2的上采樣并與4倍采樣特征圖拼接,這樣每張?zhí)卣鲌D同時獲得了深層與淺層特征。
表1 特征提取網(wǎng)各層參數(shù)
圖5 CSViT中FPN結(jié)構(gòu)示意圖
由此可以得到總的信息輸入個數(shù)為:
(2)
需要特別說明的是,在ViT中,同樣將類別信息作為Transformer的輸入。但是CSViT通過ReP學(xué)習(xí)類別信息的位置編碼,顯然是不合理的。為此,不管p的取值為多大,在最小特征圖上,均會進(jìn)行一個全局最大池化操作,最為圖像的整體抽象輸入信息,并同時對該信息利用ReP進(jìn)行位置編碼。
圖6 位置編碼分支結(jié)構(gòu)
獲得第三部分的信息輸入和位置編碼后,就可以利用Transformer編碼器進(jìn)行編碼,通過循環(huán)L次進(jìn)行多頭注意力機(jī)制MSA、前饋神經(jīng)網(wǎng)絡(luò)MLP,并且在操作之前都要經(jīng)過 Layer Norm(LN),最后做分類任務(wù)。具體過程為:
z0=[X0,X1,X2,…,XNx]+Epos,Epos∈(1+Nx)×C
(3)
(4)
(5)
(6)
需要說明的是,相較于ViT,式(3)中利用全局最大池化得到的X0替代類別編碼。此外,由于在輸入編碼器前,已經(jīng)通過CNN進(jìn)行了特征提取,所以在式(3)中省去了線性變換操作。
本文模型的流程圖如圖7所示。
圖7 模型流程圖
實驗數(shù)據(jù)為開源的ELPV數(shù)據(jù)集,包含2624張光伏電池正?;蛉毕輬D像,每張圖像均為大小均為300×300像素,像素值范圍0-255,所有圖像均是從44個不同退化程度的太陽能電池板采用電致發(fā)光(Electro Luminescence,EL)技術(shù)得到,所有的圖像都按照尺寸和視角進(jìn)行了標(biāo)準(zhǔn)化處理。此外,在提取太陽能電池圖像之前,所有的由捕捉EL圖像的相機(jī)鏡頭引起的任何失真均被消除。不同模塊類型的正常與缺陷圖像如圖8所示。
每個圖像均有領(lǐng)域?qū)<覙?biāo)注完成,注釋信息包含兩方面的內(nèi)容:提取圖像的太陽能模塊類型(單晶或多晶);判定為缺陷的概率值(0, 1/3,2/3 或1)。所有的缺陷分為內(nèi)在和外在缺陷,這些缺陷均會造成電池性能的下降。圖9給出了不同模塊類型和不同缺陷程度的圖像數(shù)目的統(tǒng)計結(jié)果。從圖中可以看出,缺陷程度存在明顯的不均衡性。
圖8 ELPV數(shù)據(jù)集樣本示例
圖9 不同缺陷程度(上)和不同模塊類型(下)圖像數(shù)目統(tǒng)計結(jié)果
所有的圖像均被歸一化至[0,1],訓(xùn)練樣本和測試樣本按照7∶3進(jìn)行隨機(jī)劃分,得到1836張訓(xùn)練圖像和788張測試圖像。
對于每張訓(xùn)練圖像,分別執(zhí)行水平翻轉(zhuǎn)和隨機(jī)旋轉(zhuǎn)進(jìn)行增強(qiáng)。由于訓(xùn)練和測試圖像均為固定像素大小,且拍攝角度一致,因此旋轉(zhuǎn)角度固定為180°,且未采用圖像裁剪進(jìn)行增強(qiáng),最后得到1836×3張訓(xùn)練圖像數(shù)據(jù)。
由于本文主要針對的是分類任務(wù),因此強(qiáng)制將缺陷概率標(biāo)簽進(jìn)行了轉(zhuǎn)換,即將1/3概率強(qiáng)制轉(zhuǎn)換為0,將2/3概率轉(zhuǎn)換為1。
利用ViT的三種不同模型作為對比試驗,分別為ViT-Base,ViT-Large,ViT-Huge,以上三種模型的配置與原文相同。
對于CSViT,分別取p=3,12,19三種模型,分別記為CSViT-3,CSViT-12,CSViT-19,除了p值外,三種模型其余部分均相同。此外,為了檢驗CSViT模型中的骨干網(wǎng)絡(luò)與整個模型的性能對比,同樣將骨干網(wǎng)絡(luò)作為對比模型,記為Res-12(骨干網(wǎng)絡(luò)包含12卷積層),訓(xùn)練階段,Res-12直接在訓(xùn)練集上訓(xùn)練100個epoch,然后移植到CSViT中,重新在整個訓(xùn)練集上微調(diào),所有模型中的ViT組件均來自官方預(yù)訓(xùn)練模型。
實驗系統(tǒng)為Windows 10, Intel Corei7-9750H CPU(2.60 GHz),32 GB內(nèi)存,Quadro T2000顯卡(顯卡內(nèi)存16 GB),實驗軟件平臺為Pycharm,語言為Python3.7.8,所有模型使用的深度一致。
(1)收斂速度對比
圖9給出了7中模型訓(xùn)練過程中的收斂曲線。從圖中可以看出,Res-12由于模型比較簡單,收斂速度較快,但是訓(xùn)練誤差同樣是最大的。6種ViT模型的收斂速度差距不大,但是仍然可以看出,CSViT-3的收斂速度略微塊,由此可以得出,基于預(yù)訓(xùn)練Res-12和FPN的網(wǎng)絡(luò)能夠提取出輸入的有效特征,進(jìn)而加快了模型后一部分ViT的收斂速度。
(2)準(zhǔn)確率對比
選擇準(zhǔn)確率 (Accuracy)、召回率(Recall)和精確率(Precision)三個指標(biāo)評價模型性能。設(shè)缺陷圖像/單晶正確識別表示為TP,缺陷圖像/單晶錯誤識別表示為FP,正常圖像/多晶正確識別表示為TN,正常圖像/多晶錯誤識別表示為FN,則三個指標(biāo)的計算如下:
(7)
圖9 不同方法的訓(xùn)練過程中損失函數(shù)收斂曲線圖
表2給出了不同方法對于電池片類型的分類結(jié)果。從表中可以看出,Res-12的準(zhǔn)確率最低,這主要是因為Res-12僅有12層卷積網(wǎng)絡(luò),與其他模型相比,結(jié)構(gòu)比較簡單。ViT系列的方法中,ViT-Huge性能最好,緊接著是ViT-Large,表明更多的編碼模塊能夠提取更加抽象有效的特征。CSViT系列方法中,CSViT-3模型準(zhǔn)確度要略高于ViT-Base,充分說明了CSViT中特征提取網(wǎng)絡(luò)以及位置編碼策略的有效性。但是隨著p值的增大,CSViT的性能下降明顯,這主要是因為較大的p值導(dǎo)致輸入Transformer模型的編碼信息迅速減少,尤其當(dāng)p=19,只有1+4+16個信息向量,引起性能下降,這同樣說明在Transformer之前,通過特征提取網(wǎng)絡(luò)和位置編碼策略得到的信息是有效的。表3給出了不同方法對電池片缺陷類型的分類結(jié)果,可以得出與表2相同的結(jié)論。
表2 不同模型對電池片類型識別結(jié)果對比
表3 不同模型對電池缺陷類型識別結(jié)果對比
(3)識別速度對比
圖10給出了不同方法識別速度與精度的對比圖。從圖中可以看出,雖然ViT-Huge和ViT-Large兩種方法的識別精度遠(yuǎn)遠(yuǎn)高于其他方法,但是兩者的識別時間開銷同樣是最大的。CSViT-3的識別速度幾乎和ViT-Base相同,但是經(jīng)度略高于ViT-Base,說明CSViT的特征提取網(wǎng)絡(luò)不僅能夠很好地提取深層次特征信息和提供有效的位置編碼,且不會帶來比較大的時間開銷,這主要是因為經(jīng)過特征提取后輸入encoder的信息數(shù)量比直接分割圖像輸入的信息數(shù)量要少得多。CSViT的另外兩個模型雖然經(jīng)度有所降低,但是速度上帶來的優(yōu)勢更加明顯。
以上結(jié)果表明,Res-12和基于FPN的多特征圖雖然相比其他模型較為簡單,但是依然能夠從輸入中提取出有效的特征。同樣,CSViT的位置自編碼機(jī)制能夠成功學(xué)習(xí)不同輸入之間的差異信息,證明了位置自編碼策略的有效性。
圖10 不同方法缺陷識別速度與精度對比結(jié)果
設(shè)計了一個基于改進(jìn)的ViT光伏電池片缺陷檢測模型。首先基于殘差模型設(shè)計了一個簡單的特征提取網(wǎng)絡(luò)Res-12,包含12個卷積層和4個最大池化層;然后利用特征金字塔網(wǎng)絡(luò)FPN,對Res-12的三個不同下采樣的特征層進(jìn)行特征融合,提取不同層次的抽象信息;接著對FPN的輸出按照ViT的輸入分割策略進(jìn)行裁剪和壓縮,為ViT提供多尺度輸入信息的,避免了圖像分割造成ViT無法感知輸入的全局信息的缺陷;此外設(shè)計了位置自編碼分支網(wǎng)絡(luò),避免了手動設(shè)計位置編碼模型的隨機(jī)性。在公共數(shù)據(jù)集上的結(jié)果表明,該模型能夠提升訓(xùn)練收斂速度,在不明顯增加計算量的情況下,提升了識別精度,證明了模型的有效性。