?

基于改進Vision Transformer的光伏電池缺陷識別研究

2023-12-27 13:03呂瀟涵
計算技術與自動化 2023年4期
關鍵詞:池化特征提取卷積

呂瀟涵

(青島科技大學,山東 青島 266000)

光伏電池的基本成分是晶體硅,硅片到電池片是光伏電池生產的最重要流程之一。由于當前技術水平的限制以及硅片的材料特點的制約,易造成光伏電池片出現劃痕、缺角、拼接縫隙過大等缺陷。這些缺陷不僅會大大降低光伏電池片的太陽能轉換效率,還會影響其使用壽命[1]。因此,在生產過程中快速識別出缺損電池片是一個重要步驟[2]-[3]。

目前,太陽能電池板缺陷識別方法主要分為人工目視識別、物理識別[4]和機器視覺識別三種[5]-[6]。其中,人工目視識別對判別員本身的工作經驗和技術水平要求較高,且不具備實時性。物理識別方法主要有聲波、激光、可見光等,代價較高?;跈C器學習和計算機視覺的太陽能電池板識別方法更加方便、快捷和經濟,以實時性、精確性等優勢成為太陽能電池板檢測識別發展的主要方向。

最初的基于計算機視覺方法的缺陷識別主要依據人工設計的特征進行識別,如尺度不變特征變換[7]、方向梯度直方圖[8]等。但是這種手工設計的特征具有很大的局限性,讓分類模型自己學習特征無疑是一種更好的選擇。隨著以卷積神經網絡(Convolutional Neural Network,CNN)為代表的深度學習的興起,基于不同網絡架構的光伏電池片缺陷識別和檢測方法成為學者研究的主流,如對抗生成網絡[9],CNN[10][11]等。近年來,以Transformer為代表的基于注意力機制的識別模型無論是在識別速度還是檢測精度上,均向CNN發起了挑戰,基于視覺Transformer(Vision Transformer,ViT)的各種模型在很多圖像識別領域獲得了目前技術水平(SOTA)的性能表現。但是由于Transformer本質上學習的是序列的關聯信息,無法像CNN能夠感知圖像的全局,因此如何同時利用CNN的全局感知能力和Transformer的強大邏輯關聯能力還有待進一步研究,并且Transformer的位置編碼需要人工設計模型,存在一定程度的主觀性。

為此,提出了一種基于CNN和多尺度視覺注意力機制(CNN Based Scaled ViT, CSViT)的光伏電池缺陷檢測方法。首先,基于殘差網絡設計了一個包含12個卷積層的特征提取網絡,然后利用特征金字塔網絡,融合三個尺度的淺層和深層特征,并對各個尺度的輸出進行分割和池化,作為ViT的信息編碼輸入;其次,對于每個輸入,設計了一個分支卷積模塊以實現位置自編碼;最后,信息編碼和位置編碼被同時作為Transformer編碼器的輸入。在公共的太陽能電池板缺陷數據集上的實驗結果表明,CSViT在不增加計算量的情況下,提升了性能。

1 卷積神經網絡與Transformer

1.1 卷積神經網絡

傳統意義上的全連接神經網絡模型,由于每層之間的每個神經元均和上一層的所有神經元相連,因此參數量異常龐大,容易過擬合,并且sigmoid函數的收斂性造成梯度消失,無法訓練較深的網絡模型。而CNN通過卷積核的權值共享,大大降低了網絡參數,減小了網絡訓練的難度以及對內存的需求。公認的第一個卷積神經網絡模型LeNet-5被LeCun用于手寫字符識別中,LeNet-5包含3個卷積層、2個池化層和1個全連接層,雖然結構簡單,卻定義了CNN的基本結構,當前流行的CNN模型基本遵循卷積-池化來搭建。但是,以支持向量機(Support Vector Machine,SVM)為代表的統計學習理論依靠堅實的數學基礎以及在小樣本上優秀的學習能力,在當時迅速成為學者追崇的焦點。

經過漫長的沉寂,從LeNet-5改進得到的AlexNet依靠多GPU并行、ReLU激活函數等眾多的新特性,在當年的ImageNet大賽上取得了絕對優勢,由此掀開了以CNN為代表的深度學習熱潮。接下來的數年內,ImageNet的Top-5和Top-1,幾乎各參賽組的主流方法均是基于CNN網絡設計而來的,網絡深度由最開始的8層增加到100多層,并且網絡寬度也在不斷增加。目前,CNN在朝著兼顧速度與精度的輕量化方向發展,例如MobileNet和EfficientNet等,成為當前在計算機視覺領域占有統治地位的學習模型。CNN與傳統神經網絡的最大區別就是基于卷積核的權值共享與基于池化的特征抽象,具體介紹如下。

(1)卷積

(1)

