劉洋,李丹
(四川大學錦城學院,四川成都,611731)
隨著近年來直播和短視頻平臺的興起,衍生了大量以直播和短視頻拍攝制作為職業的各類博主,為制作足夠吸引觀眾眼球的作品,國內外出現大量了以“高空挑戰”,“高空跑酷”為視頻內容的制作者,其中不乏因此而高空墜亡的視頻制作者,這類視頻制作者大多傾向于選擇樓層較高,危險系數高的建筑頂層等鮮有人至的高危區域進行視頻拍攝,由于大多數區域依靠人力很難做到持續監管,導致安全管理人員很難及時發現和規避風險。
高速網絡的迅速普及使得家用監控攝像已經在大量家庭部署,用戶可以使用監控隨時關注家人狀態,其中對小孩安全的照看是監控設備的主要應用場景之一,然而家長即使是在線下也仍然存在對小孩安全照看的疏忽,許多慘劇因此發生。針對以上一系列問題,急需一種可以部署到家庭的輕量化,計算力要求小的安全監控系統在某些危險區域出現人員異?;顒訒r對管理人員示警。
隨著卷積神經網絡近年來的不斷發展,其在目標檢測和識別方面已經取得了很大進步。當前目標檢測的方法簡單來說分為兩步:1.檢測目標位置,2.對目標進行分類。而主流目標檢測算法大致分為兩類:一階段(one-stage)和二階段(two-stage)目標檢測算法,其中一階段算法即指檢測和分類同時進行的算法,其中較有代表性的算法有YOLO系列,SSD[1]等算法,這類算法相對于二階段算法如R-CNN[2],fast-CNN系列[3,4]等算法的優勢在于其執行效率更加高效,但是在精度方面一階段算法總體不如二階段算法。要想在各類監控設備上部署檢測系統,需要考慮實時性需求和具體應用時的硬件限制。所以一階段算法因為其高效性和對計算資源較低的需求成為了部署在這類設備上的不二選擇。
YOLO系列初代算法YOLOv1[5]是由Joseph Redmon在2016年CVPR上首次發表,自此YOLO系列因其高效的性能而被廣泛應用到各類實時檢測任務中。在初代YOLO中,作者將圖像分割為7*7的共計49個小單元格,圖片經過YOLOv1網絡處理之后將會輸出一個7*7*30的張量,其中7*7是指將圖片分割成7*7的網格,30是指預測框的寬高,中心點坐標,置信度以及可預測的20個物體種類,通過這樣的張量拼接方式使得YOLO可以同時完成對目標位置和種類的預測。此后的一系列YOLO算法基于這種思想不斷在精度,速度和可識別物體種類方面進行了改進,YOLO9000[6]將可識別物體的種類從20種增加到了9000種,YOLOv3[7]在前面兩代算法的基礎之上進一步提升了速度和精度。2020年新作者AlexeyAB接手原作者的工作發布了YOLOv4[8],YOLOv4的網絡結構主要包含四大部分,輸入,主干網絡,頸部結構,頭部結構。YOLOv4相較于YOLOv3帶來了精度和速度的全面提升,YOLOv4網絡吸收整合了世界上最先進有效的數據處理方法,YOLOv4的作者在論文中將這些方法分為兩類,一類是只需要增加一點訓練時的開銷,但是不會增加檢測時候的時間開銷就能帶來一定精度上提升的方法,這類方法作者稱為“Bag of freebies”,YOLOv4中這一類方法主要是一些預處理方法,如Mosaic數據增強,通過將多張圖片隨機縮放,裁剪,排布之后拼接到一起,既增強了模型魯棒性也降低了對硬件配置的要求。另一類方法是增加檢測開銷但是能夠顯著帶來精度提升的方法,在YOLOv4中這類方法被稱為“Bag of specials”,具體應用到的方法包括使用SPP模塊,PAN模塊,以及在主干網絡中使用Mish激活函數,CSP模塊等處理方法。在YOLOv4發布后不久,YOLOv4-tiny上線,其網絡結構更加簡單,檢測速度大大提升,同時由于其對計算能力要求不高,使得其能輕松部署到各類硬件條件不是很好的終端上完成實時的檢測任務。
YOLOv4(網絡結構如圖1)是一種基于YOLOv3并融合多種先進數據處理方法改進而來的精度高,效率快的目標檢測算法。可以在各類終端完成部署并且達到實時檢測的目的。

