張文卓, 尉天成, 陳小鋒
(西北工業大學自動化學院, 西安 710072)
視頻是圖像信號在時域的擴展和延續,隨著計算機視覺學科的發展,越來越多視頻中的信息可以通過一定的特征來進行提取和應用。 近年來,基于視頻的人體異常行為分析和檢測已經成為計算機視覺領域的熱門研究方向,其主要內容是利用計算機視覺技術對視頻中的人體行為進行語義特征分析,量化并形成行為表達[1]。 現已在智能視頻監控系統、自動駕駛、智能人機交互等方面獲得廣泛應用。
研究可知,本世紀以來,計算機性能的不斷優化和交通智能化的快速發展為行人異常行為檢測技術提供了契機。 行人異常行為檢測技術的相關研究也陸續推出了多項成果。 Moeslund 等學者[2]把人體行為檢測分成4 種基本類型,包括元動作、個人行為、交互行為、群體行為。 Giorno 等學者[3]提出了一種基于大型視頻異常檢測的判別框架,將異常事件定義為與同一視頻中的其他示例的不同示例。Ionescu 等學者[4]提出了通過去遮掩的方式在視頻中捕捉異常事件。 Tran 等學者[5]提出了一種基于大規模監督視頻數據集的深度三維卷積網絡時空特征學習方法。 Hasan 等學者[6]提出了利用傳統手工制作的時空局部特性學習一個完全連接的自動編碼器,并建立了一個完全卷積的前向自動編碼器來學習局部特征和分類器。 Xu 等學者[7]提出了一種用于復雜視頻場景中異常事件檢測的無監督深度學習框架。 Guan 等學者[8]用光流法對行為進行全局描述,通過假設連續2 幀圖像之間沒有光照變化,表征連續2 幀中的顯式運動模式。
考慮到作為低功耗微處理器的DSP 有著系統可靠性高、靈活性高、編程難度較小等優勢,國內外的研究學者和團隊也提出了基于DSP 的一系列設計方案。 趙淵[9]采用混合高斯背景建模和運動目標檢測跟蹤等算法,并通過CCS 編譯器優化、軟件流水優化、算法代碼優化、TI 相關函數庫的使用等優化手段,在DM6437 硬件平臺上實現了完整的視頻目標跟蹤系統。 劉哲夫在DM6437 嵌入式DSP平臺上,通過對相關模塊的運行周期進行分析, 結合硬件平臺的特性,設計了一種有效的行人檢測系統。 戴毅[10]利用DM8168 硬件平臺,提出一種前景增強檢測算法結合Centrist 算子的行人分類檢測算法,實現了行人的有效檢測。 Kehtarnavaz 等學者[11]設計了一種針對等待過馬路的行人的檢測系統,并在TMS320C40 平臺上進行了開發和實現。 Wang 等學者[12]基于TMS320C6455 平臺,提出了一種基于小波金字塔分解的算法, 通過多目標視覺跟蹤器實現多目標檢測。 許德衡等學者[13]對基于DM6437的行人檢測硬件平臺進行了設計,研究了一種能夠檢測路人行為并發出警告的DSP 汽車輔助駕駛行人自動檢測系統。
ViBe(Visual Background Extractor)算法是一種像素級的圖像處理算法。 不同于高斯混合模型等基于模型的方法,ViBe 算法是基于樣本的方法[14-15], 用于前景檢測并進行背景建模。 需要指出的是,本方法是對每個像素點存儲了一個樣本集,樣本集中存儲了該像素點的歷史數據和相鄰點的數據,從而判斷是否屬于背景點。 該方法不涉及浮點數和對算力要求較高的乘除法,計算量小,適合運用在嵌入式平臺上。
ViBe 算法的優勢在于運算簡單、易于實現, 在檢測效率和效果上都優于傳統的運動目標檢測算法。 但是存在著圖像死區的問題,影響使用。 傳統ViBe 算法出現的“死區”現象如圖1 所示。 研究可知,在ViBe 算法中,如果視頻第一幀含有運動目標,該像素也會用來填充背景像素,在前景像素分類過程中,就會出現死區現象。 第一幀圖像中行人的初始位置在一段時間內被當成前景,雖然在此后的更新中會被正確劃分為背景區域,但這個過程比較緩慢,見圖1(a),在第10 幀時死區的存在還是比較明顯的;由圖1(b)可看到,在第100 幀圖像時, 圖像死區現象開始明顯減緩,但仍存在;由圖1(c)可看到,一直到175 幀時,圖像死區才完全消失。

