宋艷艷,譚 勵,馬子豪,任雪平
北京工商大學計算機與信息工程學院,北京100048
在日常生活中,監控無處不在,廣場、火車站、住宅小區、機要室等重要場所,都分布著大大小小,不計其數的攝像頭,可實現犯罪、交通管制意外檢測和防范的作用,在社會工作安全領域中發揮著越來越重要的作用。隨著大數據、云計算技術在安防領域的應用,深度學習技術具備了應用條件。因此,實現智能分析處理視頻的關鍵在于面向視頻的目標檢測與識別具有較高的準確率和處理效率。
目標檢測是從視頻或者圖像中提取運動前景或感興趣的目標,其要解決的問題就是標記出物體的具體位置,同時檢測出物體所屬的類別。實時且準確的目標檢測可以為后續目標跟蹤、行為識別等提供良好的條件。目前,主流的目標檢測算法主要有:一是基于手工特征所構建的傳統目標檢測算法,如Viola-Jones檢測器[1],采用了最傳統的滑動窗口檢測,在圖像中的每一個尺度和像素位置進行遍歷,逐一判斷當前窗口是否為人臉目標;HOG 行人檢測器[2],是基于梯度方向直方圖特征的改進,通過固定檢測器的窗口大小且構建多尺度圖像金字塔來檢測不同大小的目標;可變形部件模型[3],該算法將目標整體檢測轉化為各部件檢測問題,然后將各部件檢測結果進行聚合得到目標整體檢測結果。二是基于目標候選區域的檢測算法,通過提取候選區域,并對相應區域進行深度學習實現分類檢測結果。該類算法主要包括R-CNN[4](region-based convolution neural networks)、SPPNet(spatial pyramid pooling network)[5]、Fast R-CNN[6]、Faster R-CNN[7]、R-FCN(region-based fully convolutional network)[8]等系列方法。三是基于深度學習的回歸方法,包括YOLO(you only look once)[9]、SSD(single shot multibox detector)[10]、DenseBox[11]等方法。隨著深度學習出現之后,目標檢測領域在特征表達能力及時間效率上取得了突破性進展,可以輕松實現實時檢測速度。針對目標檢測中處理多尺度問題,YOLOV3 檢測算法直接利用深度網絡在目標對應位置提取的特征對其邊界框進行回歸處理,減小了計算量且設計比較簡單。但由于目標檢測中存在背景復雜,目標尺度和姿態多樣性的問題,造成YOLOV3 算法對部分目標檢測不準確,會產生誤檢、漏檢或重復檢測的情況。
為解決行人目標尺度和姿態多樣性導致目標檢測不準確的問題,本文借助YOLOV3 本身算法思想將前層特征和中層特征進行融合,構成包含不同尺度的目標定位信息和語義信息的融合層。通過增加多尺度融合層,解決其對多尺度目標的預測邊界框不夠準確問題。同時,利用K-means 聚類算法對數據集的目標真實框尺寸進行聚類分析,更改網絡檢測層的邊界框尺寸,以實現更好的目標檢測結果。另外,針對數據集中出現的人與周圍目標相互遮擋影響檢測的問題,使用斥力損失函數,縮小預測框與真實邊框的聚類,增大與周圍邊框的距離,從而降低模型的錯誤率,提高檢測效果。實驗結果證明,本文改進的視頻目標檢測算法對出現的多尺度目標具有很好的定位能力,并且能檢測出處于遮擋部分的行人目標,并在實驗數據集上取得了好的目標檢測結果。
目標檢測是當前計算機視覺和機器學習領域的研究熱點,相對于傳統目標檢測算法,R-CNN[4]將問題轉變成找出可能含有物體的區域框,這些框之間是可以相互重疊互相包含的,這樣就避免了暴力枚舉所有的框。R-CNN 目標檢測算法利用選擇性搜索算法在圖像中取2 000 個左右可能包含物體的候選區域,然后將每個候選區域縮放成統一的大小,并輸入到卷積神經網絡(convolutional neural networks,CNN)提取特征,最后將提取的特征輸入到支持向量機(support vector machine,SVM)進行分類。He 等人針對R-CNN 進一步改進提出了SPPNet[5],在R-CNN網絡最后一個卷積層后接入了金字塔池化層,保證傳到下一層全連接層的輸入固定。因為在R-CNN 中存在wrap/crop 預處理,導致圖像出現拉伸變形或物體不全等問題,限制了識別精度。SPPNet 在CNN 結構上加入了金字塔池化層,使得網絡的輸入圖像可以是任意尺寸,輸出是一個固定維數的向量。RCNN 目標檢測算法對所有候選區域進行特征提取時會有重復計算,針對這個問題,Girshick 提出了Fast R-CNN 模型[6],與R-CNN 相比,其在最后一個卷積層后添加了一個ROI(regions of interest)池化層,同時其損失函數使用了多任務損失函數,將邊框回歸直接加入到CNN 網絡訓練中,在保證準確率的同時提升處理速度。在Fast R-CNN 目標檢測算法中,對于選擇性搜索,找過所有的候選框,是非常耗時的。針對此問題,Ren 等人提出了Faster R-CNN 框架[7],在Fast R-CNN 中引入了區域生成網絡(region proposal network,RPN)代替選擇性搜索算法,同時引入錨點(anchor)應對目標形狀的變化問題。
2016 年,Redmon 等人提出了一種新的物體檢測方法YOLO[9]。他們將對象檢測作為回歸問題構建到空間上分離的邊界框和相關的類概率。單個神經網絡在一次評估中直接從完整圖像預測邊界框和類概率。該檢測算法,對于一個給定的輸入圖像,將其劃分成7×7 的網格。然后,對于每個網格,都預測2 個邊框值(包括每個邊框是目標的置信度以及每個邊框區域在多個類別上的概率)。針對預測出的7×7×2個目標窗口,根據閾值去除可能性比較低的目標窗口,最后利用非極大值抑制(non-maximum suppression,NMS)去除冗余窗口。YOLO 將目標檢測任務轉換成一個回歸問題,大大加快了檢測的速度,使得YOLO 可以每秒處理45 張圖像。但YOLO 沒有候選區域機制,只使用7×7 的網格回歸會使得目標不能非常精確地定位,這也導致了YOLO 的檢測精度不是很高。為了提高物體定位精確性和召回率,Redmon等人在YOLO 的基礎上提出了改進YOLO9000[12],相比于YOLOV1 提高了訓練圖像的分辨率,引入了Faster R-CNN 中的候選框的思想,對網絡結構的設計進行了改進,輸出層使用卷積層代替YOLO 的全連接層,聯合使用COCO(common objects in context)物體檢測標注數據和ImageNet 物體分類標注數據訓練物體檢測模型,其效果顯示無論是在速度上還是精度上都優于SSD[10],但是YOLOV2 在面對不同尺度的目標時,其檢測效果依然不夠理想。2018 年Redmon 等人再次提出了YOLOV3[13],其主要改進是調整了網絡結構,新的網絡結構darknet-53 借用了ResNet[14]的思想,在網絡中加入了殘差模塊,這樣有利于解決深層次網絡的梯度消失問題。其次,采用了多尺度檢測,選擇3 個不同尺度的特征圖來進行對象檢測,能夠檢測到更加細粒度的特征。再者,YOLOV3 中預測對象類別時不使用softmax 函數,改成使用logistic 的輸出進行預測,這樣能夠支持多標簽對象。YOLOV3 雖然具有不錯的結果,但隨著IOU(intersection over union)的增大,性能下降,說明YOLOV3不能很好地與真實框切合。因此,在YOLO算法的基礎上,針對不同數據集進行創新優化,提高檢測效果的相關研究逐漸增加。例如王殿偉等人[15]提出的小目標檢測算法,葛雯[16]、孔方方[17]和Wu 等人[18]改進的YOLOV3 算法,高宗等人[19]提出的基于YOLO網絡的行人檢測方法,船舶等目標檢測[20]及手勢跟蹤等應用[21]。
為了使YOLOV3 算法適用于行人目標檢測數據集,本文針對YOLOV3 算法進行以下工作:首先對行人目標檢測數據集進行K-means 聚類分析,根據聚類結果確定算法中邊界框尺寸;其次,增加YOLOV3 的尺度檢測層,以提高人群密集中小目標檢測的效果;最后,在YOLOV3 的原有損失函數基礎之上,加入了斥力損失函數解決行人目標檢測出現的遮擋問題。
YOLOV3 算法引入了anchor概念,anchor是針對不同尺度網絡層而確定的初始候選框。在之前的目標檢測算法中,都是手動挑選候選框的尺寸,這樣選取的候選框過于主觀。因此利用K-means 算法對訓練集中的真實邊界框進行聚類,根據聚類結果選擇出具有客觀性和代表性的候選框。
K-means 是發現給定數據集的K個簇的算法,每一個簇通過其質心(centroid),即簇中所有點的中心來描述。一般的K-means 聚類通過度量樣本間相似性進行聚類,通常利用歐式距離作為度量公式。在候選框聚類過程中,若使用歐式距離的標準K均值,則較大的邊界框會比較小的邊界框產生更多的誤差。真正想要選擇的樣本間的距離度量應該與邊界框本身的大小無關,因此對于候選框聚類的距離度量,使用以下公式進行計算:

