王富豪,蔡吉飛,石莫言,殷彤,羅簡(jiǎn)清
(北京印刷學(xué)院 機(jī)電工程學(xué)院,北京 102600)
缺陷檢測(cè)是非常重要的環(huán)節(jié),尤其在印刷、包裝、紡織等領(lǐng)域有著非常廣泛的應(yīng)用。包裝盒表面缺陷檢測(cè)具有非常重要的意義,如果包裝盒表面出現(xiàn)破損、污漬等缺陷,會(huì)極大影響產(chǎn)品的質(zhì)量。包裝盒表面缺陷檢測(cè)在機(jī)器視覺領(lǐng)域是一項(xiàng)比較重要的研究。由于缺陷的形式多樣,使用傳統(tǒng)的機(jī)器視覺OpenCV檢測(cè)準(zhǔn)確率不高。本文介紹另一種方法——卷積神經(jīng)網(wǎng)絡(luò)(CNN),其在進(jìn)行缺陷檢測(cè)時(shí)檢測(cè)效果比較好。卷積神經(jīng)網(wǎng)絡(luò)被廣泛運(yùn)用于人臉識(shí)別、表面缺陷檢測(cè)、圖像識(shí)別等領(lǐng)域[1]。卷積神經(jīng)網(wǎng)絡(luò)是目前表面缺陷檢測(cè)領(lǐng)域常用的一種分類學(xué)習(xí)方法,以卷積神經(jīng)網(wǎng)絡(luò)技術(shù)為代表的深度學(xué)習(xí)方法今后將會(huì)成為表面缺陷檢測(cè)領(lǐng)域的一項(xiàng)研究熱點(diǎn)。
卷積神經(jīng)網(wǎng)絡(luò)算法是機(jī)器學(xué)習(xí)、深度學(xué)習(xí)中一種典型的神經(jīng)元網(wǎng)絡(luò)算法,是基于另一種前饋神經(jīng)網(wǎng)絡(luò)。卷積層、池化層、全連接層構(gòu)成常見卷積神經(jīng)網(wǎng)絡(luò)的基本模型,卷積神經(jīng)網(wǎng)絡(luò)一般用于圖像特征信息的提取,然后再通過激活函數(shù)來實(shí)現(xiàn)對(duì)該特征圖像信息進(jìn)行其它一些非線性處理,并最終把該圖像特征信號(hào)傳播到下一層,然后再使用全連接層和激活函數(shù)來對(duì)系統(tǒng)進(jìn)行圖像特征分類[2]。
隨著人工智能的不斷發(fā)展,人們對(duì)卷積神經(jīng)網(wǎng)絡(luò)的認(rèn)識(shí)越來越深刻,卷積神經(jīng)網(wǎng)絡(luò)已逐漸開始被廣泛應(yīng)用在許多方面,諸如車輛自動(dòng)智能安全駕駛、快速車牌識(shí)別系統(tǒng)、情感智能分析技術(shù)等研究領(lǐng)域。卷積神經(jīng)網(wǎng)絡(luò)理論在其網(wǎng)絡(luò)結(jié)構(gòu)層面上也主要遵循權(quán)值域的共享、局部域的連接以及時(shí)空上的降采樣三個(gè)重要的網(wǎng)絡(luò)特征。卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng)中包含有卷積層、池化層、全連接層,三個(gè)結(jié)構(gòu)層之間必須要相互通過,在各個(gè)神經(jīng)節(jié)點(diǎn)之間才能進(jìn)行深入逐層緊密的物理聯(lián)系,卷積層必須先進(jìn)行神經(jīng)網(wǎng)絡(luò)初步功能結(jié)構(gòu)特征提取,然后從池化層提取分離出神經(jīng)系統(tǒng)各種主要結(jié)構(gòu)功能特征,全連接層是要把神經(jīng)系統(tǒng)中各個(gè)重要神經(jīng)部分特征逐一進(jìn)行分析歸納與匯總,最后才能再進(jìn)行分類預(yù)測(cè)或識(shí)別[3]。圖1為卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示 意圖。

圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
卷積層技術(shù)主要作用是利用線性卷積濾波運(yùn)算對(duì)輸入的圖像矩陣中包含的圖像特征信息進(jìn)行特征提取,卷積濾波運(yùn)算中的基本過程之一為線性濾波,卷積核中的偏移值即為線性卷積網(wǎng)絡(luò)模型中的權(quán)重系數(shù),需要通過反向傳播等算法,反復(fù)迭代訓(xùn)練或更新濾波參數(shù)。卷積層是由若干個(gè)線性卷積核和偏移值所組成,卷積的核即為權(quán)值矩陣。卷積層的主要特征:1)網(wǎng)絡(luò)局部連接:卷積核每一次連接可作用于一個(gè)圖片網(wǎng)絡(luò)的任何局部。2)多個(gè)卷積核權(quán)值可以共享:一個(gè)卷積層可以有多個(gè)不同的卷積核。
卷積層涉及的參數(shù):滑動(dòng)窗口步長(zhǎng)s、輸入長(zhǎng)度H1、寬度W1,卷積核的長(zhǎng)為FH,卷積核的寬為FW,邊界填充圈數(shù)P。輸出特征的長(zhǎng)度H2,輸出特征的寬度W2。卷積核的計(jì)算公式為
卷積運(yùn)算就是關(guān)于矩陣的線性計(jì)算,多個(gè)卷積層堆疊得到的結(jié)果仍然是線性關(guān)系。為了使卷積網(wǎng)絡(luò)能適應(yīng)更加復(fù)雜的環(huán)境,通常利用激活函數(shù)加入一些非線性因素[4]。激活函數(shù)加入的位置如圖2中的activation function。

