楊 戈 ,劉思瀚
(1.北京師范大學(xué)珠海分校 智能多媒體技術(shù)重點(diǎn)實(shí)驗(yàn)室,廣東 珠海 519087;2.北京師范大學(xué) 自然科學(xué)高等研究院,廣東 珠海 519087)
手機(jī)是當(dāng)前人們生活中的必需品,如何高效并且盡可能低成本地制造手機(jī)成為了熱點(diǎn)之一。而手機(jī)的屏幕缺陷檢測(cè)則是屬于手機(jī)制造過(guò)程中重要的一個(gè)環(huán)節(jié),如何在這個(gè)環(huán)節(jié)上化繁為簡(jiǎn)并且提高效率至關(guān)重要。傳統(tǒng)的人工檢測(cè)不僅效率低下,并且會(huì)增加手機(jī)制造成本。還有一些傳統(tǒng)的視覺(jué)處理方法,通過(guò)提取圖像特征再通過(guò)提取的特征去選擇、識(shí)別。這種傳統(tǒng)的辦法雖然降低了人工成本,但是受限于特征提取時(shí)的環(huán)境以及方式,使得特征提取環(huán)節(jié)變得復(fù)雜,所以效率也不會(huì)太高。因此,尋求一種高效、可靠的基于深度學(xué)習(xí)的智能化的手機(jī)屏幕缺陷檢測(cè)算法是很有必要的。
傳統(tǒng)的機(jī)器視覺(jué)缺陷檢測(cè)方法主要是研究圖像的特征選取、特征的選擇以及特征的識(shí)別這三個(gè)方面。在圖像特征選取方面,文獻(xiàn)[1]的主要研究?jī)?nèi)容是圖像特征的提取、特征的選擇和圖像的識(shí)別。在特征提取時(shí)有根據(jù)統(tǒng)計(jì)量來(lái)提取的,也有根據(jù)信號(hào)域來(lái)提取的。文獻(xiàn)[2]的方法是由獲取圖像、圖像處理和圖像反饋三部分組成的,先用特殊的專(zhuān)業(yè)相機(jī)去獲取清晰度高的圖像,再將獲取的圖像進(jìn)行降噪的處理,目的是降低圖像的環(huán)境噪聲,盡可能地降低環(huán)境干擾,使得圖像的信息得到增強(qiáng)。文獻(xiàn)[3]提出基于圖像處理技術(shù)的手機(jī)劃痕檢測(cè)算法,該方法需要將圖片進(jìn)行預(yù)處理,降低圖像的噪聲,剔除環(huán)境噪聲,增強(qiáng)圖像的有用信息,將灰度進(jìn)行變換從而提高圖片的質(zhì)量。
文獻(xiàn)[4]設(shè)計(jì)了一套包含光學(xué)成像模塊、圖像采集模塊以及軟件算法的整體方案。為了提高圖像增強(qiáng)的效果,改進(jìn)了引導(dǎo)濾波,把改進(jìn)的中值濾波后的圖像作為引導(dǎo)圖像,將引導(dǎo)濾波的高效邊緣保持效果和改進(jìn)的中值濾波的平滑作用相結(jié)合,去除低照度圖像的噪聲。文獻(xiàn)[5]進(jìn)行二值化和邊緣檢測(cè)確定手機(jī)屏幕區(qū)域的位置,其次采用幾何校正使目標(biāo)區(qū)域保持水平,利于進(jìn)行目標(biāo)提取操作,最后進(jìn)行顏色空間轉(zhuǎn)換提高屏幕缺陷與周?chē)膶?duì)比度,以便于之后進(jìn)行缺陷檢測(cè)。
傳統(tǒng)的機(jī)器視覺(jué)缺陷檢測(cè)方法雖然可以對(duì)一些具有重復(fù)性的缺陷進(jìn)行高效率的檢測(cè),但由于這種方法的檢測(cè)效率對(duì)圖像的特征選取和特征的選擇這兩方面有較高的依賴(lài)性,并且在實(shí)現(xiàn)中有很多的缺陷特征和類(lèi)型都不同,使得該方法的檢測(cè)效率并不高,無(wú)法作為生產(chǎn)中實(shí)時(shí)缺陷檢測(cè)的技術(shù)[6]。
基于深度學(xué)習(xí)的缺陷檢測(cè)方法通過(guò)卷積計(jì)算,將圖片的特征參數(shù)化,提高了算法的實(shí)用性和有效性,可以再通過(guò)優(yōu)化參數(shù)從而來(lái)提高算法的精準(zhǔn)度。文獻(xiàn)[7]將現(xiàn)有的FCN(Fully Convolutional Network)進(jìn)行改進(jìn),構(gòu)建了一套適合裂紋檢測(cè)的全卷積神經(jīng)網(wǎng)絡(luò)Crack FCN,該網(wǎng)絡(luò)保留FCN 網(wǎng)絡(luò)的優(yōu)點(diǎn),輸入的圖片沒(méi)有限制,任意尺寸的圖片都可以作為網(wǎng)絡(luò)的輸入,該網(wǎng)絡(luò)通過(guò)反卷積操作來(lái)還原最后一層卷積層的圖片特征尺寸,提高了預(yù)測(cè)的精度。文獻(xiàn)[8]構(gòu)建了一種能夠模擬視覺(jué)感知的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),結(jié)合了神經(jīng)網(wǎng)絡(luò)非線(xiàn)性映射的能力,提出了一種網(wǎng)絡(luò)結(jié)構(gòu)自我生長(zhǎng)的和參數(shù)自我學(xué)習(xí)的方法。通過(guò)模擬人類(lèi)大腦深度學(xué)習(xí)的過(guò)程,可以使得可疑區(qū)域直接通過(guò)深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu),再進(jìn)行卷積網(wǎng)絡(luò)的逐層學(xué)習(xí)提取可疑區(qū)域的特征,最后利用徑向基網(wǎng)絡(luò)實(shí)現(xiàn)圖像的識(shí)別功能[8]。但是該算法也存在相應(yīng)的缺點(diǎn),即在背景噪聲太大和有效區(qū)域太過(guò)模糊的情況下會(huì)導(dǎo)致算法結(jié)果不穩(wěn)定。
文獻(xiàn)[9]提出CNN(Convolutional Neural Network)算法,CNN 屬于前饋神經(jīng)網(wǎng)絡(luò),是一種包含了卷積計(jì)算的深度學(xué)習(xí)網(wǎng)絡(luò)。CNN 網(wǎng)絡(luò)一般包括了卷積層、池化層和全連接層。卷積神經(jīng)網(wǎng)絡(luò)的主要模型包括LeNet 模型、AlexNet模型、VGGNet模型和ResNet模型等[10-12]。
文獻(xiàn)[13]提出YOLO(You Only Look Once)系列算法,該系列算法屬于端到端的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),它將網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用在整個(gè)圖像上,將圖像分成若干個(gè)網(wǎng)格,對(duì)網(wǎng)格的邊界進(jìn)行預(yù)測(cè)并預(yù)測(cè)網(wǎng)格中內(nèi)容的所屬類(lèi)別,它最終將目標(biāo)檢測(cè)問(wèn)題轉(zhuǎn)化為了回歸問(wèn)題。不同于R-CNN系列算法,它直接采用預(yù)測(cè)目標(biāo)對(duì)象的邊界框的方法,將區(qū)域識(shí)別和對(duì)象識(shí)別這兩個(gè)階段融合成一個(gè)階段,可以在預(yù)測(cè)邊界坐標(biāo)的同時(shí)對(duì)目標(biāo)進(jìn)行分類(lèi)。這就使得YOLO 系列算法網(wǎng)絡(luò)結(jié)構(gòu)更加簡(jiǎn)潔,速度更快,準(zhǔn)確率更高。YOLO 算法的網(wǎng)絡(luò)結(jié)構(gòu)圖包含了24 個(gè)卷積層和2個(gè)全連接層,用卷積層網(wǎng)絡(luò)來(lái)提取特征,用全連接層來(lái)得到預(yù)測(cè)值[14-15]。
YOLO-q-v3 算法采用53 層卷積層,其中卷積層由filters 過(guò)濾器和激活函數(shù)構(gòu)成,通過(guò)設(shè)定filter 的數(shù)值,按照設(shè)置的步長(zhǎng)不斷地提取圖片的特征,從局部特征再到總體的特征,從而完成圖像的識(shí)別。卷積層的參數(shù)包括了卷積核的大小、步長(zhǎng)和填充。卷積層里面有多個(gè)卷積核,卷積核的大小影響了選擇區(qū)域的大小即感受野的大小,卷積核越大提取的圖片特征越復(fù)雜。全連接層的作用是將經(jīng)過(guò)卷積層和池化池處理后的數(shù)據(jù)串聯(lián)起來(lái),再對(duì)串聯(lián)出的結(jié)果進(jìn)行識(shí)別和分類(lèi)。全連接層接受卷積層或者池化層的輸入,并輸出一個(gè)多維向量,這個(gè)多維向量代表了每一個(gè)類(lèi)別的概率,即輸出各個(gè)結(jié)果的預(yù)測(cè)值,然后取最大的概率作為全連接層識(shí)別分類(lèi)的結(jié)果。
本文提出YOLO-q-v3 算法中用于提取特征的主要網(wǎng)絡(luò)是卷積神經(jīng)網(wǎng)絡(luò)DarkNet-53。DarkNet-53 提取了ResNet 網(wǎng)絡(luò)的優(yōu)點(diǎn),它在某些卷積層之間添加了一條快捷路徑,這條路徑和卷積層形成了殘差組件。殘差組件可以使得網(wǎng)絡(luò)層數(shù)相應(yīng)減少,參數(shù)減少,從而減少計(jì)算量,使得DarkNet-53 的性能得到了較大提升。但是在本文運(yùn)用的數(shù)據(jù)集中,圖片缺陷數(shù)量不多,不需要檢測(cè)多個(gè)對(duì)象,因此本文提出將原DarkNet-53 網(wǎng)絡(luò)在保持原本的檢測(cè)精度的情況下進(jìn)行刪減網(wǎng)絡(luò)層數(shù),通過(guò)減少參數(shù)來(lái)提高算法的檢測(cè)效率,算法相關(guān)參數(shù)如表1 所示。
表1 算法參數(shù)對(duì)比
YOLO-q-v3 算法還采用了FPN(Feature Pyramid Networks)的結(jié)構(gòu)改善對(duì)較小物體的檢測(cè)結(jié)果,每一個(gè)特征圖被拿來(lái)做了邊界框回歸,其中尺寸最小的頂層特征用來(lái)檢測(cè)較大的物體,而尺寸較大的特征圖則用來(lái)檢測(cè)較小的物體。如果是單一尺度檢測(cè)器,尺度太大而數(shù)據(jù)集上特征過(guò)小就會(huì)導(dǎo)致生成的錨框?qū)π√卣鳈z測(cè)效果不好。采用多尺度檢測(cè)器就能避免這個(gè)缺點(diǎn),不論在檢測(cè)特征過(guò)小還是特征過(guò)大的圖片時(shí),都有適當(dāng)尺寸的檢測(cè)器去進(jìn)行檢測(cè)。該網(wǎng)絡(luò)結(jié)構(gòu)沒(méi)有池化層和全連接層,是由卷積層構(gòu)成了全卷積神經(jīng)網(wǎng)絡(luò),這樣使得算法減少了卷積層的運(yùn)算量,從而提升了DarkNet-53 網(wǎng)絡(luò)的計(jì)算效率。并且在預(yù)測(cè)對(duì)象類(lèi)別時(shí)不再使用softmax,而是改用logistic 來(lái)進(jìn)行預(yù)測(cè),能夠支持多標(biāo)簽的對(duì)象。
如圖1 所示,改進(jìn)的DarkNet-53 網(wǎng)絡(luò)的主體卷積層與原網(wǎng)絡(luò)相同,一共有53 層卷積層,除去最后一個(gè)1×1的卷積層共有52 個(gè)卷積作為DarkNet-53 網(wǎng)絡(luò)的網(wǎng)絡(luò)卷積主體。DarkNet-53 網(wǎng)絡(luò)提取了ResNet 網(wǎng)絡(luò)的優(yōu)點(diǎn),它在某些卷積層之間添加了一條快捷路徑,這條路徑和卷積層形成了殘差組件,使得DarkNet-53 網(wǎng)絡(luò)結(jié)構(gòu)層次變得更深。而本文提出的改進(jìn)算法將原網(wǎng)絡(luò)的殘差組件數(shù)量從1、2、8、8、4 個(gè)分別刪減到1、2、2、6、4 個(gè)。
圖1 改進(jìn)DarkNet-53 網(wǎng)絡(luò)結(jié)構(gòu)
YOLO-q-v3 算法實(shí)現(xiàn)步驟如圖2 所示,首先通過(guò)特征提取網(wǎng)絡(luò)DarkNet-53 對(duì)輸入的圖像進(jìn)行特征提取,得到不同尺度大小的特征圖。然后對(duì)圖像的特征圖進(jìn)行網(wǎng)格劃分,劃分出來(lái)的網(wǎng)格可以負(fù)責(zé)來(lái)預(yù)測(cè)落在該網(wǎng)格中的真實(shí)邊界框中的目標(biāo)。每個(gè)目標(biāo)有固定數(shù)量的邊界框,在YOLO-q-v3 中有3 個(gè)邊界框,最后使用邏輯回歸來(lái)確定預(yù)測(cè)的回歸框。
圖2 YOLO-q-v3 框架
2.2.1 檢測(cè)框預(yù)測(cè)
如圖3 改進(jìn)算法直接預(yù)測(cè)相對(duì)位置,預(yù)測(cè)出b-box中心點(diǎn)相對(duì)于網(wǎng)格單元左上角的相對(duì)坐標(biāo)。
圖3 檢測(cè)框預(yù)測(cè)
根據(jù)anchor 的預(yù)測(cè)值來(lái)預(yù)測(cè)寬和高的公式如下:其中,bx、by、bw、bh分別為預(yù)測(cè)框的中心坐標(biāo)x、y、寬度、高度,tx、ty、tw、th分別為網(wǎng)絡(luò)輸出的預(yù)測(cè)框的中心坐標(biāo)x、y、寬度、高度,cx、cy分別是網(wǎng)格左上角的坐標(biāo)x、y,pw、ph分別是錨框的寬和高。
2.2.2 損失函數(shù)
本文算法在計(jì)算損失函數(shù)時(shí),根據(jù)IOU(Intersection over Union)對(duì)預(yù)測(cè)框結(jié)果進(jìn)行分類(lèi),IOU 的計(jì)算公式為[13]:
其中,(XA,YA)為邊框A 的左上角坐標(biāo),WA為A 的寬,HA為A 的高;(XB,YB)為邊框B 的左上角坐標(biāo),WB為B 的寬,HB為B 的高;C 為邊框A 與B 相交的矩形區(qū)域,WC為C 的寬,HC為C 的高[13]。
YOLO v3 算法的損失函數(shù)與每個(gè)特征圖的相關(guān)損失有關(guān),其中每個(gè)特征圖的損失lossN1與預(yù)測(cè)框大小和位置相關(guān)lossbox、預(yù)測(cè)結(jié)果置信度相關(guān)losscon、預(yù)測(cè)分類(lèi)結(jié)果相關(guān)lossclass有關(guān),公式如下:
手機(jī)屏幕缺陷包括裂痕、油脂、破裂等,本文主要采用裂痕數(shù)據(jù)集,數(shù)據(jù)集中標(biāo)注裂痕缺陷目標(biāo),采用LabelImg 軟件對(duì)數(shù)據(jù)集進(jìn)行標(biāo)記,包括標(biāo)注出數(shù)據(jù)集中的目標(biāo)位置和缺陷的種類(lèi),保存為xml 格式。本文用于實(shí)驗(yàn)的數(shù)據(jù)集來(lái)源于學(xué)生自己拍攝的手機(jī)屏幕缺陷圖集,一共有2 071 張裂痕缺陷圖片,分辨率為1 432×1 432,由于數(shù)據(jù)集量偏少,因此將圖片通過(guò)旋轉(zhuǎn)和翻折等操作對(duì)進(jìn)行數(shù)據(jù)集進(jìn)行擴(kuò)充,可以降低模型過(guò)擬合的機(jī)率,提高實(shí)驗(yàn)的檢測(cè)效果。將數(shù)據(jù)集以8:2 的比例分為訓(xùn)練集和測(cè)試集,其中隨機(jī)選取1 657 張圖片作為訓(xùn)練集樣本,選取414 張圖片作為測(cè)試集樣本。
本文將以檢測(cè)手機(jī)屏幕裂痕缺陷為目的,通過(guò)改進(jìn)原YOLO v3 算法提出YOLO-q-v3 算法,并將兩個(gè)算法在同一實(shí)驗(yàn)環(huán)境下進(jìn)行實(shí)驗(yàn),再通過(guò)對(duì)比指標(biāo)進(jìn)行比較,實(shí)驗(yàn)環(huán)境如表2 所示。
表2 實(shí)驗(yàn)環(huán)境
本文模型性能評(píng)估指標(biāo)為精度(Precision)、召回率(Recall)、平均精度均值(mean Average Precision,mAP)和F1 值。精度P 代表預(yù)測(cè)正確的正例數(shù)據(jù)占預(yù)測(cè)為正例數(shù)據(jù)的比例,計(jì)算公式為:
其中,TP 為標(biāo)簽正樣本輸出正樣本實(shí)例的數(shù)量,F(xiàn)P 為標(biāo)簽負(fù)樣本輸出正樣本實(shí)例的數(shù)量。
召回率R 表示預(yù)測(cè)正確的正例數(shù)據(jù)占實(shí)際正例數(shù)據(jù)的比例,計(jì)算公式為:
其中,F(xiàn)N 為標(biāo)簽正樣本輸出負(fù)樣本實(shí)例的數(shù)量。精度P與召回率R 越大說(shuō)明檢測(cè)效果越好,然而兩者為負(fù)相關(guān)關(guān)系,需要量化指標(biāo)mAP 在兩者間進(jìn)行權(quán)衡。mAP 值為兩類(lèi)目標(biāo)AP 值的平均值,而F1 值與mAP 值作用相似,也需要同時(shí)考慮P 和R 兩者的量化指標(biāo)。F1 值計(jì)算公式為:
3.4.1 訓(xùn)練模型
圖4 給出了YOLO-q-v3 模型在訓(xùn)練過(guò)程的loss 曲線(xiàn),可以看出該模型的各項(xiàng)損失值在訓(xùn)練輪數(shù)達(dá)到一定次數(shù)時(shí)都處于逐漸收斂的狀態(tài),說(shuō)明YOLO-q-v3 網(wǎng)絡(luò)模型訓(xùn)練的各個(gè)階段已經(jīng)達(dá)到了一個(gè)穩(wěn)定的狀態(tài),也說(shuō)明YOLO-q-v3 模型完成訓(xùn)練。
圖4 loss 曲線(xiàn)
3.4.2 實(shí)驗(yàn)結(jié)果對(duì)比及分析
本文改進(jìn)的YOLO-q-v3 算法首先能夠準(zhǔn)確地將數(shù)據(jù)集中的裂痕缺陷識(shí)別出來(lái),并與原算法在同一實(shí)驗(yàn)環(huán)境下對(duì)同一數(shù)據(jù)集進(jìn)行比較試驗(yàn)。
從表3 的各項(xiàng)評(píng)估指標(biāo)可以看出,本文YOLO-q-v3算法的精度P 比原YOLO v3 算法的精度減少了0.4%,兩個(gè)算法的召回率R 相同,YOLO-q-v3 算法的F1 值比原YOLO v3 算法下降0.1%。
表3 不同算法指標(biāo)對(duì)比
實(shí)驗(yàn)結(jié)果表明,本文YOLO-q-v3 算法能夠準(zhǔn)確地識(shí)別數(shù)據(jù)集中的缺陷,雖然在檢測(cè)精度上對(duì)比原算法有所下降,但是下降幅度不大,并且在識(shí)別效率上比原算法有所提高,比原算法檢測(cè)速率提高了24%。
本文對(duì)YOLO v3 算法的DarkNet-53 網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了相應(yīng)的刪減改進(jìn),使用FPN,提出了YOLO-q-v3 算法進(jìn)行手機(jī)屏幕缺陷檢測(cè),減少了計(jì)算量,使得算法更適合需要實(shí)時(shí)檢測(cè)的要求,如手機(jī)生產(chǎn)線(xiàn)對(duì)缺陷檢測(cè)速度有著嚴(yán)格要求。本文YOLO-q-v3 能夠正確識(shí)別出手機(jī)屏幕裂痕,該算法能夠滿(mǎn)足手機(jī)裂痕的非人工檢測(cè),檢測(cè)效率比YOLO v3 算法有所提高。