徐望明 徐天賜 李傳東 伍世虔
1(武漢科技大學信息科學與工程學院 湖北 武漢 430081) 2(武漢科技大學機器人與智能系統研究院 湖北 武漢 430081) 3(武漢科技大學教育部冶金自動化與檢測技術工程研究中心 湖北 武漢 430081)
在實驗室、工廠工地、加油站等場合,吸煙和打電話都是被嚴令禁止的行為,也是安全管理中被重點監控的行為。傳統的視頻監控系統主要依賴于人工不間斷地監視畫面中的人體行為或通過錄制視頻進行事后回放來判別人體行為,因人力限制、效率低下等原因難以實現全方位隨時有效地監視是否發生這些嚴令禁止的行為。基于機器視覺技術進行智能分析檢測成為趨勢,與傳統的人工視頻監控方法相比,這種檢測方法更具有實時性和高效性。常用的方法是先從采集的視頻幀或圖像中提取人工設計的視覺特征再利用分類器進行行為判別[1-2],由于特征提取方式是由人工設計的,可區分性不夠,在復雜的實際場景下對人體行為檢測的結果并不可靠。近年來,隨著深度學習技術的發展,人們開始利用深度卷積神經網絡從大量圖像數據中自動學習視覺特征對行為進行表征,實現了端到端的行為檢測,如劉雪奇等[3]提出了一種基于YOLO網絡模型的異常行為檢測方法,王軍等[4]提出了一種基于深度學習特征的異常行為檢測方法。相比于傳統的行為檢測方法,深度學習在行為檢測領域展現了巨大的優勢,但是深度學習模型的效果很大一部分取決于訓練集,由于吸煙、打電話等人體行為在實際表現中的差異性比較大,一般訓練集很難覆蓋所有情況,存在樣本數量不夠和分布不均衡的情況,對行為訓練集的標注也難有統一的標準,這就容易導致深度學習這種端到端的預測方法會出現行為誤檢的情況。
考慮到吸煙或打電話行為發生時伴隨著一些類似的先驗條件,比如,吸煙行為發生時,人臉、人手、香煙之間的位置關系存在一定約束條件,打電話行為發生時,人臉、人手、手機之間的位置關系也存在一定約束條件。因此,本文提出將深度神經網絡模型與行為先驗知識相結合來形成統一的解決方案檢測吸煙和打電話行為,以提升行為檢測的準確率。
本文提出一種基于深度學習和行為先驗相結合的吸煙和打電話自動檢測方法,其工作流程包括離線和在線兩個過程,如圖1所示。離線過程是建立一個行為數據集,并利用深度學習的原理,訓練可用于檢測行為和目標的深度卷積神經網絡;在線過程則是對輸入的測試視頻或測試圖像進行預處理后送入離線過程訓練好的網絡模型,預測得到的行為和目標的標簽、置信度及位置信息,并結合行為發生的先驗知識建立邏輯推理關系,進一步判定是否有相應的行為發生。