其中,box表示真實框的集合,centroid表示邊界框的簇中心集合,IoU(box,centroid)表示真實框與邊界框簇中心的交集與并集的比值。IoU值越大,代表兩者相關度越高,即兩者越相近。在目標檢測中IoU計算方式如圖1 所示。
對于給定的真實框數據集,通過計算邊框間IOU值來度量邊框間的距離,避免邊界框本身大小所帶來的誤差。利用該聚類算法將數據集劃分為K個簇,通過一系列迭代使得簇內的邊框距離盡可能小,而簇間的邊框距離盡量大,最后通過目標函數的變化值從而確定候選框的尺寸。總的來說,K-means 聚類分析的目的,行人數據集的真實框本身存在“高瘦”的特點,YOLOV3 檢測算法原有的候選框尺寸并不完全適用密集行人數據集。因此,通過數據集本身標注出的真實框(包括無遮擋和遮擋的目標)的尺寸大小進行聚類分析,選出具有客觀性、代表性的候選框,替換YOLOV3 檢測算法原有的候選框尺寸,以提高檢測的效果。

Fig.1 IoU calculation formula representation圖1 IoU 計算公式表示圖
針對行人目標尺度和姿態多樣性導致目標檢測不準確的問題,借助YOLOV3 本身算法思想選擇將淺層特征和中層特征進行融合,構成包含不同尺度的目標定位信息和語義信息的融合層。經分析,淺層特征對小尺度目標具有很好的細節定位能力,但語義表征信息弱。隨著網絡層的加深,深度特征圖包含豐富的語義信息,而經過連續下采樣操作,小目標定位信息丟失。因此,利用殘差思想,將淺層特征與深層特征信息進行連接融合進行目標檢測。但直接利用最深層特征圖對淺層特征進行語義增強的效果并不明顯,因此在構建融合層時,選擇通過上采樣操作將深層特征圖放大到和淺層特征圖相同的尺寸進行連接操作。將增加融合檢測層的網絡模型稱為YOLOV3_104,其網絡結構圖如圖2 所示。
從網絡結構圖中可以看出,在原有YOLOV3 網絡結構基礎上,將深層特征圖經過上采樣操作放大到與淺層特征圖同一尺寸,之后進行連接操作構建了新尺度目標檢測層。在原有網絡基礎上增加了104×104 尺度檢測層,相對其他尺度檢測層,將圖像劃分成了更精細的單元格,可以檢測出越精細的物體,對小目標的檢測效果提升明顯。
在增加104×104 尺度檢測層的基礎上,將數據集真實框進行聚類分析得到的候選框尺寸分別應用到13×13,26×26,52×52,104×104 尺度檢測層上進行目標檢測。對于較大的特征圖,其感受野較小,對小目標相對敏感,因此選用尺寸小的候選框,而較小的特征圖,其感受野較大,對大目標相對敏感,因此選用尺寸大的候選框。
針對數據集中出現的人與周圍目標互相遮擋出現檢測不準確的問題,在YOLOV3 原有損失函數的基礎上,即縮小預測框與其負責回歸的標注框的距離的同時,添加了斥力損失[22]函數,增大預測框與其周圍非負責標注框及相交預測框的距離。更新后的損失函數,可以使得預測框向正確的目標靠近,遠離錯誤的目標,降低模型的誤檢率。其損失函數計算公式如下所示:

