馬靜
(惠州經濟職業技術學院,廣東惠州,516057)
伴隨著基于深度學習的目標檢測算法不斷突破,基于機器視覺的智能檢測技術也突飛猛進。基于深度學習的目標檢測算法主要分為One-Stage(單階段)和Two_Stage(二階段)兩類。其中One-Stage目標檢測算法是基于回歸對目標進行分類和定位,如SSD及YOLO系列算法等。Two_Stage目標檢測算法是基于區域建議,將檢測問題分成提取候選區域、候選區域分類與定位兩個階段,如SPP-Net、R-CNN、Fast R-CNN、Faster R-CNN等。One-Stage算法速度較快,但精度較低。Two_Stage算法精度較高,但速度較慢【2】。在綜合考慮金屬表面光滑、高反光、檢測難度大等特性以及基于深度學習的目標檢測算法的特點的基礎上,本文選擇了Faster R-CNN目標檢測算法對麻點和劃痕兩類常見金屬表面缺陷檢測進行了研究。
基于Region Proposal的R-CNN系列目標檢測方法是當前目標檢測技術領域一個重要分支,它經歷了R-CNN, SPPNET, Fast R-CNN, Faster R-CNN的演變過程。Faster R-CNN在R-CNN, SPP-NET及Fast R-CNN算法基礎上進行優化【3】,成為了目標檢測的優秀代表。
如圖1所示,Faster R-CNN主要由特征提取網絡(Conv Layers)、RPN網絡(Region Proposal Networks)、Roi Pooling及Classification網絡幾個部分組成。特征提取網絡使用VGG16、ResNet等模型提取圖片特征(Feature Map)。RPN網絡實質是二分類和坐標回歸,其主要工作原理是在Feature Map基礎上通過softmax判斷Anchor(錨)是屬于Positive(正樣本)還是Negative(負樣本),同時利用Bounding-Box Regression(邊框回歸)修正Anchor,獲得精確的proposals從而生成Region Proposals。Roi Pooling層的核心是將大小不同的特征區域通過池化操作轉化為相同尺度的特征。Classification網絡利用Roi Pooling送入的Proposal Feature Map計算Proposal的類別,同時再次利用Bounding-Box Regression獲得檢測框最終的精確位置【4-6】。

圖1 Faster R-CNN基本結構
本文特征提取網絡主要使用VGG16網絡模型進行特征提取。原始圖像在經過模型處理后,在特征維度上完成一定的縮減。
如圖2所示,首先將任意大小PxQ的圖像縮放至固定大小1000x600,然后將1000x600圖像送入VGG16網絡,通過VGG16網絡最后生成feature Map。VGG16網絡主要由13個conv層,13個relu層,4個pooling層構成。conv層卷積核設為(3,3),同時設定 stride=1,padding=1,以便在進行卷積操作時,保持特征的空間維度不改變。pooling層卷積核設為(2,2),同時設定 stride=2,padding=0。

圖2 特征提取網絡實驗設計圖
RPN網絡主要功能是通過Anchor機制判斷Anchor是否檢測到物體、計算包含物體的檢測框的偏移量以及檢測框的坐標。
如圖3所示,Feature Map進入RPN后,分別進行兩次卷積,第一次按照kernel_size=3,stride=1,padding=2進行卷積,通過卷積進一步集中特征信息。第二次按照kernel_size=1,stride=1,padding=0的方式做兩個全卷積,分別得到Rpn_cls_score及Rpn_bbox_pred。其中Rpn_cls_score記錄了RPN網絡中每一個空間位置Anchor的出現概率。Rpn_bbox_pred表示網絡中每一個Anchor的坐標偏移量(四個回歸值△x,△y,△,△h)。在Rpn_cls_score的基礎上再經過Reshape(2,-1)→softmax→Reshape(24,-1)的處理得到Rpn_cls_porb_reshape,它記錄了Anchor Box分類的概率。

