陳海永,劉新如
(河北工業(yè)大學 人工智能與數(shù)據(jù)科學學院,天津 300130)
太陽能是一種可再生能源,已在人們生活中廣泛使用。隨著全球太陽能電池產(chǎn)業(yè)的快速崛起,太陽能電池的產(chǎn)品質(zhì)量問題成了發(fā)展的一大障礙。在太陽能電池制造過程中,表面制絨、擴散制結、等離子刻蝕、鍍減反射膜、絲網(wǎng)印刷、機器人拾放、傳送帶輸送等工藝流程易造成黑斑、劃痕、斷柵等缺陷,這些缺陷大大影響了太陽能電池的光電轉(zhuǎn)換效率。
早期的太陽能電池缺陷檢測是人工目視檢測,存在易疲勞、標準不統(tǒng)一、效率低等問題。而深度學習在圖像檢測和分割方面可有效解決圖像背景復雜、目標不清晰等干擾問題,應用場景非常廣泛。對于數(shù)量較多的太陽能電池圖像,深度學習算法和傳統(tǒng)的人工檢測相比,在精度和速度上都表現(xiàn)更為出色。由于太陽能電池缺陷尺度不一,空間幾何特征不規(guī)則,普通深度學習網(wǎng)絡對缺陷邊界信息獲取不足,導致檢測精度需要進一步提高。而使用語義分割算法可以輸出精細的像素級分割結果,能夠突出缺陷的形狀變化、邊界范圍,使得輸出結果更加精細。
在深度學習算法中,圖像語義分割[1-2]是圖像處理任務的重要技術之一,它的目的是根據(jù)語義標簽把每個像素分成不同的類。和傳統(tǒng)的分割方法相比,基于深度學習的語義分割能夠通過卷積神經(jīng)網(wǎng)絡自主學習和提取圖片的深層特征,實現(xiàn)端到端的學習,提高分割的精度和速度。Lin等[3]將圖像處理中的多尺度思想應用在目標檢測中,通過在不同大小的特征圖上構建金字塔結構,提出了特征金字塔網(wǎng)絡(feature pyramid network,FPN)。Kirillov等[4]在目標檢測FPN的基礎上將FPN用于語義分割,在FPN的尾端添加一個語義分割分支,利用簡單的深度學習模型得到了和復雜模型相同的效果。Zhao等[5]設計了一個金字塔池化網(wǎng)絡PSPNet,將網(wǎng)絡中的上下文信息收集起來,獲得了不同尺度的信息,提高了目標的分割準確率。為了解決神經(jīng)網(wǎng)絡信息被限制在局部區(qū)域的問題,Zhao等[6]又提出了PSANet,通過卷積層為特征圖中的每個位置自適應地生成2個全局注意力圖,并使用雙向信息傳播,有效地捕獲了上下文信息。Zhu等[7]提出了ANN網(wǎng)絡,網(wǎng)絡中包含2個模塊,其中非對稱金字塔非局部塊利用金字塔采樣模塊,在不犧牲性能的情況下極大地減少了計算和內(nèi)存消耗,而非對稱融合非局部塊融合了不同級別的特征,大大改善了分割結果。在上下文信息的構建中,He等[8]發(fā)現(xiàn)局部引導的局部親和力能夠提高上下文信息獲取的能力,因此設計了自適應上下文模塊(adaptive context modules,ACMs)來計算局部親和系數(shù),獲得上下文向量,使對目標的預測更加完整。在卷積神經(jīng)網(wǎng)絡中,空間和通道這2個維度具有全局依賴關系,為了利用這一關系,Fu等[9]分別引入了空間注意力模塊和通道注意力模塊,這2個模塊對于上下文信息地提取非常高效準確,在各類分割數(shù)據(jù)集中都有出色的表現(xiàn)。由于在構建多尺度表示時,普通的深度學習方法計算參數(shù)多,對圖片大小沒有很好的適應性,He等[10]將多個動態(tài)卷積模塊集成在一起,根據(jù)輸入圖像特征動態(tài)生成上下文感知層,對不同尺度特征進行處理,并嵌入高級語義信息,從而獲得更多的細節(jié)信息。Yin等[11]將Non-local注意力計算解耦為成對項和一元項兩部分,減少了網(wǎng)絡學習這兩部分的阻力,解耦后的Non-local模塊在多個任務中證明了其有效性。
大量實驗表明,基于深度學習的圖像分割算法在處理圖像缺陷分割方面有很好的效果,然而在太陽能電池缺陷識別應用方面存在不少問題。太陽能電池的缺陷較小,背景的主柵線和缺陷類似,一些背景紋理不清晰,而傳統(tǒng)的語義分割算法對這些缺陷沒有針對性和適應性,不能滿足實際生產(chǎn)需要。使用Semantic FPN[4]網(wǎng)絡,可以融合低層和高層特征,提升小目標分割的能力。但Semantic FPN網(wǎng)絡存在如下問題:特征融合不充分,未能對信息的有用性加以判斷,融合了很多無用信息而丟失了有用信息;對低層細節(jié)信息利用率不高,目標邊緣分割較為粗糙。因此,本文以Semantic FPN為基準網(wǎng)絡框架,提出了一種交叉門控融合的改進語義分割網(wǎng)絡,整體架構如圖1所示。本文方法針對太陽能電池缺陷微小的問題,提出交叉門控融合模塊(cross-gated fusion module,CGF),該模塊利用門控機制選擇性地融合ResNet最后4層輸出的多尺度特征,從而用低級特征彌補高級特征中丟失的缺陷細節(jié)信息,加強對目標特征的提取并減少網(wǎng)絡中的信息冗余,結合上下文信息提取模塊,提高獲取全文信息的能力;針對太陽能電池缺陷邊緣信息弱的問題,將圖像渲染思想應用到Semantic FPN中,引入PointRend模塊[12]對缺陷邊緣進行采樣,提取邊緣點的特征表示,有效提高了分割精度,細化了分割結果。
如圖2所示,FPN可分為自底向上和自頂向下兩部分。圖2左邊是FPN自底向上的通路,是多層卷積神經(jīng)網(wǎng)絡前饋計算的過程。在這個過程中,深度卷積神經(jīng)網(wǎng)絡對輸入的圖片進行卷積、池化等處理,提取圖片的深層特征,同時輸出特征圖的大小也在逐漸變小。在一些卷積層的操作中,輸出特征圖的尺寸沒有發(fā)生變化,因此可將這些大小相同的特征圖看作同一網(wǎng)絡階段,即金字塔層,金字塔層的輸出為該階段最后輸出的特征圖。本文使用ResNet101作為骨干網(wǎng)絡對輸入圖片的特征進行提取,可按照特征圖的大小把特征圖分成5個部分,也就是5個特征金字塔層,用{C1,C2,C3,C4,C5}表示,每層之間的步長為2,即每層特征圖的大小是上一層的一半。