圖1 傳統ViBe 算法出現的“死區”現象Fig. 1 The “dead zone” phenomenon of traditional ViBe algorithm
本文采用獲取前景運動屬性的策略,如果一個像素點在之前更新中被判定為前景點,則在此后特定次更新之內不將該點納入背景樣本集中;但該點被判定為前景點超過這個次數,則更新其為背景區域像素點,從而在一定程度上緩解“死區”現象。 具體步驟為:
(1)算法初始化。 首先使用變量B0(i,j) 保存每個像素是否為初始的背景模型,若該點為第一幀圖像的背景模型,則置為1;否則置為0。 另外對初始圖像的各個像素都使用一一對應的變量Ci(i,j)專門保存該像素點被判定為符合條件點的次數,作為前景點計數器。
(2)前景檢測。 利用ViBe 算法,分離前景和背景。
(3)背景更新。 經過前景檢測,如果某像素點被判斷為背景像素,則用來更新背景模型;若為前景區域,對比是否是初始的背景區域,若是則將原始背景區域內的像素替換為當前背景區域內的像素,并將標志位B0(i,j) 置為0。
(4)“死區”判定。 如果某像素點滿足以下條件:
①當前被判斷為前景點。
②不是初始的背景模型。
③與上一幀同一位置像素值Ii-1(x,y) 之差的絕對值小于TSD,則將前景點計數器Ci(i,j) 加1;否則將其減半。 直到Ci(i,j) ≥K時,則認為該點為“死區”,此處K= 10,Ci(i,j) 的更新邏輯見式(1):
(5)“死區”抑制。 對于被判定為“死區”的區域,使用當前檢測得到的該區域像素值代替背景模型像素值,將計數器Ci(i,j) 置為0。
抑制ViBe 算法“死區”總體流程如圖2 所示。經過以上的步驟,抑制“死區”的效果較為明顯,效果見圖3。 對比圖1,可見當視頻在第10 幀時,出現“死區”現象;在第34 幀時,“死區”已基本不存在;在第100 幀時,“死區”早已完全消失,而此時未經處理的ViBe 算法“死區”仍然存在。

圖2 抑制ViBe 算法“死區”流程Fig. 2 Process of suppressing “dead zone”of ViBe algorithm

圖3 改進后的ViBe 算法“死區”抑制情況Fig. 3 The “dead zone” suppression of improved ViBe algorithm
經過改進ViBe 算法對“死區”的抑制和閉運算操作,得到了較為清晰的前景區域,本文將前景區域作為感興趣區域,通過對二值化后,求連通域的正外界矩形,即完成了所需感興趣區域的提取。
在行人檢測場景中,傳統的Haar-like 特征對目標的紋理比較敏感,對水平和豎直的目標特征進行描述,缺點是準確性容易受到光照強度的干擾,且其對行人輪廓的描述效果一般;HOG 特征可以對梯度方向進行表示,對于局部明暗不同的情況,通過使用單一的檢測特征進行行人檢測難以滿足要求,需要采取措施提升檢測效果。
根據2 種特征的特點,本文使用HOG 特征進行行人的輪廓的檢測,再使用Haar-like 特征進行行人上半身檢測,2 種特征通過串行級聯的方式進行組合。 首先使用HOG 特征描述行人輪廓,為了提高通過率,本文使用包含下半身遮擋的數據集進行訓練,以便提高行人識別率,代價是虛警率隨之變高。 在此后的判斷中,使用Haar-like 特征對行人上半身進行再次識別,對比全身識別可以提高計算速度、減少運算量。 對上半身Haar-like 特征進行訓練時,采用簡單數據集進行訓練,需要對其中上半身區域進行裁剪。 當通過2 次判斷之后,就可以檢測出行人檢測結果,標注出行人所在區域。 具體級聯方法如圖4 所示。

圖4 HOG 和Haar-like 特征穿行級聯Fig. 4 Cross cascade of HOG and Haar-like features
使用上述特征融合后的檢測方法進行檢測,檢測樣本為INIRA 行人數據庫中的測試樣本,針對此測試集的測試結果見表1。

