張曉艷,向 勉,朱 黎,周丙濤,劉洪笑,段亞窮
(湖北民族大學智能科學與工程學院,湖北 恩施 445000)
太陽能作為一種清潔能源,比化石能源使用得更廣泛[1]。光伏產業經過快速發展,裝機容量一直在持續增長,已經成為我國可以參與國際競爭的新興產業[2]。由于光伏組件長時間在室外進行工作,容易受到風雨的侵蝕,火災的發生,沙土的覆蓋,以及人影樹影的遮擋等影響,無法避免出現一些故障[3]。這些故障如果沒有被及時檢測到,所產生的損失無法估量,對光伏產業的發展不利。因此,采用有效方法檢測光伏故障并對其進行分類是十分有必要的。
本文設計的基于Vision Transformer 的光伏異常紅外圖像檢測的方法,通過把原圖劃分成多個塊(patch)展平成序列,然后將其輸入進原始Transformer 模型的編碼器Encoder 部分,最后接入一個全連接層,從而實現圖片故障類型的分類。該方法對光伏組件故障類型進行8 種分類,包括電池故障、泵組故障、二極管故障、多級激光二極管故障、熱點故障、多熱點故障、脫機方式故障、遮蔽故障。其中數據集經增強后圖片數量多達4 萬多張,能夠更好地訓練模型,并且明顯地提高了其檢測的準確率。
Vision Transformer 整體可以分為3個部分,分別是:Linear Projection of Flattened Patches(Embedding層)、Transformer Encoder(Transformer Encoder編碼器)、MLP Head(延時頭),其中Transformer Encoder、Patches Position Embedding 層屬于特征提取的部分,主要的作用是平均分塊處理輸入的圖片,在劃分圖片塊時是按照固定的區域大小進行劃分的,再將這些已經劃分好的圖片塊組合成序列,這一系列操作完成后,將其傳入到Transformer Encoder 區域內進行特征提取,利用自注意力機制,從而檢測每個圖片塊的重要程度。MLP Head 屬于分類部分,在分類區Vision Transformer 的工作是利用特征提取區域所提取的特征進行分類,在序列中添加了一個額外的可學習的classification token,和其他所提取的特征進行特征交互,融合其他圖片序列的特征,最后再進行全連接分類。Vision Transformer 模型的整體框架如圖1所示。

圖1 Vision Tranformer的整體框架
本文所采用的模型是Vision Transformer_basepatch16,此模型的每個模塊數據的形狀是[16,16,3],通過映射得到一個向量,這個向量也就是卷積核個數token,其中token的長度是768。由圖2可知,將一張光伏組件的圖片按固定大小分成很多小的模塊,把輸入圖片(224×224)按照卷積核16×16大小的模塊進行劃分,從而得到196個小模塊。然后就是把這個特征層組合成為序列,模型以非常簡單的方式進行組合,具體方式是用高寬維度來進行平鋪,[14,14,768]在高寬維度平鋪后,得到一個[196,768]的特征層。實驗是直接通過一個卷積層來實現的。通過卷積[224,224,3]→[14,14,768],進而把H和W兩個維度展開鋪平,[14,14,768]→[196,768],這個時候剛好變成了一個二維矩陣,這個二維矩陣適用于Vision Transformer 模型。最后,在輸入到Transformer Encoder 之前,已經得到了具有圖片信息、位置信息以及分類信息的特征。
在經過Embedding 層時得到shapeEmbedding 層是[197,768]之后,模型再把序列信息傳到Transformer Encoder 中進行特征提取,這是Transformer模型不同于其他模型的Multi-head Self-attention 結構,利用自注意力機制,可以計算輸入圖片特征各部分的不同重要程度,也就是圖片各個部分的特征,所以在經過Encoder 層之后除了卷積本身得到的一些特征,其中還包含一些Attention 的信息。其中使用縮放點積注意力機制的公式計算相似度,計算公式如式(1):

式中:A為注意力機制(Attention);S為softmax 函數;Q為一組Query 集合組成的矩陣(查詢);K為一組Key 集合組成的矩陣(索引);V為一組Value集合組成的矩陣(內容),具體的計算步驟:首先是計算不同輸入向量之間的得分,其次是把梯度穩定性的分數進行標準化,然后再使用softmax函數把分數轉化成概率,繼而計算加權矩陣,最后把全部計算過程統一整理成一個函數即為上式。
多頭注意力機制是Transformer的非常重要的組成部分,將多個單頭注意力機制連接起來即為多頭注意力機制,計算公式如式(2):

