王春輝,王全民
(北京工業(yè)大學(xué)信息學(xué)部, 北京 100020)
人體行為識(shí)別的過(guò)程就是利用圖像處理技術(shù)從視頻中檢測(cè)到人體目標(biāo)并理解其行為。行為識(shí)別方面的研究在國(guó)內(nèi)外都有很快發(fā)展速度,提出了各種有效識(shí)別人體行為的方法。
在早期,研究者普遍使用數(shù)學(xué)統(tǒng)計(jì)的方式計(jì)算出能夠明顯區(qū)別行為方式的特征,再根據(jù)計(jì)算出的特征設(shè)計(jì)提取方法,例如提取人體幾何特征[1-4]以及提取運(yùn)動(dòng)信息特征[5-9]。其中提取人體幾何特征的方法會(huì)受到人體姿態(tài)形狀的很大影響,而實(shí)際情況中人體姿態(tài)會(huì)隨著運(yùn)動(dòng)狀態(tài)發(fā)生很大形變,行為動(dòng)作不能通過(guò)簡(jiǎn)單的平面形狀就作出判斷,所以研究者又提出了基于視頻運(yùn)動(dòng)信息的特征提取方法。該算法需要將人體與運(yùn)動(dòng)背景分離出來(lái),在運(yùn)動(dòng)背景變化不大的普通場(chǎng)景下可以達(dá)到較好的識(shí)別效果,而在實(shí)際環(huán)境較為復(fù)雜的背景下,不能得到人體較為準(zhǔn)確的位置,就導(dǎo)致了行為識(shí)別效果的下降。
行為識(shí)別的難點(diǎn)在于,它不是識(shí)別靜態(tài)圖像中物體種類,而是在連續(xù)多幀變化的視頻中識(shí)別動(dòng)作行為。應(yīng)對(duì)如此復(fù)雜的識(shí)別任務(wù),將行為識(shí)別與深度學(xué)習(xí)結(jié)合的研究成為目前視頻識(shí)別領(lǐng)域的熱點(diǎn)方向。
第一個(gè)卷積神經(jīng)網(wǎng)絡(luò)在1998年由LeCun等人[10-11]提出,用于解決手寫數(shù)字識(shí)別的視覺(jué)任務(wù),其基本結(jié)構(gòu)包括卷積層、池化層、全連接層,成為后來(lái)CNN網(wǎng)絡(luò)的基礎(chǔ)。研究人員采用增加網(wǎng)絡(luò)的深度、修改卷積層參數(shù)等方法,又相繼研究出ZFNet[12]、VGGNet[13]、GoogleNet[14]和ResNet[15]網(wǎng)絡(luò),在目標(biāo)檢測(cè)上的表現(xiàn)都有所提高。
R-CNN及相繼出現(xiàn)的FAST-R-CNN[16]、Faster-R-CNN[17]和R-FCN[18]算法實(shí)現(xiàn)的前提都是基于建議區(qū)域。雖然目標(biāo)檢測(cè)的流程化、準(zhǔn)確度和速度被一步步提升但是把目標(biāo)檢測(cè)和分類任務(wù)分開導(dǎo)致模型損失了檢測(cè)速度。
為了進(jìn)一步提高算法檢測(cè)的速度,一種端到端的基于深度學(xué)習(xí)算法YOLO[19]、YOLO9000[20]、SSD[21]被提出,此網(wǎng)絡(luò)模型不是基于建議區(qū)域的兩步檢測(cè),而是一步到位的回歸檢測(cè)算法。重要的是,YOLO算法能在保證快速檢測(cè)的同時(shí),還能維持較高的準(zhǔn)確率,實(shí)現(xiàn)端到端的訓(xùn)練,檢測(cè)精度高,檢測(cè)速度快。
本文的研究?jī)?nèi)容為識(shí)別教室監(jiān)控視頻中的學(xué)生行為,為滿足實(shí)時(shí)檢測(cè)監(jiān)控視頻的需求,使用基于回歸模型的深度學(xué)習(xí)算法YOLOv3[22],將優(yōu)化了損失函數(shù)的YOLOv3網(wǎng)絡(luò)運(yùn)用在行為識(shí)別任務(wù)中,提高對(duì)困難樣本的檢測(cè),滿足對(duì)監(jiān)控視頻實(shí)時(shí)性及準(zhǔn)確性的要求。
訓(xùn)練數(shù)據(jù)的不均衡會(huì)使網(wǎng)絡(luò)模型在訓(xùn)練過(guò)程中偏向于數(shù)量較多的目標(biāo)。這是因?yàn)椋绻粚?duì)損失函數(shù)做任何處理,樣本數(shù)量較多的目標(biāo)相對(duì)樣本數(shù)量較少的目標(biāo)對(duì)損失的計(jì)算會(huì)產(chǎn)生更多的影響,模型更多地關(guān)注數(shù)量較多的目標(biāo),這樣會(huì)導(dǎo)致數(shù)量較少的目標(biāo)的檢測(cè)率非常低。
圖1 使用圖像合成及圖像增強(qiáng)方法生成的模擬數(shù)據(jù)
本文選擇真實(shí)的教室監(jiān)控視頻作為視頻數(shù)據(jù)集,處理后獲取足夠的幀圖像作數(shù)據(jù)集。為了解決數(shù)據(jù)集中“說(shuō)話”姿態(tài)的數(shù)據(jù)占總的數(shù)據(jù)比例較低問(wèn)題,本文提出一種簡(jiǎn)單的圖像合成方法,增加“說(shuō)話”姿態(tài)的數(shù)據(jù),減少“抬頭”“低頭”“說(shuō)話”這3種類別數(shù)據(jù)之間的比例差異。該方法融合背景圖像和前景圖像,背景圖像是一些不同光照條件下的教室圖片,包括桌、椅、窗,不包含任何學(xué)生圖像。前景圖像是從原始圖像中人工截取的一個(gè)個(gè)矩形圖像,截取的矩形圖像只包含“說(shuō)話”姿態(tài)的學(xué)生。隨機(jī)從眾多背景圖像中選取一個(gè),把剪切處理完成的前景圖像放在背景圖像的任意位置,從而生成模擬圖像。然后再對(duì)生成的模擬圖像,進(jìn)一步做運(yùn)動(dòng)模糊、下采樣、飽和變換以及高斯模糊等處理。一些處理好的合成圖像如圖1所示。
由于本實(shí)驗(yàn)使用的是真實(shí)監(jiān)控視頻,為保護(hù)學(xué)生隱私,在沒(méi)有獲得學(xué)生允許的情況下不展示原始圖片,因此在接下來(lái)的單幀圖片檢測(cè)中,會(huì)進(jìn)行特殊保護(hù)。
從圖1的合成圖像中可以看出,合成圖像與真實(shí)圖像確實(shí)有所不同,例如,與真實(shí)圖像相比,合成圖像中矩形圖像的位置與邊界是明顯可以看出來(lái)的。但是這并不影響數(shù)據(jù)在模型訓(xùn)練過(guò)程中的使用,數(shù)據(jù)集中真實(shí)圖像的比例依舊是多數(shù)的,模型最后還會(huì)用真實(shí)圖像做微調(diào)。實(shí)驗(yàn)表明,基于模擬圖像的模型預(yù)訓(xùn)練可以提升學(xué)生姿態(tài)的檢測(cè)準(zhǔn)確率。
針對(duì)本文數(shù)據(jù)多集中在小樣本和中等樣本的特點(diǎn),使用K-means對(duì)制作的數(shù)據(jù)集重新進(jìn)行聚類分析,得到適用于本次數(shù)據(jù)集的anchor box。實(shí)驗(yàn)表明,本方法在測(cè)試數(shù)據(jù)集上可以讓“說(shuō)話”姿態(tài)提升1.4個(gè)百分點(diǎn)的平均精度,mAP得到將近1個(gè)百分點(diǎn)的提升。
圖2 待聚類樣本的寬高分布情況
YOLOv3使用先驗(yàn)框?qū)D像進(jìn)行目標(biāo)檢測(cè),選擇大小合適的先驗(yàn)框可以使卷積神經(jīng)網(wǎng)絡(luò)有更好的學(xué)習(xí)效果,從而做出更好的預(yù)測(cè)。相對(duì)于Pascal VOC數(shù)據(jù)集,本文特有的教室監(jiān)控視頻數(shù)據(jù)集具有拍攝空間大、人員相對(duì)密集、有遮擋、多為小目標(biāo)的特點(diǎn),因此,原網(wǎng)絡(luò)定義的anchor box大小對(duì)本實(shí)驗(yàn)數(shù)據(jù)并不十分匹配。針對(duì)這樣的數(shù)據(jù)特征,本文首先使用K-means聚類算法對(duì)圖像數(shù)據(jù)集中的目標(biāo)框大小進(jìn)行聚類分析,得到適合本文數(shù)據(jù)集的anchor box,從而得到更優(yōu)的檢測(cè)效果。根據(jù)數(shù)據(jù)集樣本的標(biāo)簽數(shù)據(jù),對(duì)物體的寬高進(jìn)行分析,其大小分布情況如圖2所示。從圖中可以發(fā)現(xiàn),數(shù)據(jù)集大多數(shù)集中在寬度為[20, 80]和高度為[25, 100]的樣本中,為較小目標(biāo)或中等大小目標(biāo);而在寬度為[100,140]和高度為[100,175]的樣本中所占比重很小。
在針對(duì)YOLO模型產(chǎn)生anchors聚類結(jié)果時(shí),采用的計(jì)算距離的公式為:
d=1-iou(box,box_cluster)
(1)
式中iou的值越大越好,即距離d的值越小越好。本文選取k=[3,6,9,12]進(jìn)行聚類,根據(jù)實(shí)驗(yàn)結(jié)果得到k的大小與距離之間的關(guān)系,如圖3所示。
(a) K-means聚類分析結(jié)果
(b) k=9時(shí)聚類效果
(c) k=6時(shí)聚類效果圖3 聚類分析結(jié)果
從圖3(a)中可以看出k=6后,曲線逐漸平緩,初步選定使用6個(gè)聚類中心作為預(yù)測(cè)框并確定相應(yīng)的anchor box。圖3(b)和圖3(c)進(jìn)一步對(duì)k=9與k=6作驗(yàn)證,從圖3(b)和圖3(c)中可以看到k=9時(shí)的聚類中心間隔較小,而k=6時(shí)聚類點(diǎn)之間距離適當(dāng),因此本文最終選定6個(gè)先驗(yàn)框。
原YOLOv3使用3類信息計(jì)算損失函數(shù),本文為了強(qiáng)調(diào)各類信息的不同重要程度,提出將動(dòng)態(tài)調(diào)節(jié)因子引入YOLOv3損失函數(shù)的計(jì)算方法。增加有目標(biāo)狀態(tài)下的置信度損失及硬樣本的損失,縮小無(wú)目標(biāo)狀態(tài)下的置信度損失,同時(shí)增大對(duì)位置預(yù)測(cè)的誤差。根據(jù)這樣的損失函數(shù)計(jì)算方法,mAP獲得了2%的提升。
深度網(wǎng)絡(luò)模型訓(xùn)練過(guò)程中需要對(duì)誤檢測(cè)樣本進(jìn)行懲罰,損失函數(shù)作為懲罰依據(jù),很大程度上影響了模型的收斂速度。模型優(yōu)化可以從多個(gè)方面進(jìn)行,其中的一個(gè)重要研究方向就是設(shè)計(jì)適合的損失函數(shù)。
YOLOv3模型的參數(shù)訓(xùn)練基于交叉熵?fù)p失函數(shù),如公式(2)所示:
(2)
1) 未強(qiáng)調(diào)困難樣本的代價(jià)。
2) 正負(fù)樣本貢獻(xiàn)均衡。
在教室監(jiān)控視頻下的檢測(cè)任務(wù)中,正樣本是需要檢測(cè)到的目標(biāo)物即學(xué)生,負(fù)樣本是目標(biāo)所處的不同光照條件下的墻面、桌椅、窗戶等背景環(huán)境。教室監(jiān)控環(huán)境下的行為識(shí)別任務(wù)首先是檢測(cè)到教室中的學(xué)生,而教室拍攝的監(jiān)控畫面中一半左右的畫面是沒(méi)有學(xué)生的窗戶、墻面、走廊等。在面對(duì)一幅圖像中大面積的無(wú)目標(biāo)區(qū)域時(shí),如果讓無(wú)目標(biāo)區(qū)域同有目標(biāo)區(qū)域?qū)p失函數(shù)作相同的貢獻(xiàn),即設(shè)置相同的權(quán)重,會(huì)降低有目標(biāo)區(qū)域的重要性讓模型訓(xùn)練的參數(shù)修改更緩慢。因此,應(yīng)該減少無(wú)目標(biāo)區(qū)域?qū)p失函數(shù)的貢獻(xiàn),讓有目標(biāo)區(qū)域在損失函數(shù)中占更重要的地位,這樣才會(huì)對(duì)訓(xùn)練過(guò)程中模型的參數(shù)修改有更積極的作用和影響。
為解決以上描述的損失函數(shù)面臨的問(wèn)題,則為交叉熵?fù)p失函數(shù)添加重要的動(dòng)態(tài)調(diào)節(jié)因子,并且該調(diào)節(jié)因子應(yīng)該滿足以下性質(zhì):①y(x)定義域?yàn)閤∈(0,1),值域?yàn)閥∈(0,1);②y(x)為單調(diào)遞增函數(shù),且y(0)=0;③y(x)的圖像關(guān)于坐標(biāo)原點(diǎn)對(duì)稱;④y′(0)≠0。因此,本文設(shè)計(jì)了2種動(dòng)態(tài)調(diào)節(jié)因子引入到Y(jié)OLOv3的損失函數(shù)中。調(diào)節(jié)函數(shù)公式如公式(3)、公式(4)所示:
(3)
y=arctan (x×tan (1))
(4)
根據(jù)公式(3)和公式(4)所呈現(xiàn)的關(guān)系,作出函數(shù)圖像,如圖4所示。
圖4 2種動(dòng)態(tài)調(diào)節(jié)因子圖像
從調(diào)節(jié)函數(shù)的圖像可以直觀地看出,公式(3)和公式(4)的值域都在(-1,1),分布在|x|上下。也就是說(shuō),當(dāng)計(jì)算不同類別信息的損失時(shí),可以根據(jù)需要進(jìn)行選擇。在計(jì)算無(wú)目標(biāo)區(qū)域中的物體置信度損失時(shí),為了讓它減少對(duì)損失函數(shù)的貢獻(xiàn),使用值較小的公式(3)作為調(diào)節(jié)因子。相反,為了增大有目標(biāo)區(qū)域帶來(lái)的物體置信度損失,使用較大的調(diào)節(jié)因子公式(4)作為調(diào)節(jié)因子參與計(jì)算;在計(jì)算困難樣本帶來(lái)的分類損失時(shí),為增大分類誤差,使用公式(4)作為調(diào)節(jié)因子。在計(jì)算易分類的樣本帶來(lái)的損失時(shí),為減小分類誤差,使用公式(3)作為調(diào)節(jié)因子。
使用調(diào)節(jié)因子對(duì)誤差進(jìn)行適當(dāng)?shù)目s小,這樣當(dāng)梯度傳播到Sigmoid時(shí),可以使交叉熵對(duì)參數(shù)w與對(duì)參數(shù)b的導(dǎo)數(shù)小幅度增大,加快初始時(shí)的收斂速度,減小梯度消失的影響。并且,由于2個(gè)調(diào)節(jié)因子的函數(shù)導(dǎo)數(shù)都不是一個(gè)固定常數(shù),會(huì)隨著預(yù)測(cè)輸出值的變化而波動(dòng),具有誤差大時(shí)梯度大、誤差越小時(shí)梯度越小的特點(diǎn),不會(huì)出現(xiàn)梯度為0從而梯度消失的情況。
根據(jù)以上分析,最終得到新的損失函數(shù)為:
(5)
通過(guò)公式(5)實(shí)現(xiàn)了當(dāng)y=1的時(shí)候,增大誤差計(jì)算,當(dāng)y=0的時(shí)候,縮小誤差計(jì)算的設(shè)計(jì)。
本文的模型訓(xùn)練實(shí)驗(yàn)在一臺(tái)Linux服務(wù)器上完成,由于硬件條件限制,本實(shí)驗(yàn)在沒(méi)有GPU加速下訓(xùn)練96 h完成。行為識(shí)別系統(tǒng)[23-25]的設(shè)計(jì)與實(shí)現(xiàn)在Windows操作系統(tǒng)上完成。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練學(xué)習(xí)需要大量的數(shù)據(jù),為了規(guī)范所需要的數(shù)據(jù),在輸入模型進(jìn)行訓(xùn)練前,要對(duì)數(shù)據(jù)做恰當(dāng)?shù)念A(yù)處理和樣本數(shù)量設(shè)計(jì)。
(a) 加入模擬數(shù)據(jù)前的各姿態(tài)數(shù)量
(b) 加入模擬數(shù)據(jù)后的各姿態(tài)數(shù)量圖5 數(shù)據(jù)集中各姿態(tài)的數(shù)量
本文創(chuàng)建基于真實(shí)場(chǎng)景的數(shù)據(jù)集。首先,隨機(jī)獲取教學(xué)樓3間教室的監(jiān)控視頻,篩選由于時(shí)間間隔太短出現(xiàn)的大量重復(fù)圖片以及無(wú)效圖片后,共4000幀圖片被保存作為初始數(shù)據(jù)集,裁剪出416×416大小的圖片共8000幅作為待標(biāo)注數(shù)據(jù)集。
對(duì)圖片進(jìn)行標(biāo)注處理的步驟:1)根據(jù)VOC2007文件目錄的結(jié)構(gòu),待標(biāo)注圖片放在JPEGImages文件夾,對(duì)應(yīng)標(biāo)注后生成XML文件放在Annotations文件夾;2)按照訓(xùn)練圖片與測(cè)試圖片8:2的比例,生成訓(xùn)練圖片和測(cè)試圖片的路徑至train.txt和test.txt文本。此時(shí)有訓(xùn)練圖片6400幅、測(cè)試圖片1600幅,放入模擬圖片后訓(xùn)練集有7600幅、測(cè)試集有1700幅。生成模擬數(shù)據(jù)前后數(shù)據(jù)庫(kù)中的各姿態(tài)數(shù)量如圖5所示。
為檢測(cè)本文提出的生成合成圖像方法、用K-means重新聚類得到新的anchor boxes及更改損失函數(shù)的方法的有效性,本文以3組實(shí)驗(yàn)作為對(duì)比,如表1所示。除做以上更改外,原YOLOv3網(wǎng)絡(luò)的參數(shù)不做仔細(xì)調(diào)整,共訓(xùn)練5000個(gè)batch。
表1 模型訓(xùn)練設(shè)計(jì)
設(shè)置這3組實(shí)驗(yàn)的原因說(shuō)明:第1組與第2組實(shí)驗(yàn)的對(duì)比,同時(shí)更改了使用數(shù)據(jù)和使用的anchor box,可以證明新的數(shù)據(jù)在合適的anchor box下可以得到更好的實(shí)驗(yàn)結(jié)果;第2組與第3組的對(duì)比,可以驗(yàn)證,在第2組得到效果提升的前提下,使用新的損失函數(shù),可以進(jìn)一步得到效果的提升。
本文使用每個(gè)類別平均精度AP(Average Precision)及平均精度均值mAP來(lái)作為評(píng)估模型性能的基本參數(shù),通過(guò)比較分析數(shù)值的變化,來(lái)確定模型的可靠性。實(shí)驗(yàn)得出的結(jié)果匯總?cè)鐖D6所示。
1)對(duì)新數(shù)據(jù)和新anchor的改進(jìn)。
通過(guò)對(duì)比圖6(a)和圖6(b),可以清晰看出使用新數(shù)據(jù)和新anchor的組合在“抬頭”“低頭”“說(shuō)話”這3種姿態(tài)上的檢測(cè)平均精度均有所提高。其中,在“說(shuō)話”姿態(tài)檢測(cè)上準(zhǔn)確率提升了約1.4個(gè)百分點(diǎn)AP。第2組實(shí)驗(yàn)雖然增加了大量的合成模擬數(shù)據(jù),但是“說(shuō)話”相對(duì)于“抬頭”“低頭”這2種姿態(tài)的樣本比例仍然是不相當(dāng)?shù)?,?dǎo)致第2組實(shí)驗(yàn)中“說(shuō)話”姿態(tài)的準(zhǔn)確率提升較低。
(a) 第1組實(shí)驗(yàn)結(jié)果
(b) 第2組實(shí)驗(yàn)結(jié)果
(c) 第3組實(shí)驗(yàn)結(jié)果圖6 3組實(shí)驗(yàn)結(jié)果比較
2)對(duì)損失函數(shù)的改進(jìn)。
通過(guò)對(duì)比圖6(b)和圖6(c),可以直觀看出本文使用新的損失函數(shù)可以得到各個(gè)姿態(tài)下的檢測(cè)平均精度均分別提升約為1.6個(gè)百分點(diǎn)(lookDown)、2個(gè)百分點(diǎn)(lookUp)、2.2個(gè)百分點(diǎn)(talk)。在人員密集的教室,會(huì)出現(xiàn)圖像質(zhì)量不高、人員遮擋等情況,導(dǎo)致準(zhǔn)確率的提升受影響,但是對(duì)于“抬頭”“低頭”這2種姿態(tài)的識(shí)別準(zhǔn)確率分別為83%和77%,已經(jīng)可以基本完成識(shí)別任務(wù)。
3)實(shí)驗(yàn)效果展示。
本文提出的基于改進(jìn)損失函數(shù)的卷積神經(jīng)網(wǎng)絡(luò)在本實(shí)驗(yàn)所制作的數(shù)據(jù)庫(kù)上的實(shí)驗(yàn)效果,如圖7所示。
圖7 改進(jìn)后網(wǎng)絡(luò)在數(shù)據(jù)庫(kù)中單幀圖像識(shí)別效果
從圖7中可以看出,基于改進(jìn)損失函數(shù)的網(wǎng)絡(luò)模型基本實(shí)現(xiàn)了行為識(shí)別的功能,“抬頭”和“低頭”姿態(tài)的檢測(cè)有較高的識(shí)別率,在“說(shuō)話”姿態(tài)的檢測(cè)上識(shí)別率還有待提高。對(duì)“抬頭”和“低頭”這2種姿態(tài)識(shí)別造成影響的可能是人員遮擋和圖像質(zhì)量。對(duì)“說(shuō)話”姿態(tài)的識(shí)別造成影響的可能是其行為與其他2種姿態(tài)易混淆,也可能因?yàn)閿?shù)據(jù)量還是相對(duì)較小。
本文提出一種使用模擬圖像增強(qiáng)困難數(shù)據(jù)集的方法,并使用K-means聚類計(jì)算得到相適應(yīng)的先驗(yàn)框。此外,本文對(duì)原版YOLOv3網(wǎng)絡(luò)模型進(jìn)行分析,針對(duì)實(shí)際使用環(huán)境,改進(jìn)了原始網(wǎng)絡(luò)模型的損失函數(shù)。在本文特有的訓(xùn)練集上的實(shí)驗(yàn)結(jié)果表明:1)對(duì)增強(qiáng)后的數(shù)據(jù)集使用重新聚類得到anchors可以使“說(shuō)話”姿態(tài)的檢測(cè)得到1個(gè)百分點(diǎn)AP的提升;2)與原始損失函數(shù)相比,本文提出的損失函數(shù)可以適應(yīng)于連續(xù)變量,有效減少梯度消失的情況,穩(wěn)步提升“抬頭”“低頭”“說(shuō)話”這3種姿態(tài)的mAP值。
目前,YOLO系列網(wǎng)絡(luò)由于其檢測(cè)速度快的優(yōu)點(diǎn),已經(jīng)在實(shí)際生產(chǎn)中得到了大量應(yīng)用。例如鄭志強(qiáng)等人[26]利用改進(jìn)的YOLOv3識(shí)別遙感飛機(jī),準(zhǔn)確率提升0.85個(gè)百分點(diǎn);呂鑠等人[27]利用改進(jìn)損失函數(shù)的YOLOv3網(wǎng)絡(luò)識(shí)別物體種類,準(zhǔn)確率提升1個(gè)百分點(diǎn)左右;Liu等人[28]用focal loss損失代替YOLO原有損失函數(shù)識(shí)別破碎玉米,準(zhǔn)確率提升7個(gè)百分點(diǎn)左右,都取得了非常好的識(shí)別效果。本文提出的方法,在人員密集的監(jiān)控視頻檢測(cè)系統(tǒng)中仍然有較好的表現(xiàn),其更高的準(zhǔn)確率也提高了系統(tǒng)的實(shí)用性能。