程忠梅 李偉 熊竹 羅蓮 陳文



關鍵詞:深度學習;Faster R-CNN;目標檢測;可視化預測
1引言
隨著社會經濟的發展,圖像信息成為與人們生活密切相關的重要數據,利用計算機來迅速地實現圖像分類和目標檢測,已成為當前圖像處理最迫切的需求。目標檢測是深度學習的一個重要應用,要求從圖片背景中分離出感興趣的目標。相較于龐大的圖像數據信息的產生,圖像分類和目標識別的速度、準確率也在快速提升。此前的研究證明,在大數據集上進行訓練可以獲得一個小數據集的實質性改進。一般來說,這些超大規模的數據集可以使局部識別性能大幅度提高[1]。隨著數據越來越大,要求也會越來越高,也需要更加快速和精準的識別方法[2]。目前,最常用的圖像目標檢測的三個模型分別是Faster R-CNN.SSD和YOLO。所以,在本項目中基于深度學習的Faster R-CNN算法對圖像目標進行識別,采用一個統一的系統來實現對圖像分類、目標檢測型和人臉分類三個不同的模型的統一管理,實現對圖像目標的可視化預測。
2目標檢測方法
深度學習目標檢測方法主要分為兩階段目標檢測算法和一階段目標檢測算法。兩階段目標檢測算法常見的方法有R-CNN,Fast R-CNN和Faster R-CNN等,它需要生成一系列作為樣本的候選框,然后通過卷積神經網絡進行分類。一階段目標檢測算法常見的方法有YOLO,SSD等,它不需要產生候選框,而是直接將目標框定位的問題轉化為回歸問題來處理。其中,這兩類方法各有優缺點,兩階段目標檢測算法在檢測準確率和定位精度上占優,而一階段目標檢測算法在速度上占優。本系統選擇使用Faster R-CNN模型,來設計和實現圖像目標檢測系統。
在做圖像分類任務時,通常要先使用卷積神經網絡提取圖像特征,再用這些特征預測分類概率[3]。通過對整張圖像特征提取,將目標檢測任務進行拆分。在圖像上生成一系列可能包含物體的候選區域,把候選區域都當作一幅圖像來看待,然后使用分類模型對它們進行分類和判斷其所屬類別,從而實現目標檢測任務。
Fast R-CNN在候選區域選擇上使用SelectiveSearch方法,它是整個流程中的時間消耗瓶頸,無法用GPU硬件與網絡進行加速[4]。而Faster R-CNN在Fast-RCNN的基礎上做了重大的創新改進[5]:(1)在Region Proposal階段提出了使用RPN來代替SelectiveSearch;(2)使用了錨框。
Faster R-CNN基本結構如圖1所示。(1)需要輸入測試圖像;(2)將整張圖片輸入CNN來提取圖像特征;(3)采用RPN生成一堆Anchor box,對其進行裁剪過濾后,通過softmax判斷anchors屬于前景或者后景;同時bounding box regression修正anchor box來形成較精確的proposal;(4)把建議窗口映射到CNN的最后一層卷積feature map上;(5)通過RoI pooling層,讓每個RoI生成固定尺寸的feature map;(6)利用Softmax Loss和Smooth Ll Loss對分類概率和邊框回歸進行聯合訓練。
3系統設計
系統設計的目的是針對圖像識別算法在進行圖像檢測時都會遇到圖像顯著性特征保留不完整的問題,基于深度學習的快速區域卷積神經網絡(Fast R-CNN)框架,對深度學習在圖像識別領域中的不同處理方法及模型的發展進行研究,從而得到相應的目標檢測模型。同時,針對不同的數據集都需要訓練一個模型,根據任務是針對圖像分類模型或目標檢測模型,每次都需要重新寫一次代碼來對不同的任務、不同的模型進行推理預測,針對該問題,需要采用一個統一的系統來實現不同任務、不同模型的統一管理,以實現對推理模型的可視化預測,系統功能如圖2所示。因此,在使用的過程,把部署模型存放在對應的任務模型默認目錄即可,分別是圖像分類模型、目標檢測模型和人臉分類模型。
在做圖像分類任務時,首先使用卷積神經網絡提取圖像特征,然后利用特征來預測分類的概率。根據訓練樣本標簽建立起分類損失函數,最后開啟端到端的訓練,流程如圖3所示。結合圖片分類任務取得的成功經驗,可以將目標檢測任務進行拆分。基于深度學習的Fast R-CNN模型,在輸入圖片上生成一系列可能包含物體的候選區域,然后可以把每個候選區域單獨當成一幅圖像,使用圖像分類模型對它進行分類.判斷它屬于哪個類別或者背景,從而實現目標檢測任務,如圖det-model(目標檢測模型)。
系統的UI設計使用的是Qt Designer。系統界面組成有:(1)兩個標簽QLabel,用來顯示源圖像和預測結果后的目的圖像。為了讓界面能夠自適應縮放,在適當的時候使用Horizontal Spacer和Vertical Spacer來撐起組件。(2)-個可編輯的文本框QTextEdit,用來存放文本信息。(3)數據源區由單選按鈕和錄像機的相關信息組成。(4)功能區包括圖像縮放、任務模型、預覽/預測、拍照、錄像、關閉等功能選項。系統的兩個資源文件包括:用來檢測人臉的OpenCV人臉級聯分類器xml文件,文件比較小,所以當成資源文件打包,運行程序時自動釋放資源文件:程序啟動的畫面圖像文件,用來讀取資源圖像。系統實現的關鍵代碼如下。
if self.isimg:
4系統實現
軟件開發環境使用Windows10系統,在學習人工智能深度學習時,因為經常需要訓練模型,需要很強大的計算能力,這時僅依靠CPU是遠遠不夠的[6]。因此,在Windowsl0系統下安裝和配置好基于CUDA架構的GPU編程環境,將在很大程度上提高實驗效率。同時,開發環境選用VScode環境,編程語言為Python。深度學習框架有Pytorch和Tensorflow等,選用百度的PaddlePaddle飛槳框架,讓用戶更加方便快速地使用GPU來加速訓練模型。安裝飛槳后,還需要安裝PaddleX。PaddleX是飛槳全流程開發工具,用戶可以十分方便地使用它。
深度學習是一個非常耗時的過程,隨著圖像數據集的增多,搭建一個性能良好的實驗環境對提升學習效率很有幫助,系統選擇的硬件配置如表1所列。訓練用時大約28 min(GPU環境),訓練最后一輪的mAP達到86%以上,表明訓練的效果較好。通過調整訓練參數,還可以提高mAP的值。
系統對圖像目標識別中要應用的函數和方法進行了實現。cls-model(圖像分類模型)的結果如圖4所示,它利用計算機對圖像進行相應的定量分析,把圖像或圖像中的每個元素或區域劃分為多個類別中的某一種,以代替人的視覺判讀。而det-model(目標檢測模型)的結果如圖5所示,它的主要作用是讓計算機可以自動識別圖片和視頻幀中所有目標的類別,并在該目標周圍繪制邊界框,標示出目標所在圖片中的位置。測試結果顯示,預測結果的準確率較高,達到了預期目標檢測的效果。
5結束語
本文圍繞圖像目標檢測中存在的問題,對深度學習在圖像識別領域中的不同處理方法及模型的發展進行研究。基于深度學習的快速區域卷積神經網絡框架,使用相應的目標檢測模型,以及采用一個統一的系統來實現不同任務和不同模型的統一管理,實現對推理模型的可視化預測。系統測試結果表明,基于深度學習的圖像目標檢測,可以從輸入的圖像或視頻判斷是否包含物體,并對檢測到的物體進行分類和定位,在該目標周圍繪制邊界框和標示出每個目標的位置,在眾多的實際應用場景中擁有很高的應用價值[7]。未來研究將完善深度學習的圖像數據訓練集和驗證集,以進一步提高圖像目標檢測與識別的準確率。