吳顯德,陳科宇,周 寶,雷雅彧,翁揚凱,王憲保
(1.浙江華是科技股份有限公司,杭州 311100; 2.浙江工業(yè)大學 信息工程學院, 杭州 310023)
磁芯是電子設備中變壓器和線圈的重要組成部分,其質(zhì)量的好壞不僅影響磁芯的外觀,而且對磁芯的磁導率磁通密度等重要性能參數(shù)也有很大影響。
傳統(tǒng)的磁芯缺陷檢測大多采用人工肉眼的方式進行,但由于磁芯體積小且種類繁多,導致檢測工作量大、效率低,而且易受到檢測人員的經(jīng)驗、情感、視覺疲勞等因素的影響,檢測的質(zhì)量難以保證,不適于大規(guī)模的工業(yè)生產(chǎn)。
近年來,使用機器視覺方法進行外觀缺陷檢測已取得重大進展,廣泛應用于鋼板[1]、零件[2-3]、玻璃、印刷、焊縫[4]、紡織品、瓷磚、鋼軌等多個行業(yè)。王猛等[5]人為了檢測網(wǎng)絡變壓器模塊缺陷,對圖像進行中值濾波,采用閾值分割、Blob分析的辦法對圖像缺陷特征進行形態(tài)學特征識別和提取。郭良[6]等為了檢測汽車涂膠缺陷提出了基于方向梯度直方圖與Gabor特征結合的特征提取算法[6]。姚明海[7]等將RPCA算法應用于太陽能電池片的缺陷檢測,使太陽能電池片的檢測精度達到100%。這些傳統(tǒng)的基于機器視覺的缺陷檢測雖然取得了不錯的效果,但是由于自動化產(chǎn)業(yè)發(fā)展迅猛,產(chǎn)品數(shù)量日益猛增,遠不能滿足工業(yè)自動化生產(chǎn)對于缺陷檢測精度、速度和泛化能力的需求。
隨著卷積神經(jīng)網(wǎng)絡在計算機視覺領域的巨大成功[8-10],深度學習在工業(yè)產(chǎn)品的缺陷檢測研究領域得到了廣泛應用和發(fā)展。余永維[11]等提出一種基于深度學習特征匹配的鑄件缺陷三維定位方法,模擬選擇注意機制的中央-周邊查算法,提出以視覺顯著為尺度,從射線圖像復雜背景中檢測缺陷及其區(qū)域。Jiang[12]等人根據(jù)U-NET模型提出了由編碼器和解碼器組成的對稱卷積神經(jīng)網(wǎng)絡,產(chǎn)生與原始圖像相同大小的語義分割,以提高玻璃的檢測準確率。
雖然各種深度學習的方法在工業(yè)生產(chǎn)的目標定位,目標檢測等環(huán)節(jié)有不錯的應用。但是缺陷檢測領域還存在諸多的問題,主要集中在兩方面。首先是深度學習的良好性基于大量數(shù)據(jù),充足的數(shù)據(jù)可以增強網(wǎng)絡的性能,從而提高缺陷的檢測效果。但是在實際的工業(yè)生產(chǎn)中,大數(shù)據(jù)集的缺陷庫很難獲得,且缺陷種類數(shù)據(jù)量不平衡,使得檢測準確率不能達到滿意效果。其次是小目標缺陷的檢測效率不高,檢測時間不迅速,不能滿足日益快速的工業(yè)化的要求。
針對第一個數(shù)據(jù)量不足的問題,目前有效的方法是進行數(shù)據(jù)增強。浙江大學[13]提出一種基于小批量數(shù)據(jù)集和深度學習算法的晶圓缺陷檢測方法,利用微距定焦鏡頭對圖像進行全局掃描;然后將彩色圖像進行數(shù)據(jù)增強,包括添加噪聲、裁剪和翻轉(zhuǎn)等,進而擴增數(shù)據(jù)集;最后將SSD 原始算法與遷移學習相結合,并優(yōu)化了網(wǎng)絡模型參數(shù)。李翌昕[14]等針對文檔區(qū)塊圖像設計了一組有效的特征,提取了幾何、灰度、區(qū)域、紋理和內(nèi)容五方面在內(nèi)的 32 種特征,以增強特征針對區(qū)塊類別的分辨能力。
問題二是小目標檢測問題,由于小目標物體的像素占比少,難以提取到充分的特征信息,相較于大目標物體的檢測,精度難以保障。研究人員對此從多尺度融合、主干網(wǎng)絡、特征分辨率等角度進行了研究。其中LIN[15]等人提出了基于FPN的方法來增強底層特征的語義信息。FPN分為兩條支路,一條自下而上的支路,可以逐層提取豐富的高層語義信息。另一條自上而下的支路,可以將上層的語義信息融合到底層特征中。通過對小目標的多尺度檢測,提高了小目標物體的檢測精度。
本文提出了一種基于深度學習的圖像增強和檢測方法,算法首先基于深度卷積對抗生成網(wǎng)絡(deep convolution generative adversarial networks, DCGAN)和圖像融合的方法,進行磁芯缺陷圖片數(shù)據(jù)集擴充,提高了生成圖片的質(zhì)量,解決了數(shù)據(jù)量小的問題。然后使用含有多尺度特征融合結構的YOLO-v3算法,提高了對小目標的檢測精度和速度。本文提出的模型整體框架如圖1所示。
圖1 算法整體框架
原始生成對抗網(wǎng)絡[16](generative adversarial networks,GAN)由多層感知器作為基礎結構,并由多個全連接層組成,其網(wǎng)絡結構如上圖2所示由生成網(wǎng)絡G(Generator)和判別網(wǎng)絡D(Discriminator)兩個部分構成。
圖2 GAN模型
生成網(wǎng)絡通過對輸入噪聲的映射,得到盡可能擬合真實樣本的分布的輸出圖像。判別網(wǎng)絡用來判斷輸入圖片的真?zhèn)涡?即該圖片是真實圖片還是生成器生成的圖片。利用生成對抗互相博弈的思想,對生成網(wǎng)絡判別網(wǎng)絡交替迭代訓練,最終使得生成網(wǎng)絡有強大的學習生成能力,能過生成以假亂真的圖像。但是,生成對抗網(wǎng)絡存在訓練不穩(wěn)定、梯度消失的問題。
生成網(wǎng)絡G和判別網(wǎng)絡D的目標函數(shù)如下所示:
Ez~Pz[log(1-D(G(z)))]
(1)
其中:z是輸入噪聲,G是生成網(wǎng)絡,D是判別網(wǎng)絡。G(z)是由生成網(wǎng)絡G生成的圖像數(shù)據(jù),x是G(z)所對應的真實圖像數(shù)據(jù)。
隨著近些年來卷積神經(jīng)網(wǎng)絡的巨大發(fā)展,2015年,Alec Radford等人[17]在生成對抗網(wǎng)絡的基礎上,又與卷積神經(jīng)網(wǎng)絡相結合,提出了DCGAN模型,并對其結構做了改進:
1)去掉所有的池化層。在判別器中,使用步幅卷積替代最大池化層進行下采樣,在生成器中,采用轉(zhuǎn)置卷積實現(xiàn)上采樣,將輸入的隨機噪聲向量轉(zhuǎn)化為二維矩陣,提升圖像的尺寸大小。池化層的作用有兩方面,一方面是減小特征圖,降低網(wǎng)絡計算復雜度;另一方面是提取主要特征,拋棄不重要的特征,進行特征壓縮,而使用具有較大步長的卷積層來替換池化層可以實現(xiàn)同樣的功能并且加快了收斂速度。
2)盡可能的減少全連接層的使用,除去在生成器的第一層和判別器的最后一層,其余地方使用卷積層代替全連接層。在生成器的第一層和判別器的最后一層使用全連接層其目的都是為了維度的轉(zhuǎn)換,在生成器中是為了將輸入的隨機噪聲變量進行維度轉(zhuǎn)換,而在判別器中是為了將前面卷積層的輸出轉(zhuǎn)換為一維向量作為sigmoid函數(shù)的輸入。此操作可以使維持模型的穩(wěn)定,還可以降低網(wǎng)絡訓練參數(shù)規(guī)模。
圖3 優(yōu)化后的深度卷積對抗生成網(wǎng)絡模型
3)批量歸一化(batch normalization,BN)。BN操作將輸入都歸一化為0均值和單位方差,解決訓練過程中間層數(shù)據(jù)分布發(fā)生改變的問題,避免網(wǎng)絡訓練學習新的數(shù)據(jù)分布,幫助梯度順利的向下傳播,避免生成器將所有的樣本都收斂到一個點。但如果在生成器G和判別器D的所有網(wǎng)絡中都應用BN操作會導致樣本震蕩和模型不穩(wěn)定,故在生成器的輸出層和判別器的輸入層不采用BN操作,以防止上述問題的產(chǎn)生。
4)激活函數(shù)的變化。在生成器網(wǎng)絡中均采用Leaky ReLU作為激活函數(shù),而在判別器網(wǎng)絡中使用tanh和ReLU作為激活函數(shù),其中,Tanh僅使用在輸出層,ReLU函數(shù)運用在其余各層。
DCGAN[18]的生成網(wǎng)絡接收一個表示為z的噪聲矢量,并將其映射到最后的輸出G(z)中。為了提高對抗生成網(wǎng)絡對有限訓練樣本的學習能力,在對抗生成網(wǎng)絡的原有結構上,引入高斯混合模型,相比于單高斯分布擁有更好的表征能力。以磁芯為例,磁芯缺陷有不同的形狀、顏色、面積等,是多個分布的組合。因此我們潛空間的分布也采用多個高斯分布的組合,使得從潛空間分布更好地映射到真實空間分布。高斯混合模型由多個高斯分布組成,其概率密度函數(shù)如下:
(2)
(3)
先隨機生成均勻噪聲,得到噪聲各維均值μ={μ1,μ2,μ3,…,μk}和噪聲間協(xié)方差對角矩陣σ=[σj1,σj2,σj3,…,σjk],通過均值μ和協(xié)方差對角矩陣構建高斯混合模型,并將該高斯混合模型作為生成器的輸入部分:
z~K(x;μ,σk)
(4)
(5)
結合高斯混合模型的深度卷積生成對抗結構如圖3所示,在生成網(wǎng)絡部分,將均勻噪聲復雜化,重構為高斯混合模型,增強輸入隱空間的語義性和可操作性。生成網(wǎng)絡在每次進行迭代生成圖像時,隨機選取一組高斯混合模型,使模型能夠在訓練樣本數(shù)據(jù)量有限時更好地學習到真實樣本的分布情況,提升生成圖像的質(zhì)量。
在生成網(wǎng)絡上的全連接層,使用全局平局池化來代替,提升模型的穩(wěn)定性。并使用4層反卷積替代原生成網(wǎng)絡中的池化層,使模型能夠?qū)W習自己的空間下采樣;使用ReLU激活函數(shù),輸出層使用有界激活函數(shù)Tanh,使用有界激活函數(shù)可以使模型更快收斂。并且都使用批處理Batch Normalization,有利于更深層次網(wǎng)絡的訓練。
在判別網(wǎng)絡部分,同樣使用全局平均池化來代替全連接層,各層均采用ReLU激活函數(shù)和批處理Batch Normalization,并使用4層步幅卷積取代原判別網(wǎng)絡中的池化層。
將生成網(wǎng)絡生成的樣本數(shù)據(jù)輸入到判別網(wǎng)絡中,將判別網(wǎng)絡得到的損失誤差反向傳播到生成網(wǎng)絡和判別網(wǎng)絡,不斷優(yōu)化性能。
利用DCGAN生成的磁芯缺陷需要與合格的完整磁芯圖像進行融合,才能構建最終的擴充樣本集,以便于后續(xù)目標檢測的使用。首先選取原始數(shù)據(jù)集中合格的磁芯圖像ki作為融合圖像的背景,并且在圖像ki上選取合適的待融合點t,以保證DCGAN生成的磁芯缺陷完整的融合在磁芯上,而不是落于周圍導致融合不完整或者無效。其次,從DCGAN生成的缺陷數(shù)據(jù)集C中獲取帶融合的生成缺陷。最后將生成缺陷在圖像ki上進行融合,從而達到磁芯缺陷特征不丟失、融合邊界平滑、效果真實的目的,從而構建完整的擴充數(shù)據(jù)集。
盡管生成的缺陷數(shù)據(jù)與真實數(shù)據(jù)相似,但不能保證其像素與背景圖像帶融合點周圍的像素強度一致,僅僅將生成圖像在融合點進行放置會導致生成圖像與融合點周圍位置不平滑,與原數(shù)據(jù)集中缺陷圖像存在出缺陷不同以外的差異,導致對最終的缺陷檢測造成不必要的影響。因此,采用基于泊松方程的融合方法進行生成圖像和背景圖像間的融合,避免此類問題的產(chǎn)生。
(6)
圖4 基于泊松方程的圖像融合原理圖
為了讓目標圖像覆蓋背景圖像待融合區(qū)域并最終形成無縫拼接,泊松方程引入了由目標圖像決定的梯度場。
(7)
(8)
同時,為了保障目標圖像能夠平滑過渡并且背景圖像融合區(qū)域與目標圖像有相同的輪廓,需要滿足融合后圖像與原始背景圖像有著最相近的梯度信息,即:
(9)
(10)
即求解方程:
(11)
基于泊松方程的圖像融合方法偽代碼如下:
基于泊松方程的圖像融合方法
輸入:DCGAN生成的磁芯缺陷數(shù)據(jù)集C;
原始磁芯數(shù)據(jù)集合格磁芯圖片數(shù)據(jù)集K;
輸出:帶有缺陷的磁芯圖片數(shù)據(jù)集。
計算數(shù)據(jù)集K中的圖片數(shù)量m
for i=1:m do
從K數(shù)據(jù)集中順序讀取一張背景圖像ki;
抽取出n個來自生成缺陷數(shù)據(jù)集C的目標圖像{C(1),…,C(n)};
設置目標圖像的掩膜區(qū)域;
通過式(3~12)至(3~17)將掩膜區(qū)域的目標圖像融入背景圖像;
end for
圖5 圖像融合流程
YOLO算法是最經(jīng)典的單階段目標檢測網(wǎng)絡,其將目標檢測問題轉(zhuǎn)化為回歸問題,將圖片輸入后直接得到檢測目標的類別和定位,實現(xiàn)了端到端的檢測,相較于兩階段檢測算法,其在保持高檢測精度的前提下,極大提升了檢測速度。
其主要思想是首先通過主干網(wǎng)絡對輸入圖像進行特征提取,得到一定大小的特征圖,然后將輸入圖像劃分為K×K個單元格,每個單元格都會預測固定數(shù)量的邊界框,如果目標的中心坐標落在某個單元格中,就由這個單元格預測該目標,每個單元格都會預測固定數(shù)量的邊界框,其中只有和目標重疊度(IOU)最大的邊界框會被選定用來預測該目標。
YOLO-v3算法是在之前兩個版本的基礎上,融合了多尺度預測、殘差網(wǎng)絡[20],其網(wǎng)絡結構圖如圖6所示。YOLO-v3的特征提取網(wǎng)絡是Darknet-53,包含5個的殘差塊和大量的層間跳躍連接,解決了網(wǎng)絡深度加深帶來的梯度爆炸、梯度消失等難以訓練的問題,同時一定程度減少了模型的參數(shù),輕量化了模型,加快了模型的訓練。
YOLO-v3在預測方面,仿照特征金字塔網(wǎng)絡(feature pyramid networks,F(xiàn)PN),采用多尺度融合的方法,總共輸出3個尺度的特征圖。第一個特征圖下采樣32倍,第二個特征圖是對32倍下采樣的特征圖進行上采樣與下采樣16倍的特征圖進行張量拼接,同理第三個特張圖對16倍下采樣的特征圖進行上采樣與8倍下采樣的特征圖進行融合。通過多尺度融合的方式,使特征圖融合了深層和淺層的特征信息,以此提高檢測對小目標的檢測精度。
圖6 YOLO-v3網(wǎng)絡結構圖
針對本文研究的磁芯數(shù)據(jù)集,其缺陷多為小目標。由于多次卷積后小目標的特征容易消失,因此用52×52的網(wǎng)格來檢測小物體。由圖6所示,在YOLO-v3網(wǎng)絡中進行多次卷積操作,將尺寸為13×13的特征層經(jīng)過上采樣擴張成26×26的大小,同時與26×26的特征層進行融合,將融合的結果輸入到下一特征層,直到3個檢測尺度相融合。利用具有較強位置信息的淺層特征和具有較強語義信息的深層特征,增加網(wǎng)絡結構的表征能力,能夠提高對小目標的檢測率。
最后的輸出有2個維度的特征圖;選取一個置信度閾值,過濾掉低閾值box,再經(jīng)過非極大值抑制,輸出整個網(wǎng)絡的預測結果。輸出特征圖的其中一個維度是特征圖尺寸,另外一個維度是深度,即B(5+C),其中B為每個網(wǎng)格檢測得到的邊框數(shù)量,C為磁芯的缺陷類別數(shù),包括磁芯缺陷的4個位置(Ix,Iy,Iw,Ih)和1個置信度。
本文所使用的產(chǎn)品來自浙江某公司實際生產(chǎn)產(chǎn)品,所有的圖像均在高清工業(yè)攝像機下拍攝所得,該數(shù)據(jù)集提供了2 763張磁芯的圖像,其中包含正反面正常圖片、斑點圖片、破損圖片,共六類圖片。對該數(shù)據(jù)集分析發(fā)現(xiàn),數(shù)據(jù)集中斑點圖片僅占總數(shù)據(jù)集的10.89%,而其余類型圖像數(shù)量均勻,是典型的不平衡數(shù)據(jù)集。磁芯整體材質(zhì)一致,正反面是在同一光照方案和工業(yè)攝像機下拍攝所得,故正面缺陷與反面缺陷一致,且存在一個磁芯表面可能出現(xiàn)多個斑點缺陷的情況。將原始數(shù)據(jù)集中所有的斑點缺陷提取出來,共獲得348張斑點缺陷圖像作為生成對抗網(wǎng)絡的輸入,如圖8所示,訓練生成對抗網(wǎng)絡生成新的斑點缺陷圖像,再與合格磁芯圖像融合獲得新的磁芯斑點缺陷數(shù)據(jù)集。
圖7 磁芯數(shù)據(jù)集部分圖像
圖8 部分提取的斑點缺陷圖
訓練前,將數(shù)據(jù)集中的缺陷部位提取出來,缺陷圖像的分辨率為64×64×3。將獲取的缺陷圖像作為此次DCGAN網(wǎng)絡的真實數(shù)據(jù)輸入。
表1 軟硬件配置環(huán)境
經(jīng)過多次實驗和微調(diào)之后,優(yōu)化后的DCGAN的網(wǎng)絡參數(shù)如下:輸入圖像的大小為64×64×3;輸出缺陷圖像大小為64×64×3;優(yōu)化器采用Adam[21],生成網(wǎng)絡和判別網(wǎng)絡的學習率均為0.000 2,動量為0.5;訓練epoch為600。
為研究優(yōu)化后的卷積對抗生成網(wǎng)絡對提高缺陷圖像質(zhì)量的有效性,使用從原數(shù)據(jù)集中提取的斑點圖像進行生成實驗。模型在訓練中的損失函數(shù)如圖9所示。圖9(a)為生成器損失函數(shù)變化情況;圖9(b)為判別器的損失函數(shù)。
圖9 優(yōu)化DCGAN損失函數(shù)曲線
由圖9所示,生成網(wǎng)絡在前300次迭代中,初期損失函數(shù)極具震蕩,隨后緩慢增長,到后其逐漸平穩(wěn),在小范圍內(nèi)波動,此時隨著迭代次數(shù)的增加,生成的圖像也越來越清晰。生成網(wǎng)絡在300次迭代以后,損失穩(wěn)定在一個非常低的值??傮w來看,兩個函數(shù)在經(jīng)歷過前期的震蕩變化以后,其值都趨于平穩(wěn),這是生成網(wǎng)絡和判別網(wǎng)絡兩個結構在相互平衡、制約。
優(yōu)化后的卷積對抗生成網(wǎng)絡生成的缺陷圖像如圖10所示。在訓練迭代了500次以后,基本滿足了生成缺陷的需要,相比于優(yōu)化前的卷積對抗生成網(wǎng)絡生成的圖像,改進后的生成圖像在同等條件下缺陷部位顏色更深,缺陷邊緣更清楚,缺陷更為凝實,生成的有效缺陷更多,可以作為目標圖像來進行識別。
圖10 優(yōu)化和未優(yōu)化生成圖像
為了將擴增圖像應用于后續(xù)檢測網(wǎng)絡,將其與背景圖像進行融合,生成2 000張可以用于訓練的數(shù)據(jù),然后基于YOLO-v3目標檢測算法,分別對未擴增和使用優(yōu)化DCGAN擴增后的數(shù)據(jù)集進行訓練,其結果見表2。
表2 不同數(shù)據(jù)集檢測正確率 %
由表2可知,擴增數(shù)據(jù)集后各種類別的檢測精度較未擴增前有所提高,其中正面斑點檢測準確率提升了7.6%,反面斑點檢測準確率提升了4.4%,正面劃痕檢測準確率提升了10.2%,反面劃痕檢測準確率提升了7.6%,平均準確率提高了5.6%。
缺陷識別是工業(yè)產(chǎn)品實現(xiàn)自動化生產(chǎn)的前提之一,隨著計算機技術的發(fā)展和深度學習技術的不斷向前推進,各種檢測模型百花齊放,但是在使用深度學習方法實現(xiàn)工業(yè)化檢測方面容易遇到由于產(chǎn)品制造中的不確定性,導致采集的磁芯數(shù)據(jù)集出現(xiàn)類間不平衡問題且難以獲取大量滿足訓練要求的磁芯缺陷數(shù)據(jù)。
針對上述問題,本文提出了一種基于生成對抗網(wǎng)絡和圖像融合的小樣本集類間不平衡處理的方法,并在磁芯數(shù)據(jù)集上進行驗證對比,本文的研究工作包括以下幾個方面:
1)針對磁芯數(shù)據(jù)集數(shù)量少及類間不平衡問題,通過截取數(shù)據(jù)中數(shù)量少的斑點目標圖像,通過生成對抗網(wǎng)絡生成大量類別相同信息各異的目標圖像,解決小樣本問題。并對原有的卷積對抗生成網(wǎng)絡進行了優(yōu)化,引入了高斯混合模型,改善生成網(wǎng)絡的輸入,提高了生成缺陷的圖像質(zhì)量。實驗表明本文提出的算法生成的目標圖像質(zhì)量更高,利用此方法進行數(shù)據(jù)擴充能夠增強檢測模型的泛化能力,提高磁芯表面缺陷檢測準確率。
2)針對DCGAN生成的缺陷圖像,提出一種基于泊松方程的圖像融合方法,將缺陷目標圖像與良好的背景圖像進行融合,在背景圖像上融合一到多個缺陷目標圖像,構建趨于真實生產(chǎn)中包含缺陷的磁芯圖像,并且達到自然融合的效果,實現(xiàn)目標圖像邊緣與背景圖像融合區(qū)域平滑過渡,擴充了數(shù)據(jù)集,為后續(xù)神經(jīng)網(wǎng)絡的訓練和識別做準備。