圖1 本文方法流程
關于離線過程,由于行為都是和行為的主體即人相聯系的,為了建立一套可用于訓練深度網絡的行為數據集,對采集到的訓練視頻或收集到訓練圖像,本文使用人臉檢測方法篩選出其中包含人臉信息的視頻幀或圖像作為有效樣本保留,而不包含人臉信息的視頻幀或圖像則作為無效樣本被剔除;為了將深度學習和行為先驗知識相結合,本文通過改造并重新訓練成熟的目標檢測深度卷積神經網絡,用于同時預測行為以及與行為相關的目標信息。因此對篩選出的有效樣本進行標注時,既要標注行為標簽(這里為吸煙和打電話行為)和相應的邊界框,也要標注與行為相關的目標標簽(這里為手、香煙或手機等)和相應的邊界框;同時,對已標記的樣本使用數據增強手段得到更多的樣本,一起組成訓練樣本集;最后,選擇一種可用于目標檢測的深度卷積神經網絡(本文選用YOLOv3[5]),利用所有訓練樣本,進行訓練,得到目標檢測網絡模型。
關于在線過程,由于在實際應用中一般也是希望吸煙或打電話行為和行為主體人相關聯,因此無論是輸入監控視頻或者單幅圖像,本文方法也同樣使用人臉檢測方法篩選出其中包含人臉信息的視頻幀或圖像作為有效樣本送入訓練好的多任務目標檢測網絡進行前向推理,而不包含的人臉信息的視頻幀或圖像則直接判定為正常,即沒有吸煙或打電話行為發生;對有效輸入圖像送入目標檢測網絡進行前向推理時,同時預測出行為(這里為吸煙或打電話行為)以及與行為相關的目標(這里為手、香煙或手機等)的標簽、置信度以及位置信息,再根據行為發生時的先驗知識,建立這些預測信息之間的邏輯推理關系,進一步判定吸煙或打電話行為是否發生。
本文把行為檢測任務看作特殊的目標檢測任務,因此可使用當前成熟的用于目標檢測的深度卷積神經網絡,如Fast RCNN[6]、Faster RCNN[7]、SSD[8]、YOLO[5,9]系列等。其中,YOLO系列網絡模型即YOLOv1、YOLOv2和YOLOv3均是利用單神經網絡結構實現從整幅圖像預測目標邊界位置和類別概率,即實現端到端的目標檢測。本文選用YOLOv3,主要考慮它是一種較新的目標檢測方法,其突出優勢在于適合對圖像中的小目標進行檢測而且檢測速度快,同時也能保持較高的檢測準確率。
YOLOv3采用Darknet-53作為主干網絡來實現圖像特征提取,由53個卷積層和5個最大池化層組成,在每個卷積層之后進行批歸一化(Batch Normalization,BN)處理和剪枝(Dropout)處理來防止模型過擬合。同時,使用類似FPN[10](Feature Pyramid Networks)的特征融合方法,在3個不同尺度的特征圖上預測目標位置和類別,提升了目標尤其是小目標的檢測效果。預測目標類別時,YOLOv3不是采用softmax[11]分類器,而是采用多個獨立的邏輯(logistic)分類器對每個框進行分類。在網絡訓練過程中,YOLOv3使用的損失函數是二元交叉熵損失(binary cross-entropy loss)。
對于新的目標檢測任務,YOLOv3都可使用k-means和k-means++方法對新的訓練數據集中的目標框進行重新聚類,得到9種不同大小的先驗錨點框(priors anchor box),并將其平均分配到3個不同尺度的特征圖上,較小的先驗框分配給尺度較大的特征圖使用,從而使得最終整體上得到的先驗框個數更多,能更好地適應新的目標檢測任務中的目標尺寸,提取更好的圖像特征。
本文在訓練用于檢測吸煙和打電話行為檢測的網絡模型時,使用官網下載的YOLOv3預訓練模型作為初始權重,為了利用行為先驗信息,設置為6類目標檢測問題,即同時檢測吸煙、打電話、正常行為這3類行為以及人手、香煙和手機這3類與吸煙、打電話相關的目標。鑒于目前沒有公開的用于吸煙和打電話行為檢測的數據集,本文自建了一個行為數據集并進行網絡訓練,因而9個先驗錨點框也都重新聚類得到。
先驗知識指無需經驗或先于經驗獲得的知識。實際上每一種特定行為的發生,都會伴隨著該行為的先驗知識而存在。具體地,對于本文要檢測的吸煙和打電話行為,它們存在一定共性,這正是可采用統一解決方案的原因。
本文方法中,為了使行為和其主體相關聯,使用了MTCNN[12]人臉檢測算法進行圖像篩選,檢測到的人臉信息是建立基于先驗知識的邏輯推理的要素之一。本文中與吸煙和打電話行為相關的先驗知識包括:(1) 預測的行為框應包含人臉區域,對于可能存在的多人同時出現在圖像中的情況,行為框包含哪張人臉,就說明該行為與該人相對應;(2) 實際生活中吸煙或打電話行為發生時,人臉、人手、物品即香煙或手機之間的位置關系也存在一定的約束條件,當訓練好的網絡模型預測出的行為標簽對應的置信度較低或者實際發生的行為被漏檢或誤檢時,可以利用這種約束關系,建立基于行為先驗的邏輯推理規則,進一步進行行為判定。
記Dist(face,object)、Dist(hand,object)和Dist(face,hand)分別表示人臉與物品即香煙或手機的距離、人手與物品即香煙或手機的距離以及人臉與人手的距離,距離可通過計算檢測框的中心點的距離得到,將圖像中發生吸煙或打電話行為的可能性與這些距離信息相關聯,由于像素之間的絕對距離會隨圖像尺度變化而變化,這里使用檢測到的正方形人臉框邊長Len(face)作為參考距離,建立如下規則:
(1) 當Dist(face,object)≤a·Len(face)時,吸煙或打電話行為發生的置信度增加p1。
(2) 當Dist(hand,object)≤b·Len(face)時,吸煙或打電話行為發生的置信度增加p2。
(3) 當Dist(face,hand)≤c·Len(face)時,吸煙或打電話行為發生的置信度增加p3。
其中,確定參數a、b、c時,可先利用訓練樣本的標注信息對相關距離進行統計分析后再微調,本文在自建數據集上確定的值為a=1.5,b=1.4,c=2.7;確定參數p1、p2、p3時,一般根據經驗人為指定,按先驗知識對吸煙或打電話行為發生的貢獻程度,上述規則(1)比規則(2)更重要,而規則(3)的重要性較低,從而可設p1≥p2?p3≥0,其中“?”表示p2要比p3大得多,即p3取一個較小值,另外出歸一化的考慮,設以上3個條件同時成立時p1+p2+p3=1。本文基于上述原則嘗試了多組值均能取得預期效果,在方法對比實驗中統一設置為p1=0.5,p2=0.4,p3=0.1。
如果不考慮行為先驗,直接基于深度網絡模型進行吸煙和打電話行為檢測的方法就類似于目標檢測,即將吸煙行為、打電話行為分別當成一種目標類別進行預測。由于圖像背景干擾,以及行為本身的復雜性,深度網絡模型存在部分漏檢和誤檢的問題,因此本文方法考慮行為發生的先驗知識,建立相應的邏輯推理規則進行判斷,如圖2所示。

