劉洋,李丹
(四川大學(xué)錦城學(xué)院,四川成都,611731)
隨著近年來直播和短視頻平臺的興起,衍生了大量以直播和短視頻拍攝制作為職業(yè)的各類博主,為制作足夠吸引觀眾眼球的作品,國內(nèi)外出現(xiàn)大量了以“高空挑戰(zhàn)”,“高空跑酷”為視頻內(nèi)容的制作者,其中不乏因此而高空墜亡的視頻制作者,這類視頻制作者大多傾向于選擇樓層較高,危險(xiǎn)系數(shù)高的建筑頂層等鮮有人至的高危區(qū)域進(jìn)行視頻拍攝,由于大多數(shù)區(qū)域依靠人力很難做到持續(xù)監(jiān)管,導(dǎo)致安全管理人員很難及時(shí)發(fā)現(xiàn)和規(guī)避風(fēng)險(xiǎn)。
高速網(wǎng)絡(luò)的迅速普及使得家用監(jiān)控?cái)z像已經(jīng)在大量家庭部署,用戶可以使用監(jiān)控隨時(shí)關(guān)注家人狀態(tài),其中對小孩安全的照看是監(jiān)控設(shè)備的主要應(yīng)用場景之一,然而家長即使是在線下也仍然存在對小孩安全照看的疏忽,許多慘劇因此發(fā)生。針對以上一系列問題,急需一種可以部署到家庭的輕量化,計(jì)算力要求小的安全監(jiān)控系統(tǒng)在某些危險(xiǎn)區(qū)域出現(xiàn)人員異?;顒訒r(shí)對管理人員示警。
隨著卷積神經(jīng)網(wǎng)絡(luò)近年來的不斷發(fā)展,其在目標(biāo)檢測和識別方面已經(jīng)取得了很大進(jìn)步。當(dāng)前目標(biāo)檢測的方法簡單來說分為兩步:1.檢測目標(biāo)位置,2.對目標(biāo)進(jìn)行分類。而主流目標(biāo)檢測算法大致分為兩類:一階段(one-stage)和二階段(two-stage)目標(biāo)檢測算法,其中一階段算法即指檢測和分類同時(shí)進(jìn)行的算法,其中較有代表性的算法有YOLO系列,SSD[1]等算法,這類算法相對于二階段算法如R-CNN[2],fast-CNN系列[3,4]等算法的優(yōu)勢在于其執(zhí)行效率更加高效,但是在精度方面一階段算法總體不如二階段算法。要想在各類監(jiān)控設(shè)備上部署檢測系統(tǒng),需要考慮實(shí)時(shí)性需求和具體應(yīng)用時(shí)的硬件限制。所以一階段算法因?yàn)槠涓咝院蛯τ?jì)算資源較低的需求成為了部署在這類設(shè)備上的不二選擇。
YOLO系列初代算法YOLOv1[5]是由Joseph Redmon在2016年CVPR上首次發(fā)表,自此YOLO系列因其高效的性能而被廣泛應(yīng)用到各類實(shí)時(shí)檢測任務(wù)中。在初代YOLO中,作者將圖像分割為7*7的共計(jì)49個(gè)小單元格,圖片經(jīng)過YOLOv1網(wǎng)絡(luò)處理之后將會輸出一個(gè)7*7*30的張量,其中7*7是指將圖片分割成7*7的網(wǎng)格,30是指預(yù)測框的寬高,中心點(diǎn)坐標(biāo),置信度以及可預(yù)測的20個(gè)物體種類,通過這樣的張量拼接方式使得YOLO可以同時(shí)完成對目標(biāo)位置和種類的預(yù)測。此后的一系列YOLO算法基于這種思想不斷在精度,速度和可識別物體種類方面進(jìn)行了改進(jìn),YOLO9000[6]將可識別物體的種類從20種增加到了9000種,YOLOv3[7]在前面兩代算法的基礎(chǔ)之上進(jìn)一步提升了速度和精度。2020年新作者AlexeyAB接手原作者的工作發(fā)布了YOLOv4[8],YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)主要包含四大部分,輸入,主干網(wǎng)絡(luò),頸部結(jié)構(gòu),頭部結(jié)構(gòu)。YOLOv4相較于YOLOv3帶來了精度和速度的全面提升,YOLOv4網(wǎng)絡(luò)吸收整合了世界上最先進(jìn)有效的數(shù)據(jù)處理方法,YOLOv4的作者在論文中將這些方法分為兩類,一類是只需要增加一點(diǎn)訓(xùn)練時(shí)的開銷,但是不會增加檢測時(shí)候的時(shí)間開銷就能帶來一定精度上提升的方法,這類方法作者稱為“Bag of freebies”,YOLOv4中這一類方法主要是一些預(yù)處理方法,如Mosaic數(shù)據(jù)增強(qiáng),通過將多張圖片隨機(jī)縮放,裁剪,排布之后拼接到一起,既增強(qiáng)了模型魯棒性也降低了對硬件配置的要求。另一類方法是增加檢測開銷但是能夠顯著帶來精度提升的方法,在YOLOv4中這類方法被稱為“Bag of specials”,具體應(yīng)用到的方法包括使用SPP模塊,PAN模塊,以及在主干網(wǎng)絡(luò)中使用Mish激活函數(shù),CSP模塊等處理方法。在YOLOv4發(fā)布后不久,YOLOv4-tiny上線,其網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,檢測速度大大提升,同時(shí)由于其對計(jì)算能力要求不高,使得其能輕松部署到各類硬件條件不是很好的終端上完成實(shí)時(shí)的檢測任務(wù)。
YOLOv4(網(wǎng)絡(luò)結(jié)構(gòu)如圖1)是一種基于YOLOv3并融合多種先進(jìn)數(shù)據(jù)處理方法改進(jìn)而來的精度高,效率快的目標(biāo)檢測算法。可以在各類終端完成部署并且達(dá)到實(shí)時(shí)檢測的目的。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)
1.1.1 主干網(wǎng)絡(luò)
CSPDarknet53作為主干網(wǎng)絡(luò)的作用是提取目標(biāo)特征,其中包含共計(jì)72層卷積,五個(gè)結(jié)構(gòu)不同的殘差塊,相較于YOLOv3在主干網(wǎng)絡(luò)中使用Leaky relu作為激活函數(shù)不同的是,在YOLOv4主干網(wǎng)絡(luò)中使用了Mish激活函數(shù)。YOLOv4在主干網(wǎng)絡(luò)中將YOLOv3中的殘差單元與CSPNet[9]相結(jié)合構(gòu)建了大的殘差塊,每個(gè)殘差塊之前的一層卷積會將圖像的尺寸減小一半,通道數(shù)增加一倍。CSPNet網(wǎng)絡(luò)的作者認(rèn)為在實(shí)際應(yīng)用中推理成本過高的原因是在網(wǎng)絡(luò)優(yōu)化過程中有大量的梯度信息重復(fù),增加了很多的計(jì)算量,因此采用CSP模塊先將基礎(chǔ)層的特征映射劃分為兩部分,然后通過跨階段層次結(jié)構(gòu)將它們合并,在減少了計(jì)算量的同時(shí)可以保證準(zhǔn)確率。這樣既增強(qiáng)了網(wǎng)絡(luò)對特征的提取能力,也避免了圖像在多次卷積之后特征消失的情況。采用這樣的主干網(wǎng)絡(luò)帶來這樣兩個(gè)優(yōu)點(diǎn):1.增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,2.降低對計(jì)算機(jī)硬件的要求。
1.1.2 SPP模塊
SPP模塊是受空間金字塔網(wǎng)絡(luò)(SPPNet[10])啟發(fā),SPPNet使用多個(gè)最大池化窗口對輸入的圖片進(jìn)行池化操作,不受輸入圖像尺寸限制,總是輸出固定大小的特征圖。使用SPP模塊的作用主要是融合多重感受野的特征融合以及得到固定大小輸出的特征圖。
1.1.3 PAN模塊
PAN模塊在YOLOv4中通過在頸部模塊先自頂向下進(jìn)行上采樣,使得特征圖維度翻倍,再自底向上完成下采樣,使得維度折半,通過這一模塊完成圖像的特征融合,最后輸出三個(gè)head完成預(yù)測。
YOLOv4是俄羅斯開發(fā)者Alexey等人在YOLOv4發(fā)布之后提出的一種目標(biāo)檢測算法,相比于YOLOv4,其更加輕量化,網(wǎng)絡(luò)結(jié)構(gòu)更加簡單(圖2),執(zhí)行效率更高,但是精度會有一定下降,相較于YOLOv4,YOLOv4-tiny對硬件設(shè)備的要求更友好。其主干網(wǎng)絡(luò)共38層,首先使用兩個(gè)(3*3*2)卷積完成兩次對輸入圖像的下采樣,然后使用三個(gè)CSP模塊,CSP模塊的作用是,劃分基礎(chǔ)層的特征映射,然后通過跨層次結(jié)構(gòu)合并,使用這一結(jié)構(gòu)可以使得模型在輕量化的前提下保證準(zhǔn)確率。在YOLOv4中,主干網(wǎng)絡(luò)使用了Mish激活函數(shù),這使得YOLOv4模型map得到了進(jìn)一步提升,而在YOLOv4-tiny中,主干網(wǎng)絡(luò)使用的是leaky-relu。同時(shí)在head部分,YOLOv4最終結(jié)果產(chǎn)生三個(gè)head,在YOLOv4-tiny中最后只產(chǎn)生兩個(gè)head。
圖2 YOLOv4-tiny網(wǎng)絡(luò)結(jié)構(gòu)
本文使用的原始數(shù)據(jù)集是VOC2011數(shù)據(jù)集,提取出其中共計(jì)7419張有人類出現(xiàn)的圖片進(jìn)行訓(xùn)練,再從其中選取148張圖片作為測試集,選取剩余7271張圖片作為訓(xùn)練集。
在Colab平臺上分別對YOLOv4和YOLOv4-tiny兩種模型進(jìn)行訓(xùn)練和測試,其中YOLOv4-tiny迭代次數(shù)為4000,YOLOv4迭代次數(shù)為2500,GPU為Tesla T4。詳細(xì)參數(shù)設(shè)置如下所示,batch=64 ,classes=1,Learning_rate=0.001。從訓(xùn)練過程圖像(圖3,4)得知YOLOv4-tiny和YOLOv4都在訓(xùn)練迭代2000輪之后損失值趨于收斂狀態(tài)。
圖3 YOLOv4-tiny損失圖像和mAP
圖4 YOLOv4損失圖像和mAP
以mAP作為模型評價(jià)指標(biāo),最終訓(xùn)練結(jié)果(表1)得到Y(jié)OLOv4的 mAP為 91.9%,YOLOv4-tiny的 mAP為 80.33%,從實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),YOLOv4的檢測時(shí)間是YOLOv4-tiny的兩倍,但是帶來的精度提升卻只有10%左右。80%的mAP在大多數(shù)的應(yīng)用場景下已經(jīng)能夠勝任。把訓(xùn)練好的模型拿到1050 Ti的機(jī)器上測試發(fā)現(xiàn)YOLOv4-tiny能夠達(dá)到15幀左右的檢測速度,畫面流暢,而同環(huán)境下YOLOv4只能達(dá)到8幀左右的檢測速度,畫面有明顯延遲。從在特定區(qū)域內(nèi)的檢測效果來看,兩種模型除了在置信度方面YOLOv4顯著高于YOLOv4-tiny,檢測效果幾乎一致(如圖5)。
表1 訓(xùn)練結(jié)果
圖5(左:YOLOv4,右:YOLOv4-tiny)
通過在可能發(fā)生事故的高危區(qū)域的監(jiān)控設(shè)備上部署一個(gè)檢測預(yù)警系統(tǒng),整個(gè)系統(tǒng)由三個(gè)子系統(tǒng)構(gòu)成(圖6)??梢跃颈O(jiān)管人員及時(shí)關(guān)注高危區(qū)域的人員活動。一旦系統(tǒng)檢測到區(qū)域內(nèi)有不正常人員活動,立即通過接口激活示警系統(tǒng),通過視覺和聲音信號向管理人員示警。
圖6 檢測預(yù)警系統(tǒng)
本文所實(shí)現(xiàn)的是在高危區(qū)域部署監(jiān)控設(shè)備,在有人員進(jìn)入時(shí)對監(jiān)管人員進(jìn)行示警,從而幫助管理人員及時(shí)阻止相關(guān)區(qū)域的危險(xiǎn)行為。其中YOLOv4-tiny的mAP達(dá)到了80.33%,完全能輕松部署到大部分監(jiān)控系統(tǒng)并完成實(shí)時(shí)監(jiān)測任務(wù),然而這一結(jié)果還不夠滿足各類場景下的準(zhǔn)確示警(如巡邏人員進(jìn)入,建筑維護(hù)人員的正常工作),下一步在這一應(yīng)用背景下的研究會優(yōu)化如何降低對各類非關(guān)心目標(biāo)的誤報(bào),可以從以下三個(gè)方向著手:(1)對檢測到的人員身上衣物制服進(jìn)行二次分類,對保安,巡護(hù)等工作人員進(jìn)行過濾,避免系統(tǒng)在某些情況下頻繁示警。(2)在前者基礎(chǔ)之上加入對人體危險(xiǎn)動作的識別,從而形成更加完善的報(bào)警系統(tǒng)和危險(xiǎn)級別分級,在這一方面已經(jīng)有人開始了相關(guān)研究并取得了不錯(cuò)的成就[11]。(3)對于在家庭中的應(yīng)用,可以通過小范圍內(nèi)對特定目標(biāo)的身材比例進(jìn)行識別,從而完成一定程度上的誤報(bào)過濾。