陳亮希,張燕龍,陳興玉,田富君,郭 磊,周金文,查珊珊,黃 健,孫丙宇
(1.中國電子科技集團(tuán)公司第三十八研究所,安徽 合肥 230088;2.安徽大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,安徽合肥 230601;3.中國科學(xué)院合肥智能機(jī)械研究所,安徽 合肥 230031)
主纜繩是浮空器系統(tǒng)的必要裝備,在長期使用過程中由于交變載荷、放電、磨損等因素導(dǎo)致其易產(chǎn)生破裂、擊穿等缺陷,這對浮空器系統(tǒng)的安全穩(wěn)定運(yùn)行造成隱患[1-2]。對主纜繩進(jìn)行360°全方位、無死角的人工巡檢極為不便,拍攝圖片也比較困難,加之檢測工作枯燥、重復(fù),巡檢人員易出現(xiàn)疲憊勞累,容易導(dǎo)致漏檢誤檢[3-4]。因此,通過機(jī)器視覺技術(shù)實(shí)現(xiàn)對浮空器主纜繩表面缺陷的自動檢測具有重要意義。
隨著機(jī)器視覺技術(shù)的發(fā)展,缺陷檢測技術(shù)在鋼軌[4]、農(nóng)產(chǎn)品[5-6]、半導(dǎo)體[7]等領(lǐng)域得到廣泛應(yīng)用。彭方進(jìn)[8]提出基于灰度標(biāo)準(zhǔn)差與投影積分的鋼軌表面區(qū)域定位算法和基于多尺度灰度對比度的增強(qiáng)算法,可檢測高速有砟軌道無縫鋼軌表面細(xì)小斑點(diǎn)和瑕疵;龔中良等[9]根據(jù)柑橘的顏色與形狀特征,在HSV(hue saturation value)顏色模型下利用V分量灰度圖邊緣檢測與形態(tài)學(xué)處理的方法可快速有效識別柑橘表面缺陷;Song等[10]提出一種基于圖像特征分類的輸電線斷股檢測方法,基于斷股故障的梯度分布與正常線路存在的差異,采用支持向量機(jī)(support vector machines,SVM)完成線路斷股檢測;孫實(shí)超等[11]基于直線增強(qiáng)和兩次Hough變換,根據(jù)輸電線簇參數(shù)關(guān)系提取輸電導(dǎo)線圖形信息;王萬國等[12]通過分析導(dǎo)線表面灰度圖像的光滑性、一致性以及導(dǎo)線寬度變化來檢測斷股或異物缺陷;黃新波等[13]提出一種基于徑向基概率神經(jīng)網(wǎng)絡(luò)和紋理特征分割的輸電導(dǎo)線缺陷狀態(tài)識別方法。目前,越來越多的深度學(xué)習(xí)方法如VGG,ResNet 等用于缺陷檢測領(lǐng)域。Saiz等[4]提出采用一種基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的分類方法對鋼鐵表面缺陷進(jìn)行分類,得到了良好的測試效果;Lien 等[15]使用多路并行的CNN 實(shí)現(xiàn)對產(chǎn)品表面的缺陷檢測,相較于單路網(wǎng)絡(luò),多路網(wǎng)絡(luò)可進(jìn)一步提升網(wǎng)絡(luò)的檢測準(zhǔn)確率?;贑NN的方法在缺陷檢測逐漸成為主流,然而經(jīng)典的深度學(xué)習(xí)方法需大量樣本學(xué)習(xí)。鑒于此,結(jié)合主纜繩的檢測需求,提出一種小樣本度量學(xué)習(xí)方法,使用小樣本學(xué)習(xí)中的原型網(wǎng)絡(luò)[3]方法實(shí)現(xiàn)對纜繩缺陷種類的區(qū)分,實(shí)驗(yàn)結(jié)果表明,本方法能夠?qū)崿F(xiàn)纜繩表面缺陷的自動檢測。
小樣本度量學(xué)習(xí)主要由特征編碼模塊和度量模塊兩部分組成,整體流程如圖1。由圖1 可知,特征編碼模塊采用CNN來提取樣本的特征,將這些特征通過度量模塊以度量樣本與哪個類別的樣本最相似。圖中支持集表示數(shù)據(jù)集中的樣本類別是已知的,用來訓(xùn)練CNN;查詢集表示數(shù)據(jù)集中的樣本屬于待檢測樣本,用來測試方法的有效性。
圖1 小樣本度量學(xué)習(xí)的流程示意圖Fig.1 Flowchart of few-shot metric learning
小樣本度量學(xué)習(xí)方法的學(xué)習(xí)策略是,需確定一個擁有大量不同類別樣本的輔助數(shù)據(jù)集,在學(xué)習(xí)過程中,隨機(jī)從輔助數(shù)據(jù)集中選擇C個類別,每個類別K個樣本,作為模型的支持集輸入,支持集中樣本的類別是已知的,共有C×K個數(shù)據(jù)樣本;從C個類別剩余的數(shù)據(jù)中隨機(jī)抽取每一類別M個樣本作為模型的預(yù)測對象,稱為查詢集,查詢集中的樣本一般認(rèn)為是未知的,需采用相應(yīng)的模型來預(yù)測其所屬類別,這樣的任務(wù)被稱為C-wayK-shot分類問題。
通過計算查詢集中每個樣本與支持集中每個類別樣本的相似度對查詢集進(jìn)行分類,每次訓(xùn)練過程中都構(gòu)建支持集和查詢集。通過這種方式不斷學(xué)習(xí),讓查詢集中的樣本與支持集中同類樣本的相似度更高而不同類別的樣本相似度更低,由此完成小樣本缺陷的遷移學(xué)習(xí)和分類。測試未知小樣本的方式與模型訓(xùn)練的方式一致,需隨機(jī)從測試集中抽取每個類別K個樣本,從剩下的樣本中抽取每個類別M個樣本作為查詢集,查詢集是需測試的數(shù)據(jù)。在模型測試過程中,構(gòu)建測試用的支持集和查詢集。
小樣本學(xué)習(xí)中經(jīng)典的編碼器結(jié)構(gòu)如圖2。該編碼器由4層卷積層組成,卷積層的尺寸大小為3×3,卷積核的數(shù)量為64。卷積層的主要作用是將圖片映射到相同的特征空間中,在這個特征空間中同一類別圖像提取的特征上會更相似。
圖2 編碼器的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of encoding machine
文獻(xiàn)[3]的結(jié)果顯示,使用平方歐氏距離作為圖片距離的度量非常有效。故文中采用這種度量距離,其度量方式可表示如下:
其中:fθ為編碼器;Sc={(x1,y1),(x2,y2),…,(xNc,yNc)};Nc為c類樣本的數(shù)量;xNc為支持集中c類別的圖像樣本;ωc為支持集中所有類別c的圖像平均特征,代表類別c的原型特征;euc(x,ωc)為查詢集圖像x與類別c之間的平方歐式距離。利用式(3)將式(2)獲得的平方歐氏距離取反將其轉(zhuǎn)換為相似度值,然后使用softmax 得到每個類別的分類分?jǐn)?shù)p,若p最大,則將其歸屬于相應(yīng)類別。
采用交叉熵?fù)p失函數(shù)訓(xùn)練網(wǎng)絡(luò)模型,交叉熵?fù)p失函數(shù)可表示如下
其中:yi為樣本i的標(biāo)簽;pic為樣本i是類別c的概率。
2.1.1 樣本數(shù)據(jù)集的獲取
用360相機(jī)獲取主纜繩表面缺陷圖像與正常圖像樣本,對每個圖像樣本進(jìn)行中值濾波,去除拍攝時的噪聲干擾,最終獲取雷擊穿孔、裂紋和正常三類圖像數(shù)據(jù)樣本集,分別為22,15,23 張,共60 張。圖3 為三類數(shù)據(jù)集中的部分樣本。
圖3 樣本圖像展示Fig.3 Illustration of sample images
2.1.2 參數(shù)和指標(biāo)的設(shè)定
選用miniImageNet[16]為輔助數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,稱為訓(xùn)練集。miniImageNet 數(shù)據(jù)集包含100 個類別的數(shù)據(jù),每類別包含600張圖像。將數(shù)據(jù)集隨機(jī)劃分80個類別作為訓(xùn)練集,剩下的20個類別作為驗(yàn)證集,用來選擇訓(xùn)練過程在新類中泛化性能最好的參數(shù)。實(shí)驗(yàn)過程中,在訓(xùn)練集上約訓(xùn)練400 000 批次,每批次隨機(jī)抽取3個類別,每類別抽取5個樣本作為支持集、10個樣本作為查詢集。因此,支持集中共15個樣本、查詢集中共30 個樣本。測試時采用和訓(xùn)練時同樣的采樣方式,為排除特殊情況的干擾,共測試600 次,取平均測試結(jié)果為最終結(jié)果,以準(zhǔn)確率A作為最終評價標(biāo)準(zhǔn),A=T/N,T為正確預(yù)測的樣本數(shù)量;N為樣本總量,每次測試時N為30。本文模型的訓(xùn)練和測試均基于Ubuntu 20.04.3 LTS 操作系統(tǒng)的實(shí)驗(yàn)環(huán)境,中央處理器為Intel(R) Core (TM) i9-10900X CPU @ 3.70 GHz,采用NVIDIA GeForce GTX 3090Ti 的圖形處理器,模型基于Pytorch的深度學(xué)習(xí)框架。
2.2.1 小樣本度量學(xué)習(xí)方法
傳統(tǒng)機(jī)器學(xué)習(xí)方法如KNN(最近鄰算法)、SVM(支持向量機(jī))、Decision Tree(決策樹)及深度學(xué)習(xí)方法如VGG16 模型、AlexNet 模型、ResNet50 模型等均表現(xiàn)出優(yōu)異的檢測性能。為比較本文方法的檢測性能,選取傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方法同時開展實(shí)驗(yàn)。為與本文方法保持一致,對每種方法分別進(jìn)行600 次重復(fù)實(shí)驗(yàn),每次實(shí)驗(yàn)時在主纜繩數(shù)據(jù)集上每類別樣本隨機(jī)抽取5 個樣本,作為已知類別的圖像對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再從每類別剩下的樣本中抽取10個樣本進(jìn)行測試。
本文方法與其他方法的測試結(jié)果如表1。由表1 可知,相較于KNN,SVM,Decision Tree,VGG16,AlexNet,ResNet5 等方法,基于輔助數(shù)據(jù)集的小樣本度量學(xué)習(xí)方法有明顯優(yōu)勢,準(zhǔn)確率最高,為89.38%。原因在于,數(shù)據(jù)集中包含少量數(shù)據(jù)的情況下,每次可用于學(xué)習(xí)的樣本少,其他方法易出現(xiàn)過擬合的現(xiàn)象;小樣本度量學(xué)習(xí)方法沒有直接學(xué)習(xí)分類器,而是利用輔助數(shù)據(jù)進(jìn)行訓(xùn)練,將圖像映射到一個特征空間,這個特征空間中同類別數(shù)據(jù)的距離更近,這種方式在已知類別樣本較少的情況下有更好的性能。
表1 本文方法與其他方法的測試結(jié)果Tab.1 Test results of this paper and other methods
為檢測本文方法訓(xùn)練過程對最終結(jié)果的影響,改變訓(xùn)練過程中輔助數(shù)據(jù)集中的類別數(shù),隨機(jī)抽取輔助數(shù)據(jù)集中的類別,類別從3 個依次擴(kuò)大到6 個,本文方法的檢測準(zhǔn)確率如表2。從表2可看出,網(wǎng)絡(luò)模型的準(zhǔn)確率比原模型有進(jìn)一步的提高。從性能的變化趨勢看,采用本文方法進(jìn)行缺陷檢測是有效的且有較大潛力。
表2 不同類別數(shù)目訓(xùn)練時本文方法的檢測準(zhǔn)確率Tab.2 Detection accuracy of this method at the numberof different categories for trainings
2.2.2 微調(diào)后的小樣本度量學(xué)習(xí)方法
由上文可知,小樣本學(xué)習(xí)方法是把輔助訓(xùn)練集訓(xùn)練好的參數(shù)直接用于待檢測數(shù)據(jù)集上,一般認(rèn)為這種方式粗糙。為充分利用少量已知樣本的支持集來提升網(wǎng)絡(luò)性能,測試時將支持集重新劃分,即將支持集中每類別的5個樣本再次隨機(jī)抽取3個樣本作為新的支持集,剩下的2個樣本作為查詢集。利用這種方式重新對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并在訓(xùn)練過程中抽取不同類別數(shù)分別進(jìn)行實(shí)驗(yàn)驗(yàn)證;測試時,對網(wǎng)絡(luò)分別進(jìn)行100,200,300 次的訓(xùn)練調(diào)整。如圖2所示,只調(diào)整第4個卷積層,保留其他卷積塊不動,最終實(shí)驗(yàn)結(jié)果如表3。由表3可知:微調(diào)能夠有效提升本文方法的網(wǎng)絡(luò)性能,這是由于輔助數(shù)據(jù)集與主纜繩樣本數(shù)據(jù)差異較大,對網(wǎng)絡(luò)的最終性能造成一定影響,微調(diào)后網(wǎng)絡(luò)經(jīng)過領(lǐng)域轉(zhuǎn)換,輸出特征更適合纜繩的分類任務(wù);微調(diào)至300 次,網(wǎng)絡(luò)總體性能呈下降趨勢,這是因?yàn)槲⒄{(diào)次數(shù)增多,網(wǎng)絡(luò)的泛化性能下降;抽取類別為6 時網(wǎng)絡(luò)性能較好,但抽取3 個類別微調(diào)時的網(wǎng)絡(luò)性能較好。
表3 微調(diào)后本文方法的網(wǎng)絡(luò)性能Tab.3 Network performance of this method after fine-tuning
為比較驗(yàn)證本文方法微調(diào)后的性能,將深度學(xué)習(xí) 方 法AlexNet 和VGG16 及ResNet50 放 在mini ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練獲得一個良好的參數(shù)后,凍結(jié)所有的卷積層參數(shù)僅在纜繩數(shù)據(jù)集上重新訓(xùn)練全連接層。與上文同,進(jìn)行600 次實(shí)驗(yàn)取平均結(jié)果作為最終結(jié)果,如表4。由表4 可知,微調(diào)后所有方法的網(wǎng)絡(luò)性能均有提升,其中本文方法的網(wǎng)絡(luò)性能最好,準(zhǔn)確率最高,達(dá)93.85%。這是因?yàn)樾颖緦W(xué)習(xí)使用參數(shù)更少的網(wǎng)絡(luò)結(jié)構(gòu)及使用無參的度量方式取代全連接層,提高了模型的泛化能力。
表4 微調(diào)后不同方法的網(wǎng)絡(luò)性能Tab.4 Network performance of different methods after fine-tuning
為測試本文方法在其他缺陷檢測領(lǐng)域能否達(dá)到良好的性能,在鋼材缺陷分類數(shù)據(jù)集NEU[17]上進(jìn)行實(shí)驗(yàn)。NEU 數(shù)據(jù)集每類缺陷有300 個樣本,共6個類別。訓(xùn)練時,在輔助數(shù)據(jù)集上隨機(jī)抽取6個類別。為研究支持集中每類別樣本的數(shù)量,即已知類別樣本數(shù)對方法性能的影響,同時針對每類抽取10個樣本進(jìn)行實(shí)驗(yàn)。每類別僅5 個樣本時,微調(diào)方式與前文保持一致;每類10 個樣本時,取6 個樣本作為新的支持集、4個作為新的查詢集。微調(diào)100次時的實(shí)驗(yàn)結(jié)果如表5。由表5可知:本文方法在鋼材缺陷數(shù)據(jù)集上也有良好的表現(xiàn),5 類別樣本的準(zhǔn)確率達(dá)83.74%,10 類別樣本的準(zhǔn)確率達(dá)88.85%;微調(diào)后網(wǎng)絡(luò)模型的準(zhǔn)確率也有明顯提升,5 類別樣本的準(zhǔn)確率達(dá)86.08%,10 類別樣本的準(zhǔn)確率達(dá)91.22%。由此表明本文方法在其他缺陷領(lǐng)域也有良好的性能,發(fā)展空間較大。
表5 在NEU數(shù)據(jù)集上不同方法的網(wǎng)絡(luò)性能Tab.5 Network performance of different methods on NEU database
針對主纜繩樣本獲取困難,將小樣本度量學(xué)習(xí)方法引入到纜繩表面缺陷的檢測任務(wù)中,實(shí)驗(yàn)證明:利用輔助數(shù)據(jù)集的小樣本度量學(xué)習(xí)方法對纜繩表面缺陷檢測有一定優(yōu)勢,準(zhǔn)確率達(dá)到了91.48%;將微調(diào)策略引入到小樣本度量學(xué)習(xí)方法可進(jìn)一步提升纜繩表面缺陷檢測性能,準(zhǔn)確率提升至93.85%,這種方式可有效避免大規(guī)模收集纜繩的缺陷樣本;本文方法在鋼材缺陷分類數(shù)據(jù)集上也有良好表現(xiàn),可獲得91.22%的檢測準(zhǔn)確率。本文方法在缺陷檢測領(lǐng)域應(yīng)用潛力大,可有效減少人力物力在缺陷檢測方面的消耗。