李 東,梁家睿
(金發(fā)科技股份有限公司,廣州 510663)
口罩是生活中常見的空氣過濾用品。近年來,經(jīng)濟的高速發(fā)展導致某些地區(qū)空氣污染持續(xù)加重,與此同時,廣大人民的安全防護和健康意識也在不斷提高,對口罩的需求急速增長[1]。隨著2020年新型冠狀病毒疫情的爆發(fā),口罩市場需求迎來了爆發(fā)式增長,口罩行業(yè)潛力巨大。面對短期內(nèi)急速增長的口罩需求,目前我國很多中小企業(yè)未能廣泛普及和應(yīng)用自動化口罩生產(chǎn)設(shè)備,品質(zhì)模塊的任務(wù)往往由人工去判斷完成,導致生產(chǎn)效率較低,市場出現(xiàn)供不應(yīng)求、口罩短缺的現(xiàn)象,且由于人為主觀判斷標準不同、視覺疲勞等因素,較多不合格口罩產(chǎn)品流入市場??谡值淖詣踊a(chǎn)能充分滿足口罩生產(chǎn)過程中重復性、連續(xù)性、快速性等要求[2]。通過光學傳感器采集口罩圖像數(shù)據(jù),再利用機器視覺、人工智能等技術(shù)對口罩進行分析,可以提高產(chǎn)品檢測的精度以及減少不合格品流出的風險,滿足客戶對產(chǎn)品高質(zhì)量的要求,與此同時還能減員增效、提高企業(yè)的競爭力。
機器視覺檢測技術(shù)具有不接觸、不干擾、光譜響應(yīng)寬、長時間工作、效率高等優(yōu)點。主要是通過光學照明元件搭配圖像采集硬件獲得圖像數(shù)據(jù),然后通過機器視覺算法進行處理,最后根據(jù)處理結(jié)果對機器發(fā)出執(zhí)行指令,達到自動檢測、執(zhí)行的目的。
缺陷檢測可以利用超聲波、激光、工業(yè)光源等硬件去完成,其中工業(yè)光源屬于可見光,主要對表面的缺陷進行檢測,通過相機傳感器和計算機獲取圖像信號,再通過機器視覺算法完成缺陷檢測。在工業(yè)檢測領(lǐng)域,大致可以分為質(zhì)量檢測、產(chǎn)品分類、外包裝條碼識別3大類。其中質(zhì)量檢測也可以根據(jù)使用相機的種類不同,分為線掃描檢測和面陣檢測,其包含了尺寸精度的測量、裝配精度檢測、板型材料表面缺陷檢測、小型產(chǎn)品表面缺陷檢測等[3]。
現(xiàn)在市面上已存在口罩表面缺陷檢測的產(chǎn)品,但是效果都達不到生產(chǎn)現(xiàn)場的品質(zhì)管控要求,如某公司開發(fā)的口罩外觀檢測設(shè)備(圖1 a),口罩缺陷的召回率只有93%,速度也只能達到50 pic/min,遠遠不能滿足工業(yè)生產(chǎn)的要求;另外某公司開發(fā)的口罩缺陷檢測設(shè)備(圖1 b),速度能達到100 pic/min,但是只能對耳帶以及鼻梁條進行檢測,檢測項太少,導致大量不良品還需要人工檢測,對生產(chǎn)的實際應(yīng)用價值也不是很大。
圖1 口罩缺陷視覺檢測系統(tǒng)Fig.1 Vision inspection system for mask defects
本文提出了一種基于OpenCV的圖像預處理和改進Vgg-16的深度學習模型結(jié)合的口罩缺陷檢測算法,并在實驗室和實際生產(chǎn)中進行了測試和驗證,檢測速度達到100 pic/min,能匹配高速平面口罩機的自動化生產(chǎn),精確率和召回率能滿足生產(chǎn)品質(zhì)管控的要求。
中國國家標準GB6223-86UDC614.894、歐盟EN149標準、日本MOL驗證標準等都對口罩的制作材料、質(zhì)量標準等做了明確的規(guī)定和要求??谡值闹谱鞑牧现饕袩o紡布、鼻梁條、耳帶、濾紙。根據(jù)品質(zhì)部門反饋的其生產(chǎn)的口罩有關(guān)情況,了解到口罩的主要缺陷一般有鼻梁條缺失、鼻梁條短小、耳帶斷裂、耳帶結(jié)、耳帶缺失、焊點偏移等。部分口罩典型缺陷樣本如圖2所示。
圖2 部分典型口罩常見缺陷Fig.2 The common typical defects of mask
口罩自動在線檢測面臨以下難點:(1)無紡布、熔噴布密度不一致導致面板灰度值波動較大;(2)口罩會粘黏、翻邊到達檢測窗口,導致無法提取口罩面板;(3)雜質(zhì)或口罩會殘留在檢測窗口,導致誤判。這些因素增加了口罩缺陷檢測的困難。
口罩缺陷檢測主要分為以下幾個步驟:(1)連續(xù)采集圖像,判斷圖像是否為完整口罩;(2)對整幅圖像進行預處理;(3)確定口罩在圖像中的位置,對口罩面板進行提??;(4)對圖像進行仿射變換,校正口罩的位置以及角度;(5)提取口罩耳帶以及相關(guān)缺陷進行檢測;(6)定位鼻梁條和焊點;(7)對鼻梁條缺陷進行檢測;(8)對焊點進行檢測;(9)輸出結(jié)果和控制信息??谡秩毕葑詣釉诰€檢測算法的流程如圖3所示。
圖3 口罩缺陷自動在線檢測算法流程Fig.3 The online inspection algorithm flow chart of mask detection
在圖像算法分析的過程中,對輸入的圖像信號進行特征抽取之前需要進行處理,這個處理的過程就叫做預處理。在工業(yè)現(xiàn)場的使用過程中,往往會由于環(huán)境因素、相機傳感器獲取信號的穩(wěn)定性,導致對比度、噪點等波動很大。另外,相機傳感器的焦距、曝光以及設(shè)備傳動過程中的不確定性會導致目標在成像的過程中的姿態(tài)以及特征的不確定性。為了消除噪聲、濾除干擾、增強特征以及增加特征抽取的穩(wěn)定性以及可靠性,預處理起了至關(guān)重要的作用。
口罩檢測算法中的預處理主要包括了噪點處理、圖像增強兩大部分。
1.2.1 噪點處理
噪聲會對后續(xù)的邊緣分割、ROI提取、閾值分割以及特征識別造成干擾,加大算法的處理難度以及降低識別的準確率,所以在進行后續(xù)算法之前對圖片噪點進行處理是很重要的一個步驟。圖像信號經(jīng)相機傳感器成像的過程中會產(chǎn)生多種噪聲,包含高斯噪聲、泊松噪聲、椒鹽噪聲等。通過濾波的方式能夠去除噪聲,一般的濾波方法又分為均值濾波、高斯濾波、中值濾波、自適應(yīng)濾波、低通濾波等[4]。
均值濾波在消除噪點的同時會削弱圖像的特征量,會加大后續(xù)耳帶、鼻梁、焊點的抽取難度,它的濾波特性是線性的,這里不做考慮。對于高斯濾波,由于噪點周圍都為白光背景板,不服從高斯分布,用高斯濾波器去處理的話,不能完全消除噪點。一般生產(chǎn)現(xiàn)場的噪點都是泊松噪聲,在背景板上隨機出現(xiàn)。用中值濾波器去處理的話,由于背景周圍灰度值都是255,取掩膜中值能夠有效濾除。最后選擇核函數(shù)為5×5的中值濾波器來去除噪點的干擾,在保證口罩特征的同時能去除噪點干擾,濾波前后圖像對比如圖4所示。
圖4 中值濾波前后對比Fig.4 The before and after comparison of median filter
1.2.2 圖像增強
圖像增強分為基于空域的算法和基于頻域的算法。其原理一般是對于關(guān)注的Region進行加強,對于不關(guān)注的Region進行削弱。
在本文中,主要解決由于機臺間光源亮度不一、相機曝光不一致以及外界環(huán)境干擾引起的后續(xù)特征提取問題,而頻域分析主要用于表面紋理的提取,復雜背景中的濾波處理,因此采取了空域中直方圖均衡化方法來增強圖像[5]。
灰度直方圖可以表示為:
式中:rk為第k個灰度級;nk為第k級灰度的像素數(shù);N為一幅圖像的像素總數(shù)。
首先,灰度直方圖可以近似看作為灰度概率密度函數(shù),它是衡量圖像特征的一種重要表征方式。如一個口罩圖像的灰度級分布通過直方圖均化,能讓其灰度直方圖包含的灰度級數(shù)增加,灰度級數(shù)的增加以及均化能夠增加圖像的熵。熵在一定程度上代表了圖像所包含的信息,圖像的信息量變多之后能夠減少接下來特征抽取算法的難度,提高算法的可靠性。其原理主要是應(yīng)用概率論的知識對灰度直方圖進行歸一化處理,把圖像對比度增大,在這里就不多做闡述。主要實現(xiàn)效果如圖5所示。
圖5 直方圖均衡化前后的口罩圖片及灰度直方圖Fig.5 The mask image before and after histogram equalization and gray histogram
通過觀察耳帶和口罩本體的灰度差,由之前的60上升到90,更利于口罩耳帶的提取。
1.3.1 口罩邊緣提取
常用的邊緣檢測算法有:Roberts交叉算子、Prewitt算子、Sobel算子、Canny算子等。Robert算子定位比較精確,但由于不包括平滑,所以對于噪聲比較敏感。Prewitt算子和Sobel算子都是一階的微分算子,而前者是平均濾波,后者是加權(quán)平均濾波且檢測的圖像邊緣可能大于2個像素[6]。這兩者對灰度漸變低噪聲的圖像有較好的檢測效果,但是對于混合多復雜噪聲的圖像,處理效果不理想。Canny算子相對于Roberts算子、Sobel算子、Prewitt算子,提取邊緣較完整,定位和效果較好,本文使用Canny算子對進行區(qū)域分割后的口罩圖像進行邊緣檢測[7]。
Canny算子具有以下特點:首先,它能夠較好地區(qū)分出邊緣和非邊緣,具有良好的信噪比;其次,它能夠很好地定位到圖像邊緣的中心;最后,它對于邊緣檢測中的非極大值具有抑制的作用[7]。
本文在算法開發(fā)的過程中,使用Opencv的cv2.canny算子,同時使用5×5的高斯濾波核在進行邊緣檢測之前進行濾波處理,能夠有效抽取到口罩的邊緣,效果如圖6所示。
圖6 Canny算子邊緣檢測結(jié)果Fig.6 The image of canny operator edge detection
1.3.2 圖像幾何規(guī)范化
由于口罩的位置及姿態(tài)分布于整個視野的不同區(qū)域,不利于后續(xù)的鼻梁條及焊點定位。在提取到口罩的面板之后,通過Opencv的cv2.minAreaRect獲得口罩面板最小外接矩形的中心點坐標(x,y),以及4個頂點坐標、旋轉(zhuǎn)角度。再通過cv2.getRotationMatrix2D算子構(gòu)建旋轉(zhuǎn)平移矩陣,通過cv2.wrapAffine算子可以對圖像的位置、大小、角度進行轉(zhuǎn)換,表達式為:
式中:(u,v)表示輸入圖像中像素的坐標;(x,y)表示輸出圖像中像素的坐標。
將上式展開可得:
平移變換就是給圖像中的所有點的坐標都加上Δu和Δv,其變換表達式為:
將圖像中的所有點相對于坐標原點逆時針旋轉(zhuǎn)θ角的變換表達式為:
縮放變換即是將圖像按給定的比例r放大或縮小,當r>1時圖像被放大,當0<r<1時圖像被縮小,其變換表達式為:
本文在對口罩圖像特征提取之前,首先對所有的圖像進行幾何規(guī)范化,將口罩的位姿轉(zhuǎn)正,結(jié)果如圖7所示。
圖7 幾何規(guī)范化前后的口罩圖像Fig.7 The image before and after geometric normalization
1.4.1 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)包含了多個隱含層、池化層,隱含層在這里是以卷積層為主。卷積神經(jīng)網(wǎng)絡(luò)具有兩個特點,首先,輸入圖像經(jīng)過卷積層后會丟失掉部分信息,只有部分特征會被提取,因為每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,將這些感受不同局部的神經(jīng)元綜合起來可得到全局信息,和全連接層相比,需要訓練的神經(jīng)元數(shù)量、連接數(shù)、參數(shù)會大大減少。另外,對圖像使用同樣的卷積核進行卷積操作,其主要的能力就是能檢測到不同位置的同類型特征,通過在高低層使用不同的卷積核就能提取到不同的特征。
1.4.2 神經(jīng)網(wǎng)絡(luò)的訓練
神經(jīng)網(wǎng)絡(luò)的訓練過程可以看作是擬合優(yōu)化多元線性函數(shù)的回歸模型,預測值(y_predict)和實際值(y_real)的均方誤差(Mean Square Error,MSE)作為損失函數(shù)J(θ),神經(jīng)網(wǎng)絡(luò)的目標是最小化目標函數(shù)J(θ),求得使J(θ)最小情況下的參數(shù)θ。對于目標函數(shù)J(θ)求偏導數(shù),為正的話說明目標函數(shù)是單調(diào)遞增的,那么對于θ的迭代方向應(yīng)該是減小。為負的話說明目標函數(shù)是單調(diào)遞減的,那么對于θ的迭代方向應(yīng)該是增大。訓練的學習速率設(shè)為α,參數(shù)θ優(yōu)化迭代公式如下:
梯度下降算法對凸優(yōu)化問題能保證全局收斂并且收斂速度很快,但是神經(jīng)網(wǎng)絡(luò)的優(yōu)化問題一般是非凸優(yōu)化問題,使用常規(guī)的梯度下降理論去處理的話,往往會導致局部最優(yōu)。因此,要對常規(guī)的梯度下降算法進行優(yōu)化改善,才能處理神經(jīng)網(wǎng)絡(luò)問題。根據(jù)每次更新模型參數(shù)使用的樣本數(shù)量大小,梯度下降算法有3種實現(xiàn)框架[8]。
(1)批量梯度下降算法(Batch Gradient Descent,BGD),BGD在小批量、小尺寸圖像樣本的場景表現(xiàn)效果較好,當樣本量以及圖像尺寸上去之后,會導致網(wǎng)絡(luò)的參數(shù)增加,對服務(wù)器的性能要求較高,計算速度緩慢。
(2)隨機梯度下降算法(Stochastic Gradient Descent,SGD),SGD相比BGD,它采用了每個迭代的一個實例作為計算MSE,相比BGD,速度會大幅提升,缺點是最后的MSE曲線會反復震蕩,不是很穩(wěn)定。
(3)小批量梯度下降算法(Mini-Batch Gradient Descent,MBGD),MBGD是BGD和SGD的一個折中,每次迭代選擇隨機個數(shù)的實例求MSE,穩(wěn)定性和速度都有保證,目前是最受歡迎、使用面最廣的一種梯度下降框架。本文中選擇MBGD作為梯度下降算法框架。
1.4.3 神經(jīng)網(wǎng)絡(luò)模型的選擇
常見的神經(jīng)網(wǎng)絡(luò)模型有AlexNet、Vgg、ResNet,AlexNet網(wǎng)絡(luò)參數(shù)過多而且分類效果相對現(xiàn)在的分類模型來說不是很好[9];Vgg網(wǎng)絡(luò)全部使用的是3×3卷積核,增加了非線性,提高了分類能力[10];ResNet性能提高了很多,但是模型參數(shù)過多[11]。綜上所述,本文選擇Vgg-16作為神經(jīng)網(wǎng)絡(luò)模型。
VGG-16網(wǎng)絡(luò)包含了13個卷積層和3個全連接層以及5個最大池化層和1個Sofamax分類層。如圖8所示。
圖8 Vgg-16模型網(wǎng)絡(luò)結(jié)構(gòu)Fig.8 The Vgg-16 model network structure
其中卷積核的大小為3×3×3,Padding和步長Strike根據(jù)需求設(shè)定。
由于本實驗為2分類問題,為了減少模型參數(shù)數(shù)量,把Vgg-16最后3個全連接層去掉,自己構(gòu)建一個Dense_softmax層,大小為512×2,那么最終輸出為(batch_size,2),滿足2分類需求,模型參數(shù)以及網(wǎng)絡(luò)結(jié)構(gòu)如圖9所示。
圖9 Vgg-16模型架構(gòu)Fig.9 The Vgg-16 model framework
通過Numpy的Reshape函數(shù)改變輸入焊點、鼻梁條樣本大小為50×50×3,標簽設(shè)置為[0,1],其中1為合格,0為不合格,其中訓練集、驗證集、測試集的比例為7∶2∶1。樣本數(shù)據(jù)如圖10所示。
圖10 樣本數(shù)據(jù)Fig.10 The data sample
1.4.4 實驗結(jié)果分析
起初實驗的過程中,通過設(shè)置迭代次數(shù)和每個迭代的步長來優(yōu)化模型的訓練結(jié)果,但是效果不是很理想,訓練過程中會產(chǎn)生過擬合的現(xiàn)象,如圖11所示。
圖11 訓練集和驗證集準確率和損失函數(shù)趨勢圖Fig.11 The accuracy and loss trend chart of train dataset and verification dataset
可以發(fā)現(xiàn)大概在60個迭代左右,模型達到最優(yōu)解,這時損失函數(shù)趨近于0,準確率趨近于1,在之后的迭代中,發(fā)現(xiàn)過擬合現(xiàn)場。為了得到好的模型,這里利用keras.callbacks.EarlyStopping函數(shù)可以設(shè)置損失函數(shù)、準確率的閾值,當幾個循環(huán)的變化量小于這個閾值時,可以提前停止循環(huán),從而得到了更精確的模型。
通過在線測試5 000個樣本5次,分別得到焊點和鼻梁條合格品的精確率和召回率,如圖12所示。
圖12 合格品實驗結(jié)果Fig.12 The experimental result of the OK sample
其中精確率和召回率的計算公式為:
式中:TP為TURE POSITIVE的簡寫,表示的是正樣本中多少是正確的;FP為FALSE POSITIVE的簡寫,表示的是正樣本中多少是錯誤的,精確率衡量的是檢測設(shè)備的漏檢率;NF為NEGATIVE FALSE的簡寫,表示的是負樣本中多少是錯誤的,召回率衡量的是檢測設(shè)備的誤判率。
由實驗結(jié)果可得,模型對鼻梁條的檢測效果要比焊點要好,這是因為焊點的特征相比鼻梁條不易提取,如果想要得到更好的結(jié)果,還需對模型的結(jié)構(gòu)以及卷積核進行優(yōu)化,以得到更高級的特征結(jié)構(gòu)和更好的精確率和召回率。
本文研究的算法已在生產(chǎn)線現(xiàn)場大規(guī)模使用,并且有相應(yīng)的實際數(shù)據(jù)作為算法效果和可靠性的分析依據(jù),如圖13所示。
圖13 平面口罩缺陷在線檢測設(shè)備統(tǒng)計結(jié)果Fig.13 statistics results of on-line detection device for flat masks defect
從總計15天,每班大于100萬個口罩的大規(guī)模生產(chǎn)數(shù)據(jù)結(jié)果可以看出,口罩在線檢測設(shè)備的合格品誤判率最大為1.6%,最小為0.4%,能滿足生產(chǎn)品質(zhì)管控合格品誤判率2%以下的管控要求。與此同時也驗證了本文提出的口罩缺陷檢測算法的魯棒性和可靠性。
隨著科技的發(fā)展,工業(yè)生產(chǎn)的過程中不斷研發(fā)或引入新型的自動化、智能化設(shè)備來提高產(chǎn)線的自動化率,減少人工的投入?,F(xiàn)目前對于口罩外觀的光學檢測系統(tǒng),大部分廠家還是只運用了常規(guī)的機器視覺處理算法如:OpenCV、Halcon等,這不能滿足復雜多變的工業(yè)現(xiàn)場要求。本文提出了一種基于OpenCV的圖像處理和改進Vgg-16的深度學習模型結(jié)合的口罩缺陷檢測算法。通過OpenCV進行預處理、特征點的定位、分割,用不同的模型去針對焊點、鼻梁條的檢測,相比口罩整體作為深度學習模型的輸入樣本,能夠更好地提取出特征。針對基于深度學習的口罩缺陷檢測算法,能夠不斷迭代,提高檢測系統(tǒng)的魯棒性和準確率,具有廣闊的研究場景。