Fig.2 YOLOV3_104 network structure diagram圖2 YOLOV3_104 網絡結構圖

其中,LYOLOV3表示預測框與其負責回歸的標注框的損失計算值,沿用了YOLOV3 的中心點、長寬、類別及置信度差方相加的損失計算方式;LPBox-GBox表示預測框向其他標注框偏移的損失計算值;LPBox-PBox表示預測框與其他預測框靠近的損失計算值,α、β用于平衡后兩者損失值的權重。
當預測框與其他標注框靠得太近時,使得預測框容易受非真實標注框影響,回歸出來的預測框同時包含不同標注框間的部分區域,出現檢測不準確的情況。因此LPBox-GBox表現為斥力作用,使得預測框不受其他標注框的干擾,其計算公式如下所示:

其中,P+表示預測框集合,BP表示候選框P所對應的預測框,表示除了真實標注框外具有最大IoU區域的標注框,IoG、Smoothln計算公式如下所示:

當不同標注框對應的預測框靠得太近時,在NMS 處理中容易篩選掉IoU值大于閾值的部分預測框,出現漏召回的問題,因此LPBox-PBox表示為斥力作用,將不同標注框對應的預測框分開,其計算公式如下:

其中,I表示取預測框間IoU值大于0 的值進行計算,ε為很小的常數。
本實驗平臺為戴爾服務器PowerEdge R730,操作系統Ubuntu 14.04,CPU Intel?Core i3 3220,內存64 GB,GPU NVIDIA Tesla K40m×2,顯存12 GB×2。
3.2.1 數據集
實驗所選擇的數據集是MOT16 數據集[23]。該數據集標注的主要是移動中的目標,主要分為三種類別:第一是出現在視野中的移動或直立的行人,包括在自行車或滑板上的人,處于彎腰、深蹲、與小孩對話或撿東西狀態的行人;第二是包括像行人的目標(模特、出現人的圖片、反射的人影),不處于直立狀態的人(坐著或躺著的)和劃分為模糊目標(不同觀察者出現意見變化較大的);第三種類別標注所有的移動車輛、非機動車和其他存在潛在包含/遮擋關系的物體,其類別及示例標注如圖3 所示。在實驗開始之前,首先對MOT16 數據集提供的標注數據按照YOLOV3 數據格式進行調整計算,然后隨機獲取該實驗的訓練集和測試集數據。
3.2.2 實驗參數
本實驗選取的環境是Pytorch 框架,所用的模型是改進的YOLOV3 目標檢測算法。訓練時批量(batch-size)設置為16,圖像大小默認設置為416×416,輸入通道數為3,動量值(momentum)設置為0.9,學習率(learning_rate)設置為0.001。首先,將處理好的數據集先用YOLOV3 原模型進行目標檢測,得到一組檢測結果。然后,將聚類分析的結果應用到改進后的YOLOV3 模型中,并更新其損失函數后進行目標檢測,得到的檢測結果與YOLOV3 原模型進行實驗對比,觀察改進后的檢測模型針對多尺度且多姿態行人檢測中存在的問題優化效果及性能。

