孫 彥,丁學文,2,雷雨婷,陳 靜,孔祥鑫
(1.天津職業技術師范大學電子工程學院,天津 300222;2.天津市高速鐵路無線通信企業重點實驗室,天津 300350;3.天津天大求實電力新技術股份有限公司,天津 300392;4.天津遠孚信息技術開發有限公司,天津 300220)
圖像識別是在提取圖像特征的基礎上,對圖像的各種不同模式目標和對象進行識別的技術。近年來,市場對動物識別技術的需求愈演愈烈,動物也被納入目標識別研究。Pascal(patternanalysis,statisticalmodeling and computational learning)、VOC 2006(visual object classes challenge)[1]順應研究趨勢,將動物識別列入機器視覺研究對象,包括貓狗、牛羊等,其中研究較多的是貓狗識別。如目前寵物攝影僅限于由專業寵物攝影師給寵物拍攝,遠不能滿足人們對自家寵物“自拍自足”的需要。因此,需要具備類似于“人臉優先對焦”的“寵物臉部優先對焦”功能的數碼相機,在拍照時能優先對焦到寵物臉部,方便拍攝操作[2]。2010年,謝素儀[2]在《寵物貓臉檢測的方法研究》一文中提出基于機器學習的由粗到精的貓臉檢測方法,利用訓練得到的粗級貓臉檢測器能夠快速地檢測出不同尺度的貓臉,級聯基于HOG 特征的SVM 分類器,對粗級分類器的檢出框歸一化大小后做二次分類,將其結果作為最終分類結果以排除誤檢。但仍然存在檢測率低,因圖像分類器旋轉角度較大容易出現漏檢和檢測速度無法實時的問題。隨著近年來深度學習的興起,卷積神經網絡(convolutional neural networks,CNN)得到了廣泛的應用。利用CNN 對貓狗圖像識別,雖然在特征提取以及識別速度方面具有優化性[3],但存在識別率低且計算量復雜、內存消耗大的問題。具體表現為CNN 識別貓狗圖像對于同一目標發生輕微朝向或位置變化時,識別效果變差,且容易在訓練過程中丟失有價值信息,忽略了局部與整體之間的關聯性;此外,圖像的計算量大也會使得內存資源占有量變大,導致程序整體運行緩慢,影響速率。針對上述問題,本文基于Tensorflow 平臺,構建了一種運用目標檢測模型SSD_MobileNet_v1 網絡實現貓狗圖像識別的方法。SSD_MobileNet_v1 模型綜合了SSD 網絡優化性能、準確率高的特點和MobileNet 輕量級網絡可減少整體網絡計算參數量及降低內存資源的優勢,從而提高對貓狗圖像的識別效果。
SSD_MobileNet_v1 網絡模型是以SSD 網絡為基礎,結合MobileNet 網絡改進而成。
SSD 卷積神經網絡模型(簡稱SSD)是利用單個深度神經網絡進行對象檢測的框架。SSD 源自于Fast_RCNN 系列檢測模型,繼承了原始框架的良好性能,并在原有模型的基礎上進行了改進和創新,最終演變成一個具有更高精度和更好性能的網絡模型[4]。
SSD 的網絡結構是對傳統VGG16 網絡結構的改進,SSD 網絡結構如圖1 所示。

