段仲靜,李少波,*,胡建軍,楊 靜,王 錚
(1.貴州大學(xué) 現(xiàn)代制造技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,貴州 貴陽 550025;2.貴州大學(xué) 機(jī)械工程學(xué)院,貴州 貴陽 550025)
藥用膠囊在現(xiàn)實(shí)生活中隨處可見。藥用空心膠囊主要用來包裹固體藥物,對(duì)藥物顆粒起保護(hù)作用,并且解決了藥劑難以下咽、口感差等問題。膠囊的缺陷主要是雙蓋、破片、黑斑和凹陷等[1]。
傳統(tǒng)對(duì)空心膠囊缺陷檢測(cè)通常采用基于計(jì)算機(jī)視覺的模版匹配算法[2]或人工抽樣檢測(cè)。在特定的圖像采集裝置上采集膠囊圖像后,通過對(duì)完好膠囊圖像的閾值、梯度值的處理,制作成標(biāo)準(zhǔn)模版。當(dāng)缺陷膠囊與標(biāo)準(zhǔn)模版不匹配時(shí),標(biāo)注圖像中不匹配位置,即膠囊存在缺陷的位置。文獻(xiàn)[3]提出一種基于極端學(xué)習(xí)機(jī)來提取膠囊的偏心率和圓形度為特征變量的膠囊缺陷檢測(cè)方法,檢出率為90%。文獻(xiàn)[4]對(duì)膠囊圖像邊緣進(jìn)行了輪廓提取與跟蹤,實(shí)現(xiàn)了膠囊缺陷90.5%平均識(shí)別率。文獻(xiàn)[5]分析了透明膠囊的成像特性,結(jié)合閾值分割、腐蝕、輪廓提取及區(qū)域填充算法,通過最小包圍矩形測(cè)量膠囊尺寸來判斷膠囊尺寸是否有缺陷,檢出率為93.62%。本研究針對(duì)凹陷的膠囊,制作了膠囊數(shù)據(jù)集,進(jìn)行缺陷識(shí)別檢測(cè),旨在探索驗(yàn)證新算法的實(shí)際應(yīng)用能力。
針對(duì)由R-CNN所代表的兩階段方法中的難題,Mask R-CNN算法[6]在2017年被何凱明等人提出。文獻(xiàn)指出,因?yàn)樵谶M(jìn)行ROI池化和下采樣的時(shí)候Faster R-CNN[7-8]對(duì)feature map尺寸都采用了量化操作,會(huì)對(duì)像素級(jí)別的計(jì)算精度產(chǎn)生較大影響,故Mask R-CNN用ROIAlign替換ROIPooling以至模型不對(duì)圖片做量化處理。此外Mask R-CNN添加了FCN[9]層來做語義掩膜預(yù)測(cè),該添加層很好地避免了feature map與input image上的ROI不對(duì)準(zhǔn)的問題,使掩碼正確率上升10%~50%;Mask R-CNN還采用過ResNeXt[10]作為基礎(chǔ)網(wǎng)絡(luò),使Fast R-CNN在COCO數(shù)據(jù)集上的正確率由19.7%增加到39.8%。
Mask R-CNN對(duì)檢測(cè)精度和實(shí)例分割在現(xiàn)階段都有相當(dāng)高的水準(zhǔn),即便一些算法模型的性能在不斷優(yōu)化,但基本維持在同一層次。檢測(cè)速度慢、很難實(shí)現(xiàn)實(shí)時(shí)性工作需求是Mask R-CNN的一大短板。此外,實(shí)例分割領(lǐng)域的一大難題是對(duì)樣本的標(biāo)注成本過高。
殘差神經(jīng)網(wǎng)絡(luò)(ResNet)[11]在2015年由微軟的何凱明等人提出,獲得ILSVRC第一名。它完成了152層超深卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,取得很好的效果,并且易于和其他的網(wǎng)絡(luò)結(jié)構(gòu)相集成。ResNet在ImageNet中定位準(zhǔn)確率高出第二名27%,檢測(cè)準(zhǔn)確率高出第二名16%,分類錯(cuò)誤率僅為3.57%;在COCO分割中準(zhǔn)確率高出第二名12%。ResNet目前在計(jì)算機(jī)視覺的5個(gè)重要技術(shù)鄰域都是最好,也是目前最優(yōu)的CNN模型。
ResNet的基本模塊(殘差學(xué)習(xí)單元)如圖1所示。X為模型輸入,F(xiàn)(x)+X為模型輸出,F(xiàn)(x)是模型中的數(shù)據(jù)加法或乘法計(jì)算。當(dāng)H(x)=F(x)+X為模型的最優(yōu)擬合結(jié)果時(shí),F(xiàn)(x)最優(yōu)為X和H(x)的殘差,通過殘差擬合的途徑來優(yōu)化網(wǎng)絡(luò)的性能。轉(zhuǎn)換為殘差擬合比傳統(tǒng)的卷積網(wǎng)絡(luò)優(yōu)越,這是由于網(wǎng)絡(luò)在訓(xùn)練過程中保持殘差為零,網(wǎng)絡(luò)性能也不會(huì)因增加殘差學(xué)習(xí)單元而受影響。對(duì)多個(gè)殘差學(xué)習(xí)單元進(jìn)行疊加就得到了ResNet模型,理論上不論疊加多少層都不會(huì)影響網(wǎng)絡(luò)性能。

