譚暑秋,湯國放,涂媛雅,張建勛,葛盼杰
1.重慶理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,重慶 400054
2.中國礦業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇 徐州 221116
近年來隨著高校招生擴(kuò)招,以班級為單位的學(xué)生數(shù)量不斷上漲,大學(xué)授課老師管理課堂、教學(xué)授課工作日益繁重。并且隨著智慧化校園的普及,通過深度學(xué)習(xí)檢測學(xué)生在教室中的異常行為是提高課堂效率的重要措施之一。
隨著計(jì)算機(jī)視覺的日益發(fā)展,基于計(jì)算機(jī)視覺的異常行為檢測可以采用兩個(gè)方面的思路來實(shí)現(xiàn)。傳統(tǒng)方法基于圖像像素的灰度值,通過人為設(shè)計(jì)的特征模版在原圖滑動(dòng)并匹配像素點(diǎn)是否一致,從而達(dá)到檢測識別的效果。傳統(tǒng)的特征提取算法有SIFT(scale-invariant feature transform)[1]和ORB(oriented fast and rotated brief)[2],傳統(tǒng)的分類有支持向量機(jī)(SVM)[3]或Adaboost[4]等實(shí)現(xiàn)分類。當(dāng)檢測物體的像素分布不變時(shí)可以得到快速且準(zhǔn)確的檢測識別效果,但當(dāng)同一類物體在圖像中呈現(xiàn)不同的狀態(tài)時(shí),僅依靠人為設(shè)定的特征模板難以獲得較好的檢測識別效果。近些年,隨著計(jì)算機(jī)GPU計(jì)算能力的顯著提升和世界各地的研究員對深度學(xué)習(xí)的研究,卷積神經(jīng)網(wǎng)絡(luò)以提取大量特征的優(yōu)勢開始成為檢測識別技術(shù)的主流。此類技術(shù)分為雙步檢測和單步檢測,前者采用的策略是先通過一個(gè)卷積網(wǎng)絡(luò)生成特征候選區(qū),再將生成的特征送入檢測分類的網(wǎng)絡(luò)從而實(shí)現(xiàn)識別檢測功能,相關(guān)算法有R-CNN系列[4-6];后者將目標(biāo)檢測問題簡化成單步的回歸問題,直接通過圖像獲得anchor錨框從而省去了候選區(qū)生成網(wǎng)絡(luò),常見算法如YOLO(you only look once)系列[7-10]及SSD(single shot multibox detector)[11]等。
鑒于此,本文設(shè)計(jì)了一套基于計(jì)算機(jī)視覺的學(xué)生異常行為識別系統(tǒng),即將教室監(jiān)控所拍攝的學(xué)生學(xué)習(xí)狀態(tài)傳給計(jì)算機(jī),利用基于YOLO v3的目標(biāo)檢測技術(shù)實(shí)現(xiàn)學(xué)生的定位與分類,再將有異常狀態(tài)標(biāo)簽的學(xué)生位置信息封裝保存用于發(fā)送預(yù)警信號。
本文所設(shè)計(jì)的學(xué)生異常行為檢測系統(tǒng)主要由視頻采集、圖像識別、信息響應(yīng)3個(gè)模塊組成,首先通過教室監(jiān)控?cái)z像頭采集學(xué)生上課視頻并將視頻信息實(shí)時(shí)輸入到計(jì)算機(jī)進(jìn)行預(yù)處理,再將預(yù)處理后的關(guān)鍵幀輸入到改進(jìn)后的YOLO卷積網(wǎng)絡(luò)中進(jìn)行識別檢測,封裝統(tǒng)計(jì)網(wǎng)絡(luò)輸出的位置、類別和時(shí)間信息為API接口供其他系統(tǒng)實(shí)時(shí)調(diào)用。學(xué)生異常行為檢測系統(tǒng)流程圖如圖1所示。
圖1 教室監(jiān)控下異常行為識別系統(tǒng)Fig.1 Abnormal behavior recognition system under classroom monitoring
視頻采集模塊是在教室場景下通過攝像機(jī)采集視頻,對視頻進(jìn)行關(guān)鍵幀處理后,將關(guān)鍵幀圖像數(shù)據(jù)送送入圖像識別模塊;圖像識別模塊的功能是對圖像進(jìn)行數(shù)據(jù)增強(qiáng)預(yù)處理后再通過YOLO v3進(jìn)行異常行為檢測;信息響應(yīng)模塊的功能是將異常信息進(jìn)行數(shù)理統(tǒng)計(jì),計(jì)算圖像中異常行為人數(shù)、類別、所占比例等信息,并將這些信息封裝成類,方便其他模塊或模塊調(diào)用。
本文采用YOLO v3網(wǎng)絡(luò)框架進(jìn)行圖像識別功能,YOLO網(wǎng)絡(luò)為單步目標(biāo)檢測網(wǎng)絡(luò),去除了候選區(qū)網(wǎng)絡(luò),將檢測任務(wù)轉(zhuǎn)換成端到端的回歸任務(wù),降低了網(wǎng)絡(luò)的參數(shù)量,提升網(wǎng)絡(luò)性能并實(shí)現(xiàn)了實(shí)時(shí)檢測的功能。YOLO v3網(wǎng)絡(luò)由特征提取網(wǎng)絡(luò)和多尺度預(yù)測網(wǎng)絡(luò)組成,前者是輕量級深度學(xué)習(xí)框架Darknet-53,用于提取不同深度的數(shù)據(jù)特征,后者融合前者提取到的特征,并對特征進(jìn)行預(yù)測,最終得到預(yù)測類別和檢測框的坐標(biāo)。
由圖2可知,YOLO v3的主干網(wǎng)絡(luò)Darknet-53采用了較深的網(wǎng)絡(luò)結(jié)構(gòu)提取較豐富的語義特征,并在網(wǎng)絡(luò)中增加大量的殘差網(wǎng)絡(luò)層解決網(wǎng)絡(luò)深度增加產(chǎn)生的網(wǎng)絡(luò)退化現(xiàn)象。雖然殘差網(wǎng)絡(luò)可以降低參數(shù)運(yùn)算量,但是較為龐大的網(wǎng)絡(luò)結(jié)構(gòu)仍然會影響單階段檢測網(wǎng)絡(luò)的實(shí)時(shí)性,為此YOLO v3的作者提出了另一個(gè)版本的網(wǎng)絡(luò)YOLO v3 Tiny,該網(wǎng)絡(luò)的主干網(wǎng)絡(luò)刪除了一部分冗余的網(wǎng)絡(luò)層,并將原本的3個(gè)預(yù)測層降低到2個(gè),在精度下降的同時(shí),檢測速度大幅度提高,YOLO v3 Tiny與同類型網(wǎng)絡(luò)在COCO公開數(shù)據(jù)集上的性能如表1所示。
圖2 YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Network structure diagram of YOLO v3
表1 YOLO不同版本網(wǎng)絡(luò)對比Table 1 Network comparison of different versions of YOLO
數(shù)據(jù)增強(qiáng)是圖像預(yù)處理的常用方法之一,它可以在一定程度上擴(kuò)充樣本、防止過擬合、提高模型魯棒性。本文采用了改進(jìn)后的random erasing(隨機(jī)擦除法)[12]數(shù)據(jù)增強(qiáng)方法,模擬圖像中的目標(biāo)被遮擋的情形,增加數(shù)據(jù)集的數(shù)量,提高網(wǎng)絡(luò)的泛化能力,使得網(wǎng)絡(luò)僅通過學(xué)習(xí)局部特征即可完成目標(biāo)的檢測和識別。該算法過程如下:
(1)設(shè)置擦除概率P,若擦出概率大于P,則隨機(jī)選擇圖像中的一塊矩形區(qū)域I e,并填充制定像素值或隨機(jī)像素值。
(2)設(shè)置隨機(jī)矩形區(qū)域I e的相關(guān)參數(shù)。隨機(jī)矩形區(qū)域面積,其中S表示圖像的面積,其值為圖像的水平像素個(gè)數(shù)與垂直像素的個(gè)數(shù)的乘積,s l、s h表示認(rèn)為設(shè)定擦除面積的閾值,通過隨機(jī)擦除矩形區(qū)域面積Se可以得到隨機(jī)擦除矩形的高和寬:
其中r e表示擦除矩形的高寬比,可以通過手工設(shè)定或在一定范圍內(nèi)生成隨機(jī)值。
(3)在圖像中隨機(jī)選擇一個(gè)點(diǎn)Pe=(x e,ye),xe,y e的限制條件:
本文算法的應(yīng)用場景為教室,檢測目標(biāo)為學(xué)生,屬于多目標(biāo)、小目標(biāo)檢測范疇,原算法中的全局隨機(jī)方法不能保證每次的擦除區(qū)域能覆蓋到目標(biāo)物體,未能被有效擦除的數(shù)據(jù)不能起到模擬遮擋的作用,增加了數(shù)據(jù)集的冗余程度。因此本文在此基礎(chǔ)上對隨機(jī)擦除法進(jìn)行改進(jìn),提出了基于數(shù)據(jù)標(biāo)簽的隨機(jī)擦除法,修正P e的橫縱坐標(biāo)x e、y e的限定范圍,具體如下:
其中G x、G y、G w和Gh分別表示真實(shí)標(biāo)簽檢測框左上頂點(diǎn)的坐標(biāo)值和長寬值。
改進(jìn)的方法縮小了隨機(jī)點(diǎn)Pe的選取范圍,縮短了Pe點(diǎn)橫縱坐標(biāo)的計(jì)算時(shí)間,每次生成的擦除區(qū)域都能覆蓋到目標(biāo)物體,即生成的所有數(shù)據(jù)均能模擬物體被遮擋的情況,在同等數(shù)量的數(shù)據(jù)集下,改進(jìn)后的方法使得訓(xùn)練后的網(wǎng)絡(luò)具有更強(qiáng)的泛化能力。
(4)為擦除區(qū)域賦固定值或隨機(jī)值,并輸出處理后圖像數(shù)據(jù),達(dá)到模擬圖像中物體被遮擋的效果。
Random erasing算法的參數(shù)數(shù)值如表2所示,其中圖像面積S在改進(jìn)后的方法中為檢測框的面積,在原方法中為輸入圖像的面積,即416×416;隨機(jī)矩形區(qū)域的面試S e由公式(1)可得;擦除面積的上下閾值由表2中的s l、s h可得;隨機(jī)擦除矩形的高寬比由表2中的r e可得,本文采用表2的參數(shù)模擬對比實(shí)驗(yàn)。
表2 Random erasing實(shí)驗(yàn)參數(shù)值Table 2 Parameter values of random erasing experiment
觀察圖3可以發(fā)現(xiàn):A組隨機(jī)擦除法第三行,B組隨機(jī)擦除法第三行等數(shù)據(jù)未能有效地將擦除區(qū)域覆蓋到目標(biāo)框內(nèi),A、B兩組改進(jìn)后的方法所生成的數(shù)據(jù)均能較合理地模擬目標(biāo)被遮擋的情況,降低數(shù)據(jù)的冗余性并提升數(shù)據(jù)的有效性。
圖3 隨機(jī)擦除算法實(shí)驗(yàn)對比圖Fig.3 Experimental comparison of random erasure
通過表3可知:數(shù)據(jù)經(jīng)過原始的隨機(jī)擦除算法處理后送入網(wǎng)絡(luò),模型的精準(zhǔn)度可以得到提升,使用本文的算法進(jìn)行預(yù)處理后的數(shù)據(jù)能夠使模型的精準(zhǔn)度進(jìn)一步提升,證明改進(jìn)后的隨機(jī)擦除預(yù)處理算法能夠提升網(wǎng)絡(luò)的泛化能力,強(qiáng)化網(wǎng)絡(luò)對局部特征的學(xué)習(xí)能力。
表3 隨機(jī)擦除算法精準(zhǔn)度對比Table 3 Accuracy comparison of random erasing algorithm
深度卷積網(wǎng)絡(luò)存在的普遍特性是隨著網(wǎng)絡(luò)層數(shù)的遞增,特征圖的大小逐漸減少,而特征圖的緯度逐漸遞增。由卷積參數(shù)量計(jì)算公式(6)可知:增加淺層網(wǎng)絡(luò)數(shù)量相較于增加深層網(wǎng)絡(luò)數(shù)量的參數(shù)量更少,因?yàn)闇\層網(wǎng)絡(luò)特征圖的維度往往遠(yuǎn)小于深層網(wǎng)絡(luò)特征圖的維度。
式中,K表示卷積核的大小,Cin和Cout分別是輸入通道和輸出通道的數(shù)量。
由感受野理論大小計(jì)算公式(7)可知:感受野的變化趨勢是隨著網(wǎng)絡(luò)的深度和卷積核的大小以及步長的大小增大而增大的。
式中,RF l表示特征在第l層的感受野(region filed),sizel表示卷積核在l層的大小,s l表示卷積在第l層的步長(stride)。
然而每層感受野中元素對特征的貢獻(xiàn)并不是相同的,如圖4所示,輸入的圖像矩陣INPUT的大小為5×5,卷積核的大小為3×3,步長為1,兩次卷積輸出的圖像矩陣大小為3×3和1×1。對比INPUT[1][1]和INPUT[3][3]對輸出特征圖的影響可以發(fā)現(xiàn):INPUT[1][1]僅可以通過OUTPUT1[1][1]影響OUTPUT2[1][1],而INPUT[3][3]可以通過OUTPUT1的所有特征點(diǎn)影響OUTPUT2[1][1]。因此可以得出結(jié)論:輸入中越靠近感受野中心的元素對特征的貢獻(xiàn)越大,由于目標(biāo)檢測的目標(biāo)物體不是均存在于圖像的幾何中心,所以通過擴(kuò)充淺層網(wǎng)絡(luò),使網(wǎng)絡(luò)不容易忽略圖片邊緣或呈像小的物體。
圖4 感受野大小與卷積層數(shù)的關(guān)系圖Fig.4 Relationship between size of receptive field and number of convolution layers
文獻(xiàn)[14]在道路檢測方面提出了基于Darknet30的網(wǎng)絡(luò)結(jié)構(gòu),采用1、2、2、2、2、2次的殘差塊重復(fù)結(jié)構(gòu),參數(shù)量減少47%,降低了運(yùn)算復(fù)雜度,提升了檢測速度;文獻(xiàn)[15]在機(jī)器人抓取網(wǎng)絡(luò)中將Darknet-53改進(jìn)為Darknet-43,使網(wǎng)絡(luò)對不同的角度、尺度或新物體的泛化性得到提高;有研究在單目標(biāo)物體檢測方面對Darknet-53進(jìn)行裁剪,另根據(jù)數(shù)據(jù)集的特性對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整,使得改進(jìn)后的YOLO v3模型的檢測精度和速度都有提升。考慮到實(shí)際因素:本文以教室為應(yīng)用場景,以學(xué)員為目標(biāo)物體,必然存在學(xué)員存在于圖像中的邊緣位置和呈像為小目標(biāo)的問題;因此本文提出了參數(shù)量少、運(yùn)算復(fù)雜度低和對小目標(biāo)檢測性能較好的Darknet-47。
Darknet-47由6個(gè)單獨(dú)的卷積層和5種類型的殘差塊組成,6個(gè)單獨(dú)的卷積層的作用是降低特征圖大小,增加特征圖維度,提取更深層次的語義信息;5種類型的殘差塊數(shù)量分別是2、4、4、6、4,具體結(jié)構(gòu)如表4所示,前兩種類型的殘差塊數(shù)量由1、2個(gè)擴(kuò)充到2、4個(gè),使網(wǎng)絡(luò)可以提取到圖像邊緣目標(biāo)和小目標(biāo)的特征。第3、4種殘差塊的數(shù)量由8、8個(gè)減少到4、6個(gè),考慮到第4種的殘差塊輸出的特征參與另外兩個(gè)尺度特征的融合,因此保留了較多的殘差塊。
表4 改進(jìn)的YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)Table 4 Improved YOLO v3 network structure
改進(jìn)后YOLO v3采用新的特征提取網(wǎng)絡(luò)Darknet-47,如圖5所示,輸入數(shù)據(jù)為416×416,經(jīng)過一系列的卷積、上采樣、融合操作輸出3個(gè)維度的特征圖。A卷積層采用3×3×32的卷積核對原圖進(jìn)行卷積,步長為1,作用是增加特征圖通道數(shù)、提取淺層的語義信息,其他卷積層均采用大小為3×3,步長為2,通道數(shù)為輸入特征圖的通道數(shù)的2倍,作用是降低特征圖大小、增加特征圖通道數(shù)、提取抽象的語義信息;殘差層將輸出特征圖與輸入特征圖進(jìn)行連接操作,在一定程度上可以解決網(wǎng)絡(luò)退化問題;上采樣層的作用是提升特征圖大小,提供多尺度特征圖融合的條件;融合層將多個(gè)特征在通道方向上相加,作用是使特征圖包含深、淺多層語義信息。檢測層輸出三類特征圖,其大小分別為52×52×21、26×26×21、13×13×21,其中通道數(shù)均為21,計(jì)算過程如公式(8)所示,本文實(shí)驗(yàn)設(shè)置2種檢測類別(class),分別是玩手機(jī)和睡覺,網(wǎng)絡(luò)預(yù)測檢測框的橫縱坐標(biāo)值、長寬和置信度共5個(gè)參數(shù),每個(gè)尺度的檢測層均輸出3個(gè)預(yù)測框。深層網(wǎng)絡(luò)的感受野大,語義信息表征能力強(qiáng),特征圖的分辨率低,幾何信息的表征能力弱,淺層網(wǎng)絡(luò)的感受野比較小,幾何細(xì)節(jié)信息表征能力強(qiáng),雖然分辨率高,語義信息表征能力弱,多尺度融合,能夠豐富預(yù)測檢測框的多尺度特征圖,提高精度。
圖5 改進(jìn)的YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Network structure of improved YOLO v3
檢測層通道數(shù)計(jì)算公式:
改進(jìn)后的網(wǎng)絡(luò)深度、參數(shù)量、計(jì)算量相較于Darknet-53有大幅下降:網(wǎng)絡(luò)層數(shù)減少6層,參數(shù)量減少了約3.3×106個(gè),F(xiàn)LOPS減少了約7.23,二者性能對比如表5所示,mAP、RIoU、FPS分別上升了0.5、5個(gè)百分點(diǎn)和3 frame/s。
表5 改進(jìn)的YOLO v3網(wǎng)絡(luò)與原網(wǎng)絡(luò)性能對比Table 5 Performance comparison between improved YOLO v3 network and original network
圖6中有預(yù)測框X、真實(shí)框Y和交集框Z,根據(jù)這種方法引入IoU(intersection over union)定義作為目標(biāo)檢測中的常用指標(biāo),可以直觀反映出預(yù)測框與真實(shí)框的相似度,如公式所示:
圖6 預(yù)測、真實(shí)和交集框的關(guān)系圖Fig.6 Diagram of forecast,reality and intersection box
傳統(tǒng)的IoU指標(biāo)方法在一些特殊情況下衡量預(yù)測框與真實(shí)框的相似度時(shí)會存在一些問題,無法正確判斷出預(yù)測框與真實(shí)框的相似值。
GIoU[13]的設(shè)計(jì)初衷就是解決傳統(tǒng)IoU方法所存在的問題。如圖7所示對于任意的兩個(gè)X、Y框,首先找到一個(gè)能夠包住它們的最小方框C,然后計(jì)算C/(A?B)的面積與C的面積的比值,再用X、Y的IoU值減去這個(gè)比值得到GIoU。GIoU與IoU均是度量函數(shù),相比之下,GIoU對尺度變化并不敏感,可以規(guī)避尺度差異所造成的定位不準(zhǔn)確問題。GIoU的度量標(biāo)準(zhǔn)不僅僅是重疊交集部分,它通過引入非重疊部分計(jì)算大大提高其度量結(jié)果的準(zhǔn)確度。
圖7 GIoU關(guān)系圖Fig.7 GIoU relationship diagram
GIoU的計(jì)算公式如下:
其中,X為預(yù)測框的面積,Y為真實(shí)框的面積,Z則為包含了預(yù)測框X與真實(shí)框Y的最小矩形的面積。IoU的計(jì)算方式發(fā)生了變化且IoU是YOLO v3損失函數(shù)的一部分,網(wǎng)絡(luò)新的損失函數(shù)結(jié)構(gòu)如下:
式中,λscale為預(yù)測目標(biāo)大小的權(quán)重,系數(shù)權(quán)重的值與檢測目標(biāo)的大小呈反比。w×h為預(yù)測特征圖的尺寸值,c為單位尺寸內(nèi)的錨點(diǎn)數(shù),表示特征圖中此處存在檢測目標(biāo)。GIoU的詳細(xì)計(jì)算方法如公式(10)所示,所計(jì)算的是預(yù)測值邊框信息(x i,y i,w i,h i)與實(shí)際邊框信息之間的廣義交并比,與傳統(tǒng)YOLO算法采用的均方誤差(MSE)方法相比,GIoU更能反映預(yù)測檢測框的檢測效果的準(zhǔn)確度。
LossCls的計(jì)算公式為:
式中,Ci代表目標(biāo)類別預(yù)測值,代表目標(biāo)類別標(biāo)簽值。
置信損失不只包括有目標(biāo)時(shí)的置信損失,也包括無檢測目標(biāo)的置信損失,因?yàn)檫@是確定目標(biāo)位置的首要信息。LossConf的計(jì)算公式為:
式中,λallobj為所有預(yù)測格點(diǎn)的系數(shù),在此之后的因子代表的是交叉熵?fù)p失。λallobj的公式如下:
λallobj是反映預(yù)測整體結(jié)構(gòu)與標(biāo)簽之間差異的指標(biāo),本文中?=1,γ=2,即用L2距離。
文獻(xiàn)[16]將GIoU引入YOLO v3網(wǎng)絡(luò),在PASCAL VOC 2007測試集上達(dá)到83.7%的mAP值,在COCO測試集上比YOLO v3算法在mAP上提升2.27個(gè)百分點(diǎn);文獻(xiàn)[17]基于GIoU計(jì)算方法,與YOLO v3算法目標(biāo)函數(shù)結(jié)合,在安全帽佩戴數(shù)據(jù)集測試結(jié)果表明,相比于YOLO v3算法,改進(jìn)YOLO v3的mAP-50分別提高了2.05個(gè)百分點(diǎn)。由上述實(shí)驗(yàn)結(jié)論和GIoU的衡量指標(biāo)可知在YOLO v3網(wǎng)絡(luò)框架中引入GIoU算法能夠優(yōu)化網(wǎng)絡(luò)的損失函數(shù),提高目標(biāo)檢測的精準(zhǔn)度。
本文對將教室監(jiān)控下的記錄學(xué)生行為的錄像作為改進(jìn)后的YOLO v3網(wǎng)絡(luò)的輸入端,輸出端連接響應(yīng)軟件,實(shí)時(shí)統(tǒng)計(jì)監(jiān)控中出現(xiàn)異常行為的學(xué)生數(shù)量和異常行為的類別,并將統(tǒng)計(jì)后的信息封裝成API供其他軟件調(diào)用。
通過改進(jìn)后的YOLO v3網(wǎng)絡(luò)能夠?qū)崟r(shí)、可視化地顯示監(jiān)控中產(chǎn)生異常行為的對象,但不具有統(tǒng)計(jì)異常行為人數(shù)和異常行為類別的功能。
本文通過增加YOLO v3網(wǎng)絡(luò)的代碼,使檢測模型每完成一次迭代不僅都能夠輸出異常行為類型而且輸出異常行為人數(shù)等信息,響應(yīng)軟件處理此類信息并展現(xiàn)給軟件使用者。
本文基于C++、Qt框架編寫軟件,使用MVC與單例設(shè)計(jì)模式能夠較好地服務(wù)于軟件使用者,MVC設(shè)計(jì)模式將數(shù)據(jù)模塊(model)和視圖模塊(view)分離開,使用控制模塊(controller)在二者之間傳遞信息,單例模式保證程序在運(yùn)行過程中只能創(chuàng)建單個(gè)進(jìn)程,防止多個(gè)檢測網(wǎng)絡(luò)同時(shí)對一個(gè)源數(shù)據(jù)進(jìn)行檢測,并且加入了互斥鎖,檢測過程中輸入數(shù)據(jù)禁止被修改,提高了程序的健壯性。
軟件界面如圖8所示,左側(cè)是一個(gè)矩形顯示模塊,用于響應(yīng)采集、處理并顯示視頻幀。右側(cè)為三個(gè)功能模塊,由上至下依此為導(dǎo)入模塊、預(yù)警模塊和導(dǎo)出模塊,導(dǎo)入模塊的功能是用戶選擇數(shù)據(jù)采集模式并將視頻數(shù)據(jù)按每幀輸送到檢測網(wǎng)絡(luò),并將檢測結(jié)果顯示到左側(cè)控件上,預(yù)警設(shè)置模塊的功能是設(shè)置觸發(fā)預(yù)警的異常人數(shù),人數(shù)超過一定閾值則會觸發(fā)警報(bào),通知連接API的其他端設(shè)備;導(dǎo)出功能模塊到本地的功能是用戶選擇將輸出結(jié)果以視頻的形式或文本形式導(dǎo)出到當(dāng)前環(huán)境中,底部的控件為以文本形式呈現(xiàn)當(dāng)前視頻幀的檢測結(jié)果。
圖8 信息響應(yīng)軟件界面Fig.8 Information response software interface
可視化的UI界面相較于Python IDE控制臺的字符顯示更直觀。按鈕封裝實(shí)現(xiàn)功能的復(fù)雜代碼,降低了搭建環(huán)境的成本,提高了軟件的易用性,使得對計(jì)算機(jī)知識薄弱的用戶能夠操作軟件從而實(shí)現(xiàn)檢測的功能。
下面介紹本文實(shí)驗(yàn)的相關(guān)軟硬件環(huán)境及訓(xùn)練細(xì)節(jié)。
(1)硬件環(huán)境:處理器為Intel?Core?i7-8750H CPU@2.20 GHz,8 GB DDR4內(nèi)存,顯卡為NVIIA GeForce GTX1050Ti 4 GB獨(dú)立顯卡。
(2)軟件環(huán)境:ubuntu18.04操作系統(tǒng),python3.8.5,A9.2,toch1.6.0,opencv-python4.4.0等相關(guān)工具包。
本次實(shí)驗(yàn)的數(shù)據(jù)集取材于重慶理工大學(xué)第三教學(xué)樓6個(gè)教室的監(jiān)控視頻,每個(gè)教室大約30到50個(gè)學(xué)生。使用光流法對視頻進(jìn)行關(guān)鍵幀提取,采用LabelImg軟件對關(guān)鍵幀進(jìn)行標(biāo)注,設(shè)置異常行為的標(biāo)簽為:睡覺(sleeping)和玩手機(jī)(playing),通過改進(jìn)的random erasing數(shù)據(jù)增強(qiáng)方法對樣本進(jìn)行擴(kuò)充,最終選取3 270張圖像作為實(shí)驗(yàn)數(shù)據(jù),其中2 289張圖像用于訓(xùn)練數(shù)據(jù)集,其余981張用于測試數(shù)據(jù)集。
網(wǎng)絡(luò)模型訓(xùn)練時(shí),樣本總共迭代了50 000次,其中動(dòng)量設(shè)置為0.92,批量大小設(shè)置為8,初始學(xué)習(xí)率設(shè)置為0.001,權(quán)重衰減系數(shù)為0.000 15。
本文采用平均檢測精度(mAP)、召回率(recall)、交并比(IoU)和平均檢測速度(FPS)作為檢測模型的評價(jià)指標(biāo)。表6顯示了本文方法與傳統(tǒng)的YOLO v3在重慶理工大學(xué)監(jiān)控視頻數(shù)據(jù)集上的檢測效果。其中YOLO v3(random erasing)采用了改進(jìn)后的random erasing方法對數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng),YOLO v3(random erasing and GIoU)在前者基礎(chǔ)上引入GIoU并重新定義損失函數(shù),本文(Darknet-47)在前者基礎(chǔ)上更改骨干網(wǎng)絡(luò)為Darknet-47。
衡量指標(biāo)mAP、召回率、交并比和平均檢測速度的計(jì)算公式如下:
其中,Tn表示預(yù)測正確的圖片數(shù)量,Sn表示標(biāo)簽為當(dāng)前類別的圖片總數(shù),Sum表示測試集中圖片總數(shù),Class表示檢測類別數(shù)。
式中,TP表示真陽性樣本數(shù)量,F(xiàn)N表示假陰性樣本數(shù)量,recall表示樣本中有多少正例被預(yù)測正確了。
式中,X表示預(yù)測框,Y表示真實(shí)框,X?Y表示二者交集面積,X?Y表示二者并集面積,IoU表示二者交集與并集的比值。
式中,fNum表示模型處理視頻總幀數(shù),T表示處理視頻所用時(shí)間,F(xiàn)PS表示模型單位時(shí)間內(nèi)可以處理的視頻幀的數(shù)量。
訓(xùn)練過程loss曲線如圖9所示,訓(xùn)練在迭代到45 000次后loss值趨于穩(wěn)定,最終下降到0.52左右。
圖9 訓(xùn)練過程loss曲線Fig.9 Loss curve during training
由表6可知,與骨干網(wǎng)絡(luò)為Darknet-53的YOLO v3算法相比,改進(jìn)后網(wǎng)絡(luò)的精準(zhǔn)度、交并比、召回率以及運(yùn)算速度均有提升,分別提升了4.2、5.3、4.8個(gè)百分點(diǎn)和8 frame/s,證明骨干網(wǎng)絡(luò)為Darknet-47的YOLO v3更具有可靠性。
表6 改進(jìn)前后的算法性能對比Table 6 Performance comparison of improved algorithm
如圖10所示,由上至下分別是原圖、YOLO v3輸出結(jié)果、改進(jìn)后的YOLO v3輸出結(jié)果。對比輸出圖像可知:YOLO v3輸出結(jié)果相較于改進(jìn)后的YOLO v3輸出結(jié)果出現(xiàn)多次漏檢,圖(a)組出現(xiàn)2次漏檢,對應(yīng)教室5、6兩排,圖(b)組出現(xiàn)2次漏檢,對應(yīng)教室1、4兩排,4個(gè)漏檢目標(biāo)距離均攝像頭較遠(yuǎn),在圖像上呈現(xiàn)形式為小目標(biāo),部分目標(biāo)對象前方有書桌遮擋。因此,可以證明改進(jìn)后的random erasing算法能夠模擬檢測目標(biāo)被遮擋的情況,提高網(wǎng)絡(luò)的泛化能力,使得網(wǎng)絡(luò)僅通過學(xué)習(xí)局部特征即可完成目標(biāo)的檢測和識別。Darknet-47可以更好地提取圖像邊緣目標(biāo)和小目標(biāo)的特征,降低檢測網(wǎng)絡(luò)輸出結(jié)果出現(xiàn)漏檢的概率。
圖10 改進(jìn)前后的算法效果對比Fig.10 Comparison of algorithm effect before and after improvement
本文將FastR-CNN、FasterR-CNN、SSD300、SSD512、YOLO、YOLO v2、YOLO v3和改進(jìn)后的YOLO v3在同樣的數(shù)據(jù)集下進(jìn)行訓(xùn)練與測試,并選取平均檢測精度(mAP)和平均檢測速度(FPS)作為評測指標(biāo)。表7展示了FastR-CNN、FasterR-CNN、SSD300、SSD512、YOLO、YOLO v2、YOLO v3與改進(jìn)后的YOLO v3算法對比的實(shí)驗(yàn)結(jié)果。
表7 改進(jìn)后的算法與其他算法性能對比Table 7 Performance comparison between improved algorithm and other algorithms
由表7可知,其他算法模型在目標(biāo)檢測上的準(zhǔn)確率均在60%至80%區(qū)間,YOLO v2在縮減模型、降低精準(zhǔn)率的情況下,運(yùn)算速度達(dá)到每秒28幀。改進(jìn)后的YOLO v3算法模型在預(yù)處理階段對數(shù)據(jù)進(jìn)行隨機(jī)擦拭算法(random erasing),模擬圖像數(shù)據(jù)被遮擋的情況,提高了檢測網(wǎng)絡(luò)對局部特征的學(xué)習(xí)能力和模型的泛化能力,降低了目標(biāo)由于被遮擋而產(chǎn)生的漏檢概率;在準(zhǔn)確率方面由于網(wǎng)絡(luò)加入GIoU損失函數(shù),模型在檢測時(shí),預(yù)測框能更準(zhǔn)確地?cái)M合真實(shí)標(biāo)簽框,平均精準(zhǔn)率達(dá)到94.9%;在實(shí)時(shí)性方面,由于本文算法采用的骨干網(wǎng)絡(luò)為Darknet-47,在參數(shù)量和FLOPS均有大幅降低,使得算法模型在速度上有大幅提升,在GPU為1050Ti的平臺上能夠達(dá)到每秒20幀,鑒于監(jiān)控?cái)z像機(jī)每秒采集幀數(shù)為20~25幀,基本滿足對于教室的復(fù)雜場景實(shí)時(shí)檢測的需求。
課堂中異常學(xué)生過多往往無法使教師集中注意力授課,針對此類問題,本文對YOLO v3深度卷積網(wǎng)絡(luò)進(jìn)行改進(jìn)。首先增加改進(jìn)的隨機(jī)擦除算法(random erasing)模擬課堂學(xué)生被遮擋的情況,降低了檢測的漏檢率;然后修改YOLO v3骨干網(wǎng)絡(luò)Darknet-53,擴(kuò)充淺層網(wǎng)絡(luò)層數(shù),減少深層網(wǎng)絡(luò)層數(shù),提高網(wǎng)絡(luò)對圖像邊緣學(xué)生、小目標(biāo)學(xué)生的檢測的平均精度,減少了參數(shù)量和計(jì)算量,使得網(wǎng)絡(luò)的檢測速度有大幅度提升;最后將改進(jìn)后的YOLO v3算法應(yīng)用于教室監(jiān)控下異常學(xué)生的檢測并與原始YOLO v3算法進(jìn)行定性對比實(shí)驗(yàn),同時(shí)運(yùn)用改進(jìn)后的YOLO v3算法先后與FastR-CNN、FasterRCNN、SSD300、SSD512、YOLO、YOLO v2、YOLO v3等流行的目標(biāo)檢測算法進(jìn)行定量的對比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)后的YOLO v3算法能夠有效降低圖像數(shù)據(jù)的邊緣目標(biāo)、小目標(biāo)的漏檢率,在精準(zhǔn)率和速度上均有大幅提升,本文實(shí)驗(yàn)所得平均精準(zhǔn)度為91.7%,檢測速率達(dá)到每秒20.2幀。
本文改進(jìn)的算法雖然在檢測速度與精度上已經(jīng)有了很大提升,但仍然可以在K-means算法、數(shù)據(jù)集等方面繼續(xù)探索,以進(jìn)一步提升算法的實(shí)時(shí)性與實(shí)用性。