王富豪,蔡吉飛,石莫言,殷彤,羅簡清
(北京印刷學(xué)院 機電工程學(xué)院,北京 102600)
缺陷檢測是非常重要的環(huán)節(jié),尤其在印刷、包裝、紡織等領(lǐng)域有著非常廣泛的應(yīng)用。包裝盒表面缺陷檢測具有非常重要的意義,如果包裝盒表面出現(xiàn)破損、污漬等缺陷,會極大影響產(chǎn)品的質(zhì)量。包裝盒表面缺陷檢測在機器視覺領(lǐng)域是一項比較重要的研究。由于缺陷的形式多樣,使用傳統(tǒng)的機器視覺OpenCV檢測準(zhǔn)確率不高。本文介紹另一種方法——卷積神經(jīng)網(wǎng)絡(luò)(CNN),其在進行缺陷檢測時檢測效果比較好。卷積神經(jīng)網(wǎng)絡(luò)被廣泛運用于人臉識別、表面缺陷檢測、圖像識別等領(lǐng)域[1]。卷積神經(jīng)網(wǎng)絡(luò)是目前表面缺陷檢測領(lǐng)域常用的一種分類學(xué)習(xí)方法,以卷積神經(jīng)網(wǎng)絡(luò)技術(shù)為代表的深度學(xué)習(xí)方法今后將會成為表面缺陷檢測領(lǐng)域的一項研究熱點。
卷積神經(jīng)網(wǎng)絡(luò)算法是機器學(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ù)來實現(xiàn)對該特征圖像信息進行其它一些非線性處理,并最終把該圖像特征信號傳播到下一層,然后再使用全連接層和激活函數(shù)來對系統(tǒng)進行圖像特征分類[2]。
隨著人工智能的不斷發(fā)展,人們對卷積神經(jīng)網(wǎng)絡(luò)的認識越來越深刻,卷積神經(jīng)網(wǎng)絡(luò)已逐漸開始被廣泛應(yīng)用在許多方面,諸如車輛自動智能安全駕駛、快速車牌識別系統(tǒng)、情感智能分析技術(shù)等研究領(lǐng)域。卷積神經(jīng)網(wǎng)絡(luò)理論在其網(wǎng)絡(luò)結(jié)構(gòu)層面上也主要遵循權(quán)值域的共享、局部域的連接以及時空上的降采樣三個重要的網(wǎng)絡(luò)特征。卷積神經(jīng)網(wǎng)絡(luò)系統(tǒng)中包含有卷積層、池化層、全連接層,三個結(jié)構(gòu)層之間必須要相互通過,在各個神經(jīng)節(jié)點之間才能進行深入逐層緊密的物理聯(lián)系,卷積層必須先進行神經(jīng)網(wǎng)絡(luò)初步功能結(jié)構(gòu)特征提取,然后從池化層提取分離出神經(jīng)系統(tǒng)各種主要結(jié)構(gòu)功能特征,全連接層是要把神經(jīng)系統(tǒng)中各個重要神經(jīng)部分特征逐一進行分析歸納與匯總,最后才能再進行分類預(yù)測或識別[3]。圖1為卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示 意圖。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
卷積層技術(shù)主要作用是利用線性卷積濾波運算對輸入的圖像矩陣中包含的圖像特征信息進行特征提取,卷積濾波運算中的基本過程之一為線性濾波,卷積核中的偏移值即為線性卷積網(wǎng)絡(luò)模型中的權(quán)重系數(shù),需要通過反向傳播等算法,反復(fù)迭代訓(xùn)練或更新濾波參數(shù)。卷積層是由若干個線性卷積核和偏移值所組成,卷積的核即為權(quán)值矩陣。卷積層的主要特征:1)網(wǎng)絡(luò)局部連接:卷積核每一次連接可作用于一個圖片網(wǎng)絡(luò)的任何局部。2)多個卷積核權(quán)值可以共享:一個卷積層可以有多個不同的卷積核。
卷積層涉及的參數(shù):滑動窗口步長s、輸入長度H1、寬度W1,卷積核的長為FH,卷積核的寬為FW,邊界填充圈數(shù)P。輸出特征的長度H2,輸出特征的寬度W2。卷積核的計算公式為
卷積運算就是關(guān)于矩陣的線性計算,多個卷積層堆疊得到的結(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ù)會自動將輸出映射到(0,1)之間,比較適合處理二分類問題,但是Sigmoid函數(shù)會大大降低梯度下降法的速度。Sigmoid函數(shù)定義
其函數(shù)圖像如圖3所示:
圖3 Sigmoid函數(shù)圖像
池化層的主要作用之一是對卷積層提取的特征進行下采樣操作,對一些重要的信息進行聚類統(tǒng)計,然后采用適當(dāng)?shù)姆绞綁嚎s特征數(shù)據(jù),降低特征圖的分辨率。通過池化層不僅可以減小模型維度,突出特征信息,還可以降低過擬合的風(fēng)險。池化的方式有最大池化和平均值池化。以池化窗口大小為,步長為2,輸出為的特征圖為例,最大池化就是在窗口掃描區(qū)域內(nèi)取最大值,池化操作如圖4所示。平均池化操作是指在掃描窗口中取一個平均值,池化操作如圖5所示。
圖4 最大池化操作過程
圖5 平均池化操作過程
全連接層結(jié)構(gòu)中每一個節(jié)點特征都和上一個節(jié)點特征相連接,然后依次把前面提取的特征綜合起來,即全連接層是將特征信息經(jīng)過加權(quán)處理轉(zhuǎn)化為特征向量,輸入到softmax分類器完成特征到輸出的映射。
隨著對卷積神經(jīng)不斷的深入研究,各式各樣的網(wǎng)絡(luò)模型層出不窮,不斷出現(xiàn)AlexNet、VGGNet、GoogLeNet、ResNet等卷積模型。雖然這些網(wǎng)絡(luò)模型結(jié)構(gòu)各不相同,但是其核心都是卷積神經(jīng)網(wǎng)絡(luò),本文主要介紹在缺陷檢測理論應(yīng)用較多的VGGNet和ResNet[5]。
VGGNet網(wǎng)絡(luò)層數(shù)多,但是結(jié)構(gòu)簡單,所有的卷積都采用same卷積,利用ReLU函數(shù)給卷積結(jié)果加入非線性因素。VGGNet的主要特點簡述如下:1)采用小卷積核,所有的卷積核都采用3×3卷積核。2)小池化核,VGGNet全部為2×2池化。3)通道層數(shù)更深,特征圖更寬,由于卷積核專注于擴大通道數(shù)、池化專注于進一步縮小寬和高,使得模型架構(gòu)上更深更寬的同時,計算量增加的速度將會減慢。圖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ò)。在之前的認知中,卷積神經(jīng)網(wǎng)絡(luò)越深其表達能力就越強,然而經(jīng)過大量實驗驗證,如果只是一味地增加網(wǎng)絡(luò)深度,不但不能提高模型訓(xùn)練的準(zhǔn)確程度,反而會使模型的效果退化。深層網(wǎng)絡(luò)在作表面缺陷檢測時,56層網(wǎng)絡(luò)的訓(xùn)練集錯誤率和驗證集錯誤率高于20層網(wǎng)絡(luò)的錯誤率,具體結(jié)果如圖7所示。
圖7 不同網(wǎng)絡(luò)層數(shù)訓(xùn)練集和測試集錯誤率
但是提出殘差神經(jīng)網(wǎng)絡(luò)以后,徹底打破了隨著網(wǎng)絡(luò)層數(shù)增加,訓(xùn)練效果會下降的趨勢,即通過增加跳躍連接來控制是否需要增加該網(wǎng)絡(luò)層數(shù)。如果增加該網(wǎng)絡(luò)層數(shù),模型訓(xùn)練效果變差,則自動舍棄該網(wǎng)絡(luò)結(jié)構(gòu)[6]。具體殘差塊示意圖如圖8所示。
圖8 殘差塊示意圖
本文介紹卷積神經(jīng)網(wǎng)絡(luò)的基本理論,如卷積層、池化層、全連接層,除此之外,介紹缺陷檢測理論常用的網(wǎng)絡(luò)架構(gòu),如VGGNet結(jié)構(gòu)和ResNet網(wǎng)絡(luò)結(jié)構(gòu)。卷積神經(jīng)網(wǎng)絡(luò)是一種圖像特征提取器,相對于傳統(tǒng)的圖像特征處理器來說具有較強的圖像特征表達能力和較高的魯棒特性,使用卷積神經(jīng)網(wǎng)絡(luò)可以很好的檢測出缺陷位置和種類。