圖1 卷積核計算過程

卷積操作涉及的超參數有卷積核(特征圖)數量、滑動步長、邊界填充等。邊界填充的目的是在卷積計算時,能夠提取圖像的邊沿信息。一般,為了能夠提取圖像不同類型的抽象信息,單個卷積層會使用多個卷積核,得到多個輸出。

(2)池化

池化就是提取輸入中某個區域的主要信息,同時也可以對出入進行降緯。池化一般可以分為平均池化和最大池化。平均池化是將某一區域的輸入取平均值作為輸出,而最大池化是將取某區域的最大值作為輸出。具體過程如圖2所示。

圖2 池化計算過程

除了卷積和池化之外,以ReLU為代表的非線性激活函數緩解了神經網絡訓練過程中的梯度消失問題,BatchNormalization和Dropout降低了模型的過擬合,加快了訓練速度,均稱為CNN網絡架構的不可或缺的組件。

1.2 視覺Transformer

注意力機制(Attention Mechanism)是用于對不同位置信息進行建模的一套方法,已有的基于注意力機制的方法在機器翻譯、語音識別等任務中得到了廣泛的研究。Transformer是Google團隊在2017年提出的一種關于自然語言處理的經典模型,其結合了自注意力(Self-attention)機制,并且沒有采用循環神經網絡(Recurrent Neural Network, RNN)的順序結構,使得模型可以并行化訓練,能夠捕捉全局信息,在當年自然語言處理的相關競賽上取得了SOTA的結果。視覺Transformer是Transformer在圖像分類任務中的開山之作,ViT采用多層Transformer架構完成特征提取過程,每層內部均使用自注意力作為特征函數,并利用后層Tansformer對前層特征函數的輸出進行特征細化,逐漸捕獲到圖像全局特征,該模型架構如圖3所示。

圖3 ViT結構圖

ViT的整體結構可以分為4個部分:

(1)輸入圖像的序列化

由于Transformer的原始輸入是序列向量,因此ViT首先將圖像無重疊切割成相同大小的圖像塊。設輸入X∈H×W×C為寬(W)和高(H)的C通道圖像,首先將X切割成大小p×p的圖像塊。然后將每個圖像塊拉伸為p2×C的向量,最后利用變換矩陣將輸入轉換到特定的維度D。

(2)位置嵌入

ViT利用特定的位置編碼函數,對每一個變換后的圖像塊特征向量注入位置信息。需要注意的是,因為是圖像分類任務,除了圖像的特征輸入外,還添加了圖像的類別信息以及對應的位置信息。

(3)Transformer編碼

信息的編碼過程是通過堆疊多個TransformerEncoder來實現的,Encoder的具體結構如圖3右側所示,包含1個Multi-head Self-attention模塊,1個Multi-layer Perceptron模塊,上面兩個模塊之后分別連接1個層歸一化單元(Layer Norm)。

(4)多層感知機(Multilayer Perceptron,MLP)

MLP Head 是最終用于分類的層結構,由全連接層和激活函數組成。ViT雖然取得了比較好的識別效果,但是將圖像分割會一定程度上破壞圖像的整體信息,且圖片進行分patch操作后,只有在每個patch內部有信息交互,而patch和patch之間,只有在最后的MLP Head層才有交互,patch之間的信息交互太少。另一方面,位置編碼方式存在太大的人為經驗因素。

2 基于改進ViT模型的光伏電池片缺陷檢測模型

為了緩解圖像分割造成的整體或區域信息破壞,以及克服位置編碼人工設置隨機性大問題,本節設計了一個基于多尺度CNN和ViT的光伏電池缺陷識別模型CSViT,模型包括四個模塊,具體結構如圖4所示,下面對不同模塊分別進行介紹。

圖4 CSViT結構圖

2.1 特征提取網絡設計

特征提取網絡由一個卷積層和多個殘差網絡構成,模型結構與YOLOv3類似。與YOLOv3在橫向堆疊多個殘差單元,以提升骨干網絡的特征提取能力不同,CSViT并沒有在同一層堆疊多個殘差單元以加深網絡寬度,這是因為YOLOv3的特征提取過程幾乎全部依靠骨干網絡,而CSViT在骨干網絡階段主要是獲得不同尺度的特征圖,特征學習在ViT階段同樣能夠實現。特征提取網絡的具體結構如表1所示。

2.2 基于FPN的多尺度特征

FPN(Feature Pyramid Network)最初在目標檢測中被提取,主要是為了獲得不同尺度的特征圖,進而實現在不同尺度特征圖上的目標檢測,這樣做的好處是粗粒度特征圖主要包含輸入的全局信息,方便大目標的檢測,反之細粒度特征圖上包含圖像更多的局部信息,有利于對小目標的檢測。ViT中將原始輸入圖像進行分割裁剪,因此無法獲得圖像的整體或者區域信息。為此,CSViT借助FPN的思想,通過不同尺度特征圖作為Transformer的輸入,既可以通過深層特征圖學習圖像全局信息,又可以通過淺層特征獲取圖像細節。

