方杰
摘要:該文通過智能相機采集的圖片,形成訓練數據,并基于現有的行人檢測算法,整理了行人檢測的流程,提出并通過實驗研究了訓練模型以及更新策略,同時探討了生成檢測結果后的處理策略以及行人檢測模型驗證結果。
關鍵詞:行人檢測;模型訓練;更新策略;YOLOv4-Tiny
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)15-0184-03
隨著智慧城市及智能化產業(yè)的不斷發(fā)展,視頻監(jiān)控以其直觀、準確、及時和信息內容豐富而廣泛應用于許多場合,尤其在安防領域中的重要性日益突出,成為技術安全防范最有力的手段。如今安防監(jiān)控對高清化、智能化、網絡化、數字化的要求也越來越高,數據呈現出爆發(fā)性的增長,同時,這些海量的視頻數據為相關執(zhí)法部門提供了足夠的調查取證依據。文獻[1]提出了不同視角下的行人重識別解決方法;文獻[2]提出了光線照明環(huán)境下的行人重識別解決方法;文獻[3]提出了基于度量學習的行人檢測方法;文獻[4]討論人體結構特征的構建在行人檢測上的研究;文獻[5]把行人重識別問題看作分類問題或者驗證問題。
本文基于目前國內外行人重識別的進展情況,使用通過智能相機采集的訓練數據,在現有的訓練模型基礎上,調整算法和參數,構建更好的神經網絡結構,以達到更快速更準確的效果。本文主要包含以下四部分內容: 行人檢測的整體流程,行人檢測算法解析,行人檢測模型驗證結果詳解以及總結和挑戰(zhàn)。
1 行人檢測的整體流程
行人檢測的流程大致過程如下:首先,對原始圖片進行分辨率調整,使其調整為網絡輸入大小;其次,將圖片輸入網絡模型,通過訓練好的卷積神經網絡進行預測;再次,根據預測結果計算出行人坐標,使用NMS算法去掉重疊框;最后,返回檢測結果。
1.1 原始圖片獲取
原始圖片直接通過智能相機采集獲得,具體而言,可以通過兩種方式獲取。一種方式是智能相機的視頻流,在視頻流中截取出圖片;另一種方式是智能相機直接采集圖片。以上兩種方式都能夠獲取訓練樣本和測試樣本。
1.2 網絡預測
通過上述方式得到圖片數據后,然后進行圖像預處理操作,包括以下幾個步驟:
步驟1:在訓練或者檢測中,將所有原始圖片調整至固定尺寸,實驗中所使用的尺寸寬度為448px,高度為256px ,該尺寸是網絡結構預設的輸入Feature Map尺寸;
步驟2:去均值,歸一化: 將圖像三通道的值減去均值0,0,0;然后做標準歸一化操作,將圖像值除以255;
步驟3:再將預處理圖片導入網絡中, 進行前向傳播, 對網絡結果的輸出進行信息處理, 最后通過輸出層返回該圖像中一系列框的坐標和置信度,目標類別。同時,每個坐標包括預測框的中心點坐標和預測框的寬和高。根據設定的框置信度過濾一系列的框,過濾后剩余的預測框作為輸出。由于只有一個類別,檢測類別為行人即可。
1.3 NMS算法去掉重疊框
由于上述方式得到的剩余框中有比較多的重疊, 需要在這個階段處理掉這些重疊框。這些框有較高的置信度,我們最終只需要一個框作為檢測框即可,所以需要使用NMS算法過濾掉多余的框。
1.4 檢測結果轉存
將網絡輸出結果進行乘以輸入圖片的寬度和高度,并進行轉存,返回這張圖片中行人對應的坐標,框置信度和類別概率。
2 行人檢測算法解析
行人檢測算法主要包括以下幾個方面:網絡結構解析、模型訓練以及更新策略和閾值設置以及檢測結果后處理。
2.1網絡結構解析
實驗所使用的模型采用YOLOv4-Tiny算法改造,使用了3個Resnet Block, 每個Resnet Block包含多層Convolution Layer,并進行組合, 每個Resnet block的基礎通道數隨著尺寸變小而增大。同時, 網絡輸入的Feature Map大小為448px*256px。
網絡結構整體架構圖如表1所示:
2.1.1 先驗框部分Anchor
原始Yolov3算法使用了9個Anchor,輸出層為三個。隨著輸出的特征圖的數量和尺度的變化,先驗框的尺寸也需要相應的調整。Yolov3采用了Yolov2的k-means聚類算法得到先驗框的尺寸,為每種采樣尺寸設定了先驗框,在微軟發(fā)布的COCO數據集上9個先驗框是:(10x13),(16x30),(33x23),(30x61),(62x45),(59x119),(116x90),(156x198),(373x326)。分配環(huán)節(jié)上,在最小的13*13特征圖上使用較大的先驗框(116x90),(156x198),(373x326),適合檢測較大的對象,因為該特征圖上每個像素點對應原圖感受也最大。中等的26*26特征圖上應用中等的先驗框(30x61),(62x45),(59x119),適合檢測中等大小的對象。而較大的52*52特征圖上應用較小的先驗框(10x13),(16x30),(33x23),適合檢測較小的對象。
2.1.2 輸入到輸出結構
輸入到輸出的總體結構如圖1所示:
對于一個輸入圖像,Yolov3算法將其映射到3個尺度的輸出張量,代表圖像各個位置存在各種對象的概率和相應指標。上圖中,如果使用416*416的輸入圖像,在每個尺度的特征圖每個網格設置3個先驗框,則計算后總共有10647個預測。每一個預測是一個(4+1+80)=85維向量,這個85維向量包含邊框坐標(4個數值),邊框置信度(1個數值),對象類別的概率(對于COCO數據集,共有80種類別)。
2.2 模型訓練以及更新策略
模型訓練以及更新策略主要是進行模型訓練的損失函數和相關的優(yōu)化策略.首先分析預測邊界框和檢測框Anchor Boxes,及網絡預測值tx,ty,tw,th之間的關系。Yolov3借鑒RPN網絡使用Anchor Boxes來預測邊界框的offsets。邊界框的實際中心位置(x,y)需要利用預測的坐標偏移值,先驗框的尺度(wa,ha)以及中心坐標(xa,ya)來計算,這里的xa和ya也即是特征圖每個位置的中心點。上述公式為Faster-RCNN算法中預測邊界框的方式。這個方式是沒有約束的,也就是tx和ty的大小可以為任意值,導致預測的邊界框容易向任何方向偏移。當tx >1時邊界框向右偏移超過一個寬度大小,導致每個位置預測的邊界框可以落在圖片的任意位置,這就導致了模型訓練的不穩(wěn)定,在訓練的時候要花很長時間才可以得到正確的offsets,但是有一個優(yōu)點就是當這個像素附近出現密集目標時,本位置的Anchor被匹配完以后,其他位置的Anchor可以來匹配,可能一定程度上增加了目標框的召回率,充分利用了周邊位置的Anchor,也是這個特性導致了訓練的不穩(wěn)定。在Yolov3中放棄了這種預測方式,二是沿用Yolov2的方法,就是預測邊界框中心點相對于對應cell左上角的相對偏移值,為了將邊界框中心點約束在當前cell中,使用sigmod函數處理偏移值,這樣預測的偏移值在(0,1)范圍內(這里每個cell的尺度看作為一,cell對應的就是輸出Feature Map上的一個像素點)。后來Yolov4中發(fā)現,如果目標框剛好落在cell邊緣上,就會出現預測的偏移值向0或者1偏移,導致sigmod輸入值x無窮小或者無窮大,導致網絡訓練不穩(wěn)定,所以在yolov4中采用了預處理預測值,也就是讓預測值在(0.05,0.95)范圍內。
綜上,根據邊界框預測的4個偏移量tx,ty,tw,th,可以使用如下圖中公式來計算邊界框實際中心位置和長寬,如圖2所示。
其中,(cx,cy)為cell的左上角坐標。如上圖所示,當前的cell坐標為(1,1)。由于邏輯回歸函數的處理,邊界框的中心會被約束在當前cell的內部,防止偏移出cell,pw和ph表示先驗框的寬度和高度,它們的值也是相對于特征圖的大小。由以上值就可以計算出邊界框相對于整個特征圖的位置和大小,公式如圖中所示。我們如果將上面邊界框的4個值乘以輸入圖像長寬,就可以得到邊界框在原圖中的位置和大小,從而獲得的目標檢測框。
通過設定iou閾值將檢測結果進行NMS(非極大值抑制處理),我們的目的是要去除冗余的檢測框,保留最好的一個。其詳細原理如下:對于bounding box 的列表B及其對應的置信度S,選擇具有最大置信度的檢測框M,將其從B集合中移除并加入最終的檢測結果D中。通常將B中剩余檢測框中與M的iou大于閾值Nt的框從B中移除,重復這個過程,直到B為空。其中常用的閾值為0.3-0.5.最后得到最好的一個框坐標。將坐標進行處理,分別乘以輸入圖片的寬和高,獲得相對于輸入圖像的坐標。
2.3 檢測結果后處理策略
檢測結果后處理是對網絡檢測好的結果進行處理,處理的目的是盡可能地減少誤檢或者漏檢目標。常常采用以下幾種方式進行處理:
1)增大預測框過濾的閾值,常常采用0.5的閾值過濾前景和背景框,為了減少誤檢目標的情況,可以采用增大這個閾值的方式。
2)感興趣區(qū)域繪制,測試圖片中發(fā)現,誤檢或者漏檢情況的出現,常常是圖片中邊緣的目標,我們繪制感興趣區(qū)域一定程度上避免這種情況的出現。感興趣區(qū)域的繪制如下圖所示,圖中藍色框為感興趣區(qū)域,紅色框表示檢測目標框。
3 行人檢測模型驗證結果詳解
3.1不同訓練次數測試指標變化曲線
測試不同迭代次數生成的訓練模型的不同指標,從而獲得各個模型對應的測量值。其中測量值有precision,recall,ap和平均iou值四個值。迭代次數10w次為一個單位。以下圖片是在訓練集上各個模型的各個指標變換曲線圖。圖3為精度,召回率和ap值在各個迭代次數下生成模型測試值。由于訓練集有15.5w張,測試數據過大導致測試時間比較長,所以選擇了杭州和東莞二個場景下的圖片作為訓練集來測試,這些圖片也在訓練集中。從下圖可以看出,模型訓練次數在30w次以前在震蕩,40w次處生成的模型精度有提升,后續(xù)進入震蕩變化。圖4表示測試框平均iou值變換情況,結合圖一可以看出,在40w—80w次迭代過程中,訓練的模型主要的在調整框的坐標和尺寸大小。
接下來是在驗證集上進行測試,測試方式和在訓練集上測試相同,測試集中圖片數量為1500張,測試效果如圖5和圖6所示。從圖5和圖6中可以看出,模型在60w次出達到最優(yōu),不管是測試指標值,還是測試框的平均IOU值。
從上述在訓練集和測試集中測試的曲線可以看到,訓練過程完全存在過擬合的跡象,具體有以下幾點: 1.結合圖4到圖7來看,模型的參數量級是能夠擬合訓練集,而且造成了過擬合,因為圖6中指標出現了下降趨勢;從圖4訓練集測試情況來看,batch size可以設置大一些, 大的batch size可以在訓練過程中減少波動, 同時很多論文驗證了適當調大batch不僅可以加速收斂, 還可以在一定程度上提升收斂程度;迭代次數過多,從第一點來看出現了過擬合情況,模型迭代到60w次就可以停止訓練。訓練初期模型主要是在提升指標值,在40w次就提升到最優(yōu),后續(xù)在60w前再調整框的尺寸和坐標。60w次以后出現過擬合情況,應該停止訓練。在30w次到40w次迭代過程中有指標提升原因是學習率下降了,這里是否可以提早減小學習率以降低學習過程震蕩過程,后續(xù)可以通過實驗來驗證。
4 總結和挑戰(zhàn)
本文提出了一種基本能實現多種場景下行人檢測算法,經過一系列的優(yōu)化,效果上有提升,在保持效果的前提下,速度也得到了提升。但是行人檢測也面臨諸多挑戰(zhàn),比如對于行人這種形體多變的檢測任務,需要更多適合不同行人形狀的錨框,如果錨框增多就需要使用更多的訓練數據集來訓練模型。二是盡管本文的方法已經取得了一個不錯的召回率,但是訓練圖片中行人比較少,在行人比較密集的情況,算法可能效果不佳。那么未來,可以搜集不同場景下的圖片用來增加訓練集更新模型,增加Anchor數量以更好減少檢測框坐標回歸的難度,提升檢測框坐標回歸的準確性和密集目標的召回率。
參考文獻:
[1] 周刊,胡士強,吳桐.基于深度度量學習的行人重識別方法[J].傳感器與微系統(tǒng),2020,39(5):61-64.
[2] 梁曉琴.基于深度學習的行人重識別探究[J].中國科技信息,2020(18):70-71.
[3] 鄧軒,廖開陽,鄭元林,等.基于深度多視圖特征距離學習的行人重識別[J].計算機應用,2019,39(8):2223-2229.
[4] 朱婷婷.基于度量學習和深度學習的行人重識別研究[J].信息與電腦,2019,(15):131-132.
[5] 王蘊綺,閆思伊,尹唯佳.基于深度學習的行人重識別經典算法研究[J].河南農業(yè),2018(3):49-51,64.
【通聯(lián)編輯:朱寶貴】