圖1 YOLOv4網絡結構
1.1.1 主干網絡
CSPDarknet53作為主干網絡的作用是提取目標特征,其中包含共計72層卷積,五個結構不同的殘差塊,相較于YOLOv3在主干網絡中使用Leaky relu作為激活函數不同的是,在YOLOv4主干網絡中使用了Mish激活函數。YOLOv4在主干網絡中將YOLOv3中的殘差單元與CSPNet[9]相結合構建了大的殘差塊,每個殘差塊之前的一層卷積會將圖像的尺寸減小一半,通道數增加一倍。CSPNet網絡的作者認為在實際應用中推理成本過高的原因是在網絡優化過程中有大量的梯度信息重復,增加了很多的計算量,因此采用CSP模塊先將基礎層的特征映射劃分為兩部分,然后通過跨階段層次結構將它們合并,在減少了計算量的同時可以保證準確率。這樣既增強了網絡對特征的提取能力,也避免了圖像在多次卷積之后特征消失的情況。采用這樣的主干網絡帶來這樣兩個優點:1.增強卷積神經網絡的學習能力,2.降低對計算機硬件的要求。
1.1.2 SPP模塊
SPP模塊是受空間金字塔網絡(SPPNet[10])啟發,SPPNet使用多個最大池化窗口對輸入的圖片進行池化操作,不受輸入圖像尺寸限制,總是輸出固定大小的特征圖。使用SPP模塊的作用主要是融合多重感受野的特征融合以及得到固定大小輸出的特征圖。
1.1.3 PAN模塊
PAN模塊在YOLOv4中通過在頸部模塊先自頂向下進行上采樣,使得特征圖維度翻倍,再自底向上完成下采樣,使得維度折半,通過這一模塊完成圖像的特征融合,最后輸出三個head完成預測。
YOLOv4是俄羅斯開發者Alexey等人在YOLOv4發布之后提出的一種目標檢測算法,相比于YOLOv4,其更加輕量化,網絡結構更加簡單(圖2),執行效率更高,但是精度會有一定下降,相較于YOLOv4,YOLOv4-tiny對硬件設備的要求更友好。其主干網絡共38層,首先使用兩個(3*3*2)卷積完成兩次對輸入圖像的下采樣,然后使用三個CSP模塊,CSP模塊的作用是,劃分基礎層的特征映射,然后通過跨層次結構合并,使用這一結構可以使得模型在輕量化的前提下保證準確率。在YOLOv4中,主干網絡使用了Mish激活函數,這使得YOLOv4模型map得到了進一步提升,而在YOLOv4-tiny中,主干網絡使用的是leaky-relu。同時在head部分,YOLOv4最終結果產生三個head,在YOLOv4-tiny中最后只產生兩個head。

圖2 YOLOv4-tiny網絡結構
本文使用的原始數據集是VOC2011數據集,提取出其中共計7419張有人類出現的圖片進行訓練,再從其中選取148張圖片作為測試集,選取剩余7271張圖片作為訓練集。
在Colab平臺上分別對YOLOv4和YOLOv4-tiny兩種模型進行訓練和測試,其中YOLOv4-tiny迭代次數為4000,YOLOv4迭代次數為2500,GPU為Tesla T4。詳細參數設置如下所示,batch=64 ,classes=1,Learning_rate=0.001。從訓練過程圖像(圖3,4)得知YOLOv4-tiny和YOLOv4都在訓練迭代2000輪之后損失值趨于收斂狀態。

圖3 YOLOv4-tiny損失圖像和mAP

圖4 YOLOv4損失圖像和mAP
以mAP作為模型評價指標,最終訓練結果(表1)得到YOLOv4的 mAP為 91.9%,YOLOv4-tiny的 mAP為 80.33%,從實驗結果可以發現,YOLOv4的檢測時間是YOLOv4-tiny的兩倍,但是帶來的精度提升卻只有10%左右。80%的mAP在大多數的應用場景下已經能夠勝任。把訓練好的模型拿到1050 Ti的機器上測試發現YOLOv4-tiny能夠達到15幀左右的檢測速度,畫面流暢,而同環境下YOLOv4只能達到8幀左右的檢測速度,畫面有明顯延遲。從在特定區域內的檢測效果來看,兩種模型除了在置信度方面YOLOv4顯著高于YOLOv4-tiny,檢測效果幾乎一致(如圖5)。

表1 訓練結果

圖5(左:YOLOv4,右:YOLOv4-tiny)
通過在可能發生事故的高危區域的監控設備上部署一個檢測預警系統,整個系統由三個子系統構成(圖6)??梢跃颈O管人員及時關注高危區域的人員活動。一旦系統檢測到區域內有不正常人員活動,立即通過接口激活示警系統,通過視覺和聲音信號向管理人員示警。

圖6 檢測預警系統
本文所實現的是在高危區域部署監控設備,在有人員進入時對監管人員進行示警,從而幫助管理人員及時阻止相關區域的危險行為。其中YOLOv4-tiny的mAP達到了80.33%,完全能輕松部署到大部分監控系統并完成實時監測任務,然而這一結果還不夠滿足各類場景下的準確示警(如巡邏人員進入,建筑維護人員的正常工作),下一步在這一應用背景下的研究會優化如何降低對各類非關心目標的誤報,可以從以下三個方向著手:(1)對檢測到的人員身上衣物制服進行二次分類,對保安,巡護等工作人員進行過濾,避免系統在某些情況下頻繁示警。(2)在前者基礎之上加入對人體危險動作的識別,從而形成更加完善的報警系統和危險級別分級,在這一方面已經有人開始了相關研究并取得了不錯的成就[11]。(3)對于在家庭中的應用,可以通過小范圍內對特定目標的身材比例進行識別,從而完成一定程度上的誤報過濾。