Fig.3 Examples of MOT data set categories and labels圖3 MOT 數據集類別及標注示例
3.2.3 實驗結果
首先,針對行人檢測數據集利用K-means 算法進行聚類分析,得到適應于行人檢測數據集的候選框尺寸。在聚類過程中,將K-means 算法的K值設置為12,依據不同標注框值決定的距離度量方法進行分簇,經過迭代后,得到數據集的候選框聚類結果。在這里選擇K=12,一是因為網絡結構具有4 個尺度檢測層,而每個檢測層具有3 類候選框,從而在聚類分析時選擇劃分為12 類候選框。二是通過設定不同的K值進行聚類分析,發現相比于YOLOV3 檢測算法的原數據集設定K=9,在MOT16 數據集上設定K=12 時經過迭代后其損失值較小,說明進行檢測算法前針對不同的數據集進行K-means 聚類分析的效果是有優勢的,具有客觀性。之后,按照特征圖越大,感受野越小,對小目標相對敏感和特征圖越小,感受野越大,對大目標相對敏感的原則,將得到的候選框尺寸分別應用到網絡不同尺度檢測層中,其結果如表1 所示。
進入初產期的柚果樹座果率低,樹體營養過旺,容易促發夏梢萌發。如果沒有及時抹去夏芽,會導致梢果爭肥,引發落果。因此,控制夏芽有利于提高四季柚座果率。

