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