周 有,郭志浩
(西安郵電大學(xué) 自動(dòng)化學(xué)院,陜西 西安 710121)
隨著自動(dòng)化和計(jì)算機(jī)技術(shù)的發(fā)展,工業(yè)自動(dòng)化對(duì)工件的精準(zhǔn)檢測(cè)與識(shí)別提出了更高的要求。工件檢測(cè)算法分為傳統(tǒng)的工件檢測(cè)算法和基于深度學(xué)習(xí)的工件檢測(cè)算法。傳統(tǒng)的工件檢測(cè)算法一般結(jié)合Blob特征[1],Sobel算子[2]和圖像Hu矩[3]等通過(guò)模板匹配的方法對(duì)工件進(jìn)行檢測(cè)。利用局部二值特征模式[4](local binary pattern,LBP)對(duì)不同工件特征進(jìn)行多模式多尺度提取,可對(duì)工件進(jìn)行匹配識(shí)別。在此基礎(chǔ)上,融合基于遺傳算法尋優(yōu)的梯度方向直方圖,增加了算法在形狀特征上的匹配效果[5]。文獻(xiàn)[6]提出基于角點(diǎn)通過(guò)閉合區(qū)域識(shí)別工件邊界,再根據(jù)邊界識(shí)別出不同幾何關(guān)系的角點(diǎn)類型。上述方法適用于特征區(qū)分度高,特征容易建立的場(chǎng)景,但在不同形狀、工件種類多的情況下的檢測(cè)精度較低,達(dá)不到工業(yè)場(chǎng)景的基本要求。
近年來(lái),深度學(xué)習(xí)技術(shù)被廣泛應(yīng)用于圖像分類[7],目標(biāo)檢測(cè)[8]和圖像分割[9]等眾多復(fù)雜任務(wù)中。對(duì)工件的目標(biāo)檢測(cè)可轉(zhuǎn)換為目標(biāo)檢測(cè)問(wèn)題?;谏疃葘W(xué)習(xí)的目標(biāo)檢測(cè)算法可以分為兩類。一類是基于兩階段的區(qū)域目標(biāo)檢測(cè)算法,該類算法首先生成候選區(qū)域,然后放入分類器分類并對(duì)候選區(qū)域進(jìn)行位置回歸。例如,區(qū)域卷積神經(jīng)網(wǎng)絡(luò)[10](region convolutional neural network,RCNN)、快速區(qū)域卷積網(wǎng)絡(luò)[11](fast region with convolution neural networks,Fast RCNN)、更快速區(qū)域卷積網(wǎng)絡(luò)[12](faster region with convolution neural networks,Faster RCNN)、空間金字塔池化網(wǎng)絡(luò)[13](spatial pyramid pooling network,SPP Net)及掩碼區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(mask region convolutional neural networks,Mask RCNN)[14],此類算法檢測(cè)精度較高但速度慢。另一類算法以YOLO[15](you only look once)和單點(diǎn)多盒檢測(cè)器[16](single shot multibox detector,SSD)為代表,將目標(biāo)檢測(cè)問(wèn)題轉(zhuǎn)換為回歸問(wèn)題,通過(guò)默認(rèn)的檢測(cè)框?qū)︻A(yù)測(cè)目標(biāo)進(jìn)行回歸,該類算法檢測(cè)速度快,但對(duì)于小目標(biāo)檢測(cè)精度不高。相對(duì)于基于候選區(qū)域的目標(biāo)檢測(cè)算法,直接對(duì)預(yù)測(cè)邊界框進(jìn)行回歸可以有效地提高檢測(cè)速率,但YOLO對(duì)原圖像進(jìn)行網(wǎng)格劃分,較為粗糙,SSD雖然基于YOLO加以改進(jìn),對(duì)不同網(wǎng)絡(luò)層劃分了不同的尺度窗口,但對(duì)小目標(biāo)的檢測(cè)精度依然差于Faster RCNN。
以Faster RCNN網(wǎng)絡(luò)作為工件檢測(cè)的基礎(chǔ)框架,針對(duì)實(shí)際應(yīng)用場(chǎng)景存在部分光照較強(qiáng)或者光照較暗的工件無(wú)法檢測(cè)、網(wǎng)絡(luò)特征提取能力不佳、網(wǎng)絡(luò)模型擬合效果不夠,以及多種工件檢測(cè)中小目標(biāo)難以檢測(cè)等問(wèn)題,提出一種改進(jìn)Faster RCNN的工件檢測(cè)算法。先通過(guò)自動(dòng)色彩均衡(automatic color equalization,ACE)算法統(tǒng)計(jì)圖像中的光照強(qiáng)度信息,將光照強(qiáng)度較大或較小的目標(biāo)處理為網(wǎng)絡(luò)模型最為敏感的光照強(qiáng)度分布,克服光照強(qiáng)度的影響。再通過(guò)增加按照固定比例設(shè)置的預(yù)定義錨點(diǎn)(Anchor)的數(shù)量并修改其尺寸優(yōu)化網(wǎng)絡(luò)模型,提高模型的學(xué)習(xí)能力,以期改善目標(biāo)尺寸差異大的影響,進(jìn)一步提高小目標(biāo)工件檢測(cè)的準(zhǔn)確率。
結(jié)合Faster RCNN與ACE算法,構(gòu)建工件檢測(cè)算法模型。先將數(shù)據(jù)集制作成VOC 2007格式,生成目標(biāo)位置以及類別信息。然后通過(guò)ACE算法對(duì)輸入圖像進(jìn)行處理,調(diào)整圖像中顏色和亮度的關(guān)系,實(shí)現(xiàn)局部以及非線性特征的色彩映射關(guān)系,利用差分計(jì)算目標(biāo)及其周圍圖像像素點(diǎn)的相對(duì)明暗關(guān)系矯正最終的像素值。最后,通過(guò)增加錨點(diǎn)個(gè)數(shù)并修改其尺寸改進(jìn)區(qū)域建議網(wǎng)絡(luò)[17](region proposal network,RPN),結(jié)合Fast RCNN交替優(yōu)化共享特征信息,提高網(wǎng)絡(luò)效率。工件檢測(cè)算法核心框架如圖1所示。
圖1 工件檢測(cè)算法的核心框架
Faster RCNN由區(qū)域建議網(wǎng)絡(luò)模塊RPN和目標(biāo)檢測(cè)模塊Fast RCNN組成。Faster RCNN采用交替訓(xùn)練使兩個(gè)網(wǎng)絡(luò)共享卷積層,RPN模塊采用“注意力”機(jī)制產(chǎn)生候選區(qū)域,讓Fast RCNN有方向的檢測(cè)目標(biāo),同時(shí)縮短檢測(cè)時(shí)間并提升檢測(cè)精度。Faster RCNN網(wǎng)絡(luò)示意圖如圖2所示。
圖2 Faster RCNN網(wǎng)絡(luò)
RPN的基本思想是通過(guò)區(qū)域提議網(wǎng)絡(luò)在特征圖上找到所有可能的目標(biāo)候選區(qū)域,以任意大小的圖像作為輸入,輸出一組矩形的目標(biāo)提議。為了生成區(qū)域提議,在最后的共享卷積層輸出的卷積特征映射上滑動(dòng)一個(gè)小網(wǎng)格,將輸入卷積特征映射的n×n空間窗口作為輸入,每個(gè)滑動(dòng)窗口映射到一個(gè)低維特征,并被輸入到邊框回歸層和邊界框分類層。在每個(gè)滑動(dòng)窗口位置同時(shí)預(yù)測(cè)多個(gè)區(qū)域提議,每個(gè)位置的最大可能建議數(shù)量為K,即對(duì)特征圖上的每個(gè)位置設(shè)置多個(gè)錨點(diǎn),預(yù)測(cè)不同尺度和長(zhǎng)寬的候選區(qū)域?;貧w層輸出4K個(gè)參數(shù)化坐標(biāo),分類層輸出2K個(gè)目標(biāo)分?jǐn)?shù),RPN網(wǎng)絡(luò)示意圖如圖3所示。
圖3 區(qū)域建議網(wǎng)絡(luò)
Fast RCNN基于RPN產(chǎn)生的候選區(qū)域邊界框檢測(cè)并識(shí)別候選框中的工件。在訓(xùn)練時(shí),首先將工件數(shù)據(jù)集送入網(wǎng)絡(luò)中,通過(guò)基礎(chǔ)網(wǎng)絡(luò)進(jìn)行特征提取,再通過(guò)RPN產(chǎn)生候選區(qū)域映射至特征圖,感興趣區(qū)域(region of interest,ROI)產(chǎn)生固定大小的特征圖送入全連接層,輸出目標(biāo)置信度和位置信息。RPN 和Fast RCNN共享特征提取網(wǎng)絡(luò),實(shí)現(xiàn)高效檢測(cè)。
Faster RCNN使用多任務(wù)損失函數(shù)度量工件檢測(cè)網(wǎng)絡(luò)模型預(yù)測(cè)值與真實(shí)值之間的差值,包括分類損失和回歸損失,計(jì)算表達(dá)式為
(1)
工業(yè)場(chǎng)景下,針對(duì)光照直接影響待檢測(cè)工件的檢測(cè)精度,部分光照較強(qiáng)或者較暗的工件無(wú)法檢測(cè)的問(wèn)題,考慮到圖像中顏色和空間位置關(guān)系,采用 ACE算法對(duì)數(shù)據(jù)集進(jìn)行處理。該算法對(duì)圖像進(jìn)行局部特性的自適應(yīng)濾波,利用差分計(jì)算目標(biāo)與周圍圖像像素點(diǎn)的相對(duì)明暗關(guān)系,校正最終的像素值,從而提高網(wǎng)絡(luò)的學(xué)習(xí)能力。算法主要包括以下兩部分。
1)對(duì)圖像進(jìn)行色彩以及空域的調(diào)整,完成圖像的色差矯正,得到空域重構(gòu)圖像。調(diào)整空域后,待處理像素點(diǎn)p與其周圍像素點(diǎn)j的差值表示為
(2)
式中:c為色道;S為工件圖像中參與運(yùn)算的所有像素點(diǎn)的子集;Ic(p)-Ic(j)為工件圖像兩個(gè)不同像素點(diǎn)之間的亮度差值;d(p,j) 為兩點(diǎn)之間的距離度量函數(shù);r(·)為相對(duì)亮度函數(shù),表示一個(gè)點(diǎn)與其周圍點(diǎn)的相對(duì)亮度差值,放大圖像中較小的差異,并豐富較大的差異。一般情況下,
其中,T為飽和界限。距離度量函數(shù)采用曼哈頓距離公式表示,即
d(i,j)=|xi-xj|+|yi-yj|
其中,xi和yi為圖像中i點(diǎn)的坐標(biāo),xj和yj為j點(diǎn)的坐標(biāo)。
2)對(duì)于彩色圖像,需要進(jìn)行紅綠藍(lán)(red green blue,RGB)三通道單獨(dú)處理,然后合并為一幅完整圖像。對(duì)式(2)處理后的工件圖像進(jìn)行動(dòng)態(tài)擴(kuò)展,擴(kuò)展方式為
Oc(p)=round[127.5+ScRc(p)]。
式中:Oc為通道c的工件圖像;Sc為線段(mc,0)到(Mc,255)的斜率,其中
mc=min[Rc(p)],
Mc=max[Rc(p)]。
最后將線性擴(kuò)展后的數(shù)據(jù)映射到[0,255]空間中,得到處理后的工件圖像
Anchor的數(shù)量是RPN網(wǎng)絡(luò)中非常重要的超參數(shù),直接影響了后續(xù)候選區(qū)域的生成。在Faster RCNN的源代碼中,每個(gè)滑動(dòng)窗口產(chǎn)生9種Anchor,包括128×128、256×256和512×512等3種尺度,以及1∶1、1∶2和2∶1等3種比例。但是,工件數(shù)據(jù)集中,5個(gè)目標(biāo)的像素點(diǎn)分布范圍在30×40~60×80之間,默認(rèn)的Anchor參數(shù)對(duì)小目標(biāo)工件無(wú)法召回,因此,在默認(rèn)Anchor設(shè)置的基礎(chǔ)上,增加一組64×64的Anchor,則RPN每個(gè)滑動(dòng)窗口產(chǎn)生12組Anchor,尺度大小分別為64×64、128×128、256×256和512×512,縱橫比分別為1∶1、1∶2和2∶1,從而提高模型對(duì)工件的檢測(cè)精度。
實(shí)驗(yàn)在GeForce GTX 1080 Ti GPU,內(nèi)存為8 GB Windows 10操作系統(tǒng)中,利用CUDA 8.0以及CUDNN 6.0加速深度學(xué)習(xí)運(yùn)算,基于Tensorflow-GPU 1.4.0學(xué)習(xí)框架進(jìn)行相關(guān)代碼和參數(shù)的訓(xùn)練。運(yùn)行環(huán)境為Pyhon 3.5,網(wǎng)絡(luò)框架Faster RCNN選用在ImageNet[18]分類預(yù)訓(xùn)練網(wǎng)絡(luò)視覺(jué)幾何組16(visual geometry group,VGG-16)進(jìn)行權(quán)重初始化。在訓(xùn)練工件檢測(cè)網(wǎng)絡(luò)模型時(shí),學(xué)習(xí)率為0.001,批量大小為256,迭代次數(shù)為80 000次。
工件檢測(cè)的數(shù)據(jù)集來(lái)源于某公司,共1 200張工件圖片,每張圖片包含小洞(hole)、大洞(bighole)、螺絲正裝(nut)、螺絲反裝(bolt)和鉚釘(rivet)等5種工件類別。各類工件數(shù)目統(tǒng)計(jì)如表1所示。隨機(jī)按照4∶1的比例分為訓(xùn)練集和測(cè)試集,根據(jù)實(shí)驗(yàn)要求對(duì)各類工件進(jìn)行人工標(biāo)注,人工標(biāo)注的工件類別及位置信息如圖4所示。
表1 工件數(shù)目統(tǒng)計(jì)
圖4 人工標(biāo)注圖片數(shù)據(jù)
利用多任務(wù)損失函數(shù)式(1)對(duì)改進(jìn)的Faster RCNN算法進(jìn)行迭代訓(xùn)練,訓(xùn)練過(guò)程中記錄每一次迭代邊框回歸和分類回歸產(chǎn)生的損失值,繪制損失函數(shù)迭代曲線,如圖5所示??梢钥闯觯惴ㄔ诘?0 000次后開(kāi)始收斂。
圖5 損失函數(shù)迭代曲線
根據(jù)平均精度(average precision,AP)和平均準(zhǔn)確率均值(mean average precision,mAP)兩種評(píng)估指標(biāo)[19],分別對(duì)比改進(jìn)前后Faster RCNN網(wǎng)絡(luò)模型的檢測(cè)精度。AP衡量網(wǎng)絡(luò)模型對(duì)給定工件類別的檢測(cè)精度,mAP衡量網(wǎng)絡(luò)模型對(duì)所有工件類別的檢測(cè)精度。改進(jìn)前后Faster RCNN網(wǎng)絡(luò)模型的AP以及mAP如表2所示。
表2 改進(jìn)前后的AP以及mAP變化
由表2可以看出,改進(jìn)后Faster RCNN的測(cè)試精度提升了3.6%,網(wǎng)絡(luò)的擬合能力得到了明顯提高。
原算法與改進(jìn)算法在實(shí)際圖片中的檢測(cè)結(jié)果如圖6所示??梢钥闯觯瑘D6(b)相對(duì)于圖6(a)能檢測(cè)出更多的工件,且置信度也較高,表明改進(jìn)算法能有效優(yōu)化網(wǎng)絡(luò)模型,檢測(cè)效果好。
圖6 改進(jìn)前后算法檢測(cè)結(jié)果對(duì)比
結(jié)合ACE算法,基于Faster RCNN提出了一種改進(jìn)Faster RCNN的工件檢測(cè)算法。首先通過(guò)ACE算法處理工件圖像的像素點(diǎn)分布,改善光照不均問(wèn)題,然后通過(guò)修改RPN網(wǎng)絡(luò)中錨點(diǎn)的個(gè)數(shù)及尺寸提高網(wǎng)絡(luò)模型的擬合能力,解決了多種工件目標(biāo)尺寸差異大對(duì)檢測(cè)結(jié)果的影響。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法對(duì)多種工件的檢測(cè)精度有明顯提升。