郜 明,任德均,胡云起,付 磊,邱 呂
(四川大學(xué)機(jī)械工程學(xué)院,成都 610065)
(*通信作者電子郵箱rdjw@163.com)
安瓿瓶的包裝是使用安瓿瓶作為容器的醫(yī)用制劑流向市場(chǎng)之前的最后一道工序,對(duì)于安瓿瓶包裝質(zhì)量的檢測(cè),目前國(guó)內(nèi)仍以人工檢測(cè)為主,在生產(chǎn)線上設(shè)置前后兩個(gè)人工檢測(cè)工位:工位1檢查安瓿瓶是否貼標(biāo),是否漏裝;工位2使用稱重法復(fù)檢。人工檢測(cè)存在速度慢、易受主觀因素影響導(dǎo)致準(zhǔn)確率低等問題。
相較于人工檢測(cè),機(jī)器視覺在快速性和準(zhǔn)確性等方面有極大優(yōu)勢(shì),因此被越來越多應(yīng)用于藥品包裝檢測(cè)行業(yè)。美國(guó)Banner 公司[1]在智能相機(jī)上采用連通域分析(Blob Analysis)的方法檢測(cè)特定顏色安瓿瓶包裝時(shí)的缺瓶和破損;方文星等[2]使用快速魯棒特征(Speeded Up Robust Feature,SURF)配合支持向量機(jī)(Support Vector Machine,SVM)檢測(cè)鋁塑泡罩藥品的包裝缺陷;國(guó)外學(xué)者Qasim 等[3]使用人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)對(duì)塑料包裝藥品的包裝表面孔洞及內(nèi)部藥片缺陷進(jìn)行檢測(cè)。這些基于Blob 分析或使用手工特征組合分類器(如SVM 或ANN)的方法應(yīng)用于安瓿瓶包裝質(zhì)量檢測(cè)時(shí)存在以下問題:1)安瓿瓶制劑規(guī)格眾多,藥液及標(biāo)簽顏色不盡相同,Blob分析難以處理無色瓶體,手工設(shè)計(jì)特征也難以完全通用;2)在面對(duì)工業(yè)現(xiàn)場(chǎng)存在的瓶?jī)?nèi)藥液晃動(dòng)或玻瓶反光等復(fù)雜環(huán)境下成像時(shí),上述方法的魯棒性差。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)近年來取得了極大發(fā)展,尤其是在各種圖像分類數(shù)據(jù)集上驗(yàn)證了其強(qiáng)大的特征提取能力[4]。一般高性能網(wǎng)絡(luò)的部署會(huì)需要高昂的硬件成本,因此使用減少了大量網(wǎng)絡(luò)參數(shù)同時(shí)保持了一定精度的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò),可以極大地降低對(duì)硬件的要求,使其能在嵌入式平臺(tái)運(yùn)行,更適合工業(yè)環(huán)境中的低成本部署。國(guó)內(nèi)已有相關(guān)研究,如:姚明海等[5]提出一種輕量級(jí)低延時(shí)的卷積神經(jīng)網(wǎng)絡(luò)MagnetNet,用來實(shí)時(shí)檢測(cè)磁片表面缺陷;張琪等[6]改進(jìn)了MobileNet對(duì)肝部病理組織切片進(jìn)行分類。
Google 在2017 年提出了MobileNet 系列網(wǎng)絡(luò)的第一個(gè)版本——MobileNetv1[7],設(shè)計(jì)為面向移動(dòng)端的輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)模型,提出深度可分離卷積(depthwise separable convolution),這種卷積將傳統(tǒng)卷積的運(yùn)算的兩步分離開來,先分通道執(zhí)行按位相乘的計(jì)算,再使用1×1 卷積核進(jìn)行傳統(tǒng)卷積運(yùn)算,這種卷積較傳統(tǒng)卷積精度損失不多,但是參數(shù)量大幅減 少。MobileNetv2[8]是Google 于2018 年提出的,相較于MobileNetv1 提出了兩個(gè)方面的改進(jìn):一是使用線性瓶頸(Linear Bottlenecks),如圖1 中所示的Linear 層。由于MobileNetv1 結(jié)構(gòu)中低維輸出層后面的激活函數(shù)ReLU(Rectified Linear Unit)會(huì)導(dǎo)致信息損失[8],因此MobileNetv2去除低維輸出層后的非線性激活函數(shù),使用線性激活函數(shù)來保證模型的表達(dá)能力。二是使用倒殘差模塊(Inverted residuals),如圖1(a)所示。受殘差網(wǎng)絡(luò)(Residential Networking,ResNet)[9]思想影響,MobileNetv2 中滑動(dòng)步長(zhǎng)Stride為1 的卷積塊中使用了旁路短連接,目的是復(fù)用低維特征,緩解特征退化情況。與ResNet 中維度先縮減后擴(kuò)增相反的是其先通過擴(kuò)張層(Expansion)升維,然后再降維,旁路連接到維度縮減后的特征圖?;谶@兩個(gè)改進(jìn)點(diǎn),相較于前一版本,MobileNetv2 在參數(shù)量減少的情況下,準(zhǔn)確度反而提高了,且推理延遲減少30%[8],所以它是一個(gè)表現(xiàn)良好的輕量級(jí)通用分類模型,具備改進(jìn)潛力來更加適合特定應(yīng)用場(chǎng)景。
圖1 MobileNetv2的卷積塊結(jié)構(gòu)Fig.1 Convolution block structure of MobileNetv2
為了滿足本文檢測(cè)任務(wù)以及在生產(chǎn)環(huán)境下實(shí)現(xiàn)低成本部署、提高生產(chǎn)效率,本文結(jié)合傳統(tǒng)的圖像處理方法,參考MobileNet 系列網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)了一種安瓿瓶包裝缺陷檢測(cè)算法,算法總體流程如圖2 所示。首先,對(duì)工業(yè)相機(jī)采集的原始圖片進(jìn)行圖像預(yù)處理,包括閾值分割、位置校正以及感興趣區(qū)域(Region Of Interest,ROI)裁剪,得到單支安瓿瓶區(qū)域圖像;然后再將單支安瓿瓶區(qū)域圖像依次送入包裝缺陷分類網(wǎng)絡(luò);最后輸出每支安瓿瓶區(qū)域圖像的類別。
圖2 安瓿瓶包裝質(zhì)量檢測(cè)算法流程Fig.2 Flowchart of ampoule packaging quality inspection algorithm
首先對(duì)獲取的彩色圖像進(jìn)行灰度化處理,即圖像中每一個(gè)像素在RGB 三個(gè)通道的分量值均相等?;叶然幚砗?,為減少計(jì)算量,根據(jù)相機(jī)使用外觸發(fā)拍照及安瓿瓶吸塑托盤在圖像中的區(qū)域相對(duì)穩(wěn)定的特點(diǎn),劃定感興趣區(qū)域(ROI)裁剪原始圖像,得到感興趣區(qū)域圖像f(x,y),如圖3(a)所示。灰度圖像中吸塑托盤與背景中的一部分擋塊灰度值接近,直接使用全局閾值不能有效分離出托盤,圖3(b)是直接使用最大類間差分法(Otsu)的結(jié)果。觀察ROI 圖像可知吸塑托盤盒背景的邊緣區(qū)分明顯,因此可以利用邊緣信息輔助Otsu 進(jìn)行閾值分割[10]。
圖3 圖像閾值處理過程Fig.3 Image threshold processing
本文首先對(duì)ROI 圖像使用高斯濾波器進(jìn)行平滑處理,然后使用拉普拉斯算子計(jì)算圖像邊緣[11]485,再使用拉普拉斯圖像絕對(duì)值中的99%來指定閾值非負(fù)T對(duì)拉普拉斯圖像進(jìn)行閾值處理,得到一個(gè)稀疏的像素集合gt(x,y),過程可表示為:
其中:R(x,y)為過濾器模板在其覆蓋區(qū)域中心處的響應(yīng)。
再將ROI圖像f(x,y)與gt(x,y)相乘得到g(x,y):
根據(jù)g(x,y)非零像素的直方圖,使用Otsu 方法對(duì)ROI 圖像進(jìn)行二值化[12],結(jié)果如圖3(c)所示,雖然灰度相近的一部分干擾區(qū)域也被分割出來,但是由于邊緣信息的加入,使得結(jié)果中吸塑托盤與干擾區(qū)域被分割成相互獨(dú)立區(qū)域,對(duì)閾值結(jié)果進(jìn)行連通域操作,再進(jìn)行區(qū)域面積篩選,就能得到完整吸塑托盤分割圖像I(x,y),如圖3(d)所示。
吸塑托盤在圖中存在傾斜角度時(shí),影響后續(xù)的安瓿瓶區(qū)域裁剪,因此需要對(duì)圖片中的安瓿瓶區(qū)域進(jìn)行校正。首先使用形態(tài)學(xué)重建的方法對(duì)吸塑托盤分割二值圖像I(x,y)進(jìn)行內(nèi)部孔洞填充[11]425,然后創(chuàng)建吸塑托盤區(qū)域的最小外接矩形如圖4(a)所示,寬、高、傾斜角度以及中心點(diǎn)坐標(biāo)如圖4(b)所示。
圖4 最小外接矩形及其幾何參數(shù)Fig.4 Minimum bounding rectangle and its geometric parameters
根據(jù)吸塑托盤區(qū)域的最小外接矩形的中心點(diǎn)(x,y)以及傾斜角度θ,使用仿射變換校正原圖像以及外接矩形,使得最小外接矩形中心點(diǎn)(x,y)與圖片中心點(diǎn)(Xw/2,Yh/2)重合,角度旋轉(zhuǎn)至0°,仿射變換過程如下:
其中:Tx=Xw/2-X,Ty=Yh/2-Y;t1=(x,y)為變換后圖像中像素的坐標(biāo),t2=(v,w)為原圖像中像素的坐標(biāo)。仿射變換后的圖像使用校正后的最小外接矩形裁剪,得到吸塑托盤區(qū)域圖像,如圖5(a)所示;再根據(jù)安瓿瓶的支數(shù)采用固定ROI裁剪出每支安瓿瓶區(qū)域圖像,如圖5(b)所示。
圖5 圖像的校正及裁剪Fig.5 Correction and cutting of image
本文以MobileNet系列網(wǎng)絡(luò)為基礎(chǔ)進(jìn)行改進(jìn),安瓿瓶包裝缺陷檢測(cè)任務(wù)中圖像經(jīng)過裁剪分割后的安瓿瓶區(qū)域圖像內(nèi)容相對(duì)單一,且圖像類別較少,無需過深網(wǎng)絡(luò)提取特征,因此可以適當(dāng)刪減網(wǎng)絡(luò)層數(shù),使用連續(xù)下采樣;由于安瓿瓶屬于高寬比較大的物體,因此設(shè)計(jì)網(wǎng)絡(luò)輸入圖片尺寸為56×224的彩色圖像;原始MobileNetv2 網(wǎng)絡(luò)在最后一層卷積后面使用全局平均池化(Global Average Pooling),由于本文網(wǎng)絡(luò)是矩形圖像輸入,最后一層卷積產(chǎn)生矩形特征圖,因此更改池化層為自適應(yīng)平均池化層(Adaptive Average Pooling)[13]。
網(wǎng)絡(luò)具體結(jié)構(gòu)如圖6 所示:由兩個(gè)全卷積層(Fully Convolutional,F(xiàn)C)、五個(gè)卷積塊、一個(gè)自適應(yīng)平均池化層、一個(gè)全連接層及一個(gè)Softmax分類函數(shù)組成。
圖6 缺陷分類網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Defect classification network structure
第一層是有32 個(gè)3×3 的卷積核的全卷積層,Stride=2,輸出為32個(gè)28×112的特征圖;第二層至第六層依次是五個(gè)卷積塊(Block),Block 內(nèi)部擴(kuò)張倍數(shù)均取6,其中Block1~Block4 設(shè)置滑動(dòng)步長(zhǎng)為2,連續(xù)進(jìn)行下采樣,每個(gè)Block 輸出特征圖依次為:14×56×64,7×28×64,4×14×96,2×7×96,Block5 設(shè)置滑動(dòng)步長(zhǎng)為1,輸出特征圖為2×7×160;第七層是一個(gè)有512 個(gè)1×1卷積核的全卷積層,用來進(jìn)行特征升維;第八層是自適應(yīng)平均池化層,保持特征圖通道數(shù)不變,改變特征圖尺寸為1×1;第九層是全連接層,后接Softmax 層進(jìn)行分類。在除了平均池化層之外的每層網(wǎng)絡(luò)后都添加了批量歸一化(Batch Normalization)層[14],用來加速訓(xùn)練以及提高模型泛化能力,Batch Normalization 層后使用ReLU6 激活函數(shù)[15],并在全連接層后使用dropout層[16]來防止網(wǎng)絡(luò)訓(xùn)練時(shí)發(fā)生過擬合。
實(shí)驗(yàn)數(shù)據(jù)來源于安瓿瓶包裝生產(chǎn)線,使用工業(yè)相機(jī)采集圖像,經(jīng)本文所述預(yù)處理算法處理后構(gòu)建安瓿瓶包裝缺陷檢測(cè)任務(wù)數(shù)據(jù)集。數(shù)據(jù)集所用圖像來自2 ml、4 ml 和6 ml 三種規(guī)格的安瓿瓶,瓶體顏色有琥珀紅、棕色、無色透明三種,一共13 000張安瓿瓶區(qū)域圖片。按照缺陷種類將數(shù)據(jù)集圖片分為三個(gè)類別:合格、缺標(biāo)以及缺支,部分樣本如圖7所示。
圖7 數(shù)據(jù)集樣本Fig.7 Samples in dataset
使用深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類任務(wù)需要大量數(shù)據(jù),且各類別樣本數(shù)量應(yīng)當(dāng)均衡,但是在生產(chǎn)現(xiàn)場(chǎng),合格以及缺支類別的圖像易獲取,缺標(biāo)的產(chǎn)品數(shù)量較少,因此較難獲取,原始數(shù)據(jù)集中三個(gè)類別樣本數(shù)量分布如圖8(a)所示。因此針對(duì)本文任務(wù)下可能出現(xiàn)的產(chǎn)品方向不定、安瓿瓶及托盤表面反光、標(biāo)簽貼紙顏色不同等情況,采用隨機(jī)翻轉(zhuǎn)、鏡像、隨機(jī)高亮斑點(diǎn)、顏色增強(qiáng)、縮放等方法擴(kuò)充數(shù)據(jù)集至19 500 張,各類別樣本數(shù)量分布如圖8(b)所示。在訓(xùn)練數(shù)據(jù)中每個(gè)類別樣本隨機(jī)選取80%作為訓(xùn)練集,20%作為驗(yàn)證集,另選取9 000 支安瓿瓶區(qū)域圖像作為測(cè)試集,其中每個(gè)類別數(shù)量相等,測(cè)試集不參與訓(xùn)練。
圖8 數(shù)據(jù)集樣本分布Fig.8 Dataset sample distribution
使用構(gòu)建本文數(shù)據(jù)集的原始圖像共4 400 張(五支裝)測(cè)試預(yù)處理算法,由于閾值分割結(jié)果決定了后續(xù)的傾斜校正以及ROI 裁剪的準(zhǔn)確性,因此本文設(shè)置兩個(gè)對(duì)照組,分別使用Otsu 以及全局雙閾值作為預(yù)處理算法中的閾值方法,實(shí)驗(yàn)結(jié)果如表1所示。
表1 不同閾值方法下預(yù)處理算法性能Tab.1 Performance of preprocessing algorithm under different threshold methods
使用全局雙閾值方法的預(yù)處理算法執(zhí)行速度最快,平均耗時(shí)8.34 ms,準(zhǔn)確率為97.00%,影響準(zhǔn)確率主要因素為亮度波動(dòng);使用Otsu 作為閾值方法的預(yù)處理算法準(zhǔn)確率最低,為92.5%,影響準(zhǔn)確率主要因素為托盤與灰度相近的擋塊緊貼時(shí)難以分割。邊緣輔助閾值具有良好的適應(yīng)性,預(yù)處理算法準(zhǔn)確率為100%,平均耗時(shí)為15 ms,綜合性能更優(yōu)。
在上述構(gòu)建的安瓿瓶包裝缺陷分類數(shù)據(jù)集上對(duì)本文提出的安瓿瓶包裝缺陷分類網(wǎng)絡(luò)(LocalNet)進(jìn)行訓(xùn)練和測(cè)試,在具體實(shí)驗(yàn)過程中,分別使用到了核心配置為:CPU Xeon Gold 6148,GPU NVIDIA Tesla V100 的計(jì)算機(jī)以及NVIDIA 公司推出的Jetson Nano小型深度學(xué)習(xí)模塊,以及Pytorch框架。
為比較本文網(wǎng)絡(luò)與參考網(wǎng)絡(luò)的性能,設(shè)置兩個(gè)對(duì)照組:一組是原始MobileNetv2,輸入尺寸為224×224×3;另一組是使用輸入尺寸為224×224×3 的本文網(wǎng)絡(luò)(LocalNet_224)來對(duì)比輸入尺寸變化對(duì)網(wǎng)絡(luò)影響。三組實(shí)驗(yàn)均采用隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)[17]進(jìn)行訓(xùn)練,使用余弦退火策略[18]調(diào)整學(xué)習(xí)率,如圖9(a)所示,初始學(xué)習(xí)率為0.1,最小學(xué)習(xí)率為1× 10-8,動(dòng)量因子為0.9,權(quán)重衰減因子為0.000 3。如圖9(b)所示:原始MobileNetv2 網(wǎng)絡(luò)收斂最快,loss 穩(wěn)定在0.004;LocalNet 收斂次之,loss 穩(wěn)定在0.005;LocalNet_224 收斂最慢,loss 穩(wěn)定在0.035。圖9(c)中原始MobileNetv2和LocalNet的驗(yàn)證準(zhǔn)確率均為99.99%,LocalNet_224 驗(yàn)證準(zhǔn)確率為98.67%。從實(shí)驗(yàn)數(shù)據(jù)看出:使用圖片輸入尺寸為224×224 時(shí),LocalNet_224 在訓(xùn)練損失收斂以及驗(yàn)證精度上的表現(xiàn)不如MobileNetv2,使用輸入尺寸為56×224 的LocalNet 訓(xùn)練損失收斂以及最終訓(xùn)練損失略低于MobileNetv2,但均優(yōu)于LocalNet_224,驗(yàn)證精度和MobileNetv2持平,且明顯優(yōu)于LocalNet_224,實(shí)驗(yàn)結(jié)果驗(yàn)證了本文所提網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的有效性。
圖9 不同網(wǎng)絡(luò)訓(xùn)練驗(yàn)證過程Fig.9 Training and verification processes of different networks
為驗(yàn)證本文網(wǎng)絡(luò)分類性能,在上述構(gòu)建的測(cè)試集上進(jìn)行測(cè)試評(píng)估,同時(shí)設(shè)置測(cè)試對(duì)照實(shí)驗(yàn)組,包括兩種輕量級(jí)網(wǎng)絡(luò):ShuffleNetv2[19]、SqueezeNet[20];兩種機(jī)器學(xué)習(xí)方法:基于局部二值模式(Local Binary Pattern,LBP)[21]特征的SVM 和超限學(xué)習(xí)機(jī)(Extreme Learning Machine,ELM)[22]。對(duì)照組預(yù)先在訓(xùn)練集上進(jìn)行訓(xùn)練。
表2 列舉了不同分類方法的性能對(duì)比,包括輸入尺寸、參數(shù)量大小、準(zhǔn)確率,以及使用GPU(NVIDIA Tesla V100)、CPU(Xeon Gold 6148)、Jetson Nano 這三種不同硬件條件下平均檢測(cè)一支安瓿瓶區(qū)域圖片所耗時(shí)間。
從表2 可知,在模型參數(shù)量方面,本文提出的模型參數(shù)量為0.50×106,在所列深度學(xué)習(xí)模型中最少。在檢測(cè)準(zhǔn)確率方面,ShuffleNetv2 準(zhǔn)確率最高,達(dá)到99.99%,本文所提網(wǎng)絡(luò)為99.94%,僅差0.05 個(gè)百分點(diǎn),LBP-ELM 方法準(zhǔn)確率最低。在檢測(cè)耗時(shí)方面:LBP-ELM 方法由于ELM 的結(jié)構(gòu)優(yōu)勢(shì),因此速度最快,在計(jì)算機(jī)和Jetson Nano的CPU環(huán)境中分別為3.87 ms和10.25 ms;本文所提網(wǎng)絡(luò)在三種硬件下檢測(cè)耗時(shí)在所列深度學(xué)習(xí)模型中達(dá)到最優(yōu),分別為2.31 ms、7.82 ms、11.02 ms;SqueezeNet 雖然參數(shù)量少,但是其仍有大量常規(guī)卷積計(jì)算,因此并未體現(xiàn)出有速度優(yōu)勢(shì)。由此看出,本文所提網(wǎng)絡(luò)在參數(shù)量、準(zhǔn)確率、檢測(cè)速度三個(gè)指標(biāo)上為所列方法中綜合最優(yōu)。在Jetson Nano 平臺(tái)上部署本文網(wǎng)絡(luò),以一盒五支裝的安瓿瓶包裝圖像為例,整張圖像預(yù)處理時(shí)間為15 ms,則檢測(cè)時(shí)算法總體耗時(shí)70.1 ms,即可達(dá)到14 盒/s,滿足流水線上實(shí)時(shí)檢測(cè)的要求。
本文通過對(duì)安瓿瓶藥品包裝生產(chǎn)線上采集的圖像進(jìn)行分析,并借鑒MobileNet 系列輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)的思想,提出了一種面向小型計(jì)算平臺(tái)(以Jetson Nano為例)的安瓿瓶包裝質(zhì)量檢測(cè)算法,包括安瓿瓶包裝區(qū)域圖像裁剪預(yù)處理算法及識(shí)別網(wǎng)絡(luò)。通過實(shí)驗(yàn),本文提出的預(yù)處理算法能準(zhǔn)確提取出安瓿瓶包裝區(qū)域圖像,識(shí)別網(wǎng)絡(luò)可以在Jetson Nano 平臺(tái)上可以達(dá)到每秒14 盒的檢測(cè)速度,大大超過現(xiàn)有人工視檢每秒1盒的速度,且實(shí)現(xiàn)了99.94%的準(zhǔn)確率。本文算法部署在安瓿瓶包裝生產(chǎn)線上可顯著減少檢測(cè)速度對(duì)生產(chǎn)線產(chǎn)能提高的制約,為包裝生產(chǎn)線自動(dòng)化升級(jí)提供了技術(shù)支撐。下一步打算開展算法優(yōu)化、模型量化、硬件平臺(tái)適配相關(guān)的工作,進(jìn)一步提高算法的速度與精度以滿足產(chǎn)品化的需求。
表2 不同分類方法的性能對(duì)比Tab.2 Performance comparison of different classification methods