崔 悅,張德育,王國杰
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
隨著社會(huì)老齡化日益嚴(yán)重,老年人摔倒的自動(dòng)檢測問題得到了廣泛的關(guān)注。在基于深度學(xué)習(xí)的摔倒檢測研究中,文獻(xiàn)[1]將反向傳播神經(jīng)網(wǎng)絡(luò)應(yīng)用在摔倒檢測中,僅需視覺傳感器即可檢測,解決了傳統(tǒng)佩戴方式檢測帶來的不適以及環(huán)境傳感器檢測方式的高成本問題。文獻(xiàn)[2]利用長短期記憶(LSTM)模型進(jìn)行摔倒檢測。文獻(xiàn)[3]提出了一種基于注意力雙向LSTM網(wǎng)絡(luò)結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型進(jìn)行摔倒檢測。文獻(xiàn)[4]使用YOLOv3結(jié)合LSTM模型進(jìn)行摔倒檢測。文獻(xiàn)[5]使用區(qū)域卷積網(wǎng)絡(luò)(R-CNN)預(yù)先訓(xùn)練,得到一個(gè)高效的深度學(xué)習(xí)網(wǎng)絡(luò)模型,使摔倒檢測更加快速準(zhǔn)確,但受到環(huán)境影響或光線干擾時(shí),該模型檢測的精度較低。本文提出基于金字塔結(jié)構(gòu)(Feature Pyramid Networks,F(xiàn)PN)[6]的快速卷積神經(jīng)網(wǎng)絡(luò)(Faster-RCNN)的摔倒檢測模型,簡稱F-Faster-RCNN。將該算法與多目標(biāo)跟蹤算法Deepsort[7]結(jié)合,完成運(yùn)動(dòng)目標(biāo)跟蹤。F-Faster-RCNN采用3D卷積神經(jīng)網(wǎng)絡(luò)(3D CNN)[8]提取幀間特征,對支持向量機(jī)(SVM)[9]參數(shù)調(diào)優(yōu)的過程進(jìn)行改進(jìn),得到全局最優(yōu)解后對提取的幀間特征進(jìn)行摔倒判別。
Faster-RCNN是一種基于深度學(xué)習(xí)的目標(biāo)檢測算法。該算法使用視覺幾何群網(wǎng)絡(luò)(Visual Geometry Group 16 Network,VGG16)[10]作為主干網(wǎng)絡(luò)。雖然Faster-RCNN算法在檢測方面表現(xiàn)良好,但在人體有遮擋及光線干擾等情況下容易漏檢。為提高人體檢測的精度、降低損失,需要加深網(wǎng)絡(luò)層次,但VGG16不能在原有的基礎(chǔ)上加深網(wǎng)絡(luò)層次,否則會(huì)造成梯度爆炸或梯度消失。
本文采用殘差網(wǎng)絡(luò)(Residual Network,Res-Net)代替Faster-RCNN算法原有的VGG16網(wǎng)絡(luò),并通過參考FPN結(jié)構(gòu)對Faster-RCNN算法的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),提出了F-Faster-RCNN算法。不僅解決了梯度爆炸和消失的問題,又保留大量的淺層信息,提升了人體檢測的精度。
F-Faster-RCNN算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。其中:Conv代表卷積層;s1代表步距,令步距值為1;Conv2d代表卷積核。區(qū)域生成網(wǎng)絡(luò)(Region Proposal Network,RPN)生成預(yù)選框。
圖1 F-Faster-RCNN算法結(jié)構(gòu)圖
原始圖像經(jīng)過F-Faster-RCNN算法的主干網(wǎng)絡(luò)ResNet進(jìn)行特征提取,并將卷積層Conv2、Conv3、Conv4、Conv5輸出的特征圖經(jīng)過1×1的卷積核降維處理。將Conv5層得到的特征圖輸入到RPN網(wǎng)絡(luò)中。經(jīng)RPN網(wǎng)絡(luò)生成預(yù)選框后,分別在Conv3、Conv4、Conv5層降維后的特征圖上進(jìn)行池化,再將每層輸出的特征在深度方向上進(jìn)行第一次相加融合。對第一次融合后輸出的三層特征圖分別進(jìn)行正則化,并進(jìn)行第二次融合。將第二次融合后輸出的特征圖像素放大1000倍,經(jīng)過1×1的卷積核進(jìn)行降維處理。最后,將得到的特征圖送入輸出網(wǎng)絡(luò)判斷預(yù)選框的類別并得出預(yù)選框坐標(biāo)的位置后輸出。
F-Faster-RCNN算法的損失函數(shù)由兩部分組成,分別為分類損失和標(biāo)定框回歸損失??倱p失表達(dá)式為
分類損失Lcls和標(biāo)定框回歸損失Lre分別為
式中:N表示目標(biāo)檢測網(wǎng)絡(luò)要訓(xùn)練的樣本總數(shù);pi表示第i個(gè)樣本的預(yù)測標(biāo)定框預(yù)測對的概率;表示標(biāo)志變量,當(dāng)樣本為正樣本時(shí),其值為1,當(dāng)樣本為負(fù)樣本時(shí),其值為0;ti表示第i個(gè)樣本的預(yù)測標(biāo)定框的回歸參數(shù);表示第i個(gè)樣本的預(yù)測標(biāo)定框?qū)?yīng)的真實(shí)標(biāo)定框的值;Ncls表示第一個(gè)最小批次所用的樣本總數(shù),取值為256;Nre表示預(yù)測標(biāo)定框的個(gè)數(shù),約定為2400;Soomth為標(biāo)定框回歸損失函數(shù)。
本文采用多目標(biāo)跟蹤算法Deepsort與F-Faster-RCNN算法結(jié)合以確定人體運(yùn)動(dòng)軌跡,算法流程圖如圖2所示,其中Tracks為跟蹤器。
圖2 運(yùn)動(dòng)目標(biāo)跟蹤算法流程圖
從Tracks開始經(jīng)過卡爾曼濾波[11]預(yù)測跟蹤框,判斷跟蹤框內(nèi)的對象,若不是人體,則設(shè)置標(biāo)識變量confirm為0,將跟蹤框與當(dāng)前幀的FFaster-RCNN檢測框面積進(jìn)行最大交并比匹配;若是人體,則設(shè)置confirm為1,將跟蹤框與當(dāng)前幀的F-Faster-RCNN檢測框進(jìn)行數(shù)據(jù)關(guān)聯(lián)。
采用馬氏距離計(jì)算兩者關(guān)聯(lián)程度,如公式(4)所示。
式中:yi表示第i個(gè)跟蹤器對目標(biāo)預(yù)測的位置;dj表示第j個(gè)檢測框的位置;Si表示檢測位置與平均跟蹤位置之間的協(xié)方差矩陣。對馬氏距離閾值化處理后得
式中:t為設(shè)定的閾值;Π為閾值化處理的門限函數(shù)。如果馬氏距離小于指定閾值t,則關(guān)聯(lián)成功。
如果數(shù)據(jù)關(guān)聯(lián)成功則送入Tracks更新并循環(huán)上述過程。如果沒有關(guān)聯(lián)成功,可能由兩種情況導(dǎo)致:第一種情況是Tracks匹配失敗,可能是某一時(shí)刻發(fā)生了漏檢(如人體被遮擋、不在拍攝范圍之內(nèi)),預(yù)測的軌跡還在,但是檢測不到與之對應(yīng)的目標(biāo);另一種情況是F-Faster-RCNN檢測框匹配失敗,可能是檢測范圍內(nèi)出現(xiàn)新的目標(biāo)。對上述兩種情況先將跟蹤框與當(dāng)前幀的F-Faster-RCNN檢測框面積進(jìn)行最大交并比匹配,如果匹配成功,則送入更新循環(huán)。如果沒匹配成功,針對第一種情況,檢測confirm的值,如果為0,則刪除;如果為1,則將更新次數(shù)與閾值相比較,若更新次數(shù)大于閾值(代表目標(biāo)已不在檢測范圍內(nèi))則刪除,若更新次數(shù)小于閾值,則送入Tracks更新循環(huán)。針對第二種情況,建立一個(gè)新的Tracks。
本文先選取3D CNN進(jìn)行摔倒動(dòng)作的特征提取。3D CNN能挖掘幀與幀之間的關(guān)系,提取包含視頻動(dòng)作上下文信息的幀間特征。選用SVM作為分類器。SVM的分類效果與核函數(shù)參數(shù)c和懲罰因子δ有關(guān)。懲罰因子越小,分類越細(xì),易出現(xiàn)過擬合,反之易欠擬合。核函數(shù)越大,SVM模型的復(fù)雜度越大,易出現(xiàn)過擬合,反之易欠擬合。SVM采用鉸鏈最小損失準(zhǔn)則尋找c和δ的最優(yōu)解,將使分類損失為最小值的c和δ的值作為最優(yōu)解[12],沒有考慮到兩個(gè)參數(shù)的范圍,僅獲得局部最優(yōu)解。要達(dá)到更好的分類效果需要求兩個(gè)參數(shù)的全局最優(yōu)解。
本文通過參考遺傳算法的編碼、選擇和交叉變異的過程[13]對SVM的兩個(gè)參數(shù)調(diào)優(yōu)過程進(jìn)行改進(jìn),使優(yōu)化后得到的核函數(shù)參數(shù)c和懲罰因子δ能達(dá)到全局最優(yōu)解。
SVM參數(shù)調(diào)優(yōu)方法如下。
(1)對SVM模型中的c和δ分別進(jìn)行初始化,并對其進(jìn)行20位二進(jìn)制編碼,然后隨機(jī)形成初始種群。
(2)對c和δ分別進(jìn)行解碼,并帶入SVM的適應(yīng)函數(shù)中進(jìn)行訓(xùn)練,得到適應(yīng)值。
(3)通過適應(yīng)值把概率大于0.5的個(gè)體當(dāng)作父類進(jìn)行編碼,其余丟棄。
(4)對(3)中父類個(gè)體的參數(shù)c和δ進(jìn)行兩點(diǎn)交叉[14]操作,根據(jù)交叉概率創(chuàng)造新的子類個(gè)體。
(5)對(3)中父類個(gè)體的參數(shù)c和δ進(jìn)行隨機(jī)變異操作,根據(jù)變異概率改變父類基因,創(chuàng)造新的子類個(gè)體。
(6)設(shè)定適應(yīng)度閾值和迭代次數(shù),若達(dá)到適應(yīng)度閾值或迭代次數(shù),則終止,得到最優(yōu)核函數(shù)參數(shù)c和懲罰因子δ的值。若沒有達(dá)到,則返回到(3)。
SVM在摔倒檢測中的適應(yīng)度函數(shù)為
約束條件為
式中:ai為拉格朗日因子;xi和xj為樣本變量;k(xi,xj)為非線性映射核函數(shù);b為分類閾值。
實(shí)驗(yàn)系統(tǒng)CPU采用Intel(R)Core(TM)i7-10875H@2.30 GHz八核;GPU采用NVIDIA Ge-Force RTX 2060;顯存為6 GB;操作系統(tǒng)環(huán)境為Ubuntu18.04;深度學(xué)習(xí)框架采用pytorch1.8、tensorflow;編程語言采用python。
3.2.1 運(yùn)動(dòng)目標(biāo)檢測實(shí)驗(yàn)
分別采用F-Faster-RCNN和Faster-RCNN對數(shù)據(jù)集進(jìn)行訓(xùn)練,共訓(xùn)練200輪,初始學(xué)習(xí)率為10-4,訓(xùn)練的總損失、標(biāo)定框回歸損失及分類損失如表1所示。
表1 不同目標(biāo)檢測算法訓(xùn)練損失對比
由表1可見,本文提出的F-Faster-RCNN算法總損失為0.022 0,較Faster-RCNN算法總損失下降了0.010 5,并且分類損失和標(biāo)定框回歸損失都有所下降。
采用訓(xùn)練好的F-Faster-RCNN模型與Deepsort算法結(jié)合進(jìn)行跟蹤,得到視頻幀。目標(biāo)跟蹤效果如圖3所示。
圖3 目標(biāo)跟蹤效果圖
由圖3可見,圖中的行人均被檢測到,未出現(xiàn)目標(biāo)(object)漏檢情況,在人體遮擋且受光線較強(qiáng)影響時(shí),算法仍能對小目標(biāo)object59進(jìn)行跟蹤。此外,該算法在多人且背景復(fù)雜的情況下魯棒性較強(qiáng)。
3.2.2 分類器參數(shù)調(diào)優(yōu)實(shí)驗(yàn)
首先將跟蹤器中輸出視頻分割為不同幀數(shù)的圖像序列,設(shè)置幀數(shù)W={4,8,16,32,64,128}。
W為不同幀數(shù)的集合,將每一份圖像序列的圖像尺寸按照3×l×112×112進(jìn)行裁剪,其中l(wèi)表示該份圖像序列中的幀數(shù),l∈W。對完成分割和裁剪的圖像序列送入訓(xùn)練好的3D CNN,提取特征數(shù)據(jù)。
將提取出的特征數(shù)據(jù)送入SVM分類器訓(xùn)練,設(shè)定初始種群數(shù)為50,交叉概率為0.7,變異概率為0.1,迭代次數(shù)為150,適應(yīng)度閾值為97.5%,圖4為SVM的適應(yīng)度曲線。
圖4 SVM的適應(yīng)度曲線
圖4是SVM訓(xùn)練了100次得到的適應(yīng)度曲線,可以看到訓(xùn)練次數(shù)越高,適應(yīng)度的值越高,當(dāng)訓(xùn)練到85次時(shí)曲線趨于平穩(wěn),訓(xùn)練第100次時(shí)適應(yīng)度達(dá)到97.5%,停止訓(xùn)練,此時(shí)適應(yīng)度對應(yīng)的最佳核函數(shù)參數(shù)c為5.2,最佳懲罰因子δ為230.8。
3.2.3 摔倒檢測實(shí)驗(yàn)
深度學(xué)習(xí)在檢測過程中常用精確率和召回率評價(jià)模型的好壞,每個(gè)類別都可以根據(jù)精確率和召回率繪制一個(gè)關(guān)系曲線(PR曲線),其與橫軸圍成的面積即為準(zhǔn)確率。多個(gè)類別的平均準(zhǔn)確率越高,代表檢測效果越好。
基于F-Faster-RCNN算法的摔倒檢測PR曲線如圖5所示,圖6為采用Faster-RCNN作為目標(biāo)檢測算法且SVM分類器沒有進(jìn)行參數(shù)優(yōu)化的傳統(tǒng)檢測算法的PR曲線。
圖5 F-Faster-RCNN算法PR曲線
圖6 傳統(tǒng)摔倒檢測算法PR曲線
由圖5可見,對摔倒類別(fall)的檢測準(zhǔn)確率達(dá)到0.938,非摔倒類別(nofall)的檢測準(zhǔn)確率達(dá)到0.750,所有類別(all classes)的平均準(zhǔn)確率(mAP)達(dá)到0.844。與圖6相比,本文提出的算法對摔倒類別檢測準(zhǔn)確率提高了8.2%,平均準(zhǔn)確率提高了6.9%??梢姡現(xiàn)-Faster-RCNN模型對摔倒檢測具有較好的效果。對非摔倒類別,F(xiàn)-Faster-RCNN模型檢測效果一般,這是因?yàn)榉撬さ箻颖緦τ诙诸惖腟VM分類器來說類別復(fù)雜度較大。
摔倒檢測效果如圖7所示。
圖7 摔倒檢測效果圖
由圖7可以看出,在俯視拍攝的情況下沒有發(fā)生漏檢的情況,圖中摔倒的準(zhǔn)確率達(dá)到92%;在行人有一半的身體已經(jīng)超出檢測范圍且有遮擋的情況下仍能對人體進(jìn)行檢測且準(zhǔn)確率為72%;在有攤位遮擋的情況下檢測精度達(dá)到88%。由此可見,本文提出的檢測模型在俯視、有遮擋、檢測目標(biāo)不清晰的情況下仍能對運(yùn)動(dòng)目標(biāo)進(jìn)行檢測,且檢測效果較好,可達(dá)到一定精度。
通過改進(jìn)Faster-RCNN算法的主干網(wǎng)絡(luò)并參考FPN,提出了F-Faster-RCNN算法,提升了目標(biāo)檢測的精度。采用Deepsort算法與F-Faster-RCNN算法結(jié)合,實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)的跟蹤。通過對SVM算法的參數(shù)調(diào)優(yōu)過程進(jìn)行改進(jìn),使優(yōu)化后得到核函數(shù)和懲罰因子的全局最優(yōu)解。采用3D CNN網(wǎng)絡(luò)提取幀間特征,并與SVM算法結(jié)合實(shí)現(xiàn)了對摔倒行為的判別。仿真結(jié)果表明,基于FFaster-RCNN的摔倒檢測算法在有遮擋、俯視和目標(biāo)模糊的情況下,仍能檢測出運(yùn)動(dòng)目標(biāo),對比采用Faster-RCNN作為目標(biāo)檢測算法且SVM分類器沒有進(jìn)行參數(shù)優(yōu)化的摔倒檢測模型,準(zhǔn)確度有一定提升,能有效完成摔倒動(dòng)作檢測。