圖2 FPN的結構
圖2右邊是FPN自頂向下的通路,通過中間的橫向連接和自底向上的通路相連。該部分對頂層的特征圖進行上采樣,將其大小擴大為原來的二倍,然后和大小相同的相鄰特征圖結合,實現(xiàn)多尺度特征的融合。圖中橫線部分是橫向連接的具體操作,二倍上采樣是為了獲得和下一特征圖相同的尺寸,以便相鄰兩層特征圖相結合。自頂向下結構中有四層特征圖,分別表示為{P2,P3,P4,P5},和左邊{C2,C3,C4,C5}相對應,二者對應的特征圖大小一致,通道數(shù)均為256。
FPN最開始可單獨應用在目標檢測任務中,生成高分辨率特征圖,融合多尺度特征,實現(xiàn)缺陷預測。FPN結構簡單但檢測效果可與其他經(jīng)典網(wǎng)絡相媲美,所以Kirillov等[4]在FPN結構后面添加一個語義分割的分支,實現(xiàn)了FPN在語義分割上的獨立應用。語義分割分支將FPN輸出特征圖由原來特征圖的1/32上采樣3次到1/4,通道數(shù)變成128,再對這些特征圖進行求和。特征圖在上采樣階段先經(jīng)過3×3卷積,然后經(jīng)過組歸一化[13]使網(wǎng)絡易于收斂,再經(jīng)過ReLU和2倍雙線性上采樣,一直重復該過程直到特征圖尺寸變?yōu)樵瓉硖卣鲌D的1/4。最后通過1×1卷積改變其通道數(shù),再進行4倍雙線性上采樣處理,由Softmax對像素分類,生成和原始圖像分辨率相同的逐像素標簽。但是Semantic FPN對每一層的處理有一定的局限性,且網(wǎng)絡結構簡單,不能處理復雜背景下的缺陷分割。
在卷積神經(jīng)網(wǎng)絡中,特征圖的尺寸較大時,會含有大量包含細節(jié)的低級語義信息,而特征圖尺寸越小,含有的高級語義信息越豐富。隨著卷積神經(jīng)網(wǎng)絡變深,輸出特征圖的尺寸慢慢變小,能夠得到更高級的語義信息,但低級語義信息逐漸丟失。為了在網(wǎng)絡中同時獲得具有高分辨率和高級語義信息的特征圖,可將低級特征圖和高級特征圖融合在一起。FPN對于特征融合具有一定的效果,但它將相鄰的2個特征圖結合在一起,沒有計算每個特征圖的有效性,很多有效信息淹沒在大量無效信息中,導致本就微小的目標特征變得更難捕獲,無法獲取信息豐富的高分辨率特征圖,不利于后續(xù)的識別與分割。而本文中提出的交叉門控融合模塊提供了一種高效的融合方法來解決這些問題。
模塊結構如圖3所示,圖中?表示卷積操作。該模塊采用的門控是一種成熟的機制,可以計算特征圖中每個特征向量的有用性并將有用信息聚集在一起。實驗過程中,網(wǎng)絡融合了ResNet的最后四層輸出,并將最后一層輸入交叉注意力模塊進行上下文信息提取。該模塊的融合方式定義如下:
Zt=(1+St)·Lt+(1-St)·
(1)
Si=δ(Wi·Li)
(2)