圖1 ResNet模型的基本模塊
ResNet模型的一大貢獻(xiàn)是實(shí)現(xiàn)了超深網(wǎng)絡(luò),避免了對(duì)神經(jīng)網(wǎng)絡(luò)不斷深化而導(dǎo)致正確率達(dá)到飽和的瓶頸問題;此外,能通過直接把輸入和輸出相連使殘差學(xué)習(xí)成為整體網(wǎng)絡(luò)的工作以達(dá)到簡(jiǎn)化學(xué)習(xí)目標(biāo)與難度的目的;另外,ResNet也是具有很好遷移性的網(wǎng)絡(luò)結(jié)構(gòu),能很方便地與其他網(wǎng)絡(luò)結(jié)構(gòu)相集成。
ROIAlign是Mask-RCNN首次應(yīng)用的一種區(qū)域特征聚合操作,使傳統(tǒng)的ROIPooling操作中對(duì)特征區(qū)域2次量化引起的區(qū)域不匹配問題得到有效處理。實(shí)驗(yàn)表明,用ROIAlign替換ROIPooling可以實(shí)現(xiàn)對(duì)特征圖ROI提取,是像素級(jí)的對(duì)齊,可以提高模型檢測(cè)正確率。
1.3.1 ROIPooling的缺陷
在two-stage檢測(cè)模型(如Fast-RCNN,F(xiàn)aster-RCNN)中,ROIPooling[12]的功能是根據(jù)預(yù)選框的位置坐標(biāo)在feature map中把相應(yīng)區(qū)域池化為特定大小的feature map,以便后續(xù)的bbox回歸與分類運(yùn)算。模型通過回歸運(yùn)算得到浮點(diǎn)數(shù)值的候選框位置,特征圖經(jīng)過池化后得到整型尺寸。ROIPooling運(yùn)算過程會(huì)有2次量化處理:一是將候選框的坐標(biāo)值取整;二是將取整過的候選框邊界區(qū)域均分為k×k個(gè)單元(bin),并對(duì)單元邊界取整。至此得到的候選框相對(duì)最初位置出現(xiàn)了偏差,從而影響分割和檢測(cè)的正確率。
1.3.2 ROIAlign 的主要思想和具體方法
針對(duì)ROIPooling的上述弊端,何凱明等提出了一種改進(jìn)的ROIAlign[13]方法。ROIAlign的思路很簡(jiǎn)單:采用雙線性插值方法,得到坐標(biāo)為浮點(diǎn)數(shù)的像素點(diǎn)上的圖像值,來替換量化操作,把整個(gè)特征匯集過程轉(zhuǎn)換為不間斷的操作。值得關(guān)注的是,ROIAlign不直接填補(bǔ)出候選區(qū)域邊界上的坐標(biāo)點(diǎn),而是有著一套獨(dú)特的操作流程:先是遍歷全部候選區(qū)但對(duì)邊界坐標(biāo)值不做取整處理;接著將候選框邊界區(qū)域均分為k×k個(gè)單元(bin)也不對(duì)單元數(shù)值做取整處理;然后采用雙線性插值法計(jì)算每個(gè)單元中固定的4個(gè)坐標(biāo)值,最后最大池化操作。實(shí)際上ROIAlign的遍歷采樣點(diǎn)比ROIPooling要少,它卻能得到更優(yōu)的效果,很好地處理了像素不對(duì)齊的問題。
1.3.3 ROIAlign的反向傳播
常規(guī)的ROIPooling反向傳播公式為[14]:
(1)
式中,xi為池化前特征圖上的像素點(diǎn);i×(r,j)為點(diǎn)yrj像素值的來源(max_pool選出的最大像素值點(diǎn)的位置),第r個(gè)候選區(qū)域的第j個(gè)點(diǎn)池化后用yrj表示。由式(1)可以看出,在池化過程中只有當(dāng)某個(gè)點(diǎn)的像素值采用了當(dāng)前點(diǎn)xi的像素值(即i=i×(r,j)),才在xi處回傳梯度。
根據(jù)ROIPooling,ROIAlign中對(duì)BP算法做了優(yōu)化:xi×(r,j)是BP計(jì)算得到的采樣點(diǎn)浮點(diǎn)型坐標(biāo)值,在特征圖池化前,xi×(r,j)水平和垂直坐標(biāo)都小于1的點(diǎn)都要接受對(duì)應(yīng)點(diǎn)yrj回傳的梯度,故ROIAlign的法向傳播公式:
(2)
式中,d(·)為兩點(diǎn)的距離;Δw,Δh為xi與xi×(r,j)水平和垂直坐標(biāo)的差,作為雙線性插值的系數(shù)與原始梯度相乘。
設(shè)計(jì)的膠囊制造缺陷在線檢測(cè)實(shí)驗(yàn)平臺(tái)系統(tǒng)如圖2所示。組件的膠囊生產(chǎn)表面缺陷在線檢測(cè)實(shí)驗(yàn)平臺(tái)[15]如圖3所示。主要包括采集數(shù)據(jù)的傳感器、數(shù)據(jù)處理器、傳送帶、光源以及機(jī)械支架等構(gòu)件。采用32英寸的工業(yè)觸摸屏作為輸入數(shù)據(jù)和顯示數(shù)據(jù)的顯示屏;用具備電子滾動(dòng)快門功能的MindVision高速工業(yè)相機(jī)作為圖像采集設(shè)備,因?yàn)樗軌驅(qū)崟r(shí)采集快速移動(dòng)的待檢測(cè)產(chǎn)品樣本。采用樹莓派B3作為平臺(tái)的數(shù)據(jù)處理器;在箱體內(nèi)配置可調(diào)亮度的帶狀光源LED燈以保證箱體內(nèi)有合適的光線。另外,為了保證獲得清晰的圖像樣本,在相機(jī)外部配置了專用環(huán)形光源Microscope LED Ring Light來對(duì)待檢測(cè)樣本補(bǔ)光。平臺(tái)的傳送帶由可變速電機(jī)驅(qū)動(dòng),為了便于把檢測(cè)結(jié)果可視化,在箱體外側(cè)安裝了顯示器,為了減輕數(shù)據(jù)處理器的運(yùn)算負(fù)荷而配置了戴爾GPU1080顯卡工作站。此外,具有無線通信功能的樹莓派B3數(shù)據(jù)處理器可以使檢測(cè)實(shí)驗(yàn)平臺(tái)和工作站之間實(shí)現(xiàn)端到端的通信。工作站裝載了SQL Server 2008 R2數(shù)據(jù)庫,以達(dá)到對(duì)本地?cái)?shù)據(jù)實(shí)時(shí)抓取和對(duì)數(shù)據(jù)自動(dòng)實(shí)時(shí)云端存儲(chǔ)的目的。