CSViT中利用FPN的思想,將輸入圖像進行了三次降采樣,分別是在16倍降采樣、8倍降采樣、4倍降采樣,獲得三種尺度特征圖,大小分別是76×76、38×38、19×19(輸入圖像大小為304×304),如圖5所示。網絡越深,學習到的特征表達效果越好。對于8倍降采樣的特征圖,如果只使用8倍降采樣后的特征進行識別,只是獲取了輸入圖像的淺層特征,為此通過上采樣把16倍降采樣得到的特征圖的大小提升一倍,與8倍降采樣后的特征圖進行拼接。同理,對8倍降采樣的特征進行步長為2的上采樣并與4倍采樣特征圖拼接,這樣每張特征圖同時獲得了深層與淺層特征。

表1 特征提取網各層參數

圖5 CSViT中FPN結構示意圖

2.3 分割與位置編碼

由此可以得到總的信息輸入個數為:

(2)

需要特別說明的是,在ViT中,同樣將類別信息作為Transformer的輸入。但是CSViT通過ReP學習類別信息的位置編碼,顯然是不合理的。為此,不管p的取值為多大,在最小特征圖上,均會進行一個全局最大池化操作,最為圖像的整體抽象輸入信息,并同時對該信息利用ReP進行位置編碼。

圖6 位置編碼分支結構

2.4 ViT

獲得第三部分的信息輸入和位置編碼后,就可以利用Transformer編碼器進行編碼,通過循環L次進行多頭注意力機制MSA、前饋神經網絡MLP,并且在操作之前都要經過 Layer Norm(LN),最后做分類任務。具體過程為:

z0=[X0,X1,X2,…,XNx]+Epos,Epos∈(1+Nx)×C

(3)

(4)

(5)

(6)

需要說明的是,相較于ViT,式(3)中利用全局最大池化得到的X0替代類別編碼。此外,由于在輸入編碼器前,已經通過CNN進行了特征提取,所以在式(3)中省去了線性變換操作。

本文模型的流程圖如圖7所示。

圖7 模型流程圖

3 實驗結果與分析

3.1 實驗數據

實驗數據為開源的ELPV數據集,包含2624張光伏電池正?;蛉毕輬D像,每張圖像均為大小均為300×300像素,像素值范圍0-255,所有圖像均是從44個不同退化程度的太陽能電池板采用電致發光(Electro Luminescence,EL)技術得到,所有的圖像都按照尺寸和視角進行了標準化處理。此外,在提取太陽能電池圖像之前,所有的由捕捉EL圖像的相機鏡頭引起的任何失真均被消除。不同模塊類型的正常與缺陷圖像如圖8所示。

每個圖像均有領域專家標注完成,注釋信息包含兩方面的內容:提取圖像的太陽能模塊類型(單晶或多晶);判定為缺陷的概率值(0, 1/3,2/3 或1)。所有的缺陷分為內在和外在缺陷,這些缺陷均會造成電池性能的下降。圖9給出了不同模塊類型和不同缺陷程度的圖像數目的統計結果。從圖中可以看出,缺陷程度存在明顯的不均衡性。

圖8 ELPV數據集樣本示例

圖9 不同缺陷程度(上)和不同模塊類型(下)圖像數目統計結果

3.2 數據預處理

所有的圖像均被歸一化至[0,1],訓練樣本和測試樣本按照7∶3進行隨機劃分,得到1836張訓練圖像和788張測試圖像。

對于每張訓練圖像,分別執行水平翻轉和隨機旋轉進行增強。由于訓練和測試圖像均為固定像素大小,且拍攝角度一致,因此旋轉角度固定為180°,且未采用圖像裁剪進行增強,最后得到1836×3張訓練圖像數據。

由于本文主要針對的是分類任務,因此強制將缺陷概率標簽進行了轉換,即將1/3概率強制轉換為0,將2/3概率轉換為1。

3.3 實驗設置

利用ViT的三種不同模型作為對比試驗,分別為ViT-Base,ViT-Large,ViT-Huge,以上三種模型的配置與原文相同。

對于CSViT,分別取p=3,12,19三種模型,分別記為CSViT-3,CSViT-12,CSViT-19,除了p值外,三種模型其余部分均相同。此外,為了檢驗CSViT模型中的骨干網絡與整個模型的性能對比,同樣將骨干網絡作為對比模型,記為Res-12(骨干網絡包含12卷積層),訓練階段,Res-12直接在訓練集上訓練100個epoch,然后移植到CSViT中,重新在整個訓練集上微調,所有模型中的ViT組件均來自官方預訓練模型。