圖1 SSD 網絡結構
(1)使用 VGG16 網絡的前 5 層,添加 Atrous 算法(hole 算法)對圖像進行背景抑制與增強[5],使VGG16 的FC6 和 FC7 層轉化為 Conv6 和 Conv7 兩個卷積層,去掉所有的Dropout 層和FC8 層,額外增加3 個卷積層和1 個平均池化層。
(2)抽取 Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2 層的 feature map[6],分別在 feature map 層的每個點構造6 個不同尺度大小的Bounding Boxes(簡稱BB),分別進行檢測和分類,生成多個BB。
(3)將不同feature map 獲得的BB 結合起來,經過非極大值抑制方法(NMS)抑制重疊或不正確的BB,生成最終的BB 集合。
SSD 中,原VGG16 模型增加的卷積層的feature map 變化較大,可檢測出不同尺度下的物體。此外,SSD 去掉了全連接層,其每個輸出會感受到目標周圍的信息,包括上下文,增加了其合理性,不同的feature map 可預測不同寬高比的圖像,可實現多尺度檢測的目的。
MobileNet 網絡模型是Google 針對手機等嵌入式設備提出的使用深度可分離的卷積來構建輕量級的深層神經網絡。其核心思想在于巧妙分解卷積核,將標準卷積分解成深度卷積和點卷積(1×1 卷積核),深度卷積將每個卷積核應用到每個通道,針對單個輸入通道,用單個卷積核進行卷積,得到輸入通道數的深度,再利用點卷積對深度卷積的輸出進行線性結合,從而產生新的特征[7]。這種分解可有效地減少網絡參數,降低模型規模,并減少過擬合所引起的訓練問題。
MobileNet 網絡模型包含輸入層、13 層卷積層、平均池化層和全連接層,每層卷積層后有批規范化層[8]和ReLU 非線性激活函數[9],MobileNet 網絡主體結構如表1 所示。

表1 MobileNet 網絡主體結構
MobileNet 將VGG16 傳統卷積核、后3 個全連接層分別替換成深度卷積核與單點卷積核的組合、7x7平均池化層與1 024×1 000 全連接層,而VGG16 的最大池化層則用卷積核跨步替代。此外,MobileNet 網絡引入2 個全局超參數:寬度乘數和分辨率乘數,2 種超參數相互作用可有效平衡延遲度和準確度,通過減少網絡參數量來縮減計算量。
標準卷積層由卷積核k 參數化,標準卷積核G 可表示為

深度可分離卷積計算量G′為

深度可分離卷積計算量G′與標準卷積核計算量G 比率為

式中:Dk為正方形內核的空間尺寸;M 為輸入通道數;N 為輸出通道數;標準卷積核G 可用來評價模型參數量的壓縮程度;G′為縱向與 1×1 點向卷積之和,式(3)將卷積表示為過濾和組合2 個過程,由公式(1)、(2)、(3)可以發現,通過3×3 的分離卷積計算使模型參數量減少,計算量縮減約Dk2,在通道級別上計算瘦身,且損失精確率程度低。
SSD_MobileNet_v1 模型的結構以SSD 模型為基礎網絡,在MobileNet 網絡的conv13 層后添加8 個卷積層,抽取其中6 層作為檢測層。SSD_MobileNet_v1新增網絡結構層如表2 所示。

表2 SSD_MobileNet_v1新增網絡結構層
SSD_MobileNet_v1 模型結構將SSD 和MobileNet結合,通過多層卷積網絡,經卷積分解等操作,對各個通道單獨計算輸出,再由點卷積執行特征融合進入下一層網絡,然后輸入到卷積模型,進行特征篩選與輸出特征映射,減少SSD 參數的數量與運算量,實現SSD 檢測網絡的加速。其網絡結構如圖2 所示。

圖2 SSD_MobileNet_v1 網絡結構
SSD_MobileNet_v1 模型保持了原有SSD 網絡結構,用3×3 大卷積核進行特征學習,分別在深度卷積層和點卷積層后連接批規范層和ReLU 函數來保證良好精確度,相當于空間和通道之間的解耦,以達到模型運行加速的目的[10]。SSD_MobileNet_v1 網絡模型用小規模參數代替原有冗余參數,使得計算量和硬件內存資源消耗降低,加快了收斂速度,有效地控制過擬合,改善模型性能[11]。
本文設計的貓狗圖像識別系統分為3 個模塊:第1 個模塊是數據集構建模塊,采集貓狗圖像構建數據集,并對數據集圖像進行隨機翻轉、標注等預處理,以減少雜糅信息對輸入圖像的干擾;第2 個模塊是網絡訓練模塊,將預處理后的圖像作為輸入,利用MobileNet得到圖像全部輸出特征,采用區域生成網絡(region proposal network,RPN)特征區域[12],將特征區域里的圖像特征輸入到SSD 網絡進行網絡訓練以得到權重值,再利用softmax 回歸器將卷積神經網絡的輸出變成概率分布,直觀顯示識別的準確率;第3 個模塊是識別模塊,該模塊將測試圖像輸入到已經完成訓練的網絡中進行計算,得到識別結果。系統實現框圖如圖3所示。

