利照堅,江秀娟,朱錚濤,袁浩期
(廣東工業(yè)大學(xué) 機電工程學(xué)院,廣州 510006)
子彈對于一個國家來說,意義非常重大,無論是在日常的安保治安還是國防軍事上,都是必須用到的,因此消耗量也非常大。目前,常用機器視覺來替代人工視覺來檢測子彈缺陷[1],使用機器視覺檢測方法可以大大提高生產(chǎn)效率和生產(chǎn)自動化程度[2]。
在對子彈圖像的缺陷檢測中,通常會使用常規(guī)的圖像處理算法,如基于灰度的圖像分割,基于形狀特征檢測缺陷等等。然后再利用機器學(xué)習(xí)的分類方法,如支持向量機(Support Vector Machine,SVM)[3],隨機森林(Random Forest,RF)[4]等。雖然經(jīng)過機器學(xué)習(xí)的方法后,性能與準(zhǔn)確率在一定程度上有了提升,但也難以達(dá)到用于生產(chǎn)線上的理想效果。
近年來的深度學(xué)習(xí)發(fā)展突飛猛進,在學(xué)術(shù)界中有許多新的成果。因此,針對子彈缺陷檢測在準(zhǔn)確度、召回率與漏識別率等效果不理想等一系列問題上,本文采用深度學(xué)習(xí)的方法來展開研究實驗。使用Faster Region Convolutional Neural Network(Faster RCNN)[5]網(wǎng)絡(luò)模型與Visual Group Network 16(VGG16)[6]網(wǎng)絡(luò)和Residual Networl 50(ResNet50)[7]網(wǎng)絡(luò)相結(jié)合,提出一種新的研究方法,采集子彈圖像作為數(shù)據(jù)集,使用Faster RCNN網(wǎng)絡(luò)進行訓(xùn)練,對缺陷目標(biāo)精準(zhǔn)快速地標(biāo)識出來,提高子彈缺陷檢測的準(zhǔn)確度與速度。
Faster RCNN主要由區(qū)域建議網(wǎng)絡(luò)(Region Proposal Networks,RPN )和Fast RCNN[8]網(wǎng)絡(luò)組成。
Faster RCNN作為CNN網(wǎng)絡(luò)其中一種目標(biāo)檢測方法,首先使用卷積神經(jīng)網(wǎng)絡(luò)提取輸入圖像的特征圖(feature map)[11],其卷積層參數(shù)由后續(xù)RPN層和Region of interest(ROI) Pooling層所共享使用,并在分類層(Classification)分類,過程如圖1所示。
圖1 Faster RCNN流程圖
卷積層(Conv Layer)由卷積 (Conv),池化(Pooling),激活(Relu)所組成。本文使用VGG16網(wǎng)絡(luò)和ResNet50網(wǎng)絡(luò)代替Faster RCNN的基礎(chǔ)卷積神經(jīng)網(wǎng)絡(luò)(CNN)來提取特征。原始圖像大小為P*Q,經(jīng)過縮放后變成M*N大小的圖像,然后使用卷積神經(jīng)網(wǎng)絡(luò)提取輸入圖像的feature map,并在后續(xù)RPN層和全連接層中共享使用feature map[9]。 經(jīng)過卷積操作后,原始圖像大小由P*Q變成(M/16)*(N/16),則feature map為(M/16)*(N/16)*512,表示特征圖的大小為(M/16)*(N/16),數(shù)量為512[10]。
RPN網(wǎng)絡(luò)主要用于生成區(qū)域建議,首先生成數(shù)目較多的錨點參考框(anchor box),然后對其進行裁剪過濾,再通過softmax判斷其錨點(anchor)是屬于前景(foreground)還是背景(background),即是否為要識別的目標(biāo)。同時,另一個分支bounding box regression修正anchor box,形成較精確的提議區(qū)域(proposal)。RPN網(wǎng)絡(luò)流程如圖2所示。
圖2 RPN流程圖
錨點生成層(Anchor Generation Layer)主要生成一組參考框,一個anchor能生成9個anchor box,一張圖像一共生成(M/16)*(N/16)*9個anchor box。生成的anchor box如圖3所示。
圖3 生成的anchor box
在RPN網(wǎng)絡(luò)生成參考框anchor box后,需要通過softmax[11]來判斷anchor是屬于foreground還是屬于background。softmax分類作為一個初步的2分類來篩選anchor box。其中在softmax分類前后都有reshape操作,方便softmax操作,如圖4所示。
Bounding box regression主要用于修正anchor box,使得foreground anchor box跟ground truth box更加接近[12]。如圖5所示白色框為ground truth box,灰色為提取的foreground anchor box,即便灰色的框被分類器識別為子彈缺陷的位置,但是由于灰色的框定位不準(zhǔn),這張圖并未正確地檢測出子彈缺陷位置。
圖5 ground truth box和foreground anchor box
如圖5設(shè)定foreground anchor box的左上角的x,y坐標(biāo)為Ox,Oy,ground truth box的左上角的x,y坐標(biāo)為Tx,Ty,foreground anchor box的寬度和高度分別為Ow,Oh,ground truth box的寬度和高度分別為Tw,Th,然后用于回歸的系數(shù)如下:
(1)
(2)
(3)
(4)
通過回歸系數(shù)調(diào)整后的邊框傳到下一層再進行篩選。
Proposal Layer主要是對預(yù)測框進行foreground score篩選和使用非最大值抑制(Non-Maximum Suppression,NMS),按照重疊的邊框高分?jǐn)?shù)來進行排序,挑選出最高分?jǐn)?shù)的邊框。其中,NMS是將IoU大于某個閾值時,才使得預(yù)選框得分,其余的得分設(shè)置為零。如圖6所示,IoU用兩個bounding box的交集與兩個bounding box并集的比值來表示。
圖6 示意圖
RoI Pooling主要是把RPN層的proposal box和Conv Layer最后生成的feature map作為輸入,遍歷所有的proposal box,形成大小固定的輸出proposal feature map,然后再用全連接操作來進行目標(biāo)識別和定位[13]。
Classification層首先對proposal feature map做全連接操作,然后分別進行softmax和bounding box regression的操作[14]。
本次子彈的圖像使用TCCAGE遠(yuǎn)心籠來采集。TCCAGE遠(yuǎn)心籠是一臺由遠(yuǎn)心鏡頭和反光鏡片組成的檢測系統(tǒng),可以對檢測物件側(cè)面采集4個正交視圖。檢測物側(cè)面360°,每隔90°采集一張圖像,一個檢測物采集4張圖像,并把4張側(cè)視圖在一張圖像中展示出來,保證覆蓋整個檢測物體的側(cè)柱面,如圖7所示。
圖7 子彈側(cè)視圖
TCCAGE遠(yuǎn)心籠內(nèi)部安裝6個大小相等的反光鏡,并按照圖6所示的位置上擺放,讓4個視角的光路都完全相同。4個視角每隔90°等間距分布,并稍微有重疊的部分,保證能夠完全覆蓋檢測物體的側(cè)面,如圖8所示。
圖8 遠(yuǎn)心籠采集子彈側(cè)視圖
子彈缺陷類型主要分為兩種,一種是凹坑,另一種是污漬,如圖9所示。
(a) 凹坑缺陷
(b) 污漬缺陷 圖9 子彈缺陷的種類
圖像采集后,對8000張圖像人工做標(biāo)記,把缺陷的類型和缺陷的位置標(biāo)記出來,并把數(shù)據(jù)保存在XML文件中,在訓(xùn)練的時候使用。
Faster RCNN模型的訓(xùn)練流程可以分為4個步驟,分別為:①訓(xùn)練RPN網(wǎng)絡(luò),②訓(xùn)練Fast RCNN網(wǎng)絡(luò),③調(diào)優(yōu)RPN網(wǎng)絡(luò),④調(diào)優(yōu)Fast RCNN網(wǎng)絡(luò)。其中第1步和第2步的網(wǎng)絡(luò)沒有共享卷積層,第3步和第4步共享卷積層。
(1)訓(xùn)練RPN網(wǎng)絡(luò)
訓(xùn)練RPN網(wǎng)絡(luò)前,首先使用ImageNet模型參數(shù)進行初始化,再進行訓(xùn)練。訓(xùn)練完成后,得到region proposals。
(2)訓(xùn)練Fast RCNN網(wǎng)絡(luò)
訓(xùn)練Fast RCNN網(wǎng)絡(luò)需要用到上一步所得到的region proposals,并且在訓(xùn)練前,也需要ImageNet模型參數(shù)進行初始化。
(3)調(diào)優(yōu)RPN網(wǎng)絡(luò)
由于RPN網(wǎng)絡(luò)跟Fast RCNN網(wǎng)絡(luò)共享卷積層,所以只需要對剩余的層進行調(diào)優(yōu)。在調(diào)優(yōu)RPN網(wǎng)絡(luò)前,使用第2步訓(xùn)練好的Fast RCNN網(wǎng)絡(luò)參數(shù)對其進行初始化。
(4)調(diào)優(yōu)Fast RCNN網(wǎng)絡(luò)
由于共享卷積層,F(xiàn)ast RCNN網(wǎng)絡(luò)也只需要對剩余的層進行調(diào)優(yōu)。其中調(diào)優(yōu)所用到的region proposals由第3步RPN網(wǎng)絡(luò)調(diào)優(yōu)后得到,如圖10所示。
圖10 Faster RCNN模型訓(xùn)練流程
RPN網(wǎng)絡(luò)主要生成region proposals,然后通過softmax判斷其anchor是屬于foreground還是background,并且用bounding box regression來修正anchor box,生成更為精確的proposal。
所以RPN 網(wǎng)絡(luò)的損失函數(shù)L(pi,ti)由classification loss和bounding box regression loss組成。Fast RCNN網(wǎng)絡(luò)訓(xùn)練方式和RPN網(wǎng)絡(luò)基本一致,也是訓(xùn)練softmax來做二分類和bounding box regression修正anchor box。
(5)
由于原始圖像在輸入的時候,經(jīng)過卷積層的處理,在深層卷積層的特征圖所得到的圖像信息損失嚴(yán)重。比如使用VGG16卷積網(wǎng)絡(luò)時,在最后一層中,原始圖像大小由P*Q變成(M/16)*(N/16),大幅度損失圖像信息。因此,本文通過擴大卷積層最后所提取的feature map,保留更多的圖像信息,提高圖像識別的質(zhì)量。
以VGG16為例,首先在卷積層Conv1后增加一個Max Pooling層,直接提取該層的feature map,而對卷積層Conv3直接提取該feature map,然后在Conv5后面增加一個反卷積層,對卷積層Conv5做反卷積操作得到feature map。最后把處理后的三個feature map做一個局部響應(yīng)歸一化(Local Response Normalization)。采用LRN通過對局部的feature map創(chuàng)建競爭機制,使得特征點響應(yīng)值比較大的可以得到更大的數(shù)值,從而增強模型的泛化能力。LRN的具體計算公式如下:
(6)
本實驗以準(zhǔn)確率(Precision),召回率(Recall),平均準(zhǔn)確度(mean Average Precision,mAP),漏識別率作為最后的評估。
準(zhǔn)確率為分類正確的正樣本數(shù)與分類后判別為正樣本個數(shù)的比值。
(7)
其中,NTP表示分類正確的正樣本個數(shù),NFP表示負(fù)樣本分類為正樣本的個數(shù)。
召回率為分類正確的正樣本數(shù)與真正的正樣本數(shù)的比值。
(8)
其中,NTP表示分類正確的正樣本個數(shù),NFP表示負(fù)樣本分類為正樣本的個數(shù),NFN表示正樣本分類為負(fù)樣本的個數(shù)。
mAP為在準(zhǔn)確率-召回率曲線上的準(zhǔn)確率對召回率上的積分。
(9)
漏識別率為未能識別出個體的總數(shù)與測試集中存在的樣品個體總數(shù)的比值。
改進前與改進后的Faster RCNN的準(zhǔn)確率-召回率曲線對比圖如圖11所示。
(a) 在VGG16下的效果
(b) 在ResNet下的效果 圖11 準(zhǔn)確率-召回率曲線對比圖
本文的實驗平臺使用的是Ubuntu 16.04操作系統(tǒng),PyTorch深度學(xué)習(xí)框架,計算機內(nèi)存為32GB,GPU為Nvidia GeForce GTX 1080 Ti。
一共使用6000張圖像進行訓(xùn)練,1000張圖像作為測試集,其中3000張訓(xùn)練圖為凹坑圖像,3000張為污漬圖像,500張測試圖為凹坑圖像,500張測試圖為污漬圖像。學(xué)習(xí)率為0.001,權(quán)重衰減為0.001,然后經(jīng)過迭代訓(xùn)練和調(diào)優(yōu)網(wǎng)絡(luò),得到最終的模型。模型一共迭代訓(xùn)練16000次,其中RPN網(wǎng)絡(luò)訓(xùn)練迭代4000次,F(xiàn)ast RCNN網(wǎng)絡(luò)訓(xùn)練迭代4000次,RPN網(wǎng)絡(luò)調(diào)優(yōu)迭代4000次,F(xiàn)ast RCNN網(wǎng)絡(luò)調(diào)優(yōu)迭代4000次。
實驗分別采用VGG16和ResNet50的2種不同網(wǎng)絡(luò)和Faster RCNN相結(jié)合對數(shù)據(jù)集進行訓(xùn)練,設(shè)定IoU為70%,然后根據(jù)準(zhǔn)確率、召回率、漏識別率和mAP來對測試結(jié)果來評估模型。實驗所獲得的結(jié)果如表1~表3所示。
表1 使用VGG16的Faster RCNN實驗結(jié)果
表2 使用ResNet50的Faster RCNN實驗結(jié)果
表3 VGG16和ResNet50的訓(xùn)練時間和識別時間
由表1~表3的實驗測試結(jié)果可以看出,使用改進的Faster RCNN網(wǎng)絡(luò)訓(xùn)練之后,對測試數(shù)據(jù)集的測試效果都比較理想,相比原始的Faster RCNN網(wǎng)絡(luò),準(zhǔn)確率、召回率和mAP都有一定的提高,而漏識別率也有一定程度的降低。對于相同類別的測試,ResNet50的準(zhǔn)確率、召回率和mAP都比VGG16的要高,而ResNet50的漏識別率則比VGG16的要低,可見使用ResNet50的Faster RCNN網(wǎng)絡(luò)模型比使用VGG16要好,對于圖像的訓(xùn)練效果更好,測試的結(jié)果也是更為準(zhǔn)確。改進后的網(wǎng)絡(luò)在訓(xùn)練時間也比原始的有一定的降低,而ResNet50的訓(xùn)練時間比VGG16的訓(xùn)練時間要長,而識別時間沒有明顯的區(qū)別。由此可見,在使用網(wǎng)絡(luò)層數(shù)更深的卷積網(wǎng)絡(luò)來訓(xùn)練Faster RCNN網(wǎng)絡(luò),雖然會增加訓(xùn)練時長,但可以提高網(wǎng)絡(luò)對圖像的識別能力,能更加準(zhǔn)確地找出圖像中的目標(biāo)區(qū)域。
對于使用相同的模型,測試數(shù)據(jù)集中不同的檢測類別的測試效果也有一定的差別。凹坑的檢測準(zhǔn)確率與召回率都比污漬的要低,而漏識別率則反而要高。這其中的原因可能是凹坑的圖像特征并不特別明顯,在做卷積操作時并沒有很好地提取圖像的特征,導(dǎo)致在訓(xùn)練的時候所使用的feature map效果不夠理想,對測試的效果也有一定的影響。
如圖12所示,采用改進Faster RCNN方法后的部分檢測效果。
(a) 凹坑缺陷
(b) 凹坑缺陷
(c) 污漬缺陷
(d) 污漬缺陷 圖12 子彈檢測效果圖
本文針對子彈缺陷檢測中由于使用常規(guī)圖像處理算法的檢測效果不理想,提出了使用了改進的深度學(xué)習(xí)網(wǎng)絡(luò)Faster RCNN的研究方法,對子彈缺陷的圖像進行訓(xùn)練與測試,得到了較好的效果,無論是準(zhǔn)確率、召回率、mAP還是檢測速度都能達(dá)到工業(yè)生產(chǎn)檢測環(huán)節(jié)所需要的指標(biāo)。
由于深度學(xué)習(xí)的不斷發(fā)展,有更多性能比Faster RCNN更好的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)如YOLO、SSD等等,將進一步提升目標(biāo)識別的準(zhǔn)確率、召回率和mAP。因此,嘗試使用網(wǎng)絡(luò)層次更深,結(jié)構(gòu)更合理的深度學(xué)習(xí)網(wǎng)絡(luò),不斷提升子彈缺陷檢測的性能,是接下來的研究方向。
DOI:10.1109/CVPR.2016.90.
DOI:10.1007/978-3-319-10590-1_53.