圖2 激活函數(shù)位置示意圖
常見的激活函數(shù)主要類型有Sigmoid函數(shù)、ReLU函數(shù)、Tanh函數(shù)。以Sigmoid函數(shù)為例,函數(shù)會(huì)自動(dòng)將輸出映射到(0,1)之間,比較適合處理二分類問題,但是Sigmoid函數(shù)會(huì)大大降低梯度下降法的速度。Sigmoid函數(shù)定義

其函數(shù)圖像如圖3所示:

圖3 Sigmoid函數(shù)圖像
池化層的主要作用之一是對(duì)卷積層提取的特征進(jìn)行下采樣操作,對(duì)一些重要的信息進(jìn)行聚類統(tǒng)計(jì),然后采用適當(dāng)?shù)姆绞綁嚎s特征數(shù)據(jù),降低特征圖的分辨率。通過池化層不僅可以減小模型維度,突出特征信息,還可以降低過擬合的風(fēng)險(xiǎn)。池化的方式有最大池化和平均值池化。以池化窗口大小為,步長(zhǎng)為2,輸出為的特征圖為例,最大池化就是在窗口掃描區(qū)域內(nèi)取最大值,池化操作如圖4所示。平均池化操作是指在掃描窗口中取一個(gè)平均值,池化操作如圖5所示。

圖4 最大池化操作過程

圖5 平均池化操作過程
全連接層結(jié)構(gòu)中每一個(gè)節(jié)點(diǎn)特征都和上一個(gè)節(jié)點(diǎn)特征相連接,然后依次把前面提取的特征綜合起來,即全連接層是將特征信息經(jīng)過加權(quán)處理轉(zhuǎn)化為特征向量,輸入到softmax分類器完成特征到輸出的映射。
隨著對(duì)卷積神經(jīng)不斷的深入研究,各式各樣的網(wǎng)絡(luò)模型層出不窮,不斷出現(xiàn)AlexNet、VGGNet、GoogLeNet、ResNet等卷積模型。雖然這些網(wǎng)絡(luò)模型結(jié)構(gòu)各不相同,但是其核心都是卷積神經(jīng)網(wǎng)絡(luò),本文主要介紹在缺陷檢測(cè)理論應(yīng)用較多的VGGNet和ResNet[5]。
VGGNet網(wǎng)絡(luò)層數(shù)多,但是結(jié)構(gòu)簡(jiǎn)單,所有的卷積都采用same卷積,利用ReLU函數(shù)給卷積結(jié)果加入非線性因素。VGGNet的主要特點(diǎn)簡(jiǎn)述如下:1)采用小卷積核,所有的卷積核都采用3×3卷積核。2)小池化核,VGGNet全部為2×2池化。3)通道層數(shù)更深,特征圖更寬,由于卷積核專注于擴(kuò)大通道數(shù)、池化專注于進(jìn)一步縮小寬和高,使得模型架構(gòu)上更深更寬的同時(shí),計(jì)算量增加的速度將會(huì)減慢。圖6為不同權(quán)重層搭建網(wǎng)絡(luò)構(gòu)架。

圖6 VGGNet不同權(quán)重網(wǎng)絡(luò)構(gòu)架
ResNet網(wǎng)絡(luò)又稱殘差神經(jīng)網(wǎng)絡(luò)。在之前的認(rèn)知中,卷積神經(jīng)網(wǎng)絡(luò)越深其表達(dá)能力就越強(qiáng),然而經(jīng)過大量實(shí)驗(yàn)驗(yàn)證,如果只是一味地增加網(wǎng)絡(luò)深度,不但不能提高模型訓(xùn)練的準(zhǔn)確程度,反而會(huì)使模型的效果退化。深層網(wǎng)絡(luò)在作表面缺陷檢測(cè)時(shí),56層網(wǎng)絡(luò)的訓(xùn)練集錯(cuò)誤率和驗(yàn)證集錯(cuò)誤率高于20層網(wǎng)絡(luò)的錯(cuò)誤率,具體結(jié)果如圖7所示。

圖7 不同網(wǎng)絡(luò)層數(shù)訓(xùn)練集和測(cè)試集錯(cuò)誤率
但是提出殘差神經(jīng)網(wǎng)絡(luò)以后,徹底打破了隨著網(wǎng)絡(luò)層數(shù)增加,訓(xùn)練效果會(huì)下降的趨勢(shì),即通過增加跳躍連接來控制是否需要增加該網(wǎng)絡(luò)層數(shù)。如果增加該網(wǎng)絡(luò)層數(shù),模型訓(xùn)練效果變差,則自動(dòng)舍棄該網(wǎng)絡(luò)結(jié)構(gòu)[6]。具體殘差塊示意圖如圖8所示。

圖8 殘差塊示意圖
本文介紹卷積神經(jīng)網(wǎng)絡(luò)的基本理論,如卷積層、池化層、全連接層,除此之外,介紹缺陷檢測(cè)理論常用的網(wǎng)絡(luò)架構(gòu),如VGGNet結(jié)構(gòu)和ResNet網(wǎng)絡(luò)結(jié)構(gòu)。卷積神經(jīng)網(wǎng)絡(luò)是一種圖像特征提取器,相對(duì)于傳統(tǒng)的圖像特征處理器來說具有較強(qiáng)的圖像特征表達(dá)能力和較高的魯棒特性,使用卷積神經(jīng)網(wǎng)絡(luò)可以很好的檢測(cè)出缺陷位置和種類。