圖2 膠囊制造缺陷檢測(cè)實(shí)驗(yàn)平臺(tái)系統(tǒng)

圖3 高速膠囊制造缺陷檢測(cè)實(shí)驗(yàn)平臺(tái)
膠囊通過傳送帶運(yùn)送到工業(yè)相機(jī)鏡頭視野中,當(dāng)光纖傳感器感受到有樣本經(jīng)過時(shí)就會(huì)給樣本采集部分發(fā)送觸發(fā)脈沖;樣本采集部分按預(yù)設(shè)指令給照明系統(tǒng)和工業(yè)相機(jī)發(fā)送啟動(dòng)脈沖后實(shí)現(xiàn)對(duì)樣本圖像的捕獲。專用環(huán)形光源Microscope LED Ring Light起照明作用,照明點(diǎn)亮?xí)r間和相機(jī)曝光時(shí)間之間應(yīng)該相匹配。在獲取樣本圖像之后,樣本采集部分會(huì)接收到模擬信號(hào),經(jīng)模擬數(shù)字轉(zhuǎn)換器(Analog to Digital,A/D)轉(zhuǎn)換將圖像數(shù)字化;樣本采集后數(shù)字圖像會(huì)保存到處理器或計(jì)算機(jī)的內(nèi)存里;最后,處理器將對(duì)采集到的樣本進(jìn)行處理、識(shí)別、分析,以獲得檢測(cè)結(jié)果并存儲(chǔ)。
本實(shí)驗(yàn)采集的圖像數(shù)據(jù)大小為512 pixel×512 pixel,一共采集了600個(gè)樣本圖片。Mask R-CNN不能直接輸入采集的純樣本圖片進(jìn)行訓(xùn)練,需要對(duì)樣本進(jìn)行標(biāo)注,以獲得每個(gè)樣本對(duì)應(yīng)的label.png圖片和json文件。目前主流的制作標(biāo)簽數(shù)據(jù)集的工具軟件有l(wèi)abelme、VIA、LabelBox、COCO UI等[16]。由于labelme簡(jiǎn)單快速,可以離線運(yùn)行并且能直接生產(chǎn)json文件,后面對(duì)json文件的批量轉(zhuǎn)換和label.png提取都能用一個(gè)很簡(jiǎn)單的腳本文件實(shí)現(xiàn),所以采用labelme來制作數(shù)據(jù)集標(biāo)簽。本文主要針對(duì)膠囊凹陷缺陷進(jìn)行檢測(cè)識(shí)別,因此把數(shù)據(jù)集分為3類,其中T_capsule代表正常膠囊,F(xiàn)_capsule代表缺陷膠囊,sunken代表凹陷膠囊。樣本展示如圖4所示。