圖3 交叉門控融合模塊

(3)
式中:di,e∈D表示特征Je和集合Ωe的關聯(lián)度,i=[1,…,|Ωe|],D∈RH×W×(H+W-1)。將D輸入softmax層中得到特征圖A。

圖4 交叉注意力模塊
在特征圖F上再次使用1×1卷積得到V∈RH×W×C,用集合Φe∈R(H+W-1)×C表示特征圖P中與位置e同行或同列的點的特征向量。然后將特征圖A和P輸入聚合操作中,獲取上下文信息,其公式為:

(4)
式中:F′e表示輸出特征圖F′∈RH×W×C在位置e處的特征向量;Ai,e表示特征圖A中第i個通道位置e處的標量。因為特征圖F′的局部特征中加入了圖片的上下文信息,所以它的感受野更加寬闊,像素點的表示能力也更強。交叉注意力模塊增強了對空間信息的獲取能力,豐富了特征層的表達,對下一步有效信息地提取和融合做出了貢獻。
Semantic FPN網(wǎng)絡通過對輸入圖像不斷進行下采樣和上采樣操作,獲取圖片的語義信息,但是目標的邊界輪廓在圖片所有像素中占比很低,在經(jīng)過多次卷積池化和上采樣之后必然會遺失部分輪廓細節(jié)信息,產(chǎn)生較大的邊界誤差。而Kirillov等[12]提出的PointRend模塊可選出邊緣中不確定的點,將主要資源用于計算這些點,避免了對所有點的過度預測,有效減小特征圖上采樣時目標邊界的誤差。該模塊可以在圖像分割過程中通過渲染的方式逐步對缺陷邊緣上采樣,對邊緣的點執(zhí)行自適應細分策略,從而獲得平滑清晰的邊界。受到這個模塊的啟發(fā),本文將基于點的渲染算法PointRend模塊應用到交叉門控融合的改進語義分割網(wǎng)絡中。
PointRend主要是通過不斷對特征圖進行上采樣,選擇圖中處于目標邊緣的點,將主要算力用于計算目標邊緣以達到細化邊緣的目的。該模塊主要包括3個部分:點選擇、點特征的提取、PointHead。
點選擇部分使用細分策略自適應地選擇一組處于目標邊緣的點。在推理過程中,點選擇的方法是從粗到細逐步對特征圖進行渲染。每次渲染過程中,因其網(wǎng)格尺寸較大,目標較為模糊,所以先選擇低分辨率的特征圖;然后利用雙線性插值上采樣方法將其尺寸擴大到原來的2倍,使規(guī)則網(wǎng)格更加精細;最后在獲得的大尺寸特征圖上選擇N個不確定性小于0.5的點,選擇方式如下式所示。
(5)