實驗系統為Windows 10, Intel Corei7-9750H CPU(2.60 GHz),32 GB內存,Quadro T2000顯卡(顯卡內存16 GB),實驗軟件平臺為Pycharm,語言為Python3.7.8,所有模型使用的深度一致。

3.4 實驗結果

(1)收斂速度對比

圖9給出了7中模型訓練過程中的收斂曲線。從圖中可以看出,Res-12由于模型比較簡單,收斂速度較快,但是訓練誤差同樣是最大的。6種ViT模型的收斂速度差距不大,但是仍然可以看出,CSViT-3的收斂速度略微塊,由此可以得出,基于預訓練Res-12和FPN的網絡能夠提取出輸入的有效特征,進而加快了模型后一部分ViT的收斂速度。

(2)準確率對比

選擇準確率 (Accuracy)、召回率(Recall)和精確率(Precision)三個指標評價模型性能。設缺陷圖像/單晶正確識別表示為TP,缺陷圖像/單晶錯誤識別表示為FP,正常圖像/多晶正確識別表示為TN,正常圖像/多晶錯誤識別表示為FN,則三個指標的計算如下:

(7)

圖9 不同方法的訓練過程中損失函數收斂曲線圖

表2給出了不同方法對于電池片類型的分類結果。從表中可以看出,Res-12的準確率最低,這主要是因為Res-12僅有12層卷積網絡,與其他模型相比,結構比較簡單。ViT系列的方法中,ViT-Huge性能最好,緊接著是ViT-Large,表明更多的編碼模塊能夠提取更加抽象有效的特征。CSViT系列方法中,CSViT-3模型準確度要略高于ViT-Base,充分說明了CSViT中特征提取網絡以及位置編碼策略的有效性。但是隨著p值的增大,CSViT的性能下降明顯,這主要是因為較大的p值導致輸入Transformer模型的編碼信息迅速減少,尤其當p=19,只有1+4+16個信息向量,引起性能下降,這同樣說明在Transformer之前,通過特征提取網絡和位置編碼策略得到的信息是有效的。表3給出了不同方法對電池片缺陷類型的分類結果,可以得出與表2相同的結論。

表2 不同模型對電池片類型識別結果對比

表3 不同模型對電池缺陷類型識別結果對比

(3)識別速度對比

圖10給出了不同方法識別速度與精度的對比圖。從圖中可以看出,雖然ViT-Huge和ViT-Large兩種方法的識別精度遠遠高于其他方法,但是兩者的識別時間開銷同樣是最大的。CSViT-3的識別速度幾乎和ViT-Base相同,但是經度略高于ViT-Base,說明CSViT的特征提取網絡不僅能夠很好地提取深層次特征信息和提供有效的位置編碼,且不會帶來比較大的時間開銷,這主要是因為經過特征提取后輸入encoder的信息數量比直接分割圖像輸入的信息數量要少得多。CSViT的另外兩個模型雖然經度有所降低,但是速度上帶來的優勢更加明顯。

以上結果表明,Res-12和基于FPN的多特征圖雖然相比其他模型較為簡單,但是依然能夠從輸入中提取出有效的特征。同樣,CSViT的位置自編碼機制能夠成功學習不同輸入之間的差異信息,證明了位置自編碼策略的有效性。

圖10 不同方法缺陷識別速度與精度對比結果

4 結 論

設計了一個基于改進的ViT光伏電池片缺陷檢測模型。首先基于殘差模型設計了一個簡單的特征提取網絡Res-12,包含12個卷積層和4個最大池化層;然后利用特征金字塔網絡FPN,對Res-12的三個不同下采樣的特征層進行特征融合,提取不同層次的抽象信息;接著對FPN的輸出按照ViT的輸入分割策略進行裁剪和壓縮,為ViT提供多尺度輸入信息的,避免了圖像分割造成ViT無法感知輸入的全局信息的缺陷;此外設計了位置自編碼分支網絡,避免了手動設計位置編碼模型的隨機性。在公共數據集上的結果表明,該模型能夠提升訓練收斂速度,在不明顯增加計算量的情況下,提升了識別精度,證明了模型的有效性。

猜你喜歡
池化特征提取卷積
面向神經網絡池化層的靈活高效硬件設計
基于Sobel算子的池化算法設計
卷積神經網絡中的自適應加權池化
基于3D-Winograd的快速卷積算法設計及FPGA實現
從濾波器理解卷積
基于卷積神經網絡和池化算法的表情識別研究
基于Daubechies(dbN)的飛行器音頻特征提取
基于傅里葉域卷積表示的目標跟蹤算法
Bagging RCSP腦電特征提取算法
基于MED和循環域解調的多故障特征提取
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合