圖2 基于行為先驗的邏輯推理流程圖
當要判斷一幅圖像中是否發生了某一特定行為即吸煙或打電話時,用標簽L表示這一行為,即L∈{smoking,calling},用T表示這一行為發生的置信度閾值(實際應用中可認為設定,本文中設置T=0.8),根據目標檢測網絡預測出的行為和相關目標的標簽、置信度和位置信息,分情況進行處理:
(1) 當檢測結果預測了某特定行為標簽L且置信度p0較高即p0>T時,直接判定行為L發生。
(2) 當檢測結果預測了行為標簽L且置信度p0較低即p0≤T時,則需要通過與行為相關目標之間的距離關系對該行為L是否發生進行再次判定,判定規則(即圖2中規則2)為:根據相關位置信息計算距離信息,分別判定前述3個距離條件成立與否,從而確定行為L發生的置信度實際增加量,進而修正行為L的最終置信度。對于前述距離條件i(i=1,2,3)成立與否,記此時行為L發生的置信度實際增加量為:
(1)
則最終將行為L的置信度修正為:
(2)
式中:max表示求最大值的操作。
若該修正后的置信度p高于閾值T,則判定行為L發生,否則行為L未發生。
(3) 當檢測結果沒有預測到行為標簽L時,此時p0=0,則也需要通過與行為相關目標之間的距離關系對該行為L是否發生進行再次判定,判定規則(即圖2中規則1)為:根據相關位置信息計算距離信息,判定前述3個條件成立與否,得到行為L發生的置信度實際增加量分別為Δpi(i=1,2,3),則最終將行為L的置信度修正為:
(3)
若該置信度p高于閾值T,則判定行為L發生,否則行為L未發生。
由于目前沒有公開的用于吸煙和打電話行為檢測的數據集,本文自建了一個吸煙和打電話行為數據集并用該數據集訓練YOLOv3目標檢測網絡。
自建行為數據集的過程包括數據采集、數據篩選、數據標記及數據增強等步驟。數據采集的方法是在不同的環境(如室內、室外的不同地點)和光照條件下(白天或夜間光照變化情況下)對人的行為進行錄像,錄制不同的人正在吸煙或打電話的行為視頻,錄像時也考慮了一定程度的拍攝角度變化和人體姿態變化。另外,網上下載的圖像或直接對不同行為拍照的圖像也可以作為訓練數據。考慮到行為和人的關聯性以及連續視頻幀之間的冗余性,數據篩選的方法是對視頻文件每隔幾幀采集1幀使用人臉檢測算法(本文使用MTCNN[12]算法)進行處理,對圖像文件直接使用人臉檢測算法進行處理,只保留那些能檢測到人臉的圖像作為有效訓練樣本。對有效訓練樣本進行標注的方法是:一方面要標注行為信息,框定包含人臉和行為相關目標信息的一個適當大小的圖像區域,如發生了吸煙、打電話行為,則相應的類別標簽分別設定為smoking和calling,否則視為正常行為,標記為normal;另一方面還將標注與吸煙、打電話相關的目標信息,即圖像中出現人手、香煙、手機等目標時,標記其邊界框,并相應地設定類別標簽為hand、cigarette和phone。本文使用的標注軟件是LabelImg,總共標記圖像10 461幅,由于每幅圖像中可能標記多個目標框,按類別標記了smoking類樣本4 516個,calling類樣本3 968個,normal類樣本1 977個,hand類樣本9 861個,cigarette類樣本6 197個,phone類樣本4 873個。另外,為提高模型魯棒性和泛化能力,使用數據增強的方法來進一步增加參與訓練的樣本數量和多樣性。對于上述已經標注過的有效樣本,本文在訓練時通過圖像縮放、水平鏡像翻轉、隨機調整亮度和色調等操作來達到數據增強的目的。
訓練YOLOv3網絡模型時,使用官網下載的預訓練模型作為初始權重,但考慮到預訓練模型中的先驗錨點框可能對香煙、手機等小目標檢測效果不好,重新使用k-means和k-means++算法進行聚類分析得到9個新的錨點框,大小為22×17,50×15,34×53,64×59,95×61,136×67,267×132,283×167,323×163;同時,為了能同時預測3類行為標簽和3類與行為相關的目標標簽,即訓練的YOLOv3是一個6類目標檢測模型。訓練時,使用8 369幅圖像作為訓練集,2 092幅圖像作為驗證集,訓練總輪數設置為100,在訓練第1~50輪時,凍結預訓練模型252層中前249層的權重,batch size設置為16,學習率設置為0.001;在訓練輪數50~100輪時,解凍所有層數,此時batch size變為之前的1/2,同時學習率降為之前的1/10。實驗平臺用到的主要硬件配置:i7-8700 CPU、16 GB內存和NVIDIA 1060 5 GB GPU,軟件配置為Windows系統、CUDA 10.0、Python3.7.3和OpenCV 4.0。
YOLOv3使用均方和誤差作為損失函數來優化模型參數。實驗中網絡訓練時的損失變化情況如圖3所示,可以看到:除了在解凍所有層時出現一次波動外,總體上隨著訓練批次(batches)的增加,網絡損失(loss)在不斷減小,逐漸趨于0,即整個網絡結果趨于收斂。