圖4 樣本處理展示
按訓(xùn)練集:測(cè)試集按3∶1的比例劃分訓(xùn)練集和測(cè)試集,每個(gè)數(shù)據(jù)集都包括4個(gè)數(shù)據(jù)文件夾,分別是放置每個(gè)樣本label.png圖片的cv2_mask;放置json文件的json文件夾;放置json文件轉(zhuǎn)換后產(chǎn)生如圖5所示的5個(gè)對(duì)應(yīng)文件的文件夾labelme_json和放置原始數(shù)據(jù)圖片的pic文件夾。所用膠囊是白色囊體和黃色囊蓋,其中正常膠囊樣本量為100,黃頭缺陷樣本量為100,白頭缺陷樣本量為400,其中有200個(gè)樣本是同一張圖像中2粒膠囊,其余的都是每張圖像中只有一粒膠囊。樣本圖像大小為512 pixel×512 pixel,label.png的位深為8位。

圖5 每個(gè)樣本對(duì)應(yīng)一個(gè)json文件夾
本文實(shí)驗(yàn)平臺(tái)為Windows10,實(shí)驗(yàn)環(huán)境CPU為Intel Core i7-6700 3.40 GHz×8。
Mask R-CNN是在Faster R-CNN的基礎(chǔ)上改進(jìn)的,其中一個(gè)改進(jìn)點(diǎn)就是Mask R-CNN中添加了mask分支,所以每個(gè)ROI的損失函數(shù)就是在Faster R-CNN損失函數(shù)的基礎(chǔ)上增加mask的損失值[16-17]:
L=Lcls+Lbox+Lmask,
(3)
式中,Lcls為分類損失函數(shù);Lbox為邊界框損失函數(shù);Lmask為掩膜損失函數(shù)。訓(xùn)練時(shí),mask分支對(duì)每個(gè)ROI有K個(gè)m×m維度的輸出(K個(gè)(類別數(shù))分辨率位m×m的二值mask)。針對(duì)一個(gè)第K個(gè)類別的ROI,Lmask僅僅取值第K個(gè)mask,這種定義的好處就是對(duì)所有類別都會(huì)生成mask,而且不會(huì)存在類間競(jìng)爭(zhēng)。其中一組實(shí)驗(yàn)的loss值可視化如圖6所示。

