王 兵,皮 剛,陳文成,謝海峰,施祥玲
(上海航天設(shè)備制造總廠有限公司,上海 200245)
大型柔性太陽電池翼是空間站的關(guān)鍵產(chǎn)品之一,其制造質(zhì)量直接影響柔性翼的在軌可靠性和使用壽命。柔性太陽電池翼琴鉸為關(guān)鍵零部件,由于制造流程復雜、轉(zhuǎn)運環(huán)節(jié)多,在部件生產(chǎn)、部裝及總裝、地面試驗等研制過程中極易造成琴鉸局部損傷,使產(chǎn)品性能下降,嚴重時會導致基板組件報廢,造成極大的經(jīng)濟損失。目前采用傳統(tǒng)人工拍照和判別的方式,準確度低、耗時長、效率低下,容易出現(xiàn)錯、漏檢的情況,從而導致數(shù)據(jù)包記錄不完整,直接影響產(chǎn)品的裝配和試驗質(zhì)量。為了解放人工、提高檢測效率并降低不穩(wěn)定性,可將機器視覺技術(shù)應用于表面缺陷檢測。
基于機器視覺的表面缺陷檢測方法主要可分為兩大類:傳統(tǒng)視覺方法和基于學習的方法。傳統(tǒng)的視覺方法利用局部異常與整幅圖片反映的原始屬性差異來檢測和分割異常區(qū)域。其中,閾值方法利用圖像的基本屬性計算閾值來分離缺陷和背景[1]。基于光譜的方法將圖像轉(zhuǎn)換為頻域,然后使用濾波器來查找缺陷[2]?;谔卣鞯姆椒ㄍㄟ^手動分析輸入圖像的特征,然后設(shè)計特征提取器對輸入圖像進行分類[3]。
近年來,深度神經(jīng)網(wǎng)絡因其準確性和穩(wěn)定性而得到了廣泛研究。許多研究人員提出了基于神經(jīng)網(wǎng)絡的表面缺陷檢測方法。這些方法主要可以分為三個方面:分類[4-5]、對象檢測[6-7]、分割[8-9]。分類旨在對圖像中的物體進行分類,一般由特征提取和分類器兩部分組成。文獻[4]提出了一種基于卷積神經(jīng)網(wǎng)絡(CNN)的靈活的深度特征提取框架,并設(shè)計了一種投票機制來克服過擬合。文獻[5]提出了一種聯(lián)合分類系統(tǒng),首先確定材料的類別,使用滑動窗口方法對圖像進行切割和缺陷分類。目標檢測旨在定位圖像中的目標并對其進行分類。文獻[6]提出了一種基于Faster RCNN 的損傷檢測方法來檢測腐蝕。文獻[7]將不同類型的CNN 網(wǎng)絡應用于緊固件的檢測,獲得了良好的檢測效果。
雖然基于CNN 的圖像處理是一種常用的表面缺陷檢測方法,但將其應用于琴鉸的缺陷檢測仍存在一些難點,主要包括:① 圖像背景復雜,一般的缺陷檢測將整幅圖片作為待檢測物體,通過圖像分割技術(shù)保證整幅圖片都是待檢測目標,但琴鉸周圍的背景較為復雜,且會隨著周圍光環(huán)境的變化而變化;② 缺陷面積小,缺陷與整個圖像比例相差懸殊,一般檢測算法難以滿足這種需求;③ 缺陷樣本庫有限,CNN 的實現(xiàn)需要巨大的計算資源。
綜上,為實現(xiàn)太陽翼板琴鉸缺陷的檢測,本文針對琴鉸結(jié)構(gòu)特點和檢測需要,研究給出了基于深度學習的表面缺陷檢測方法。通過研制自動拍照裝置來獲取質(zhì)量穩(wěn)定的圖片,并提出一種結(jié)合分類和檢測的兩階段檢測算法,以提高對微小缺陷的敏感性,降低無關(guān)背景的影響。同時,針對缺乏缺陷樣本的問題,提出一種包括數(shù)據(jù)增強、遷移學習和網(wǎng)絡優(yōu)化算法的新框架。
按照太陽翼琴鉸質(zhì)量數(shù)據(jù)包和表面缺陷檢測系統(tǒng)的檢測需要,將柔性電池板按長度方向劃分成很多段進行局部成像,設(shè)計拍照裝置進行拍照,從而反映出琴鉸正面、側(cè)面和背面的外觀情況,使琴鉸照片為固定角度和光源,以便于后續(xù)檢測算法的統(tǒng)一處理。通過軟件對照片進行處理,將每個琴鉸進行編號并用自動識別算法進行缺陷檢測。
柔性太陽翼琴鉸自動拍照裝置包含硬件和軟件系統(tǒng)兩部分。
硬件整體結(jié)構(gòu)如圖1所示,包括電控系統(tǒng)、成像組件、定位組件、運動組件等。其中,電控系統(tǒng)控制設(shè)備運行和圖像采集;成像組件對產(chǎn)品提供光源,可以圍繞產(chǎn)品進行多角度成像;運動組件實現(xiàn)成像組件在一維方向的運動,完成對產(chǎn)品表面成像的覆蓋;定位組件提供產(chǎn)品的擺放平臺,對產(chǎn)品進行定位后再成像,保證產(chǎn)品成像的一致性。
圖1 拍照裝置總圖結(jié)構(gòu)示意圖Fig.1 The general structure diagram of the camera device
軟件功能結(jié)構(gòu)如圖2所示,包括任務規(guī)劃、運動控制、圖像采集、數(shù)據(jù)管理、數(shù)據(jù)查看。其中,任務規(guī)劃設(shè)置圖像采集所需要的運動軌跡、相機參數(shù)和產(chǎn)品參數(shù);運動控制控制運動組件移動,對產(chǎn)品形成測試路徑覆蓋;圖像采集控制相機對待測產(chǎn)品采集圖像,獲取數(shù)據(jù)并處理;數(shù)據(jù)管理和查看對存儲采集的圖像按產(chǎn)品、時間等進行組織管理,并查看產(chǎn)品的圖像。
圖2 軟件功能構(gòu)成Fig.2 Software function composition
根據(jù)硬件結(jié)構(gòu),軟件需要做的是控制電機讓相機移動到相應的位置,按下快門拍攝照片并將照片保存到指定位置,具體過程如下:
調(diào)節(jié)好兩個工業(yè)攝像頭與產(chǎn)品的焦距,調(diào)整人工光源的亮度,軟件啟動微零位;用戶輸入產(chǎn)品信息,軟件控制電機移動到事先錄入的點位后控制相機進行拍攝、保存數(shù)據(jù);進入下一個點位以此循環(huán),直到最后一個點位拍攝完成后相機位置會復位到初始零位等待下一次任務的開始。
圖3 柔性攝像裝置拍攝琴鉸Fig.3 A flexible camera takes pictures of the hinge
通過分析琴鉸拍攝的圖像可以發(fā)現(xiàn),琴鉸只占據(jù)了圖像的一小部分,大部分是不相關(guān)的背景。同時,缺陷的尺寸非常小,常見缺陷尺寸僅為12×6 像素。因此,如果直接應用普通分類或?qū)ο髾z測網(wǎng)絡來檢測缺陷,結(jié)果的準確度很低。
本文提出了一種兩階段檢測方法,算法流程框架如圖4 所示。在第一階段,使用目標檢測網(wǎng)絡找到待檢測物體所在的位置。因為待檢測物體相對較大,且數(shù)量少、種類單一,所以采用輕量級的YoloV4-tiny[10]網(wǎng)絡進行快速檢索。
圖4 算法流程框架Fig.4 Algorithmic flow framework
由于物體表面可能存在各種缺陷,YoloV4-tiny網(wǎng)絡可能會將部分帶缺陷的物體判定為非識別目標,可以通過適當降低置信度的閾值,來確保待檢測物體被框選。YoloV4-tiny 算法使用CSPdarknet53tiny 作為其骨干網(wǎng)絡。它由CSPBlock 模塊組成,將特征圖分為兩部分,并通過跨階段殘差邊緣將兩部分組合起來。這允許梯度流在兩個不同的網(wǎng)絡路徑中傳播,從而增加梯度信息的相關(guān)性差異。
通過第一階段YoloV4-tiny 網(wǎng)絡對目標的定位,將圖像進行分割,在合理的規(guī)則下提取出目標區(qū)域。因為第一階段得到的邊界框可能存在偏移誤差,圖像的邊緣可能具有更重要的信息?;谏鲜鲈?,算法采取的分割策略是先適當擴大預測邊界框的高度和寬度,然后提取兩側(cè)的區(qū)域,最后,得到第二階段網(wǎng)絡的輸入。
第二階段使用分類網(wǎng)絡,本文選擇了性能較強且參數(shù)較少的EfficientNet[11-13]進行分類任務。這個階段的關(guān)鍵任務是快速準確地判斷產(chǎn)品好壞。EfficientNet 是一系列網(wǎng)絡(EfficientNet B0-B7),它們使用復合縮放方法來減少參數(shù)數(shù)量,具有很高的準確率。所有網(wǎng)絡都基于EfficientNet-B0 的基線網(wǎng)絡進行了擴展。如果要提高網(wǎng)絡的性能,可以增加基線網(wǎng)絡的深度、寬度或分辨率。復合縮放方法使用復合系數(shù)來精確控制網(wǎng)絡的擴展,以實現(xiàn)更高的精度和更低的參數(shù)數(shù)量。復合縮放方法可以描述如下:
式中:φ是復合系數(shù);α、β、γ是每個維度的系數(shù),可以通過小型網(wǎng)格搜索方法得到。φ控制可用于模型縮放的資源,α、β、γ為每個維度分配資源。
本文通過數(shù)據(jù)增強和遷移學習來解決缺陷圖像數(shù)據(jù)庫缺乏的問題。數(shù)據(jù)增強用于增加缺陷樣本的數(shù)量并提高網(wǎng)絡的魯棒性。數(shù)據(jù)增強的過程如圖5所示。最常用的方法是人工生成缺陷圖像、仿射變換、顏色抖動和高斯模糊。人工生成有缺陷的圖像是指模仿有缺陷的部分,將正常圖像轉(zhuǎn)換為有缺陷的圖像;仿射變換是指向量空間經(jīng)過線性變換,再進行平移以將其轉(zhuǎn)換為另一個向量空間。仿射變換可以描述如下:
圖5 數(shù)據(jù)增強示例Fig.5 Data enhancement examples
式中:(x,y)是原始坐標;(x′,y′)是變換后的坐標;k11、k12、k21、k22是一系列系數(shù);φ是旋轉(zhuǎn)角度。
顏色抖動是指在HSV空間中隨機改變圖像的飽和度和值;高斯模糊可以模仿相機失焦的情況。從數(shù)學的角度來看,高斯模糊過程是圖像與正態(tài)分布的卷積,可以描述如下:
式中:Pi(x,y)是原始圖像;Pi(x′,y′)是處理后的圖像。
遷移學習意味著從源域?qū)W習知識并將其應用到目標域[14-15],用于提高神經(jīng)網(wǎng)絡的訓練速度并減少對數(shù)據(jù)集的要求。對于深度學習網(wǎng)絡,其早期層包含通用特征,最后一層通常攜帶不同數(shù)據(jù)集之間更高級別的信息。因此,我們可以使用預訓練模型的通用特征,從特定數(shù)據(jù)集中獲取更高層次的信息。
1)測試環(huán)境:檢測系統(tǒng)的照片為攝像裝置拍攝;所有代碼均由Linux 18.04 系統(tǒng)下的Python 3.7 編寫;Tensorflow 2.2.0 用于構(gòu)建神經(jīng)網(wǎng)絡的基本框架;配備GeForce GTX 1060 GPU 和Intel Core i7-8750H CPU的筆記本電腦。
2)數(shù)據(jù)集:使用上述自動拍照設(shè)備,去除不能使用的圖像后,收集到1 588 張圖像,其中包括1 440 張正常圖像和148 張缺陷圖像;人工生成500 張缺陷圖像,并使用其他數(shù)據(jù)增強方法來增加缺陷圖像的數(shù)量;使用1 944 張缺陷圖像和2 280 張正常圖像進行第一階段網(wǎng)絡的訓練,并對圖像進行裁剪,得到4 131 張圖像用于第二階段網(wǎng)絡的訓練。另外,留下了400 張圖像作為測試集,這些圖像與用于訓練的圖像沒有任何關(guān)系。訓練數(shù)據(jù)集的樣本如圖6所示。
圖6 訓練數(shù)據(jù)集的樣本圖像Fig.6 Sample images of training data set
3)訓練過程:首先,訓練YoloV4-tiny 目標檢測網(wǎng)絡,在訓練之前,使用10%的數(shù)據(jù)集作為驗證集,在每個數(shù)據(jù)集之后調(diào)整網(wǎng)絡。YoloV4-tiny 網(wǎng)絡的輸入大小為[416,416,3],訓練圖像在輸入之前需要填充并縮放到這個大小,加載使用VOC 數(shù)據(jù)集訓練獲得的預訓練權(quán)重。在訓練的第一階段,凍結(jié)網(wǎng)絡的前幾層,將批量大小設(shè)置為32,學習速率設(shè)置為0.001,訓練25 個數(shù)據(jù)集。完成第一階段的訓練后,解凍凍結(jié)層,將批量大小設(shè)置為32,學習速率設(shè)置為0.000 1,并繼續(xù)訓練25 個數(shù)據(jù)集,在50 個數(shù)據(jù)集后保存訓練好的模型。然后,訓練EfficientNet 分類網(wǎng)絡。EfficientNet 有B0~B7 八種規(guī)格,考慮到云服務器的性能和時間成本,選擇了EfficientNetB2。訓練前將圖像大小調(diào)整為260×260 像素,設(shè)置激活函數(shù)為softmax,損失函數(shù)為稀疏分類交叉熵。在訓練的第一階段,凍結(jié)預訓練的權(quán)重,將學習速率設(shè)置為0.001,批量大小為16,訓練25 個數(shù)據(jù)集。在訓練的第二階段,解凍凍結(jié)層,將學習速率設(shè)置為0.000 1,批量大小為16,訓練25 個數(shù)據(jù)集。在50 個數(shù)據(jù)集后保存訓練好的模型,訓練過程如圖7所示。
圖7 二階段訓練過程Fig.7 Two-stage training process
第一階段和第二階段的結(jié)果圖像如圖8所示。圖8 中的第一列和第二列是第一階段的檢測結(jié)果,第三列和第四列顯示了裁剪后的圖像和第二階段的分類結(jié)果。通過在測試集上的測試,本文提供的算法準確率達到了99.5%,滿足了太陽翼琴鉸缺陷檢測的要求。所有有缺陷的圖像都被正確檢測,但也存在一些正常圖像被識別為有缺陷圖像的情況。
圖8 第一階段和第二階段的檢測結(jié)果Fig.8 Phase I and phase II test results
將測試網(wǎng)絡在每個階段的性能與其他網(wǎng)絡進行比較。第一階段的任務是盡快定位琴鉸,在確保琴鉸定位準確時,速度是最重要的指標。選擇MobileNet-SSD、RetinaNet、YoloV4-tiny 是因為它們是單階段網(wǎng)絡,比兩階段網(wǎng)絡相對更快。根據(jù)實驗結(jié)果,均能準確定位鉸鏈。從表1 可以看出,YoloV4-tiny 網(wǎng)絡耗時最短,被選為第一階段網(wǎng)絡算法。第二階段,準確度是最重要的指標,此外,網(wǎng)絡模型的大小應盡可能小,以方便傳輸。選擇了四個常用的網(wǎng)絡進行比較:EfficientNet、Xception、ResNet、DenseNet。從 表1 可以看出,EfficientNet 和Xception 的準確率最高,運行時間最短,而EfficientNet 的模型尺寸要小得多。因此選擇EfficientNet作為第二階段網(wǎng)絡算法。
表1 不同網(wǎng)絡算法的比較Tab.1 Comparison of different network algorithms
為了與常用方法進行比較,使用3 072×2 048 像素的原始圖像來訓練EfficientNet 并檢測缺陷。普通方法的準確率為74%,遠低于本文提出的方法。其原因是普通網(wǎng)絡會將原圖調(diào)整到224×224 像素的小尺寸,在這個過程中,圖像的缺陷可能會被忽略。
本文針對柔性太陽翼琴鉸檢測,根據(jù)檢測算法特征識別要求研制自動化攝像裝置,使拍攝照片的曝光機像素滿足檢測算法預處理要求,針對產(chǎn)品表面缺陷檢測提出了一種兩階段檢測算法,提高了復雜背景下小缺陷的檢測精度,并提出了一種網(wǎng)絡優(yōu)化算法,可最大限度地降低缺少缺陷樣本所帶來的影響。實驗結(jié)果表明,與常見的CNN 網(wǎng)絡相比,兩階段算法可以顯著提高準確率,將該算法嵌入自動化攝像裝置的后處理軟件中,最終實現(xiàn)琴鉸缺陷檢測結(jié)果的自動生成。