劉懷廣,劉安逸,周詩洋,劉恒玉,楊金堂
(1.武漢科技大學 機械傳動與制造工程湖北省重點實驗室,湖北 武漢 430081;2.武漢科技大學 機器人與智能系統(tǒng)研究院,湖北 武漢 430081)
太陽能作為一種可再生的清潔能源,一直受到廣泛的關(guān)注,但受限于轉(zhuǎn)換效率的問題,沒有得到大規(guī)模推廣。而太陽能電池組件作為把光能轉(zhuǎn)化成電能的主要媒介,其質(zhì)量直接影響到光電轉(zhuǎn)換的效率、使用壽命以及安全[1]。太陽能電池組件在生產(chǎn)過程中受材料和工藝影響,不可避免會產(chǎn)生各種缺陷(如隱裂、黑斑、斷柵、黑心等),從而造成組件產(chǎn)品良品率的下降,因此在生產(chǎn)過程中對組件缺陷進行識別對于提高太陽能組件成品質(zhì)量顯得尤為重要。
基于機器視覺的電池片缺陷檢測常見的檢測方法有可見光成像、熱紅外成像、電致發(fā)光成像(electroluminescence,EL)和光致發(fā)光成像(photoluminescence,PL)[2-3]??梢姽獬上裰荒軝z測電池片的外觀缺陷,例如缺角、碎片、色差,臟污等,對內(nèi)部缺陷無能為力;熱紅外和EL 成像需要對電池片通電檢測,這可能對電池片造成二次損傷,而且因為接觸式檢測,效率較低;光致發(fā)光(PL)[4]是一種通過高能外部光源(主要是激光)進行照射,使硅離子躍遷產(chǎn)生熒光成像的技術(shù)(其原理如圖1所示)。PL 技術(shù)可對電池片表面和內(nèi)部缺陷同時進行成像,與現(xiàn)有的EL 技術(shù)相比,PL 不需要接觸電池片,且能對過程片(非成品電池片)進行檢測,從而更利于產(chǎn)品的質(zhì)量把控,因此光致發(fā)光技術(shù)逐漸成為太陽能電池片檢測的主要技術(shù)。
圖1 PL 成像原理Fig.1 Principle of photoluminescence imaging
在電池片缺陷視覺檢測方面,國內(nèi)外也進行了相關(guān)的研究。Deitsch S 等[5]分別使用支持向量機(SVM)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)對高分辨率單晶和多晶太陽能電池片EL 圖進行缺陷識別,判斷組件電池片缺陷概率,CNN 模型平均準確率達到88.42%,SVM 模型平均準確率82.44%;張磊等[6]使用光致發(fā)光成像檢測太陽能電池中的斷柵缺陷,然后詳細研究了外部偏置控制和光照強度對PL 圖像的影響,最后與EL 成像相比,得出結(jié)論,使用PL 成像識別電池片斷柵具有突出的優(yōu)點;Anwar S 等[7]提出了一種檢測多晶太陽能電池中微裂紋缺陷的算法,使用各向異性擴散濾波器和圖像分割技術(shù),結(jié)果表明,該方法檢測太陽能電池中的微裂紋平均準確度為88%;Xu 等[8]使用機器視覺方法包括圖像分割、高斯濾波、Hough 變換對光伏模塊的微裂紋進行檢測,所檢測微裂紋適用于尺寸較大的裂紋,對細小隱裂效果不佳;王憲保等提出一種基于深度學習的太陽能電池片表面缺陷檢測方法,該方法首先根據(jù)樣本特征建立深度置信網(wǎng)絡(luò)(DBN),并訓(xùn)練獲取網(wǎng)絡(luò)的初始權(quán)值,然后通過BP(backpropagation)算法微調(diào)網(wǎng)絡(luò)參數(shù)[9],能較快對缺陷進行識別,但是在實際應(yīng)用中,工業(yè)相機拍攝出的百萬像素級圖像對模型的訓(xùn)練形成很大的挑戰(zhàn);伍李春等提出了一種基于機器視覺以及人工神經(jīng)網(wǎng)絡(luò)的太陽能電池片表面質(zhì)量檢測方法,基于模板匹配檢測外形缺陷,基于HIS(hue-saturation-intensity )空間下的顏色直方圖檢測顏色缺陷,利用兩類人工神經(jīng)網(wǎng)絡(luò)進行斷柵檢測[10],針對斷柵這一缺陷其建立的正則化RBF(radial basis funtion)分類器的正確識別率能夠達到98.57%。
電池片隱裂缺陷漏檢會對整個組件的產(chǎn)能造成嚴重影響,因此對缺陷檢測算法的準確率有很高的要求。以上方法在隱裂缺陷識別的準確率上還有待提高,并且以上方法主要針對單硅片檢測,但一組電池片組件一般是由10×6 或12×6 的單硅片排列而成。整個組件圖像像素達到7 000 萬以上,單純的單片組合檢測會嚴重影響檢測效率;同時,硅片各部分材料性質(zhì)差異會引起PL 成像后其圖像灰度分布不均、缺陷邊緣不清晰等問題,這對檢測算法提出了更高的效率和準確性要求。針對以上問題,本文提出一種基于聚類的待檢測區(qū)域定位方法來解決工業(yè)應(yīng)用中的高像素圖片問題,然后利用圖像處理對缺陷進行預(yù)篩選,最后利用3 個卷積神經(jīng)網(wǎng)絡(luò)模型對細小隱裂、黑斑以及無缺陷的區(qū)域進行區(qū)分,實驗結(jié)果驗證了上述方法能準確地檢測出太陽能電池組件的隱裂缺陷。
由于組件尺寸較大(一般為2 000 mm×1 000 mm),為了保證成像精度,需要由多個相機共同成像。本文主要采用8 個相機(其布局如圖2所示)進行單獨成像,然后把8 張圖片拼接成一張大圖,方便保存和跟蹤。
圖2 相機布局及圖像視野(10×6 組件)Fig.2 Camera layout and image view (10×6 component)
相機i圖像在大圖的位置(xi,yj)可表示為
式中:Wk代表k相機的圖像寬度;Hi代表i相機的圖像高度。為了保證拼接的完整性,每臺相機成像視野需要有一定的重合量,然后通過求每個相機圖像中的匹配點進行拼接,消除重合區(qū)域。另外,為了提高電池組件缺陷檢測效率,需要獲得的最小單元是單塊電池片,然后根據(jù)先驗知識來進行關(guān)鍵點檢測。
由于組件圖像由多個相機成像組合而成,因此各相機成像后需要按照規(guī)則進行拼接,保證整幅圖過渡自然,相機間沒有重復(fù)或間隙。從圖2可以看出,每個相機視野范圍包含有3×3 硅片區(qū)域,拼接時需要保證每個硅片在橫向和縱向?qū)R,因此最直接的匹配關(guān)鍵點在于硅片邊界相交的區(qū)域(見圖3)。如何準確地獲得關(guān)鍵點的位置是拼接的關(guān)鍵。
圖3 相機2 的拼接匹配關(guān)鍵點Fig.3 Stitching matches key points of Camera 2
由于激發(fā)光源和硅片性質(zhì)的不均勻性,相機所成圖像會在灰度上有些差異,直接把二值化后的圖像投影會因為硅片的高亮度而消除硅片邊緣信息(如圖4(a)所示),而邊緣投影可以很好地屏蔽掉漸變灰度,克服灰度干擾問題(如圖4(b)所示)。
圖4 單相機投影定位Fig.4 Single camera projection positioning
圖4(b)是經(jīng)過Sobel 邊緣二值化后的圖??梢钥闯觯罡叩耐队拔恢媚軌蛘_反應(yīng)關(guān)鍵點所在的橫坐標和縱坐標,但是鑒于Sobel 邊緣較粗且呈現(xiàn)雙邊特征,故在定位關(guān)鍵點時存在誤差。實際上,Sobel 邊緣附近的干擾,存在著一定的鄰域近似性,而真實邊界往往具有突發(fā)性,因此一般可以通過相鄰差分消除邊緣干擾,但過于緊鄰的差分也會抵消邊緣本身的值,特別是對比度較弱的邊緣。為了獲得更精確的關(guān)鍵點的坐標值,本文提出了一種基于投影曲線鄰域極值差分的關(guān)鍵點定位法,其公式如下:
式中:C(j)為相機邊緣圖像投影曲線;Δ為鄰域跨度。
圖5是相機2 邊緣圖二值化Y方向投影曲線經(jīng)過鄰域極值差分前后的對比,其中鄰域跨度為8 像素。可以看出,因為原始的Sobel 算子的跨鄰域差分性質(zhì),其邊緣投影最大值會有一定的偏移,而經(jīng)過鄰域極值處理后投影曲線的最大值雖然有一定的降低,但峰值附近的噪聲也相應(yīng)地消除了,且最大值更能反映關(guān)鍵點坐標位置。因此,根據(jù)先驗知識,在一定數(shù)量的峰值(本文單邊最大為4 個峰值)附近通過遍歷最大值便可以定位到關(guān)鍵點坐標P(x,y)。
關(guān)鍵點坐標獲取了以后,就可以根據(jù)各相機的位置關(guān)系和關(guān)鍵點重合的特性來計算相機圖像在總圖像的平移量。每個相機有4 個邊,每個邊最多有4 個關(guān)鍵點,為了方便處理,本文對各邊進行了編號(見圖6),不同位置的相機所要進行關(guān)鍵點求取的邊如表1所示。
圖5 相機Y方向投影曲線的鄰域極值差分處理(Δ=8)Fig.5 Neighborhood extreme value difference processing of camera Y-direction projection curve
圖6 相機邊的序號Fig.6 Edge index of camera
表1 各相機要求的關(guān)鍵點邊Table1 Key points required by each camera
相機圖像在移動時,為了保證移動一致性,取相機1 為基準,其圖像不動,其他相機的移動方向如圖7所示。第二排相機首先與第一排相機依據(jù)關(guān)鍵點y坐標進行列對齊,然后跟隨第一排相機再進行x方向移動。
圖7 各相機的移動方向Fig.7 Movement direction of each camera
各方向的相對移動量根據(jù)關(guān)鍵點坐標進行求平均,相機i相對與相機j的移動量公式如下:
式中PkE1和PEk2分別表示相機i和相機j對應(yīng)的E1 邊和E2 邊的關(guān)鍵點,如相機6 對應(yīng)的4#邊與相機2 對應(yīng)的2#邊。拼接結(jié)果如圖8所示。
圖8 組件圖像的拼接結(jié)果Fig.8 Assembly result of component image
另外,利用各相機的關(guān)鍵點坐標信息,還可以進一步對單片進行分割,進而利用單片局部區(qū)域的先驗布局信息,加快缺陷的檢測效率。
本文檢測的電池片規(guī)格有158 mm×158 mm 和162 mm×162 mm 兩種,每片有6×6 的激光孔(見圖9)。因為應(yīng)力集中等原因,激光孔周圍容易產(chǎn)生一種內(nèi)部微裂紋,稱為隱裂。隱裂在電池組件的使用過程中容易造成整片電池片的破碎,嚴重影響了電池片的壽命和效率,因此隱裂的檢測是電池片檢測的重要內(nèi)容。PL 成像時激光孔與周圍珊線因為沒有被激發(fā)離子,從圖像上看,會形成黑色圓點加十字線,呈現(xiàn)出角點特征(如圖9),而附近的隱裂在PL 圖中表現(xiàn)為發(fā)光較暗的方向線,常表現(xiàn)為45°斜線(第一類隱裂,如圖10(a)所示)或者是形成X 交叉形(第二類隱裂,如圖10(b)所示),大小為0.5 mm~5 mm。對于黑斑和一些不在角點上的較短隱裂(如圖10 中(c)、(d)所示)不易造成電池片破碎,在實際生產(chǎn)中根據(jù)生產(chǎn)批次決定需不需要剔除,把黑斑和不在角點上的隱裂與第一類、第二類隱裂區(qū)分開是實現(xiàn)自動缺陷識別的重點和難點。
目前,人工檢測一整塊組件的時間在5 s 左右,為了提高生產(chǎn)效率,視覺檢測時間限制在2 s,檢測精度要求0.5 mm,本文檢測精度為0.3 mm。為了提高圖像處理的實時性,本文在各激光孔的周圍64×64 像素的區(qū)域內(nèi)進行檢測。但是由于一張組件圖含有2 000 多個激光孔,如果每個孔周圍都進行檢測仍然會消耗大量的時間,降低實時性,因此對局部圖像先進行預(yù)篩選,然后對候選缺陷區(qū)進行缺陷識別。
圖9 單電池片正面及PL 圖像Fig.9 Single cell plate front and PL image
圖10 角點缺陷圖Fig.10 Diagrams of corner defects
待測區(qū)域的定位關(guān)鍵在于獲得激光孔的位置。根據(jù)激光孔呈現(xiàn)角點的特征,本文待檢測區(qū)域定位設(shè)置了4 個步驟:圖像降噪,邊緣提取,角點檢測和角點篩選。首先對單電池片圖像進行高斯濾波,然后選用Sobel 算子進行邊緣提取,再對圖像進行角點檢測,最后根據(jù)距離和位置條件進行篩選。
2.1.1 距離條件
根據(jù)電池片結(jié)構(gòu),孔間距是均勻分布的,孔間距在電池片寬度的1/6 左右,過小會造成多選,過大會漏選。因此,檢測時就可以作為限定條件提高魯棒性。
把角點坐標P(x,y)在單維度方向上(x和y方向)從小到大進行排序,然后按照(4)式的規(guī)則分成有限個列表:
式中:xn、yn分別是第n個點的橫坐標和縱坐標;Tx為設(shè)置的坐標距離閾值(本文根據(jù)電池片的尺寸設(shè)置為15)。當?shù)趎個和第n-1 個點的橫坐標差值大于Tx時就把第n個點的橫坐標存在一個新的列表中,從第2 個點橫坐標開始直到處理完每一個點的橫坐標,最終得到有限個列表。再依據(jù)列表的長度進行篩選,對于長度小于3 的列表中儲存的角點坐標從總的角點里面剔除,獲得最終的角點信息(如圖11 所示)。
圖11 待檢測角點定位Fig.11 Location of corner points to be detected
2.1.2 位置條件
獲得的36 個角點除了距離上有限定特征,實際上在位置上也會呈現(xiàn)出均勻分布特征。因此為了減小位置誤差并獲得準確的角點坐標,對近似同一行(列)上的角點坐標進行3σ判定。其過程如下:
首先按(5)式對每一行計算關(guān)鍵點坐標的一維距離:
式中σx代表某行關(guān)鍵點的橫坐標標準差。最后根據(jù)保留的關(guān)鍵點求行坐標:
也就是舍棄坐標偏離過大的角點,最后把保留的角點進行求平均,獲得單行關(guān)鍵點的橫坐標。用同樣的方法得到6 條縱線,這6 條橫線和6 條縱線的交點就是我們要找的36 個角點,如圖11(b)所示。
為了對角點上的缺陷進行識別,需要對角點周圍可能存在缺陷的區(qū)域進行判定。首先對36 個角點周圍64×64 的局部區(qū)域進行輪廓查詢,計算獲得的輪廓面積并按照從小到大排序。如果檢測到的輪廓大于6 個,按照(8)式對輪廓進行判定,篩選出可能存在缺陷的區(qū)域。
式中:n表示檢測出的輪廓數(shù);sx表示第x個輪廓的面積。對于一些特殊情況(如PL 產(chǎn)生過曝光圖像)可能導(dǎo)致檢測到的輪廓小于6 個,就對36 個角點周圍區(qū)域定義為候選區(qū)域。
篩選出疑似缺陷輪廓之后,還要進一步確定疑似缺陷是否在角點上。首先,我們計算出輪廓的中心點坐標,結(jié)合之前定位的36 個角點坐標,找出輪廓中心點四周32×32 個像素內(nèi)包含的角點。如果這個輪廓附近沒有角點,則可以排除掉這個候選區(qū)域,最后形成缺陷識別的局部圖,為神經(jīng)網(wǎng)絡(luò)的識別打下基礎(chǔ)。圖12 為整個候選區(qū)的篩選流程圖。
圖12 角點截圖流程Fig.12 Corner screenshot process
近年來,深度學習在計算機視覺圖像識別領(lǐng)域取得了突出的成績,尤其是卷積神經(jīng)網(wǎng)絡(luò),其特殊的網(wǎng)絡(luò)結(jié)構(gòu)對二維圖像的復(fù)雜背景、不均勻光照、角度變化等有很強的魯棒性,近些年被廣泛應(yīng)用于計算機視覺中的分類、檢測、分割等任務(wù)[11-12]。為了降低人工特征對電池片缺陷檢測的影響,本文采用了端到端的深度網(wǎng)絡(luò)識別方法。但是由于樣本的限制,我們在輕量化的卷積神經(jīng)網(wǎng)絡(luò)模型LeNet-5[13]的基礎(chǔ)上進行了改進,形成了3 種不同結(jié)構(gòu)不同深度的卷積神經(jīng)網(wǎng)絡(luò)模型,以適應(yīng)組件缺陷識別的需要。模型結(jié)構(gòu)及具體參數(shù)如表2、圖13 所示。模型1 的神經(jīng)網(wǎng)絡(luò)由2 個卷積層、2 個最大池化、3 個全連接層組成,即在原來LeNet-5 網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上進行微調(diào),將卷積層和兩層全連接層激活函數(shù)改為Relu 函數(shù),提高模型的收斂速度,池化層改為最大池化,輸出層則使用現(xiàn)在處理多分類問題常用 的 Softmax作為激活函數(shù),同時加入了Dropout[14]防止過擬合。具體來說,2 個卷積層的過濾器數(shù)目分別是6、16,3 個全連接層單元數(shù)分別是120、84、4,所有卷積層均采用5×5 的內(nèi)核大小,對于最大池化層,池化層的核都是2×2,步長為2。模型2 在模型1 的基礎(chǔ)上增加模型的復(fù)雜程度,改為3 個卷積層、3 個最大池化、3 個全連接層,同時采用更小的卷積核,卷積核大小改為3×3,以增加模型的特征提取能力,同時也意味著更多噪聲的干擾,全連接層不作改變。模型3 在前2 個模型上進行精簡,減少網(wǎng)絡(luò)的深度,防止過擬合,同時調(diào)整全連接層的維度,防止欠擬合,全連接層改為2 層,第1 個全連接層是1 024 個單元,第2 個全連接層是4 個單元,模型1、2、3 的參數(shù)量分別是400 267、656 627、2 838 362,參數(shù)總量依次增加。
表2 網(wǎng)絡(luò)模型結(jié)構(gòu)及部分參數(shù)Table2 Network model structure and some parameters
圖13 訓(xùn)練所用卷積神經(jīng)網(wǎng)絡(luò)模型Fig.13 Convolutional neural network models for training
本文數(shù)據(jù)集取自江蘇省某太陽能電池廠,從不同生產(chǎn)批次抽取了3 000 張電池片組件PL 圖片。這些電池片組件總共包括180 000 個電池片,經(jīng)過挑選最終得到8 000 個有缺陷或者有代表性的目標電池片,在前文角點定位的基礎(chǔ)上對這些電池片的角點局部圖像進行截圖,形成20 000 張64×64像素大小的原始缺陷圖像數(shù)據(jù)集。同時為了提高模型訓(xùn)練的質(zhì)量[15],通過對原始樣本缺陷加入噪聲、顏色變換、透視變換等方法對原始圖像數(shù)據(jù)集進行了增廣,最后形成了40 000 多張樣本圖像數(shù)據(jù),其中包含無缺陷、第一類缺陷、第二類缺陷、黑斑和不在角點上的缺陷,如圖14 所示。
圖14 部分訓(xùn)練樣本Fig.14 Part of training samples
將獲得的標準樣本圖像數(shù)據(jù)集按一定比例分成3 個部分:訓(xùn)練集、驗證集與測試集(如表3所示)。
表3 樣本圖像數(shù)據(jù)集Table3 Sample images data set
本文硬件平臺為Intel Core i7-8750H CPU、內(nèi)存6GB 的GTX1060 GPU,訓(xùn)練算法由Python 編寫完成。本文構(gòu)建的電池組件缺陷檢測模型采用有監(jiān)督訓(xùn)練方式,對應(yīng)圖像標簽表示輸入圖像的類別標簽,分為“無缺陷”、“第一類缺陷”、“第二類缺陷”、“黑斑和缺陷不在角點上”4 類,3 種深度網(wǎng)絡(luò)的訓(xùn)練誤差曲線如圖15 所示。
從圖15 中可以看出,隨著神經(jīng)網(wǎng)絡(luò)訓(xùn)練迭代次數(shù)的增加,損失不斷下降,模型逐漸收斂,3 種網(wǎng)絡(luò)模型在驗證集上的準確率不斷上升。模型1在驗證集上的準確率是99.7%,模型2 在驗證集上的準確率達到99.8%,模型3 達到99.8%??梢钥闯?,3 種模型在驗證集上的準確率都非常高。將上述3 種卷積神經(jīng)網(wǎng)絡(luò)迭代所得到的最優(yōu)模型文件用于測試樣本,對預(yù)先準備好的4 000 張測試集樣本圖片進行分類測試,表4給出了3 種模型的測試樣本識別情況。同時對程序?qū)崟r性進行測試,在使用不同模型的情況下,模擬實際生產(chǎn)情況分別對100 張電池片組件PL 圖進行缺陷檢測,模型1 總共用時156.99 s,模型1 單張電池片組件PL 圖缺陷檢測平均用時1.57 s,模型2 總共用時156.86 s,單張電池片組件PL 圖缺陷檢測平均用時1.57 s,模型3 總共用時157.76 s,模型3 單張電池片組件PL 圖缺陷檢測平均用時1.58 s。
圖15 模型訓(xùn)練準確率及損失曲線Fig.15 Model training accuracy and loss curve
表4 不同模型識別準確率對比結(jié)果Table4 Comparison results of different models recognition accuracy
對比圖13 和表4可以看出,模型2 在模型1的基礎(chǔ)上加深網(wǎng)絡(luò)結(jié)構(gòu),雖然能提取到更多的圖形特征,但是模型過擬合導(dǎo)致最終的識別效果不佳;模型3 網(wǎng)絡(luò)層數(shù)最少,網(wǎng)絡(luò)最精簡,在使用卷積層提取圖片特征信息充足的情況下全連接層通道數(shù)對最終的識別率影響比較明顯,模型的參數(shù)量集中在全連接層。采用不同的網(wǎng)絡(luò)結(jié)構(gòu),對識別準確率有一定的影響,增加網(wǎng)絡(luò)深度后模型2的識別準確率相比模型1 下降了5.87%,說明針對此類缺陷體征提取不需要過于復(fù)雜的網(wǎng)絡(luò),也不需要提取過于細膩的特征。減少網(wǎng)絡(luò)層數(shù)的模型3 在每種類別上的識別準確率都有所提升,整體的識別準確率相比模型1 提升了1.3%,達到99.25%。模型3 在此類缺陷特征的提取和分類上取得了不錯的效果,為實際生產(chǎn)奠定了基礎(chǔ)。
太陽能電池組件光致發(fā)光成像技術(shù)以及缺陷面積占比不到萬分之一的特點決定了此類缺陷檢測具有較高的技術(shù)難度。本文結(jié)合實際生產(chǎn)需要,針對此類隱裂在常光下的不可見性,采用光致發(fā)光成像技術(shù);在此基礎(chǔ)上,利用圖像處理手段對高像素PL 組件圖片實現(xiàn)缺陷快速定位,為下一步缺陷檢測的實時性打下基礎(chǔ);在分析缺陷特征復(fù)雜程度的基礎(chǔ)上提出了3 種卷積神經(jīng)網(wǎng)絡(luò)模型對缺陷進行分類,盡量避免過擬合對模型識別率的影響,從而提高模型的泛化能力。最終實驗表明了該太陽能電池組件缺陷檢測方法的有效性和準確性,為實現(xiàn)太陽能電池組件缺陷檢測自動化打下了基礎(chǔ)。