圖5 不確定點的自適應細分過程
在訓練過程中,點選擇部分使用了基于隨機抽樣的非迭代策略來選擇最不確定的N個點。先從特征圖中隨機選擇kN個點(k>1),然后計算這些點的不確定性,選擇其中不確定性最高的αN個點(α∈[0,1]),余下的(1-α)N個點從特征圖中均勻采樣,選取k=3,α=0.75。
點特征提取部分需要將選擇的αN個點的特征提取出來,然后輸入PointHead中。點的特征包括粗糙特征和細致特征兩類。粗糙特征表示特征圖中每個點處的二維向量,包含了豐富的高級語義信息。細致特征通過對深度特征圖中的每個采樣點進行雙線性插值計算得到,包含了目標的細節(jié)信息。
PointHead是一個小型的神經(jīng)網(wǎng)絡,網(wǎng)絡中的每個點特征經(jīng)過多層感知器(multi-layer perceptron,MLP)得到預測標簽。MLP有3個隱藏層,在訓練時能夠共享權重,和圖卷積、PointNet[15]類似。
為了驗證本文提出方法的有效性,設計了一系列實驗。首先,介紹本文使用數(shù)據(jù)集的圖片大小、數(shù)量等參數(shù),圖片的標注方式和預處理方式;其次,選取用于定量分析的評估指標,并描述實驗的相關細節(jié);然后和幾種經(jīng)典的語義分割方法做對比并進行主客觀分析;最后,利用消融實驗驗證每個模塊在網(wǎng)絡中起的作用。
太陽能EL(electro luminescence)電池組件圖片的像素為6 900×3 600。因為圖像的尺寸過大,程序運行時會耗費大量的算力,網(wǎng)絡分割效果較差且標注困難,所以根據(jù)圖片中的柵線對圖像進行平滑切分,將每張EL電池組件原圖切分成64張分辨率為640×590的低分辨率圖片。切分后最終獲得太陽能EL電池組件圖片2 752張,其中斷柵缺陷967張、黑斑缺陷955張、線狀缺陷830張。為了提高太陽能電池缺陷的標注精度,使用PS圖像處理軟件進行語義標注,斷柵、劃痕、黑斑三類缺陷分別標注為紅色、黃色、藍色,分割結果如圖6所示。實驗中按照訓練集∶測試集為9∶1的比例,將訓練集圖片的數(shù)量設置為2 477,測試集圖片的數(shù)量設置為275。原始圖片格式為JPG,標簽圖片格式為PNG。實際訓練時,由于計算機算力的限制,在圖片預處理時將圖片尺寸由640×590剪裁為580×530。
選擇平均交并比(mIoU)作為算法性能的評價指標。mIoU通過計算真實值和預測值2個集合的交并集來計算預測結果與原始圖像中真值的重合程度。
(6)
式中:k表示標簽標記的類別;k+1表示包含空類或背景的總類別;pii表示實際為i類,預測為i類的像素數(shù)量;pij表示實際為i類但預測為j類的像素數(shù)量;pji表示實際為j類但預測為i類的像素數(shù)量。
利用Pytorch深度學習框架在Ubuntu20.04平臺上完成所有實驗,計算機的CPU為酷睿i7系列(Intel 3.7 GHz),顯卡為NIVIDIA Geforce GTX2080ti,基準頻率為1 350 MHz,Cuda版本是9.0,Cudnn版本號為7.4.0,Pytorch版本為1.6.0。實驗時,將最大iter設為240 000,interval設為2 000,優(yōu)化器為SGD,學習率設為0.01。

圖6 EL數(shù)據(jù)集的分割結果
本文使用了2種損失函數(shù):二元交叉熵損失函數(shù)和平均交叉熵損失函數(shù)。交叉熵的定義是給定一組隨機變量或一組時間,對2個概率分布之間的差異進行度量。二元交叉熵(binary cross entropy,BCE)損失函數(shù)可用來評判一個二分類模型預測結果的好壞程度,其定義如下:
(7)