圖3 訓練YOLOv3模型時的損失變化
對訓練好的目標檢測模型,本文用重新采集的1 167幅圖像作為測試樣本開展行為檢測實驗,對比了僅使用深度網絡(未使用行為先驗)的方法和本文提出的將深度網絡和行為先驗相結合的方法。
如圖4所示,使用YOLOv3網絡進行行為和目標檢測,圖4(a)中有1個人在打電話,但直接使用YOLOv3網絡未能預測到任何行為標簽,即漏檢;圖4(b)中有1個人在吸煙,但直接使用YOLOv3網絡預測的行為標簽返回值為calling,未返回smoking,行為判別錯誤;圖4(c)中有2個人在吸煙,直接使用YOLOv3網絡預測的行為標簽返回值左邊1個人是smoking,行為判別正確,但右邊1個人同時返回了smoking和calling(表示同時發生),行為判別錯誤。利用本文改進的方法,結合各圖中通過YOLOv3網絡預測出來到目標信息,即hand、cigarette、phone以及Face,利用這些信息,結合深度網絡預測的結果和上述基于行為先驗的推理邏輯,對圖4(a)最終判定其中的人在打電話,對圖4(b)最終判定其中的人在吸煙,對于圖4(c)最終判定其中右邊那個人只是在吸煙,而沒有打電話。

(a)

(b)

(c)圖4 吸煙和打電話行為檢測示例
本實驗對1 167幅測試圖像也進行了標記,將僅使用深度學習方法進行端到端直接檢測的結果與本文方法(深度學習和行為先驗相結合)的結果進行了比對。表1為使用3種典型深度目標檢測網絡Faster RCNN、SSD、YOLOv3時不同方法的行為檢測準確率,表中數據是設置了較高行為置信度閾值(T=0.8)時得到的。
由表1可見,使用Faster RCNN、SSD、YOLOv3等典型的深度目標檢測網絡均可實現端到端的行為檢測,當與行為先驗相結合進行推理時,行為檢測準確率均得以提升,且使用YOLOv3網絡時提升約7%最為明顯,表明了本文方法的有效性;另外,在這3種深度目標檢測網絡中,YOLOv3直接用于端到端的行為檢測時取得了最佳效果,用于本文方法中與行為先驗相結合時也取得了最佳效果,且準確率提高幅度最大,這說明YOLOv3網絡的多尺度檢測特性更適合檢測人手、香煙和手機等小目標,使得基于行為先驗的邏輯推理更加奏效,再加上YOLOv3本身是一種檢測速度快的輕量級深度網絡,特別適合在有實時性要求的場景中使用,這些正是本文選擇YOLOv3網絡的原因。

表1 不同方法的行為檢測準確率對比(%)
本文提出了一種基于深度學習和行為先驗相結合的方法對吸煙和打電話行為進行自動檢測。通過自建行為數據集訓練了一個用于預測行為和相關目標信息的YOLOv3網絡,利用訓練好的模型初步預測出特定行為(吸煙或打電話)和與行為相關的特定目標(手、香煙或手機等)的標簽、置信度和位置信息之后,再根據行為發生時的先驗知識,建立這些信息之間的邏輯推理關系,進一步判定行為是否發生。實驗結果表明,與單純的基于深度學習的端到端行為檢測方法相比,該方法具有識別精度高、檢測速度快的特點,能有效解決誤檢問題,從而提升了檢測精度。由于便于實現數據現場采集和對深度網絡模型進行及時訓練,本文方法可以推廣為檢測其他特定行為,方便部署到特定應用場合,滿足特定的應用需求。