朱佳華,彭興輝,高 劍,吳相東,周書宇
(1.四川長虹電器股份有限公司,四川 綿陽 621000;2.四川輕化工大學(xué)機械工程學(xué)院,四川 宜賓 644000)
目前在工業(yè)生產(chǎn)現(xiàn)場,電池片缺陷一般采用常規(guī)圖像檢測算法進行處理。對于表面缺陷的檢測,其精度能達(dá)到工業(yè)要求,但隱裂在實際檢測中識別精度不高且不穩(wěn)定[1]。為了準(zhǔn)確檢測電池片隱裂和避免漏檢的發(fā)生,常輔以人工對其進行檢測,但人工檢測易受主觀判斷、環(huán)境因素等的影響,且工作強度大,無法對隱裂進行量化分析,急需研究基于機器視覺檢測的算法革新及優(yōu)化。
相比于當(dāng)前基于圖像處理和特征分析(Blob Analysis)的檢測方法,圖像處理算法不能準(zhǔn)確檢測隱裂,基于深度學(xué)習(xí)的目標(biāo)檢測可以有效克服當(dāng)前電池片隱裂檢測算法存在的不足[2],是解決隱裂檢測精度低的有效方法[2-3]。以采集到的隱裂數(shù)據(jù)為輸入,對比分析了Faster-RCNN、YOLOv5s、SSD三種目標(biāo)檢測算法的準(zhǔn)確率和mAP,確定采用基于深度學(xué)習(xí)的目標(biāo)檢測網(wǎng)絡(luò)YOLOv5s作為太陽能缺陷檢測的算法。以YOLOv5s目標(biāo)檢測網(wǎng)絡(luò)為基礎(chǔ),根據(jù)實際電池片的缺陷和紋理特征以及訓(xùn)練進程中發(fā)現(xiàn)的問題,分別對YOLOv5s的輸入端,主干網(wǎng)絡(luò),檢測端進行優(yōu)化,并對YOLOv5s優(yōu)化之后的檢測數(shù)據(jù)結(jié)果進行驗證與分析。
圖1所示為太陽能電池片的實物,該電池片由細(xì)柵線(圖示橫向細(xì)紋)和主柵線(圖示縱向5條粗紋)覆蓋,細(xì)柵線的作用是收集電荷,主柵線的作用是匯集細(xì)柵線中細(xì)微電流,最后形成較大電流[4],柵線被破壞會阻礙電池片收集電流,嚴(yán)重影響太陽能發(fā)電系統(tǒng)的效率。
圖1 5柵太陽能電池片F(xiàn)ig.1 Monocrystalline silicon 5 gate solar cells
如圖2所示,隱裂包括條狀隱裂、十字隱裂和邊緣隱裂。條狀隱裂主要呈現(xiàn)為不規(guī)則、無方向的曲線條狀,覆蓋面積較大,會橫跨電池片的大量柵線,甚至是延伸到電池片的邊緣。十字隱裂主要呈現(xiàn)為形狀規(guī)則、無方向的十字交叉狀,覆蓋面積小,會橫跨電池片的少量柵線,會出現(xiàn)在電池片邊緣。邊緣隱裂是三大類隱裂中形狀面積最小的缺陷,主要呈現(xiàn)為規(guī)則、無方向的直線條狀,覆蓋面積最小,會橫跨電池片極少量細(xì)柵線,主要出現(xiàn)在邊緣附近。
圖2 電池片隱裂類型Fig.2 Type of battery hidden crack
隱裂在可見光下無法顯現(xiàn),使用光致發(fā)光(PL)成像技術(shù)可采集到電池片隱裂圖像樣本,其主要的檢測結(jié)構(gòu)如圖3所示。采用線陣近紅外相機和光源采集圖像。光致發(fā)光檢測技術(shù)采用的是一種激光照射式發(fā)光檢測技術(shù),利用具備一定能量光子的激光對太陽能電池片表面進行照射,將會產(chǎn)生紅外光線強度較弱的熒光,然后再利用近紅外相機進行光子收集。若電池片內(nèi)部存在缺陷,則缺陷處收集到的光子數(shù)必定較少,此時相機采集到的圖像對應(yīng)區(qū)域?qū)?。根?jù)圖像的明暗程度,以及出現(xiàn)的位置、大小、形狀等特點來判斷電池片質(zhì)量的好壞以及缺陷的類型。
圖3 電池片檢測結(jié)構(gòu)示意圖Fig.3 Schematic diagram of battery detection structure
圖4 (a)所示為電池片的實物,圖4(b)所示為光致發(fā)光下成像。由實物圖明顯可以看到電池片表面外觀上的特征,但無法看到電池片內(nèi)部中的缺陷。圖4(b)是在光致發(fā)光條件下,相機采集的光致發(fā)光圖像,沒有顏色特征,整體呈現(xiàn)灰度特征,但與可見光下成像不同的是,能夠捕捉到電池片內(nèi)部的缺陷。PL成像不需要接觸電池片,在實現(xiàn)對太陽能電池片內(nèi)部缺陷檢測的同時,不會對太陽能電池片的質(zhì)量品質(zhì)產(chǎn)生任何損失,更利于產(chǎn)品的質(zhì)量把控。
圖4 電池片圖像采集Fig.4 Imaging contrast
通過光致發(fā)光采集到電池片圖像數(shù)據(jù)之后,需進一步做預(yù)處理工作。在工業(yè)現(xiàn)場太陽能電池片在傳送帶上不斷輸送,采集到的圖像存在一些背景的干擾以及由于傳輸不穩(wěn)定導(dǎo)致電池片出現(xiàn)跑片的情況,因此在做隱裂檢測之前,需要對圖像進行預(yù)處理操作。主要實現(xiàn)過程:通過利用邊界相關(guān)運算建立仿射變換模型,自適應(yīng)求得圖像的配準(zhǔn)參數(shù),自動實現(xiàn)太陽能電池片圖像的平移、旋轉(zhuǎn)和縮放,固定太陽能電池片在圖像中的位置。
由于隱裂位置可能出現(xiàn)在電池片各個位置,導(dǎo)致提取到的主柵區(qū)域和非主柵區(qū)域隱裂是不一樣的。為了合并缺陷檢測結(jié)果,且不具備重復(fù)性,需要提取主柵特征,在缺陷檢測之前必須提取主柵區(qū)域。主柵區(qū)域與鄰域灰度差值在40左右,對預(yù)處理之后的圖進行均值濾波和灰度腐蝕,可確定主柵區(qū)數(shù)目為4。因主柵區(qū)的位置僅會在大概10個像素點內(nèi)的幅度進行左右波動,電池片圖像中主柵位置基本不變。通過給點的坐標(biāo),選擇鄰近的插值方法,防止ROI在不垂直或水平的時候里面的等距線經(jīng)過不完整的像素,最終得到定位主柵區(qū)域的ROI。
在提取到主柵特征之后,將缺陷區(qū)域劃分為非主柵區(qū)域缺陷和主柵區(qū)域缺陷,缺陷在非主柵區(qū)域時,需要對圖像進行特征提取,本文采用均值濾波、灰度腐蝕、動態(tài)閾值分割、開運算和閉運算,以不斷縮小圖像定義域的方式對圖像進行提取處理[5]。主柵區(qū)域缺陷需在非主柵區(qū)域缺陷圖像提取的基礎(chǔ)上再增加一次閉運算,閉合斷開的隱裂。
由于常規(guī)圖像算法不能準(zhǔn)確檢測隱裂,提出采用深度學(xué)習(xí)的目標(biāo)檢測算法進行隱裂檢測。以準(zhǔn)確率、檢測時長為指標(biāo),對比分析了Faster-RCNN、SSD和YOLOv5s三種目標(biāo)檢測算法,發(fā)現(xiàn)YOLOv5s綜合性能較優(yōu)。由于YOLOv5s的精度和速度存在可以改進空間,故對YOLOv5s輸入端的Mosaic和自適應(yīng)縮放模塊、主干部分的Focus結(jié)構(gòu)以及預(yù)測端的非極大值抑制模塊進行優(yōu)化。
以800張十字隱裂為訓(xùn)練樣本,300張為測試樣本,對Faster-RCNN、SSD和YOLOv5s網(wǎng)絡(luò)進行訓(xùn)練數(shù)據(jù)對比,其訓(xùn)練指標(biāo)結(jié)果如表1所示。
表1 三種目標(biāo)檢測算法檢測對比Tab.1 Comparison of three target detection algorithms
從表1可知,3種目標(biāo)檢測網(wǎng)絡(luò)均取得了不錯的檢測結(jié)果。其中Faster-RCNN的mAP達(dá)到96.23%,雖然滿足對精度的要求,但參數(shù)量過于龐大,計算復(fù)雜,且單張圖像檢測時間過長,不利于實現(xiàn)實時的工業(yè)缺陷檢測;SSD的mAP達(dá)到了93.30%,參數(shù)量仍過于龐大,且單張圖像檢測時間達(dá)到0.35 s沒能滿足工業(yè)現(xiàn)場檢測低于0.2 s的要求;YOLOv5s的單張圖像檢測時間為0.01 s,參數(shù)量只有27.8 MB,大約僅占SSD和Faster-RCNN參數(shù)量的1/4。并且在小目標(biāo)缺陷的檢測中,YOLOv5s檢測情況較好,能識別的最小隱裂尺寸為15×17。由于YOLOv5s在輸入到網(wǎng)絡(luò)結(jié)構(gòu)之前,通過隨機縮放、隨機裁剪、隨機排布的方式進行拼接,增強了對小目標(biāo)的檢測效果,對本研究的缺陷檢測有著更好的適配性,但檢測準(zhǔn)確率需進一步提高,需對YOLOv5s算法模型進行優(yōu)化[6]。
在使用YOLOv5s期間,發(fā)現(xiàn)YOLOv5s對隱裂檢測準(zhǔn)確率較低,仍有提升空間,故對YOLOv5s輸入端的Mosaic和自適應(yīng)縮放模塊、主干部分的Focus結(jié)構(gòu)以及預(yù)測端的非極大值抑制模塊進行優(yōu)化。
(1)輸入端自適應(yīng)縮放優(yōu)化
在YOLOv5s中,圖片長和寬若不一致,需將原始圖片統(tǒng)一縮放到一個標(biāo)準(zhǔn)的尺寸,在送入主干網(wǎng)絡(luò)和預(yù)測網(wǎng)絡(luò)中去。輸入端在模型訓(xùn)練和推理的時候,為了加快訓(xùn)練和推理模型的速度,YOLOv5s使用了自適應(yīng)圖片縮放,通過預(yù)測數(shù)據(jù)的長寬與Resize尺寸得到縮放系數(shù),并選擇小的縮放系數(shù)進行Resize,如果原圖長寬不一致,較大的一方會縮放過多導(dǎo)致黑邊的出現(xiàn),對多余的黑邊進行填充以提高目標(biāo)檢測推理速度,隱裂圖像數(shù)據(jù)尺寸經(jīng)過預(yù)處理裁減后為765×768,長寬比幾乎一致,通過縮放系數(shù)得到此時僅多出厚度為3個像素的邊框,采用上述填充操作反而會降低推理速度,因此簡化此步驟僅保留Resize功能。相關(guān)操作具體如圖5所示。
圖5 輸入端優(yōu)化Fig.5 Improvement of reasoning module
(2)主干部分優(yōu)化
原始YOLOv5s分為4個模塊,分別是輸入部分、主干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)以及預(yù)測端。主干網(wǎng)絡(luò)第一層為Focus結(jié)構(gòu),以640×640大小,通道數(shù)為3的輸入圖像為例,將其傳入Focus結(jié)構(gòu),再經(jīng)過一個1×1大小通道數(shù)為32的卷積操作,最終變成320×320×32的特征圖,減少了計算量,其實現(xiàn)過程如圖6所示。
圖6 Focus結(jié)構(gòu)Fig.6 Focus structure
DenseBlock是DenseNet網(wǎng)絡(luò)的核心模塊。DenseNet是一種具有緊密連接性質(zhì)的卷積神經(jīng)網(wǎng)絡(luò)。其具體的連接方式可以表示為式(1)~(2)。
式中:Xl-1為l-1層的殘差網(wǎng)絡(luò);Hl為對殘差網(wǎng)絡(luò)進行非線性變換。
式(1)中殘差網(wǎng)絡(luò)l層的輸出是l-1層的輸出加上對l-1層輸出的非線性變換,只是對值進行相加,不改變通道數(shù)。由式(2)可知DenseNet網(wǎng)絡(luò)是先將l-1層的輸出特征圖進行拼接之后,再進行非線性變換,即做通道間的堆積,而不是對值相加。所以不同層的特征圖尺寸要保持相同的大小,這樣做明顯限制了下采樣的運行。為了進行下采樣,以便提取更多尺度的特征,DenseNet網(wǎng)絡(luò)被細(xì)分為一個個更輕量型的DenseBlock模塊。
DenseBlock結(jié)構(gòu)如圖7所示,可見,除了輸入端,其包含4個模塊,每個模塊均為4層。以圖中多層網(wǎng)絡(luò)X0作為輸入,每一層先通過Hi進行非線性變換,即依次進行歸一化,激活函數(shù)以及卷積操作之后再傳遞至后續(xù)網(wǎng)絡(luò)。不同于卷積特征圖的級聯(lián)操作,該模塊會將輸入特征圖中的任意兩層直接相連,所有之前層的特征圖作為獨立的輸入,而本層的特征圖同樣會作為輸入傳遞給后續(xù)層。這樣做緩解了梯度消失的問題,可以代替切片操作對輸入圖像實施降維,進行特征提取的操作。
圖7 Dense Block模塊結(jié)構(gòu)Fig.7 Dense Block module structure
(3)預(yù)測部分優(yōu)化
在目標(biāo)檢測模型的推理預(yù)測結(jié)尾部分,存在著待檢測目標(biāo)框重疊的現(xiàn)象,而重疊的框中可能是一些無用的重復(fù)圖像信息,也可能是一些有效的待檢測信息被遮蓋住,但無論是哪一種結(jié)果,都需要將重疊部分分開,NMS(非極大值抑制)是目標(biāo)檢測算法中用來處理該問題的模塊。NMS算法具體過程:首先,設(shè)定一個篩除的閾值,將所有重疊框的重疊部分按照分?jǐn)?shù)進行排序,將得分最高的檢測框與其他框不斷地進行對比,若其余的檢測框與該框的交并比超過了預(yù)先設(shè)定的閾值,NMS會使檢測框得分強制歸零,但是這可能會造成目標(biāo)漏檢,降低檢測精度,故此需要進行一定優(yōu)化優(yōu)化[7]。
Pytorch具有簡潔易上手、速度快和易調(diào)試等優(yōu)點,同時其對NIVIDIAGPU優(yōu)化良好,可以方便地實現(xiàn)將數(shù)據(jù)送入GPU緩存的操作。PyCharm編譯器是調(diào)試方便且承載Python集成開發(fā)環(huán)境(Integrated Development Environment,IDE)[8]。綜上考慮,選用Pycharm編譯器、Pytorch深度學(xué)習(xí)框架和NIVIDIA GTX2080Ti GPU,作為電池片缺陷檢測網(wǎng)絡(luò)訓(xùn)練過程的運行環(huán)境[9]。檢測所使用服務(wù)器配置和軟件環(huán)境配置如表2所示。
表2 檢測配置Tab.2 Experimental configuration
本研究采用的太陽能電池片數(shù)據(jù)集采集于某公司電池片生產(chǎn)現(xiàn)場,主要研究對象是隱裂片,真實數(shù)據(jù)樣本共3600張,其中邊緣隱裂1200張、十字隱裂1300張、條狀隱裂1100張,稱為數(shù)據(jù)集CRA。結(jié)合數(shù)據(jù)量較少的邊緣隱裂和條狀隱裂劃分為多個數(shù)據(jù)子集,按一定比例劃分出訓(xùn)練集和測試集。詳情如表3所示。
表3 數(shù)據(jù)集圖像信息Tab.3 Data set image information
深度學(xué)習(xí)檢測網(wǎng)絡(luò)的數(shù)據(jù)樣本需經(jīng)過標(biāo)注才可成為訓(xùn)練數(shù)據(jù),由于labelImg軟件具有速度快,操作方便的優(yōu)點,本研究選用其作為數(shù)據(jù)標(biāo)注軟件。
以CRA1A為真實缺陷數(shù)據(jù)輸入為訓(xùn)練集,以CRA2A為測試集,迭代次數(shù)為4000,測試真實數(shù)據(jù)下YOLOv5s網(wǎng)絡(luò)優(yōu)化前后缺陷檢測指標(biāo)對比情況。為估算與對比優(yōu)化前后YOLOv5s模型的具體表現(xiàn),采用CRA1A數(shù)據(jù)集作為訓(xùn)練集,CRA2A數(shù)據(jù)集作為測試集,迭代次數(shù)為4000,進行訓(xùn)練及檢測推理。同時按表3的數(shù)據(jù)集按上述方法分別進行訓(xùn)練并完成測試,訓(xùn)練結(jié)果如表4所示。
表4 目標(biāo)檢測網(wǎng)絡(luò)對比分析Tab.4 Experimental comparison of target detection networks
其中Precision表示正確檢測出缺陷的數(shù)目與目標(biāo)缺陷總數(shù)的比值,mAP@0.5表示訓(xùn)練過程平均準(zhǔn)確率,Time表示使用訓(xùn)練完成的檢測模型檢測測試集所耗費的總時長。從表結(jié)果可以看出,優(yōu)化前后YOLOv5s的Precision和mAP@0.5相比精度明顯提高,故說明基于輸入端、主干端的YOLOv5s優(yōu)化在明顯提高檢測精度的情況下,檢測速度可滿足現(xiàn)場在線檢測的需求[10-12]。既滿足了輸入端輕量化的目標(biāo),同時精度得到了很好的提高,滿足了現(xiàn)場檢測的需求。
根據(jù)電池片生產(chǎn)現(xiàn)場出現(xiàn)的隱裂檢測情況,采用深度學(xué)習(xí)中的目標(biāo)檢測算法進行隱裂檢測。經(jīng)過對比Faster-RCNN、SSD和YOLOv5s三種目標(biāo)檢測網(wǎng)絡(luò),確定了選取YOLOv5s目標(biāo)檢測網(wǎng)絡(luò)作為隱裂檢測模型。為進一步提高模型的檢測精度和控制推理速度,完成了YOLOv5s輸入端、主干網(wǎng)絡(luò)和預(yù)測端的優(yōu)化工作,結(jié)果表明優(yōu)化后的YOLOv5s訓(xùn)練精度提高了3.3%,檢測速度控制在0.06 s以內(nèi)。根據(jù)采集到的3種隱裂數(shù)據(jù)量,在缺陷數(shù)據(jù)較充足時,直接采用優(yōu)化后的YOLOv5s進行缺陷檢測,其精度和速度能滿足工業(yè)生產(chǎn)現(xiàn)場需求。結(jié)果表明:相比圖像檢測算法,目標(biāo)檢測算法檢測太陽能電池片隱裂更加穩(wěn)定、精度更高且時間更短。可較好地解決工業(yè)現(xiàn)場電池片隱裂檢測問題,同時該方法可為相關(guān)領(lǐng)域的內(nèi)部缺陷檢測提供可行的解決方案。