為了驗證本文中提出的方法對太陽能EL電池缺陷進行語義分割的有效性,選取了10種不同的語義分割算法進行對比實驗,包括FCN[16]、PSPNet、PSANet、DANet等經(jīng)典的分割網(wǎng)絡,以及應用了多尺度網(wǎng)絡的ANN、DMNet和近年新提出的分割模型DNLNet、DPT[17]。為確保實驗結果的公平性,實驗中網(wǎng)絡參數(shù)、環(huán)境配置都相同,實驗結果如表1所示。

表1 不同語義分割算法的實驗結果
從表1可以看出,所提方法在斷柵、黑斑、劃痕三類缺陷的分割指標中均取得了最高的結果。所有算法在三類缺陷分割結果中,黑斑這一類別的IoU最高,因為黑斑缺陷雖然尺度不一,但大都為圓形,形狀規(guī)則,顏色較深,特征和其他缺陷相比更加明顯;其次是斷柵缺陷,其形狀多為長方形,長度統(tǒng)一,易于識別;而劃痕缺陷的形狀不規(guī)則,很多大小不一,缺陷邊緣和背景顏色相近,難以區(qū)分,特點不明顯。由于背景在圖片中占比大,網(wǎng)絡對背景的識別效果好,所以背景的IoU可以達到99.9%。
不同的分割方法的結果如圖6所示,分割錯誤或分割誤差較大的缺陷已用紅色方框標出。在圖6(a)中,可以看出PSANet、DANet、DMNet、ANN、DNLNet、DPT這幾個方法存在類別識別錯誤問題,將劃痕缺陷識別成了斷柵缺陷;APCNet沒有分割出缺陷;PSPNet分類正確,但是分割結果和缺陷有偏差。圖6(b)中存在3個斷柵缺陷,本文對比的方法都沒有完全分割出斷柵缺陷,存在漏檢、分割精度低等問題。圖6(c)中也存在上述問題。本文方法和其他算法相比,對于微小缺陷,能夠正確識別出缺陷的類別;對于微弱缺陷,分割缺陷的邊界更加清晰,更貼近真實標簽。
本文加入了交叉門控融合模塊和PointRend模塊來提升分割結果的mIoU和輸出圖像的質(zhì)量,從而輸出更加精細的太陽能電池缺陷分割圖像。為了驗證這2個模塊對網(wǎng)絡的具體影響,本文在太陽能EL電池組件數(shù)據(jù)集上設計了一系列消融實驗。實驗方法及結果如表2所示。可以看出,加入門控融合模塊相對于Semantic FPN原網(wǎng)絡,mIoU提高了2.39%,證明了門控融合模塊對于加強特征融合和上下文信息的提取起了較大的作用;加入PointRend模塊之后提高了3.25%,表明PointRend對于目標邊緣細化的有效性;同時加入門控融合模塊和PointRend模塊后,mIoU提高了4.54%,證明這2個模塊在網(wǎng)絡中可以較好地協(xié)同工作。這些量化結果證明了將門控融合模塊和PointRend模塊集成到Semantic FPN結構中的策略是有效果的。

表2 消融實驗結果
提出了一種新穎的端到端特征融合圖像分割算法。通過在ResNet輸出的后4層特征圖中使用提出的交叉門控融合模塊對有效信息進行多重融合,并對上下文信息進行聚合,獲得高分辨率且具有豐富的高級語義信息的特征圖,大大增強了獲取微小微弱目標信息的能力。引入PointRend模塊,利用計算機圖形學中的渲染思想優(yōu)化缺陷邊緣不確定的點,逐步對點進行上采樣,從而使目標的邊緣更加平滑清晰,提高了算法對微弱缺陷的分割能力。在太陽能EL電池缺陷圖片數(shù)據(jù)集上展開了一系列實驗,結果表明,本文算法和其他語義分割算法相比,mIoU更高,分割結果圖中缺陷種類識別更加準確,缺陷的邊緣分割更加精細。今后將進一步研究如何提高小目標的分割精度以及分類的準確度。