表1 行人檢測效果統計Tab. 1 Statistics of pedestrian detection effect
由表1 中數據可知,傳統的3 種描述特征應用在行人檢測的場景中,HOG 特征的檢測效果最優,Haar-like 特征次之,而LBP 特征雖速度快、但效果最差。 本文使用串行級聯的方式將HOG 特征和Haar-like 特征結合的檢測方法可以提升行人檢測的性能,在提升識別率的同時將誤檢率和虛警率控制得較低。
圖像的矩特征是指矩特征算子在特定的圖像中有關幾何特征的性質,簡稱幾何矩。 通常將圖像在縮放、平移和旋轉等操作之后仍然保持不變的矩算子特征稱為不變矩,常見的7 個Hu 不變矩為:
對于離散f(x,y) 數字圖像的7 個Hu 矩組,設其進行比例因子為λ的縮放變換,可以得到:
經過變換之后的中心矩和標準化中心矩變為:
由式(4)~式(5)可知,尺度變換之后的中心矩μpq'和標準化中心矩ηpq'隨著比例系數發生了變化,且同p、q、λ的值有關。 根據式(2)給出的Hu 矩的定義,可知在離散數字圖像場景中,傳統的7 個Hu矩不具有尺度不變性。
為了消去比例系數λ,構造新的不變矩組:
式(6)中的6 個不變矩組消去了比例因子,具有平移、旋轉和尺度不變性。
本小節通過實驗驗證改進后的Hu 矩對行人動作的判別。 為了降低運算量,提高計算準確度,本文使用提取到的行人動作的二值圖像進行判別。 首先對正常行走的3 幀圖像進行驗證,如圖5 所示,提取3 幅圖像的Hu 特征值,得到的結果見表2。

表2 正常行走的Hu 特征值Tab. 2 Hu characteristic values of normal walking

圖5 正常行走二值圖像Fig. 5 Binary image of normal walking
本文使用KTH 數據集作為樣本數據集[16],由于其不含彎腰、下蹲、摔倒動作,因此使用自己拍攝的300 幅圖像作為增補樣本數據集,使用自己拍攝的一段2 min 54 s 長的視頻作為測試數據,包含了行走、彎腰、下蹲、摔倒幾種動作,每個動作提取50個測試數據,得到的特征值如圖6 所示。 測試數據最終的識別準確率見表3,將7 種不同的行為,與樣本數據集中的動作進行對比,通過歐式距離進行交叉匹配。

表3 動作檢測準確率結果Tab. 3 Accuracy results of motion detection%

圖6 不同姿態Hu 矩組特征圖Fig. 6 Characteristic diagram of Hu moment group with different attitude
由表3 分析可知,基于原始Hu 矩的動作檢測結果準確性一般,對“下蹲”動作的檢測準確率只有70%;而改進后的Hu 矩對不同動作的檢測準確率均有提升,主要原因就在于改進后的Hu 矩具有尺度不變性,因而對視頻畫面中行人占比大小具有良好的適應性。
在本文中,要進行行人異常行為檢測研究,依次需要實現的算法有感興趣區域提取、行人檢測、以及行為的判別。 基于前文理論分析,按照均衡負載的原則,將整體任務分配為以下幾個子任務:通過改進型ViBe 算法進行前景檢測、感興趣區域提取、基于HOG 特征的行人區域篩選、基于Haar-like 特征的行人檢測、改進型Hu 矩的計算。 為了保證核間通信的時效性,在數據流的基礎上,設計了適用于多核場景的并行處理框架,如圖7 所示。 該框架的特點為:

圖7 多核并行框架下的程序流程Fig. 7 Program flow under multi-core parallel framework
(1)使用核間中斷的方式進行同步觸發,相較于傳統的同步脈沖觸發的方式實現簡單。
(2)第一幀數據需要首先填滿整個模型,以串行方式來驅動,而其余幀數據按照后驅機制的方式驅動。前驅機制使用到的核間中斷ID為16,后驅機制中的核間中斷ID各不相同。
(3)并行處理的實現可以使得多核的利用率大大提升,在8 個核的子任務分配均衡的理想情況下,處理一幀完整數據的耗時最多可以減少到原來的1/4,提高任務處理效率。
當特定核完成子任務后,該核共享內存區的數據已被處理過,失去了時效性,可以被覆蓋。 從圖像接收、運動檢測、感興趣區域提取、行人輪廓檢測、行人頭肩檢測、Hu 矩特征值計算對被檢測目標進行分析。 研究中給出的對該程序中的數據實時性進行分析的過程如圖8 所示。

