劉帥,郭濱,陳亮,張晨潔
(長春理工大學 電子信息工程學院,長春 130022)
人類能很容易判別圖像中的不同目標,關注其中的關鍵部分而計算機很難。計算機理解的圖像是二維(灰度圖)或者多維(RGB,RGBA)的像素數(shù)值矩陣,計算機需要從一個不同的像素數(shù)值區(qū)域識別不同數(shù)字區(qū)域代表的含義。傳統(tǒng)算法基于計算機視覺理論,以計算機視覺理論為基礎提取圖像信息進行識別。如:HOG[1]、DPM[2]等,在目標檢測領域取得了重大突破。隨著深度學習的流行,以深度學習為基礎的目標檢測算法在識別的準確度和速度上有了重大突破。RCNN[3]開啟深度學習檢測先河,在此算法基礎上Fast RCNN[4]通過引入ROI共享計算結(jié)果讓模型檢測的速度有了很大提高,隨后的Faster RCNN[5]引入RPN網(wǎng)絡,在速度上有了更大提高的同時提升了精度。R-FCN[6]在輸出間共享計算,同時能處理位置不變性,提高速度的同時還能保證準確度。YOLO[7]在速度上有了極大提升,在Titan X上檢測VOC幀率30,最高幀率200左右,能在視頻流中流暢檢測物體。這些檢測框架龐大,實現(xiàn)起來也較復雜。遷移學習[8]的流行使得訓練一個超大型網(wǎng)絡變得簡單,不同網(wǎng)絡之間相互借鑒,優(yōu)勢互補使得快速構建優(yōu)異性能的網(wǎng)絡的工作變得容易。本文目標是識別小型簡單物體:象棋。該問題的難點在于象棋棋子數(shù)據(jù)簡單,數(shù)據(jù)容易重復。另外檢測的目的是為了實現(xiàn)人機對弈,盡管使用不同種類的象棋數(shù)據(jù)能提高算法對于象棋目標檢測的適應能力,但是對檢測本論文提供的象棋這個任務來講除了加大了數(shù)據(jù)標注的任務量外并不能產(chǎn)生其它好處。而直接識別每個棋子究竟是什么需要大量差異化的棋子樣本。例如:每個類別300張,總共標注圖像就達到了4 200張,每張圖像擺滿32個棋子(單圖多目標),單目標標注超過12萬(4 200×32)張。測試中每個類別64張左右的數(shù)據(jù)在訓練長達10小時后能在訓練集以接近100%的檢測置信度檢測目標,但是在新的圖像下識別卻經(jīng)常出錯。于是本文改變思路追求準確定位,通過將每個象棋棋子分別標記為“chess”擴大單目標“chess”的數(shù)據(jù)規(guī)模,然后通過標簽映射實現(xiàn)將無差別的“chess”分別映射上對應的具體棋子類別,最終獲得了不錯的檢測結(jié)果。
檢測任務中一個重要的工作是識別,近幾年的識別網(wǎng)絡的發(fā)展呈現(xiàn)的趨勢是深度越來越深,網(wǎng)絡結(jié)構越來越復雜。從AlexNet[9]、VGG[10]、GoogLenet[11-13]、ResNet[14]、DensNet[15]神經(jīng)網(wǎng)絡的層數(shù)從AlexNet的7層到甚至上千層的DenseNet。網(wǎng)絡性能有了很大提高。但是網(wǎng)絡的深度越深優(yōu)化難度越大且越容易導致過擬合,殘差網(wǎng)絡的出現(xiàn)改變了這種狀況,殘差網(wǎng)絡特殊的“跳過”結(jié)構讓其在保證網(wǎng)絡深度的同時依然容易訓練。本文檢測框架在SSD[16]原始論文的基礎上通過修改骨干網(wǎng)絡VGG為ResNet101獲得。
SSD原理圖如圖1,輸入圖像經(jīng)過骨干卷積神經(jīng)網(wǎng)絡(ResNet)輸出高維特征,高維特征通過卷積融合,將特征圖匯聚,匯聚的位置為檢測目標的激活(表示此區(qū)域能檢測目標),如圖1輸出的矩形區(qū)域表示檢測到的棋子目標所在的激活區(qū)域。如果圖像中有多個目標將輸出多個矩形區(qū)域代表多個目標。
圖1 SSD原理
不同的骨干網(wǎng)絡有著不同的網(wǎng)絡性能,同樣的算法下性能優(yōu)異的骨干網(wǎng)絡能獲得更加優(yōu)異的效果。網(wǎng)絡深度越深網(wǎng)絡的抽象能力越強,簡單數(shù)據(jù)提取的信息越多,越容易分類。而網(wǎng)絡深度越深,網(wǎng)絡的訓練越困難。卷積神經(jīng)網(wǎng)絡層層處理的過程可以理解為是用一個高維非線性函數(shù)擬合高次多項式的過程,訓練過程需要尋找最優(yōu)輸出。深度越深,非線性函數(shù)越復雜,越難優(yōu)化。殘差網(wǎng)絡通過特殊的“building block”,使用F(X)+X聯(lián)合輸入減少參數(shù)數(shù)目,在加深網(wǎng)絡的同時減少參數(shù),降低網(wǎng)絡復雜度以提升網(wǎng)絡的抽象能力。完整的ResNet101網(wǎng)絡結(jié)構如圖2。網(wǎng)絡由基本的卷積,縮放,batch normalization(Google提出BN訓練以減小由不同層之間的聯(lián)動變化導致的參數(shù)調(diào)整困難的問題同時使用兩個小卷積3×3代替大卷積5×5,優(yōu)化檢測結(jié)果),激活函數(shù)組成。網(wǎng)絡的主體部分由這些基本單元構成。不同之處為通過網(wǎng)絡生成的函數(shù)F(X)和輸入X求和(這里的X表示某一殘差單元的輸入),為了防止F(X)可能和X的形狀不匹配,這樣通過WX轉(zhuǎn)化其形狀。殘差部分由F(X)+X和F(X)+WX的疊加組成。ResNet通過輸出殘差預測避免網(wǎng)絡退化問題,殘差連接的網(wǎng)絡將網(wǎng)絡的級聯(lián)乘法操作轉(zhuǎn)化成了加法操作,級聯(lián)乘法會產(chǎn)生梯度消失和梯度爆炸的問題,而轉(zhuǎn)化成加法操作后這些問題將得到避免。
圖2 ResNet101框架圖
骨干網(wǎng)絡提取的高維語義特征通過增加的卷積層來構造網(wǎng)絡結(jié)構。對其中不同的卷積層的輸出特征圖分別用兩個不同的卷積核進行卷積,一個輸出分類用的置信度,每個默認框生成c個類別置信度。一個輸出回歸用的定位,每個默認框生成4個坐標值(x,y,w,h)。此外,這些特征圖還經(jīng)過prior box層生成prior box(生成的是坐標)。上述特征圖中每一層的默認框的數(shù)量是給定的。最后將前面計算結(jié)果分別合并然后傳給loss層。
圖3 特征圖
這里假定圖3有8×8和4×4兩種不同的特征圖。這里的第一個概念是特征圖單元,特征圖單元是指特征圖中每一個格子,如上圖3中分別有64和16個單元。默認框是指在特征圖的每個小格上都有一系列固定大小的框,如上圖3有4個(虛線框)。假設每個特征圖單元有k個默認框,那么對于每個默認框都需要預測c個類別得分和4個偏移,那么如果一個特征圖的大小是m行n列,也就是有m×n個特征圖單元。那么這個特征圖就一共有(c+4)×k×m×n個輸出。這些輸出個數(shù)的含義是:采用3×3的卷積核對該層的特征圖卷積時卷積核的個數(shù),其包含兩部分:數(shù)量c×k×m×n是置信度輸出,表示每個默認框的置信度即類別的概率;數(shù)量4×k×m×n是定位輸出,表示每個默認框回歸后的坐標)。訓練中的prior box,是指實際中選擇的默認框(每一個特征圖單元不是k個默認框都選?。<矗耗J框是一種概念,prior box是實際的選取。訓練中一張完整的圖片送入網(wǎng)絡獲得各個特征圖,對于正樣本訓練來說,需要先將prior box與真實框做匹配,匹配成功說明此prior box所包含的是目標,但離正確的框還有距離,訓練的目的是保證默認框的分類置信度的同時將prior box盡可能回歸到真實框位置。例如:假設一個訓練樣本中有2個真實框,所有的特征圖中獲取的prior box一共有8732個(原始論文)??赡芊謩e有10、20個prior box能分別與這2個真實匹配上。
訓練的損失包含定位損失和回歸損失兩部分,這里的默認框和Faster RCNN中的anchor類似,在Faster RCNN中anchor只用在最后一個卷積層,但是在本文中,默認框是應用在多個不同層的特征圖上以識別不同的aspect ratio(橫縱比)和scale(大?。┑哪繕恕DJ框的大小和橫縱比定義中,假設用m個特征圖s做預測,那么對于每個特征圖而言其默認框的大小是按以下公式計算的:
這里Smin=0.2,表示最底層的大小是0.2;Smax=0.9,表示最高層的大小是0.9。
至于比例,用ar表示共有5種比例
因此每個默認框的寬的計算公式為:
高的計算公式為:(寬和高的乘積是scale的平方)
另外當aspect ratio為1時,原論文作者還增加一種scale的默認框:
因此,對于每個特征圖單元而言,一共有6種默認框。
可以看出這種默認框在不同的特征層有不同的大小,在同一個特征層又有不同的比例,因此基本上可以覆蓋輸入圖像中的各種形狀和大小的目標。損失函數(shù)定義如下(交叉驗證的時候α=1):
式中x表示是否有目標,c表示置信度,l表示預測框,g表示真實框,Lconf表示置信損失,Lloc表示定位損失,N為匹配的默認框的數(shù)量,N=0時損失為0。
置信度損失(Softmax損失):
訓練過程中框架圖如圖4所示。
圖4 SSD框架
圖5 訓練進程
訓練進程如圖5所示,訓練在接近6×105步的時候接近損失收斂,訓練速度穩(wěn)定在14.6 global_step/sec左右。訓練過程中不同損失的變化如圖6所示。
圖6 損失圖
訓練進程中特征提取器(CNN部分)卷積核的參數(shù)變化情況??梢钥闯鲇柧氝^程中前幾層特征提取參數(shù)變化幾乎不變,這是因為訓練基于預訓練權重,網(wǎng)絡會更新后層定位分類層的卷積參數(shù)。
圖7 特征提取層CNN參數(shù)變化
CNN中參數(shù)的分布情況
圖8 訓練過程中各層參數(shù)分布
訓練進程中圖片數(shù)據(jù)在三維空間中的變化情況,其數(shù)值代表圖像ID。
圖9 圖像高維空間可視化
對弈的時候,攝像頭的位置是固定的。在固定的圖像中預先分配指定的區(qū)域,這個區(qū)域的目標會被標記為它的類別?!氨敝車目虼砹四繕酥行淖鴺嗽试S出現(xiàn)的范圍,如果目標框中心坐標在棋子“兵”的允許范圍內(nèi)(“兵”應該在的位置),這個棋子被認為是“兵”。相同的棋子被以顏色加上棋子命名,例如紅炮,黑炮(實際代碼中標簽為pao_hong和pao_hei)。映射框范圍大約是一個框像素的1/3。這樣是為了防止棋子擺放不規(guī)整和鏡頭邊緣畸變導致的錯誤。真正對弈的時候攝像頭獲取的畫面是連續(xù)的,攝像頭通過對比前后幀目標變動確定移動的棋子是哪一個,然后更新其到新的位置。(實際使用過程中的前后幀是0.1 s間隔獲取圖像而不是視頻流中的前后幀(1/25),因為直接獲取連續(xù)視頻中的每一幀會導致計算復雜。)在下文的測試過程中并沒有添加測試類別進行測試,所有測試均在神經(jīng)網(wǎng)絡輸出結(jié)果下測試,以下圖保證測試結(jié)果能完全反應神經(jīng)網(wǎng)絡性能。
圖10 標簽映射過程
在不同的環(huán)境條件下獲取檢測結(jié)果,圖11是常規(guī)條件下的單目標和多目標檢測??梢钥闯鲈诠饩€正常情況下,模型以99%的置信度完成檢測。
圖11 檢測過程
為了驗證模型的適應能力,在不同強度光線條件下檢測,結(jié)果如圖12所示。
在四種不同的光線強度條件下多棋子檢測結(jié)果,檢測置信度均為99%。體現(xiàn)出模型對于光線變化的適應性。極端黑暗光線條件下的檢測結(jié)果如圖13所示。
圖12 不同光線條件下檢測效果
圖13 極端黑暗條件測試結(jié)果
可以看出模型對光線的抗干擾能力極強,在這樣的光線條件下人眼已經(jīng)分辨不出棋子但模型依然正確檢測到了大部分的棋子。
圖14 形狀檢測
從單目標圖像檢測的結(jié)果可以看出在光線好的情況圖14(a)輪廓檢測的結(jié)果圖14(b)霍夫變換的結(jié)果下,基于輪廓檢測方法和霍夫變換方法都取得了非常不錯的結(jié)果。因為人工標注存在誤差,這兩種圖像處理算法的處理結(jié)果甚至比基于深度學習算法的目標檢測方法更優(yōu)異。雖然圖像處理方法光線條件較好的時候檢測準確、快速,但是與神經(jīng)網(wǎng)絡算法相比均容易受到環(huán)境影響,主要體現(xiàn)在:
對光線敏感,不同光線條件下,圖14(b)檢測的輪廓或者圖14(a)霍夫圓不同。
對參數(shù)敏感,不同二值邊界下,圖14(b)檢測到輪廓數(shù)量不同,不同霍夫參數(shù)下圖14(a)霍夫圓不同。
兩種方法在多目標下無法配置參數(shù)使圖像各個部分的檢測最佳,只能局部最優(yōu)。
在光線比較暗的條件下使用本文的模型,其結(jié)果如圖15所示。
圖15 模型對比
看到基于輪廓檢測的方法在光線較差的條件下,即使是單目標也很難找到目標輪廓,而本文提出的模型能準確的找到目標。
盡管本文的模型的檢測準確度相比于傳統(tǒng)算法有較大優(yōu)勢,但是速度相對于傳統(tǒng)算法,卻不占任何優(yōu)勢。輪廓檢測和霍夫變換檢測都能做到對單一物體的實時檢測,對單一物體而言,本文模型檢測時間幾乎在3 s級別(沒有優(yōu)化網(wǎng)絡結(jié)構和權重)。為了加速計算,本文使用OpenVINO優(yōu)化引擎進行網(wǎng)絡剪枝(將整個網(wǎng)絡中對整體精度影響很小的層刪除以節(jié)省推理時間),同時通過多層融合將多個層間的計算合并為一個操作提高計算效率。權重壓縮可以壓縮存儲空間,以提高推理速度。壓縮網(wǎng)絡后的結(jié)果如表1所示。
表1 不同硬件條件下測試性能
本文提出修改的SSD框架很好的克服了象棋數(shù)據(jù)簡單容易過擬合的問題。同時為了能在實際上使用,借助圖融合,剪枝網(wǎng)絡,量化權重等方法縮小模型文件尺寸和網(wǎng)絡結(jié)構的復雜度,使得推理速度能在普通雙核CPU上達到1 s左右的速度。但是因為數(shù)據(jù)量的問題,本文需要檢測結(jié)果進行進一步處理,映射標簽的過程依賴于擺放棋子的位置,如果擺錯映射將出錯。在未來將擴展直接對棋子的識別,省去進一步處理,同時結(jié)合TensorRT優(yōu)化工具進一步提高推理速度。