式中:H為head(頭);M為Multi-Head(多頭);C為Concat(聯結);W為線性變化時的參數矩陣。具體的計算步驟:首先把Q、K、V3個參數進行多次拆分,每組拆分的參數用于高維空間的不同的子空間中從而計算注意力權重。然后再進行多次并行計算,最后統一整理所有子空間中關于注意力的信息。
構建Transformer 的MLP Block,具體方法就是用全連接、GELU激活函數還有Dropout組成,比較重要的是,第一個全連接層會把輸入節點個數翻4倍即為[197,768]→[197,3072],第二個全連接層會還原回原節點個數即為[197,3072]→[197,768]。
在經過MLP Head 層時,Vision Transformer 所處理的內容是通過所提取到的特征進行分類,也就是對本文所研究的8 種故障類型進行分類,特征提取時需要在圖片序列上添加[class]token,并且提取出[class]token 所生成的對應結果和其他的特征一起進行特征交互,和其他圖片序列的特征進行融合,然后用Multi-head Self-attention 結構提取特征后的[class]token來進行全連接分類。
本文數據集InfraredSolarModules 來源于ICLR 2020的AI地球科學研討會上,是一個機器學習數據集,包含在太陽能發電場中發現的不同異常的真實圖像。用于檢測異常的紅外太陽組件數,該原始數據集未經過數據增強之前由7217 張紅外圖像組成,每張圖像大小為24×40 像素,總共是有8 種故障類型,分別是cell、cell-Multi、Diode、Diode-Multi、Hot-Spot、Hot-Spot-Multi、Offline-Module、Shadowing。數據由“猛禽”地圖團隊匯總,并由配備中波或長波紅外(3~13.5 m)和可見光譜成像系統的有人駕駛飛機和無人機系統收集。圖像分辨率為3.0~15.0 像素/cm。異常被裁剪到單個模塊,并被分成類。
實驗環境是:所有的模型都基于Python 3.7 和Pytorch 1.11.1 框架,電腦采用Windows10 系統,內存為16 GB,CPU為AMD Ryzen 7 5800H with Radeon Graphics,GPU 為NVIDIA GeForce RTX 3050 Laptop GPU,使用CuDA11.3 和CuDNN8.2.1。實驗具體模型參數設置如表1所示。

表1 Vit、Xception、VGG16模型參數
由于原數據集的樣本相對較少,而對于圖片分類的任務而言,需要大量樣本才具有準確性,所以本文做了5種方式的數據增強,分別是左右翻轉、上下翻轉、增強亮度、降低亮度,改變銳度,將數據集的圖片擴充到了43302 張。運用大量的數據集進行訓練,提高了模型的魯棒性和泛化能力。本文將34638張圖片劃分為訓練集,8664張圖片劃分為測試集。其中1張圖片的數據增強效果如圖2所示。

圖2 數據增強示例
本文通過使用準確率、精確度、召回率和F1來驗證Vision Transformer 模型的性能優于傳統模型Xception 和VGG16 模型,其中準確率A、精確度P、召回率R和F1的計算公式見式(3)、(4)、(5)、(6):

式中:TP為有故障圖像的數量正確分類;TN為無故障圖像的數量正確分類;FP為有故障圖像的數量錯誤分類;FN為無故障圖像的數量錯誤分類。準確性表示由本文提出的模型產生正確分類的概率。精度表示檢測到的故障圖像占所有故障圖像的比例。召回率表示被本文的模型正確檢測到的故障圖像的比例。F1分數表示查準率和查全率的調和均。對比圖3(a)、(b)、(c)、(d)可知,無論是準確率、精確度、召回率還是F1,本文所提出的模型均明顯高于其他2個常規模型。由圖3 (a)可知,Vision Transformer(Vit)模型準確率最高可達95.787%,高于Xception模型最高值11.9%,比VGG16模型增加了17.74%。由圖3(b)可知,Vision Transformer 模型精確率最高可達96.441%, 高于Xception 模型最高值12.125%,比VGG16 模型增加了18.242%。由圖3(c)可知,Vision Transformer 模型精確率最高可達95.462%,高于Xception 模型最高值11.805%,比VGG16模型增加了19.948%。由圖3(d)可知,Vision Transformer 模型精確率最高可達95.857%,高于Xception 模型最高值12.347%,比VGG16模型增加了19.524%。

圖3 Vit、Xception、VGG16對比圖
本文基于Vision Transformer 模型,設計了光伏組件紅外圖像故障檢測的方法,提高了檢測的準確率。Vision Transformer 模型主要就是先將圖像進行分塊處理,然后進行圖像塊嵌入和位置編碼工作,最后利用Transformer 編碼器和MLP 進行分類處理。適用于大規模數據集的光伏組件紅外圖像故障檢測。
光伏組件紅外圖像故障檢測的方法能夠促進光伏產業的發展,應用到實際生產之中,可以提高故障檢測的效率,在組件發生故障的時候及時進行處理,減少由于故障帶來的損失,以確保光伏電站的正常運行。本文所用方法受紅外圖像分辨率、攝像頭參數影響,還有很大的改進的空間。