付 磊,任德均,吳華運(yùn),郜 明,邱 呂,胡云起
(四川大學(xué)機(jī)械工程學(xué)院,成都 610065)
(?通信作者電子郵箱rendejun@scu.edu.cn)
隨著生活水平的提升,人們對(duì)健康的重視程度增加,醫(yī)藥消費(fèi)逐漸增大。據(jù)文獻(xiàn)[1]可知,2014 年國(guó)內(nèi)在輸液瓶上的生產(chǎn)量就高達(dá)136.92 億袋,其中軟袋、塑瓶所占比例超過(guò)50%。軟袋、塑瓶的瓶體是由吹塑機(jī)器通過(guò)模具吹塑成型,瓶體的質(zhì)量與藥液污染密切相關(guān),然而在吹塑過(guò)程中由于工藝不足與模具質(zhì)量問(wèn)題產(chǎn)生如圖1所示的缺陷。
圖1 塑瓶瓶身缺陷類(lèi)型Fig.1 Plastic bottle body defect types
其中黑點(diǎn)、殘缺瓶缺陷可以通過(guò)閾值分割及模板匹配檢測(cè)出來(lái);但是氣泡缺陷其邊緣特征的相似性,對(duì)其檢測(cè)產(chǎn)生較大的干擾。以往瓶身氣泡缺陷檢測(cè)是通過(guò)人工在光照條件下進(jìn)行眼檢,其檢測(cè)的準(zhǔn)確性隨著工人檢測(cè)時(shí)間的增加而降低。文獻(xiàn)[2]采用逆向P-M(Perona-Malik)擴(kuò)散、二值化差分圖像算法確定缺陷區(qū)域,并采用支持向量機(jī)(Support Vector Machine,SVM)對(duì)缺陷進(jìn)行分類(lèi),其對(duì)組合蓋的明顯氣泡、黑點(diǎn)、毛發(fā)能達(dá)到實(shí)時(shí)檢測(cè)效果;但算法性能對(duì)擴(kuò)散模型參數(shù)較為敏感,對(duì)氣泡缺陷存在一定的漏檢。文獻(xiàn)[3]中采用太赫茲技術(shù)對(duì)滾塑制品氣泡缺陷檢測(cè),其基于太赫茲波在有氣泡的區(qū)域反射圖譜嚴(yán)重衰減原理,對(duì)氣泡缺陷檢測(cè)效果較好;但太赫茲設(shè)備昂貴且在氣泡檢測(cè)工業(yè)應(yīng)用方面尚未成熟。文獻(xiàn)[4]采用動(dòng)態(tài)閾值分割的方法對(duì)X 射線(xiàn)照射的BGA(Ball Grid Array)焊點(diǎn)連接電路板圖進(jìn)行氣泡缺陷提取,其主要應(yīng)用于金屬內(nèi)氣泡缺陷的檢測(cè)。
語(yǔ)義分割技術(shù)用于尋找圖像不同實(shí)體的邊界,可實(shí)現(xiàn)像素級(jí)定位相關(guān)對(duì)象,按照其方法可以分為深度卷積神經(jīng)網(wǎng)絡(luò)、自動(dòng)編碼卷積網(wǎng)絡(luò)、基于雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bi-directional Recurrent Neural Network,Bi-RNN)模型等,其中熱點(diǎn)研究集中在深度卷積神經(jīng)網(wǎng)絡(luò),通過(guò)非線(xiàn)性映射及激活函數(shù)提取目標(biāo)分割信息,進(jìn)而可對(duì)圖像進(jìn)行逐像素分類(lèi)以實(shí)現(xiàn)對(duì)缺陷的檢測(cè)[5]。最具代表性的深度卷積神經(jīng)網(wǎng)絡(luò)為全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Networks,F(xiàn)CN)[6]與DeepLab[7-8]系列,基于自動(dòng)編碼卷積為U-Net 網(wǎng)絡(luò)[9]及基于Bi-RNN 的ReSeg 模型[10]。FCN 在圖片上進(jìn)行非對(duì)稱(chēng)卷積與反卷積操作,并在最后一層對(duì)其進(jìn)行像素分類(lèi),其對(duì)復(fù)雜背景下物體邊緣提取不足[11]。U-Net采用對(duì)稱(chēng)的下采樣與上采樣,在醫(yī)學(xué)影像處理中得到廣泛應(yīng)用。該網(wǎng)絡(luò)同時(shí)也被借鑒到其他領(lǐng)域,如劉暢等[12]采用改進(jìn)U-Net 與分類(lèi)神經(jīng)網(wǎng)絡(luò)的方法對(duì)磁瓦缺陷進(jìn)行檢測(cè)分類(lèi),效果上能預(yù)測(cè)93%的磁瓦缺陷區(qū)域,類(lèi)別準(zhǔn)確率達(dá)94%。同時(shí),Bi-RNN 考慮全局上下文關(guān)系耗時(shí)導(dǎo)致推理時(shí)間較長(zhǎng),而不適用工業(yè)檢測(cè)。
基于目前沒(méi)有對(duì)醫(yī)用塑瓶氣泡的有效檢測(cè)方法及深度卷積神經(jīng)網(wǎng)絡(luò)對(duì)非明顯特征的檢測(cè)優(yōu)勢(shì),本文提出了一種改進(jìn)快速分割卷積神經(jīng)網(wǎng)絡(luò)(Fast Segmentation Convolutional Neural Network,F(xiàn)ast-SCNN)[13]的分割檢測(cè)算法,其在低圖形處理器(Graphics Processing Unit,GPU)性能的硬件上也有較高的分割速度,滿(mǎn)足現(xiàn)有的工程要求。本文研究對(duì)圖像數(shù)據(jù)進(jìn)行了預(yù)處理及增強(qiáng),并引入了多級(jí)跳躍連接與注意力機(jī)制改進(jìn)網(wǎng)絡(luò)以實(shí)現(xiàn)高精度端到端的缺陷分割,通過(guò)對(duì)比實(shí)驗(yàn)得出所提算法獲得了網(wǎng)絡(luò)檢測(cè)精度與時(shí)間消耗量的平衡。
檢測(cè)算法應(yīng)用于工業(yè)檢測(cè)中往往需要在檢測(cè)硬件成本低、應(yīng)用性能不足的情況下滿(mǎn)足一定的檢測(cè)精度和耗時(shí)少等要求。為了解決氣泡實(shí)時(shí)檢測(cè)難點(diǎn)問(wèn)題,選擇圖2(a)所示的Fast-SCNN為基礎(chǔ)進(jìn)行優(yōu)化,并將分割好的掩碼圖像采用輪廓尋找以實(shí)現(xiàn)對(duì)圖像缺陷的信息統(tǒng)計(jì)。該網(wǎng)絡(luò)借鑒了Zhao等[14]提出的金字塔場(chǎng)景解析網(wǎng)絡(luò)(Pyramid Scene Parsing Network,PSPNet)中的多級(jí)池化提取全局信息及當(dāng)前較為流行的多分支結(jié)構(gòu)[15-17],具體為:卷積下采樣后,多級(jí)池化提取圖像由淺到深的多層特征;第二分支學(xué)習(xí)淺層高分辨率信息,簡(jiǎn)單補(bǔ)充多級(jí)池化所帶來(lái)的空間信息的損失;同時(shí),網(wǎng)絡(luò)中卷積為深度可分離卷積,進(jìn)一步減小模型的規(guī)模及減少推理時(shí)間。在Cityscapes 數(shù)據(jù)集輸入大小為512×1 024 像素、設(shè)備為單個(gè)Nvidia Titan X 時(shí),該網(wǎng)絡(luò)的類(lèi)別精度為62.8%、平均交并比(Mean Intersection Over Union,MIoU)為68.0%。Fast-SCNN 中包含了卷積下采樣、上采樣、DSConv(Distribution Shifting Convolution)、DWConv(DepthWise Convolution)、金字塔池化、Softmax等網(wǎng)絡(luò)部分。
卷積操作(Conv2d):采用卷積核以一定間隔(Stride)在圖片上行掃描乘積方式學(xué)習(xí)圖片特征,同一層中卷積核參數(shù)相同。每一次卷積操作都是將淺層特征語(yǔ)義化,同時(shí)卷積過(guò)程是線(xiàn)性的,可以改變特征的大小。
批標(biāo)準(zhǔn)化(Batch normalization)[18]是由Google 于2015 年提出,其目的在于加速網(wǎng)絡(luò)的收斂、按照一定規(guī)則打亂特征數(shù)據(jù)減少網(wǎng)絡(luò)的過(guò)擬合,采用的方法是使每層輸入符合一定的數(shù)據(jù)分布。具體算法流程為:1)獲取批次的均值,如式(1);2)獲取批次的協(xié)方差,如式(2);3)對(duì)批次數(shù)據(jù)進(jìn)行歸一化,如式(3);4)對(duì)批次數(shù)據(jù)進(jìn)行縮放平移,如式(4)。
其中:m為批次的大??;xi為一批次的數(shù)據(jù)值;γ與β是要學(xué)習(xí)的參數(shù);而添加常量參數(shù)ε是為了保證數(shù)值穩(wěn)定性。
交叉熵?fù)p失函數(shù)(Cross Entropy Error Function)用來(lái)描述兩個(gè)概率分布之間的接近程度,且該函數(shù)描述出來(lái)的曲線(xiàn)為凸函數(shù)曲線(xiàn),在現(xiàn)有的數(shù)學(xué)證明上其為收斂函數(shù),其損失函數(shù)公式如式(5)~(6)所示,式(5)為樣本均衡時(shí)的損失函數(shù),式(6)為樣本不均衡時(shí)的損失函數(shù)。
其中:x為網(wǎng)絡(luò)模型的輸出;class為單個(gè)類(lèi),本文為[0,1];j為所有類(lèi);文中的weight為類(lèi)權(quán)重向量,用于減輕類(lèi)不平衡對(duì)性能的影響。
上采樣(upsample):采用某種插值方式對(duì)原有特征進(jìn)行尺寸維度上擴(kuò)展。改進(jìn)Fast-SCNN 采用的上采樣方式為雙線(xiàn)性插值方式,該上采樣是通過(guò)在兩個(gè)維度上分別進(jìn)行一次插值,從而達(dá)到特征的縮放。
金字塔池化操作借鑒了PSPNet、DeepLab[19]獲取全局信息方法,主要為對(duì)同一特征層采用不同的池化核得到一系列從大到小特征層的方法學(xué)習(xí)不同深度特征,再經(jīng)過(guò)不同的上采樣倍數(shù),使池化后的特征層大小相同,再與輸入特征進(jìn)行拼接,進(jìn)而在單分支獲得不同深度的特征信息。在改進(jìn)Fast-SCNN中該部分如圖3所示。
圖2 原始Fast-SCNN與改進(jìn)Fast-SCNN的結(jié)構(gòu)Fig.2 Structures of original Fast-SCNN and improved Fast-SCNN
圖3 金字塔池化操作Fig.3 Pyramid pooling operation
SENet(Sequeeze and Excitation Networks)[20]是由Momenta公司于2017 年提出的網(wǎng)絡(luò),如圖4 所示。該網(wǎng)絡(luò)首次提出利用通道間的信息促進(jìn)網(wǎng)絡(luò)對(duì)目標(biāo)對(duì)象局部特征的學(xué)習(xí),同時(shí)在一定程度上減少其他噪聲信息的干擾。SE 模塊主要分為兩部分:一為壓縮特征(Squeeze),利用自適應(yīng)全局平均池化獲得輸入特征的特征通道間數(shù)值分布數(shù)據(jù);二為激發(fā)特征(Excitation),利用兩個(gè)全連接中夾取一個(gè)ReLU(Rectified Linear Units)層來(lái)降低計(jì)算量,其后用一個(gè)Sigmoid 層來(lái)學(xué)習(xí)每個(gè)特征通道的重要性,進(jìn)而再與原來(lái)的通道進(jìn)行相乘,獲得具有通道間信息的特征層。
Fast-SCNN 多次卷積下采樣操作與金字塔池化生成的語(yǔ)義特征丟失了圖像小型物體的淺層特征,導(dǎo)致該網(wǎng)絡(luò)不能檢測(cè)小于一定尺寸的氣泡缺陷,同時(shí)該網(wǎng)絡(luò)在金字塔池化后上采樣4 倍,擴(kuò)大了對(duì)1/8 圖像特征學(xué)習(xí)的誤差,從而影響網(wǎng)絡(luò)對(duì)氣泡邊緣像素標(biāo)簽的預(yù)測(cè)。最后,該網(wǎng)絡(luò)在上采樣后直接與第二分支特征進(jìn)行融合,未對(duì)上采樣的特征進(jìn)行通道重要性區(qū)分,在一定程度上降低了該網(wǎng)絡(luò)對(duì)氣泡的分割精度,從而最終影響對(duì)氣泡缺陷的檢測(cè)。針對(duì)原始Fast-SCNN 的不足,本文提出如圖2(b)所示的改進(jìn)Fast-SCNN,其改進(jìn)由以下幾個(gè)方面組成:1)增加卷積下采樣的次數(shù),促進(jìn)網(wǎng)絡(luò)學(xué)習(xí)到氣泡缺陷圖更高層的語(yǔ)義特征,使網(wǎng)絡(luò)對(duì)氣泡缺陷具有更好的識(shí)別能力;2)在網(wǎng)絡(luò)進(jìn)行金字塔池化后,網(wǎng)絡(luò)上采樣的倍數(shù)改為2 倍,減少擴(kuò)張計(jì)算帶來(lái)的誤差;3)借鑒U-Net 對(duì)稱(chēng)式的下采樣與上采樣思想,但也考慮到網(wǎng)絡(luò)的檢測(cè)時(shí)間,僅將1/4特征、1/8 特征、1/16 特征分別與高層語(yǔ)義特征上采樣后特征融合,減少網(wǎng)絡(luò)對(duì)淺層細(xì)節(jié)信息的丟失;4)在高層語(yǔ)義特征上采樣后、融合淺層信息前增加通道信息的學(xué)習(xí),從而使網(wǎng)絡(luò)具有區(qū)分缺陷通道信息的能力?;谝陨蠈?duì)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn),增強(qiáng)了網(wǎng)絡(luò)對(duì)圖像特征提取的能力,避免了在降采樣時(shí)小型缺陷的信息丟失造成對(duì)小型缺陷的未分割,從而顯著提高了對(duì)氣泡缺陷檢測(cè)的性能。
圖4 SELayer模塊Fig.4 SELayer module
本文研究采用的數(shù)據(jù)為工業(yè)相機(jī)對(duì)某醫(yī)用塑瓶制造廠(chǎng)生產(chǎn)中含有氣泡塑瓶拍攝圖,共計(jì)2 841 張,因Fast-SCNN 采用監(jiān)督學(xué)習(xí)對(duì)其2 541 張圖片數(shù)據(jù)用LabelMe 軟件進(jìn)行標(biāo)記,并將其標(biāo)注數(shù)據(jù)中隨機(jī)選取1 936 張圖片為訓(xùn)練集,605 張圖片為測(cè)試集。在標(biāo)注數(shù)據(jù)之前,對(duì)圖片數(shù)據(jù)進(jìn)行預(yù)處理,提取塑瓶區(qū)域,排除非塑瓶區(qū)域?qū)z測(cè)的影響,并減小圖片尺寸以縮短檢測(cè)時(shí)間。對(duì)得到的JSON(JavaScript Object Notation)文件進(jìn)行處理獲得標(biāo)注圖片,氣泡原圖與氣泡標(biāo)注圖如圖5所示。
由于數(shù)據(jù)集較小,借鑒Fast-SCNN 在leftImg8bit 的數(shù)據(jù)集數(shù)目,考慮塑瓶可左右傾斜將訓(xùn)練數(shù)據(jù)集進(jìn)行左右翻轉(zhuǎn)擴(kuò)充數(shù)據(jù),最終獲得的訓(xùn)練集的樣本數(shù)為3 872張。本文檢測(cè)采用的實(shí)驗(yàn)環(huán)境是Pytorch框架,在Window 10系統(tǒng)下運(yùn)行,使用的GPU為英偉達(dá)GTX1070,RAM為8 GB。
實(shí)驗(yàn)采用國(guó)際計(jì)算機(jī)視覺(jué)與模式識(shí)別會(huì)議(conference on Computer Vision and Pattern Recognition,CVPR)中有關(guān)語(yǔ)義分割的評(píng)價(jià)指標(biāo):執(zhí)行時(shí)間、內(nèi)存占用及精確度。精確度分為像素精度(Pixel Accuracy,PA)、均像素精度(Mean Pixel Accuracy,MPA)、平均交并比(MIoU)及頻權(quán)交并比(Frequency Weighted Intersection over Union,F(xiàn)WIoU)四種,由于只檢測(cè)氣泡缺陷,本文僅采用像素精度與平均交并比兩種。像素精度為正確預(yù)測(cè)的像素?cái)?shù)占總的像素?cái)?shù)的比值,其計(jì)算式如式(7)所示;平均交并比為真實(shí)值集合與預(yù)測(cè)值集合的交集除以其并集,計(jì)算式如式(8)所示。
其中:pii是類(lèi)別為i的同時(shí)也被預(yù)測(cè)為i類(lèi)的像素之和;pij是類(lèi)別為i的被預(yù)測(cè)為j類(lèi)的像素之和;k為類(lèi)別數(shù)。
為了驗(yàn)證本文所提改進(jìn)Fast-SCNN 的有效性與可行性,對(duì)比三組不同的Fast-SCNN 改進(jìn)網(wǎng)絡(luò),三組改進(jìn)網(wǎng)絡(luò)如下:1)二級(jí)淺層特征Fast-SCNN(Both Shallow Feature Fast-SCNN,BSF Fast-SCNN)??紤]到原網(wǎng)絡(luò)在全局特征提取并融合淺層特征后直接上采樣8 倍,在一定程度忽略網(wǎng)絡(luò)的細(xì)節(jié)信息,故將網(wǎng)絡(luò)下采樣1/4后的特征添加進(jìn)網(wǎng)絡(luò)的后繼預(yù)測(cè)層之前,使網(wǎng)絡(luò)在預(yù)測(cè)時(shí)上采樣為4 倍。2)三級(jí)淺層特征Fast-SCNN(Three Shallow Feature Fast-SCNN,TSF Fast-SCNN)。在BSF Fast-SCNN 的基礎(chǔ)上對(duì)金字塔池化后的上采樣4 倍改為2 倍,同時(shí)在下采樣到1/8后繼續(xù)下采樣到1/16,并添加兩次特征融合,其網(wǎng)絡(luò)結(jié)構(gòu)圖為圖2(b)去除SELayer 模塊后所示。3)四級(jí)融合SElayer 淺特征Fast-SCNN(Four SELayer Shallow Feature Fast-SCNN,F(xiàn)SSF Fast-SCNN)。將網(wǎng)絡(luò)下采樣1/2 的特征添加進(jìn)改進(jìn)Fast-SCNN,同時(shí)在網(wǎng)絡(luò)上采樣為1/2 特征時(shí)融合SELayer 特征。在氣泡訓(xùn)練數(shù)據(jù)集上對(duì)原始Fast-SCNN網(wǎng)絡(luò)、改進(jìn)Fast-SCNN 與上述三個(gè)改進(jìn)網(wǎng)絡(luò)(BSF Fast-SCNN、TSF Fast-SCNN、FSSF Fast-SCNN)進(jìn)行實(shí)驗(yàn),其中網(wǎng)絡(luò)的超參數(shù)為:輸入圖片尺寸為320×450像素,學(xué)習(xí)率為0.001,訓(xùn)練輪數(shù)為96。在605張測(cè)試圖片上得到如表1所示的分割性能。
從總體上看,隨著對(duì)網(wǎng)絡(luò)的改進(jìn),網(wǎng)絡(luò)結(jié)構(gòu)逐漸復(fù)雜,單張檢測(cè)時(shí)間也從原來(lái)的19.4 ms 增加到27.19 ms,MIoU 也增加了2.36 個(gè)百分點(diǎn);從檢測(cè)性能上看,F(xiàn)SSF Fast-SCNN 較改進(jìn)Fast-SCNN 的MIoU 僅提高了0.16個(gè)百分點(diǎn),但單張檢測(cè)時(shí)間增加了2.79 ms;綜合考慮MIoU 精度與效率,采用改進(jìn)Fast-SCNN 用于工業(yè)現(xiàn)場(chǎng)氣泡缺陷的檢測(cè)。同時(shí)表1 結(jié)果表明,采用合理的跳躍連接次數(shù)能促進(jìn)網(wǎng)絡(luò)對(duì)缺陷區(qū)域預(yù)測(cè)的精度;SELayer模塊增加網(wǎng)絡(luò)對(duì)上采樣模塊通道特征重要性的理解,在網(wǎng)絡(luò)性能上MIoU值上升了0.23個(gè)百分點(diǎn)。
表1 優(yōu)化網(wǎng)絡(luò)結(jié)果對(duì)比Tab.1 Comparison of improved network results
對(duì)醫(yī)用塑瓶分別采用Fast-SCNN、改進(jìn)Fast-SCNN 進(jìn)行測(cè)試,保存預(yù)處理后的圖片及檢測(cè)后的圖片,結(jié)果如圖6 所示。由圖6 可知,改進(jìn)Fast-SCNN 較Fast-SCNN 對(duì)氣泡邊緣預(yù)測(cè)更加精確,能夠有效地檢測(cè)出較小的氣泡缺陷。
圖6 氣泡檢測(cè)示例Fig.6 Bubble detection examples
比較改進(jìn)Fast-SCNN 與典型的深度卷積神經(jīng)網(wǎng)絡(luò)性能差異,在相同的數(shù)據(jù)下,分別對(duì)各網(wǎng)絡(luò)的訓(xùn)練參數(shù)進(jìn)行優(yōu)化、推理后得到如表2 所示評(píng)估結(jié)果,其中FCN-8s 為FCN 的子模型結(jié)構(gòu)。在像素精度上四個(gè)網(wǎng)絡(luò)均超過(guò)99.5%,其間相差不超過(guò)0.2 個(gè)百分點(diǎn),但在MIoU 分割評(píng)價(jià)指標(biāo)上改進(jìn)Fast-SCNN超過(guò)U-Net,并在檢測(cè)時(shí)間上低于U-Net,降低了7.5 ms,可以較好地滿(mǎn)足工業(yè)檢測(cè)的需求。
表2 改進(jìn)Fast-SCNN網(wǎng)絡(luò)與流行網(wǎng)絡(luò)性能比較Tab.2 Performance comparison between improved Fast-SCNN and popular networks
針對(duì)塑瓶氣泡特征與瓶身特征的相似性及大小不確定性等造成氣泡缺陷檢測(cè)困難,提出一種改進(jìn)Fast-SCNN。在現(xiàn)有的氣泡數(shù)據(jù)集上實(shí)驗(yàn)可得,改進(jìn)Fast-SCNN 的MIoU 超過(guò)U-Net,但檢測(cè)時(shí)間下降了7.5 ms,同時(shí)改進(jìn)Fast SCNN 較原Fast-SCNN的MIoU 提升了2.3%,檢測(cè)時(shí)間只增加了5 ms。同時(shí)采用該算法在工業(yè)現(xiàn)場(chǎng)上對(duì)塑瓶氣泡檢測(cè),發(fā)現(xiàn)其具有較好的檢測(cè)精度與穩(wěn)定性。但對(duì)于工業(yè)現(xiàn)場(chǎng)缺陷數(shù)據(jù)不足的情況,該檢測(cè)算法會(huì)降低對(duì)氣泡缺陷區(qū)域預(yù)測(cè)的精度,接下來(lái)將研究如何在少量氣泡缺陷數(shù)據(jù)下實(shí)現(xiàn)對(duì)氣泡缺陷的高效穩(wěn)定的檢測(cè)。