圖3 系統實現框圖
從coco 數據集中選擇圖片來構建本文需要的訓練集和測試集,選取coco 數據集中像素高的貓和狗圖片各500 張為訓練集圖片,各100 張為測試集圖片。
識別之前對圖像進行預處理,去除目標特征不明顯的圖像,增強圖像信息,便于對目標的識別,預處理主要完成以下工作:圖像增強、圖像標注、.xml 格式轉換.csv 格式、.csv 格式轉換 record 格式。
由于圖像具有隨機性,圖片尺寸大小不一,為避免重復率較高等問題,對數據集圖像進行隨機裁剪;利用濾波消除圖像噪聲,通過圖像銳化增強圖像的邊緣細節等操作,有效提高圖像質量和利用率。
對圖像數據增強后,需標注圖像及轉換格式。使用LabelImg 軟件對數據集圖像標注特征區域,同時指定合適的標簽,將圖像的標注信息存入同名的.xml 文件中以供后續使用。在標注時,選擇對貓狗圖像面部特征的合適方框,對標注的區域命名實現數據的分類,在圖像同一文件夾下同名的.xml 文件包括圖片的名稱、存儲路徑、類別、原圖以及標注區域大小等信息。把包含圖像標注信息的.xml 文件統一記錄到.csv表格中。
.csv 表格顯示原圖尺寸和標注區域大小及圖片的分類名稱,圖片標注區域滿足式(4)、(5)呈現的關系

式中:xmax、xmin、ymax、ymin分別為標注區域寬度的最大值和最小值、高度的最大值和最小值;width 為原圖寬度;height 為原圖高度。
利用Tensorflow 平臺提供的TFRecords 格式存儲數據,將.csv 格式轉化為.TFRecords 格式,將訓練集和測試集里圖片和對應標注信息結合,統一數據格式,有效管理不同屬性,更好地利用內存。
采集的貓狗圖像經過預處理,排除對圖像識別的干擾因素,篩選后得到的結果為訓練集中貓和狗圖片各400 張,測試集里貓和狗圖片各65 張。預處理后的貓狗圖像數據集如圖4 所示。

圖4 預處理后的貓狗圖像數據集
對網絡模型訓練需配置.pbtxt 文件,設置標注的類別數量為2,因其數據量過大導致內存不足,設置批次batch size 大小為1。為了模型在訓練的前期可快速接近較優解,采用指數衰減方法設置梯度下降法中的學習率,這樣可保證在后期不會有太大的波動,更加接近最優解。初始學習率設定為0.004,衰減率為0.95,每個訓練步驟的學習率降低到先前學習率的0.95 倍。隨著訓練次數的增加,學習率由大逐步變小,學習率大可以快速收斂,但是訓練結果不佳,且收斂損失率較高;學習率小收斂的速度慢,想要達到較低的損失效果需要訓練較多步數。
訓練模型不僅要優化損失函數,讓模型盡量模擬訓練數據行為的同時還應對未知數據進行判斷,使用L2 正則化,將刻畫模型復雜程度的指標添加到損失函數中以有效避免過度擬合。L2 的計算公式為

式中:w 為神經網絡中的權重參數,權重決定了模型的復雜度。
L2 正則化是通過限制w 的大小,使模型不能任意擬合訓練數據中的隨即噪音,從而避免過擬合。L2 正則化網絡訓練如圖5 所示。
為了使模型在測試數據上更健壯,在使用隨機梯度下降法的同時,還需使用滑動平均模型來改進。此外,還需配置管道配置文件,即配置訓練集和測試集的路徑。創建標簽分類的配置文件.pbtxt,要識別貓和狗2 種目標,在標簽配置文件中創建2 個類別。