圖8 多核并行處理實時性分析Fig. 8 Real time analysis of multi-core parallel processing
除了第一幀數據填滿整個6 個核的過程中是串行執行外,其余幀均處于多核并行的狀態。 設當前幀為第N幀,各個核均在執行運行,即處于滿載狀態,以上6 個核的狀態如下:
(1)核5 響應來自核4 的ID為16 的核間中斷,對當前第N幀進行改進后Hu 矩的計算,最終得到當前行為的特征值。 當第N幀處理完成后,發送ID為512 的核間中斷,觸發核4 進行行人檢測操作。
(2) 核4 接收到ID為512 的核間中斷, 對第N+1 幀數據執行Haar-like 特征行人檢測,完成處理之后向核5 發送ID為16 的核間中斷,觸發第(1)步操作;發送ID為256 的核間中斷觸發核3 進行HOG 特征行人檢測。
(3) 核3 接收到ID為256 的核間中斷,對N+2 幀數據執行HOG 特征行人檢測,完成后向核4 發送ID為16 的核間中斷,觸發(2)所述操作;發送ID為128 的核間中斷觸發核1 進行感興趣區域提取。
(4) 核2 收到ID為128 的核間中斷,對第N+3 幀進行感興趣區域提取。 完成后發送ID為64 的核間中斷觸發核1 操作。
(5) 核1 接收到ID為64 的核間中斷,對第N+4 幀數據執行ViBe 算法,為后續操作提供數據;向核0 發送ID為32 的核間中斷觸發核0 工作。
(6)核0 接收到ID為32 的核間中斷,開始接受第N+5 幀圖像并保存,完成后發送ID為16 的核間中斷通知核1 已完成接受,可以開始處理。
通過以上操作,實現了多核并行圖像處理操作。
本文所采用的C6678 DSP 開發板由于不具備視頻輸入輸出接口,因此為了分析視頻序列設計了檢測系統,其架構圖和實物圖分別如圖9、圖10 所示。 本文使用Qt Creator 集成開發環境搭建了上位機,其功能是通過千兆網口和DSP 開發板建立TCP通信,向DSP 開發板發送圖像數據,接收到DSP 回傳的圖像數據進行顯示。 C6678 DSP 運行行人異常行為檢測算法,并將檢測后的結果通過千兆網口發送回上位機。

圖9 系統架構圖Fig. 9 System architecture

圖10 系統實物圖Fig. 10 Physical diagram of the system
本文選取了KTH 數據集中大小為160×120 視頻和通過手機拍攝的3 段大小為960×540 的視頻作為測試數據,拍攝的測試數據通過攝像頭平時靜止拍攝,分為3 個不同的場景,其中包含了行走、跑步兩種正常動作以及彎腰、下蹲、摔倒、揮手和拳擊五種異常動作。 正常行走和摔倒場景的測試結果如圖11 所示。
當系統檢測出值得注意的異常行為,包括揮手、下蹲、彎腰、摔倒和拳擊時,會在窗口右側顯示警告標志以及文字提示。 上述測試的檢測結果見表4。由表4 可知,在較為簡單場景中,本文檢測效果較為理想,可以滿足要求。

表4 測試準確率Tab. 4 Test accuracy
本文依次通過編譯器優化、關鍵字優化、Cache存儲優化、庫函數優化四個步驟進行優化,處理一幀960×540 圖像的時間可以達到150 ms 左右,滿足了實時性的要求,表明了該系統可以實現簡單場景下的行人異常行為檢測功能。
本文在歸納總結行人檢測和行為識別技術發展的基礎上,圍繞視頻中的行人檢測和行為識別問題,從檢測行人和行為特征出發,重點研究了運動目標檢測算法、基于特征融合的行人檢測算法以及行人異常行為檢測算法,設計了適合多核DSP 平臺的行人檢測和行為識別程序,完成了基于嵌入式平臺的行人異常行為檢測系統的開發。 首先,設計了基于運動目標檢測的感興趣區域提取算法,解決了ViBe算法出現的“死區”,實現了對運動區域的提取。 其次針對單一特征在行人檢測過程中存在的問題,基于HOG 特征和Haar-like 特征的特點,設計了基于串行級聯方式的特征融合方法。 然后,提出了基于改進后的Hu 矩不變性的行人異常行為檢測算法,使用歐氏距離作為待檢測動作Hu 矩組特征值相似程度的衡量準則,實現了幾種行人行為的識別。 最后,設計了基于多核DSP 平臺的行人異常行為檢測系統。 通過實驗測試,驗證了系統功能的有效性。