Table 1 Candidate box size after clustering表1 聚類后候選框尺寸大小
從表1 中數據可以看出,相對104×104 和52×52特征圖層偏重于對數據集中小目標的檢測力度,而26×26,13×13 則兼顧中等或較大尺寸的物體檢測。通過結合不同細粒度特征,增強網絡對多尺度行人檢測的魯棒性。
在候選框聚類結果的基礎上,將表1 的候選框尺寸替換原來網絡層的候選框尺寸,替換后的網絡模型稱為YOLOV3_105。為了驗證改進后模型的性能,將YOLOV3 網絡模型,增加104×104 特征檢測層的YOLOV3_104 網絡模型和應用聚類得到的候選框尺寸的YOLOV3_105 網絡模型三者進行實驗對比,其在MOT16 數據集檢測結果AP(average precision)值如表2 所示。

Table 2 Comparison of detection results AP of different network models表2 不同網絡模型檢測結果AP 比較
從表2 中數據可以看出,相比YOLOV3 網絡模型,增加104×104 特征檢測層的YOLOV3_104 在該數據集上多尺度行人的檢測效果有明顯提高,但整體檢測平均準確率相對提高了0.004。而增加了特征檢測層同時應用聚類得到的候選框尺寸的YOLOV3_105 網絡,相對YOLOV3 網絡模型,在MOT16 數據集上不僅提高了多尺度和多姿態行人的檢測效果,同時對該數據集的其他標注類別檢測效果也有所提高,因此整體檢測平均準確率相對提高了約0.07。由此可以看出,改進后的YOLOV3_105網絡模型對多尺度和多姿態的行人檢測效果優于YOLOV3,該網絡模型通過利用殘差思想和上采樣操作融合了多級特征圖,讓不同細粒度的特征參與行人檢測,從而解決了該數據集中行人目標多尺度和多姿態的問題,提高了目標的檢測效果。
為了驗證應用斥力損失的損失函數能否有效解決數據集中出現的人與周圍目標物體互相遮擋的問題,在YOLOV3_105 網絡基礎上,添加斥力損失更新其損失函數,將該網絡模型稱為YOLOV3_106,其在MOT16 數據集檢測效果如表3 所示。
數據集的8、9、10 類別代表被遮擋的類別,代表數據集中部分被遮擋的目標,相比于表2 的YOLOV3檢測模型進行數據對比,可以看出,相比于普通遮擋,引入斥力損失函數的YOLOV3_106 模型的檢測結果對比YOLOV3 模型的檢測結果并沒有體現出優勢,但對于嚴重遮擋情況(occluder full)來說,YOLOV3_106 模型相比于YOLOV3 模型檢測準確率提高了大約0.12。并且從表中數據可以看出,增加斥力作用的損失函數,整體提高了數據集的檢測準確率,相比YOLOV3 網絡模型,其平均準確率提高了大約0.1,說明在一定程度上緩解了數據集因目標間遮擋出現的誤檢、漏檢或漏召回問題,提高了網絡模型的檢測效果。