圖5 L2 正則化網絡訓練
實驗的硬件平臺為Windows10 操作系統,CPU:Intel(R)_Core(TM)_i5-3337U CPU@1.80 GHz,RAM:4GB。
對于貓狗識別系統而言,性能評估從識別精度和識別速度兩方面來考量。
通過檢測貓狗圖片的過程來進行性能評估,利用Tensorflow 平臺自帶的可視化工具Tensorboard 對網絡性能進行監測,Tensorboard 可以有效地顯示操作期間Tensorflow 的計算圖,各種指標隨時間的變化趨勢以及訓練期間使用的圖像等信息而變化。訓練總損失度total_loss 曲線如圖6所示,訓練全局步數變化如圖7所示。

圖6 訓練總損失度total_loss 曲線

圖7 訓練全局步數變化
從圖6 可以看出,訓練的損失度隨著訓練次數的增加而呈下降趨勢,SSD_MobileNet_v1 網絡訓練繼承了SSD 的良好性能優勢,隨著訓練次數的增加和計算開銷的減少,圖像的處理效果逐漸轉好,其失真率減小,圖片識別的效果逐步提高。從圖7 可以看出占用內存的消耗情況,訓練次數的增加使得模型訓練時間變短,計算消耗減少,呈現出內存消耗減少的優勢,優化了網絡性能。
采用經過188 000 步訓練后生成的網絡進行貓狗圖像識別,測試集中包含貓和狗的圖片各50 張,部分貓狗圖像識別結果截圖如圖8 所示。測試結果表明,對貓狗圖像平均識別率為98.21%,識別效果良好。
圖8 中,識別框為對目標的定位;方框旁cat 和dog 為圖像識別的類別;百分比為判斷為該類別的概率。默認顯示最大識別率,如cat:99%為識別出圖像為貓的概率是99%,dog:1%~99%=1%,且1%<<99%,故認為是貓。
上述結果表明,本文構建方法的識別率高于傳統通過卷積神經網絡方法,實驗還發現SSD_MobileNet_v1網絡模型具有較強的抗干擾性,對于存在背景干擾的圖像,依然能準確識別目標,且可達到一定精度。對同一目標,背景存在或者不存在時,都可以識別出目標,但存在背景干擾時,識別出的準確率會有所降低。此外,基于對單一目標圖像的精準識別,進一步對多目標圖像進行識別,以檢測構建方法對于貓狗圖像識別定位效果的優越性。背景干擾識別效果圖如圖9 所示。對于多目標共存的圖片依舊具有較好的定位效果,滿足多個體出現的真實場景中準確定位的要求,且識別精確度高。

圖8 部分貓狗圖像識別結果截圖

圖9 背景干擾識別效果圖
由文獻[2]可知,基于CNN 的貓狗圖像識別的準確率為76.80%,SSD_MobileNet_v1 模型與CNN 模型檢測效果對比如表3 所示。基于模型訓練對于數據集中測試圖像進行驗證,采用平均精度均值方法(mean average precision,MAP)對圖像識別效果進行準確率平均值計算得出98.21%的準確率,可明顯看出SSD_MobileNet_v1 準確率有大幅提升。

表3 SSD_MobileNet_v1 模型與CNN 模型檢測效果對比
傳統的基于CNN 貓狗圖像識別方法對貓狗圖像的識別率不高,容易丟失目標信息,且內存占用較大。而本文提出的基于SSD_MobileNet_v1 網絡模型識別目標的方法,對貓狗圖像數據集進行訓練和測試,產生了良好的收斂效果,模型訓練總計算量減少,內存消耗降低,優化了網絡性能,對背景等具有抗干擾性,定位精度更高。實驗結果表明,基于SSD_MobileNet_v1網絡模型對貓狗圖像的識別率達98.21%,比傳統方法有了較大提升。盡管訓練所得到的檢測效果有所改善,但精確度與性能沒有達到高效性和一致性,今后在模型的性能優化方面需繼續提高,以求達到更高的魯棒性,充分發揮其實用價值。