圖6 損失下降曲線
訓(xùn)練數(shù)據(jù)集一共450個(gè)樣本,考慮到樣本數(shù)量較小,采取兩階段訓(xùn)練模式,即先訓(xùn)練頭部分支,然后再訓(xùn)練所有層,兩階段的epochs都各為20,batch_size=1,STEPS_PER_EPOCH設(shè)置150,使在每一個(gè)epoch都會(huì)從訓(xùn)練集中隨機(jī)抽取150個(gè)樣本來訓(xùn)練。根據(jù)經(jīng)驗(yàn)值,設(shè)置頭部分支訓(xùn)練階段的學(xué)習(xí)率為0.001,在訓(xùn)練所有層時(shí)使學(xué)習(xí)率衰減10倍,為0.000 1,共迭代6 000次。
通過改變Backbone網(wǎng)絡(luò)和每個(gè)樣本訓(xùn)練的ROIs數(shù)量以及單個(gè)樣本目標(biāo)數(shù)目,一共做了8組對(duì)比實(shí)驗(yàn)。分別把經(jīng)典的ResNet101和ResNet50作為獲取特征的骨架網(wǎng)絡(luò),然后對(duì)每個(gè)骨架網(wǎng)絡(luò)做了ROIs分別為200和300的訓(xùn)練,得到每組實(shí)驗(yàn)的實(shí)例分割mAP如表1所示。樣本測(cè)試結(jié)果展示如圖7所示。

表1 目標(biāo)檢測(cè)的mAP結(jié)果對(duì)比

圖7 測(cè)試結(jié)果展示
A組表示大小為100,且每個(gè)樣本圖片只有一粒膠囊的測(cè)試集;B組表示大小為150,其中有50個(gè)樣本圖片有2粒膠囊的測(cè)試集。從實(shí)驗(yàn)結(jié)果得出,每個(gè)樣本僅有一粒膠囊的mAP遠(yuǎn)高于有多粒膠囊的樣本,圖7的結(jié)果也顯示多目標(biāo)樣本的測(cè)試結(jié)果不太理想。骨架網(wǎng)絡(luò)ResNet101在mAP方面更優(yōu)于ResNet50。對(duì)于ROIs的數(shù)量,200與300的差別不大,差距在可接受的范圍之內(nèi),但是當(dāng)ROIs為200時(shí)速度比300更快,如果太低又會(huì)降低準(zhǔn)確率,所以ROIs為200是綜合最優(yōu)的。
本文論述了Mask R-CNN及其基礎(chǔ)網(wǎng)絡(luò)ResNet的結(jié)構(gòu)和優(yōu)缺點(diǎn),分析了ROIPooling模塊的局限性和ROIAling替換ROIPooling的優(yōu)越性,并針對(duì)膠囊缺陷的檢測(cè)識(shí)別,設(shè)計(jì)并搭建了膠囊制造缺陷在線檢測(cè)實(shí)驗(yàn)平臺(tái)。使用了two stage類的Mask R-CNN模型方法對(duì)膠囊進(jìn)行缺陷檢測(cè),實(shí)驗(yàn)結(jié)果表明,本文使用的方法對(duì)膠囊缺陷檢測(cè)有較好的效果。在檢測(cè)準(zhǔn)確率和定位精確度上two stage類算法占有優(yōu)勢(shì),而在算法速度上one stage相對(duì)更有優(yōu)勢(shì)[18],對(duì)于本實(shí)驗(yàn)方法,文獻(xiàn)[6]在搭載高性能GPU的實(shí)驗(yàn)平臺(tái)上的運(yùn)行速度是5幀每秒,基本可以實(shí)現(xiàn)實(shí)時(shí)性的要求。在今后的研究中,對(duì)速度提升將展開更多的研究。