羅海峰,佐 研
(西安電子科技大學微電子學院,陜西 西安 710068)
人口老齡化成為近些年熱度頗高的詞匯,當一個國家或地區(qū)60歲以上老年人口占人口總數(shù)的10%,或65歲以上老年人口占人口總數(shù)的7%,即意味著這個國家或地區(qū)的人口處于老齡化社會。從全球范圍來看,越來越多的國家都已經步入了老齡化社會。在全球社區(qū)老年人中,30%的65歲以上老人和50%的85歲以上老人每年至少發(fā)生一次跌倒[1]。老年人跌倒問題也逐漸成為了亟待解決的老年人問題之一。
在上述大環(huán)境下,本文決定運用深度學習方法對于人體跌倒進行識別。通過使用紅外攝像機拍攝熱傳感圖像后,輸入訓練完成的搭建的VGG16卷積神經網(wǎng)絡中,由其得出最終的結果并由此判定是否存在老年人的跌倒現(xiàn)象。
卷積神經網(wǎng)絡是一種以圖像識別為中心的多個領域都得到廣泛應用的深度學習方法。該方法的由來,是在神經認知機的基礎上,適用于不同的環(huán)境而得到的。卷積神經網(wǎng)絡主要由三個部分組成,分別為輸入層,輸出層和隱藏層。其中隱藏層中還包含卷積層,池化層和全連接層,這些都是卷積神經網(wǎng)絡的重要組成部分[2]。
卷積神經網(wǎng)絡的輸入層主要用于進行數(shù)據(jù)的接收,將接收到的數(shù)據(jù)直接傳入到后續(xù)的各隱藏層之中,進行前向傳播和誤差反向傳播的訓練,直至網(wǎng)絡達到設定的訓練次數(shù)或者訓練預測達到設定的閾值為止[3,4]。在輸入層后,通常會用一個卷積層進行連接。
卷積神經網(wǎng)絡的卷積層通常處于輸入層之后,主要用于進行輸入數(shù)據(jù)的特征提取。對于傳入卷積層的數(shù)據(jù),會通過卷積操作將輸入的數(shù)據(jù)中重要的特征部分進行提取,卷積操作后會輸出一張輸入數(shù)據(jù)的特征圖,傳入下一個隱藏層。由于卷積操作會使得輸入數(shù)據(jù)的大小不斷減小,可以通過使用填充數(shù)字0的方法,來保證原始輸入數(shù)據(jù)的尺寸大小不變,保證原本存在的特征不會丟失。
經過卷積層進行卷積運算后得到的特征圖,還不能夠直接作為下一層的輸入數(shù)據(jù)直接傳入到下一個隱藏層,還需要經過激活函數(shù)的計算之后,進行傳輸。卷積神經網(wǎng)絡各隱藏層之間的參數(shù)傳遞其實是一個線性組合的過程,但是對于非線性問題來說,無法使用線性組合進行表示,所以需要一個能夠將線性組合轉化成非線性組合的工具,那就是激活函數(shù)。激活函數(shù)能夠使得神經網(wǎng)絡的表達能力更加強大,本次研究中用到的激活函數(shù)為ReLu激活函數(shù),其函數(shù)表達式為:
在經過激活函數(shù)后,當前的特征圖可以作為池化層的輸入?yún)?shù),傳入到池化層中。
卷積神經網(wǎng)絡的池化層通常用于解決特征圖計算量過大,計算效率較低的情況。通過使用池化層,可以有效地加快計算速度和達到防止輸出特征圖數(shù)據(jù)過擬合的效果,在池化方法的選擇上,存在兩種常見的方法,一種是最大池化法,一種是平均池化法。在本次研究當中,對于網(wǎng)絡中的所有池化層,選擇使用最大池化法進行池化操作。
當前的特征圖經過池化操作后,就可以作為輸入?yún)?shù)傳輸?shù)较乱粚尤B接層當中。
卷積神經網(wǎng)絡的全連接層通常處于隱藏層的末端,把經過池化處理過后的特征圖從二維數(shù)據(jù)轉化成一維向量,目的在于將學到的“分布式特征表示”映射到樣本的標記空間的作用。在實際的使用過程中,全連接層可由卷積操作實現(xiàn)。在全連接層的計算過程中,也會使用到激活函數(shù)計算輸出值,在本次的研究中,所有的全連接層中使用的激活函數(shù)也都為ReLu激活函數(shù)。
卷積神經網(wǎng)絡的輸出層主要用于輸出最終的結果。對于分類問題,首先計算出對于各個類別的預測概率,然后比較取出其中的最大值,找到其對應的類別編號或者名稱,作為最終的輸出數(shù)據(jù)。對于預測問題,則是直接輸出預測的概率即可。
Google DeepMind公司研究員與牛津大學計算機視覺組在2014年共同研發(fā)出了一種全新的卷積神經網(wǎng)絡--VGG-Net。在同年舉辦的ILSVRC比賽中,該網(wǎng)絡結構模型在分類項目中取得了十分出色的成績,由于其簡潔性和實用性,使得其在當時迅速,飛快地成為了最受歡迎的卷積神經網(wǎng)絡模型。VGG-Net卷積神經網(wǎng)絡在近年來衍生出了A-E七種不同的層次結構,本次研究使用其中的D結構,也就是VGG-16Net結構,該結構中包含了13個卷積層,5個池化層和3個全連接層。針對所有的卷積層,使用相同的5*5大小的卷積核,針對所有的池化層,使用相同的3*3大小的池化核。VGG-Net結構如圖1所示。
在針對人體跌倒識別的問題上,VGG-Net有著一些相較于其他神經網(wǎng)絡的優(yōu)勢,主要包括以下幾點:
1) 卷積核,池化核大小固定。網(wǎng)絡中所有的卷積核大小固定為3*3,所有的池化核大小固定為5*5。這樣在進行卷積和池化操作的時候,從數(shù)據(jù)中提取到的特征更加明顯,同時在層與層的連接時,信息的丟失會更少,更加方便后續(xù)對于重要特征的提取和處理。
2) 特征提取更全面。VGG-Net網(wǎng)絡模型中包含了13個卷積層。卷積層數(shù)目越多,對于特征的提取更加的全面。由于需要對于人體跌倒的姿態(tài)進行判定,人體跌倒時的特征較多,需要在提取時更加的全面,細致,才有可能得到一個更加準確的判定。VGG-Net符合條件。
3) 網(wǎng)絡訓練誤差收斂速度較快。VGG-Net網(wǎng)絡在訓練時收斂速度相對較快,能夠較快地得到預期的結果。具有這一特點的原因有兩個,一個是網(wǎng)絡中每一個卷積層和池化層中的卷積核大小與池化核大小固定,另一個就是對于各個隱藏層的參數(shù)初始化方法使用專門針對ReLU激活函數(shù)的Kaiming正態(tài)初始化方法。
本次研究基于Pytorch深度學習框架進行網(wǎng)絡的搭建,利用模塊化的設計思想,構建一個類,來對于整個的網(wǎng)絡進行結構上的封裝。這樣搭建的好處是可以隱藏實現(xiàn)的內部細節(jié),提高代碼的安全性,增強代碼的復用效率,并且對于一些方法,通過在內部集成,可以方便之后對于其中方法的調用,提升代碼的簡潔性。
在網(wǎng)絡搭建完成后,將數(shù)據(jù)集傳入網(wǎng)絡中進行訓練,經過一段時間后即可得到對于人體跌倒姿態(tài)的分類識別結果。
本次研究使用紅外圖像人體姿態(tài)數(shù)據(jù)集,所有數(shù)據(jù)圖片通過使用紅外圖像攝像機進行拍攝??紤]到老年人跌倒的情況大多數(shù)出現(xiàn)于夜晚,所以使用能在夜晚對于人體姿態(tài)圖像進行較好捕捉的紅外攝像機進行圖片的獲取。該數(shù)據(jù)集總共具有2 384張紅外人體姿態(tài)圖像,其中的人體姿態(tài)包括人體的行走姿態(tài),人體的站立形態(tài),人體的坐立形態(tài),人體的跌倒形態(tài)和人體的揮手形態(tài),共五種形態(tài)。訓練數(shù)據(jù)有1 590張,驗證數(shù)據(jù)有395張,測試數(shù)據(jù)有399張。
在進行網(wǎng)絡訓練前,先對圖片進行預處理操作。首先將圖片大小變換到相同尺寸,之后對于每張輸入網(wǎng)絡的圖片進行標準歸一化處理。同時考慮到數(shù)據(jù)集中的數(shù)據(jù)圖片數(shù)目較少,考慮在進行圖像預處理時對圖片進行隨機裁剪,隨機旋轉角度等操作,增加訓練圖片的數(shù)目,將數(shù)據(jù)集從原本的2 384張圖片增加到4 357張圖片,使網(wǎng)絡的訓練達到較好的訓練效果。對于訓練數(shù)據(jù)和測試數(shù)據(jù)的分類判別準確率曲線如下圖2所示。
在經過五十輪的訓練之后,最終網(wǎng)絡對于訓練集中的數(shù)據(jù)分類準確率達到了92%左右,對于測試集中的數(shù)據(jù)分類準確率達到了90%左右,相較于訓練集的分類準確率略低。說明使用VGG-16Net網(wǎng)絡能夠對于人體跌倒的紅外圖像進行一個較好的識別,能夠較為準確的識別出是否有跌倒情況的發(fā)生。
針對人體跌倒現(xiàn)象的圖像識別問題,本文使用了深度學習方法進行解決。針對數(shù)據(jù)集數(shù)目較少的問題,在預處理部分使用隨機旋轉,隨機裁剪等預處理方法增加數(shù)據(jù)集圖片數(shù)目,通過搭建卷積神經網(wǎng)絡VGG16-Net,對于數(shù)據(jù)集圖片進行識別,最終在訓練數(shù)據(jù)集上得到了92%左右的識別準確率,在測試數(shù)據(jù)集上得到了90%左右的識別訓練準確率,能夠較為出色地對于人體跌倒現(xiàn)象進行識別。