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