Table 3 Detection results AP of YOLOV3_106 network表3 YOLOV3_106 網絡檢測結果AP
為了進一步比較YOLOV3網絡模型及YOLOV3_104、YOLOV3_105、YOLOV3_106 網絡模型目標檢測性能,截取訓練過程中loss 值變化情況,其loss 值變化如圖4 所示。

Fig.4 Change of loss value of different network models圖4 不同網絡模型loss值變化
同時,將YOLOV3、YOLOV3_104、YOLOV3_105及YOLOV3_106 網絡模型的部分目標檢測圖片的預測框在圖中標注出來,進行可視化展示比較。為了驗證各個模型的性能,首先將數據集中圖片真實邊界框的值進行計算,并在圖中進行標注,得到標注好真實框的數據集。同時,利用訓練好的YOLOV3、YOLOV3_104、YOLOV3_105 和YOLOV3_106 模型對數據集進行檢測,得到標注好預測框的數據集,其部分檢測結果如圖5~圖8 所示。其中,圖5、圖7 表示數據集標注的真實邊界框的圖像,圖6、圖8 表示不同網絡模型標注預測框的圖像,其中圖像中標注目標的邊框的顏色是隨機產生的,同一圖像中的不同顏色代表數據集中的不同類別。

Fig.5 Real box example 1圖5 真實框示例1

Fig.6 Example 1 detection results圖6 示例1 檢測結果

Fig.7 Real box example 2圖7 真實框示例2

Fig.8 Example 2 detection results圖8 示例2 檢測結果
另外,YOLOV3_104 是在YOLOV3 模型基礎上添加104×104 尺度檢測層,其對小目標檢測比較敏感,但對行人檢測數據集并不完全適應,因此在YOLOV3_104 基礎上進行邊界框聚類分析后的網絡模型YOLOV3_105 和YOLOV3_106 對行人檢測數據集具有很好的魯棒性,能夠準確檢測出圖像中的行人及遮擋目標。從圖6 中可以看出,YOLOV3_106網絡模型能夠檢測出在YOLOV3 網絡模型中未被檢測到的遮擋的目標(圖中虛線圈出的目標),因為引入的斥力損失函數,在保證預測框向目標的真實框靠近的同時,還增大了預測框與其周圍非負責框的距離,尤其當出現遮擋情況時,使得兩遮擋目標的預測框呈現盡可能遠的趨勢,從而降低了模型的誤檢和漏檢率。雖然在圖7 中沒有標注遮擋嚴重的目標(虛線標注出的部分),但仍被訓練好的網絡模型檢測并標注,結果如圖8 所示,說明YOLOV3_105 和YOLOV3_106 具有很好的網絡學習能力。
針對行人目標檢測存在的多尺度和多姿態的問題,在YOLOV3 算法的基礎上,通過添加104×104 尺度檢測層增加網絡對小目標檢測的敏感性。之后,通過K-means 聚類分析得到適用于行人目標檢測數據集的邊界框尺寸,用于目標檢測以提高其網絡性能。同時,通過利用邊界框間的斥力作用更新模型的損失函數,改善目標遮擋影響以提高檢測效果。實驗結果證明,改進的YOLOV3_105 和YOLOV3_106 網絡模型在行人檢測數據集上的準確率分別為78.10%和80.53%,同YOLOV3 網絡模型比較,具有較好的檢測性能和魯棒性,證明了方法的有效性。