圖3 RPN 網絡實驗設計圖
實驗的最后是計算RPN網絡輸出的損失Rpn_loss_bbox與Rpn_loss_cls。其中Rpn_loss_bbox是對Rpn_bbox_targets(真實的檢測框對應Anchor的偏移量)與Rpn_bbox_pred做的smooth L1損失,它記錄了是否存在物體的損失。Rpn_loss_bbox是對Rpn_lables(真實的Anchor標簽)與Rpn_cls_score做的softmax損失,它記錄了物體檢測偏移量的損失【7】。
RC網絡是在RPN特征提取的基礎上,繼續分類和檢測框微調工作,最終實現目標檢測。
如圖4所示,Proposal目標層首先通過gt_boxes(包含了真實檢測框坐標與類別的數據結構)計算出rpn_rois(RPN檢測框)的Bbox_cls (真實結果的類別信息)和Bbox_targets(真實的坐標),作為后續輸入的rois。接著通過rois的檢測框坐標從特征提取網絡實驗輸出的特征取得此坐標對應的ROI區域的特征。通過ROI池化得到Pool5,從而輸出固定大小的Feature Map,再對特征圖進行全連接產生fc7全連接層。全連接層由兩部份組成FC 21和FC 84,其中FC2是用來分類,預測ROI屬于哪個類別(20個類+背景),FC84用來回歸位置(21個類,每個類都有4個位置參數)。通過全連接層與softmax計算每個檢測框的類別,輸出cls_prob概率向量,同時再次利用邊框回歸獲得每個檢測框的位置偏移量bbox_pred,用于回歸獲得更加精確的目標檢測框。

圖4 RC網絡實驗設計圖
實驗的最后計算損失loss_cls與loss_Bbox。其中loss_cls是對Bbox_targets與Bbox_pred做的smooth L1損失,它記錄了物體分類損失。loss_Bbox是對Bbox_cls與cls_score做的softmax損失,它記錄了物體檢測偏移量的損失。
本次實驗的硬件環境是CPU Intel(R) Core( TM) i9,64GB內存,顯卡型號為NVIDIA Quahra M2002,軟件環境window7操作系統,Anacoada3.5.4,Tensorflow,主要編程語言python。標注工具LabelImg。
本文檢測原始圖像均由數碼相機拍攝而成,共190張,分辨率為1440*1080,其中麻點88張、劃痕102張,數據樣圖如圖5所示。但由于數據量較少,又對原圖進行90及180度旋轉處理和2次1000X600的隨機裁剪處理,最終將數據集擴充至1710張圖片。最后使用LabelImg對數據集進行標注,表明其缺陷的位置和種類。

圖5 數據樣圖
在模型訓練時將數據集按照訓練集、驗證集與測試集為6:2:2的比例進行分配,即訓練集1026張圖片、驗證集及測試集各342張圖片。Faster R-CNN訓練實質是RPN+Fast R-CNN的訓練,整個訓練過程是一個交叉過程,可梳理為五步。第一步,使用VGG16模型對缺陷數據進行特征提取。為了節省顯存,前四層卷積層的學習率設為0。Conv5的輸出作為圖片特征(feature)。conv5下采樣了輸入數據的16倍;第二步,利用第一步模型中的參數訓練RPN網絡,得到特征提取模塊一(初始檢測框及相應模型參數)。利用Anchor機制和回歸機制,將20000多個候選的Anchor選出256個Anchor進行分類和回歸位置,同時利用非極大值((Nonmaximum suppression, NMS)抑制,選出概率最大的2000個ROI;第三步,訓練Fast R-CNN,得到特征提取模塊二;利用ProposalTargetCreator從2000 個rois選擇128個ROI進行訓練,從中選出58個ROI和gt_bboxes的IoU大于0.5的ROI作為正樣本,70個IOU小于0的rois作為負樣本。第四步,利用特征提取模塊二的參數重新訓練RPN網絡(只更新網絡參數),生成目標推薦框。第五步,利用推薦框對Fast R-CNN網絡進行重新訓練(只更新網絡參數)。
模型檢測結果如表1所示,訓練loss收斂如圖5所示,圖表數據表明模型在迭代1000次時趨于收斂,迭代1000次后麻點的檢測結果為90.56%,劃痕的檢測結果為91.21%,整個模型的平均檢測精度為90.78%。實驗結果表明Faster R-CNN在金屬表面缺陷檢測表現優異。

表1 模型訓練結果
本文在對Faster R-CNN模型較深入研究的基礎上,針對模型幾個重要環節做了詳細的實驗設計,并依據設計對金屬表面的麻點、劃痕兩大類缺陷數據做了模型訓練,得到了較好實驗結果,但本次實驗的檢測效率為65.8 frame/s遠遠不能滿足實際需要,因此在工業5.0及人工智能與機器視覺檢測技術助力企業智能升級的大背景下,未來將從以下兩個方面進行相關研究:(1)在基礎特征提取網絡、RPN、分類回歸等方面優化Faster R-CNN,使其實現的效率顯著提升;(2)將深度學習與機器視覺技術完美結合,使理論研究落地,在實際應用中能達到現代化工業生產中精準化和智能化的要求。

圖6 模型訓練loss收斂圖