李光國,鄭克龍,吳燕梅
(西南科技大學(xué) 理學(xué)院,綿陽 621000)
電梯內(nèi)人頭的檢測,在人流量統(tǒng)計、電梯的安全預(yù)警方面都起著至關(guān)重要的作用。通過對電梯人頭的檢測統(tǒng)計,可以合理安排電梯的檢修,有效避免安全事故的發(fā)生。
人頭檢測的方法大體上分為兩類,一類是基于傳統(tǒng)機器學(xué)習(xí)的目標(biāo)檢測方法,如戴曙光[1]提出了一種基于人頭特征和區(qū)域輪廓特征的人頭識別方法,牛勝石[2]基于Adaboost與Haar特征的人頭檢測算法等。隨著社會的發(fā)展,傳統(tǒng)的機器學(xué)習(xí)方法局限性越來越明顯,已經(jīng)無法滿足一些現(xiàn)代工業(yè)的需求。第二類是基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法,如鄭國書[3]使用改進后的BING算法實現(xiàn)實時視頻中人頭檢測,李繼秀[4]通過使用SSD模型直接檢測人頭,Aditya Vora[5]的快速人頭檢測模型。相比于傳統(tǒng)的機器學(xué)習(xí)算法,基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法速度快,檢測精度高。
近年來隨著卷積神經(jīng)網(wǎng)絡(luò)和計算機計算能力的快速發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測效果得到很大提升[5]?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法主要有兩類,一種是基于區(qū)域候選模型算法,如R-CNN[6~8]系列模型、SPP-net[9]和R-FCN[10]。這類算法精度高,但是速度慢,對計算機硬件要求高。另一種是基于回歸模型的算法,如YOLO[11](You Only Look Once)和SSD[12](Single Shot MulitiBox Detector)。這類算法運行速度快,對系統(tǒng)要求低,能夠做到實時檢測。
本文選擇以SSD模型為基礎(chǔ)對其進行改進。采用輕量級神經(jīng)網(wǎng)絡(luò)MobileNetV2[13]來優(yōu)化SSD的特征提取層,使用反向殘差結(jié)構(gòu)替換預(yù)測層中的標(biāo)準(zhǔn)卷積運算;將輸入圖像大小調(diào)整為512×512,并選擇最大特征圖32×32來進行檢測;調(diào)整Anchor的寬高比例,進一步提升模型對人頭的檢測精度。改進后的SSD模型在減少網(wǎng)絡(luò)參數(shù)的同時,降低對硬件資源的消耗,提升模型的速度和精度。
圖3 反向殘差模塊
SSD模型相比于Faster-RCNN和YOLO等算法,SSD模型在檢測精度和速度上有著不錯的性能。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,在VGG-16[14]的基礎(chǔ)上,添加了六層卷積層,并采用六個不同特征圖檢測不同尺度的目標(biāo),其中低層(Conv4_3)預(yù)測小目標(biāo),高層(Conv7、Conv8、Conv9、Conv10、Conv11)預(yù)測大目標(biāo)。
圖1 SSD模型結(jié)構(gòu)
SSD算法屬于single-stage(單次)檢測算法,它結(jié)構(gòu)簡潔,檢測過程簡單,檢測步驟大致也分為三步。第一步,輸入圖片到卷積神經(jīng)網(wǎng)絡(luò)VGG-16中進行特征提??;第二步,采用多尺度特征圖用于檢測不同大小的物體;第三步,使用非極大值抑制(Non-Maximum Suppression,NMS)來去掉重復(fù)的預(yù)測框,得到正確的的預(yù)測框。
MobileNetV2在MobileNetV1[15]的基礎(chǔ)上,引入了反向殘差模塊(Inverted Residuals)和線性瓶頸(Linear Bottlenecks)兩個結(jié)構(gòu)。在保證模型速度的同時,增加模型特征提取的能力,提高模型的檢測精度。
在MobileNetV2中,沿用了MobileNetV1的深度可分離卷積。深度可分離卷積是把標(biāo)準(zhǔn)卷積分解成深度卷積(Depthwise convolution)和逐點卷積(Pointwise convolution)。分解過程示意圖如圖2所示。
圖2 深度可分離卷積
假設(shè)輸入的特征圖大小為DF×DF×M,輸出特征圖大小為DF×DF×N,卷積核為Dk×Dk×M,其中DF是特征圖的寬度和高度。對于標(biāo)準(zhǔn)的卷積,其計算量為:
而對于深度可分離卷積,卷積核被分為兩個和,其計算量為:
逐點卷積計算量為:
所以深度可分離卷積總計算量是:
因此可以得到深度可分離卷積與標(biāo)準(zhǔn)卷積的參數(shù)量對比,計算公式如下:
通常情況下輸出通道數(shù)N比較大,因此可以忽略第一項1/N,假設(shè)采用3×3大小的卷積核,深度可分離卷積相比于標(biāo)準(zhǔn)卷積減少大約8/9的參數(shù)量。
綜上,深度可分離卷積能對一般卷積神經(jīng)網(wǎng)絡(luò)模型完成了較好的裁剪。
反向殘差模塊是借鑒了ResNet中殘差塊而來,操作與殘差模塊相反,是先經(jīng)過1×1的卷積進行升維,緊接著使用3×3的深度可分離卷積進行圖像特征提取,最后使用1×1的點卷積降維。整個過程是先升維,然后進行卷積操作,再降維。但是,由于在高維度的空間里,激活函數(shù)能夠增加網(wǎng)絡(luò)模型的非線性能力,在低維度空間里會破壞掉網(wǎng)絡(luò)模型的非線性能力。因此在反向殘差結(jié)構(gòu)中引入了線性瓶頸,去掉了第二個1×1卷積后的激活函數(shù),轉(zhuǎn)而使用線性激活函數(shù)來保留提取到的圖像特征。
SSD模型存在一個不足之處就是使用的標(biāo)準(zhǔn)卷積來進行特征提取,使得模型參數(shù)量巨大,增加了模型的訓(xùn)練時間成本和計算機硬件成本。針對這一問題,本文通過采用輕量級神經(jīng)網(wǎng)絡(luò)MobileNetV2與SSD模型相結(jié)合來減少網(wǎng)絡(luò)參數(shù),降低對硬件資源的消耗,提升模型的速度和精度。
首先通過使用MobileNetV2替換傳統(tǒng)SSD模型的特征提取網(wǎng)絡(luò)VGG-16,然后將預(yù)測層中所有的標(biāo)準(zhǔn)卷積替換為反向殘差卷積。改進后的SSD網(wǎng)絡(luò)參數(shù)如表1,先去掉MobileNetV2中的下采樣層和全連接層,然后加入反向殘差卷積組合的另外四層卷積層(Inverted Residual_1~4),最后模型通過對檢測目標(biāo)的坐標(biāo)和置信度進行回歸計算(抽取的特征層包括Inverted Residual 32×32,Inverted Residual 16×16,Inverted Residual_18×8,Inverted Residual_24×4,Inverted Residual_32×2,Inverted Residual_41×1),并通過非極大值抑制模塊過濾重復(fù)性目標(biāo),得到最終的檢測結(jié)果。
表1 改進后SSD網(wǎng)絡(luò)參數(shù)
(續(xù))
同時,將改進后的SSD輸入圖像大小調(diào)整為512×512,檢測時使用的最大特征圖大小為32×32;傳統(tǒng)SSD模型的圖像輸入大小為300×300,在進行檢測時使用的最大特征圖大小為38×38。根據(jù)文獻[16]結(jié)果,可以通過引入更大的特征圖來提高模型的檢測精度,但這樣會大大降低檢測的速度,因此本文選擇大小為32×32的最大特征圖來進行檢測。另一方面,雖然與傳統(tǒng)的SSD相比,改進后的SSD采用的最大特征圖變小,但是輸入圖像分辨率變大了,增加了特征圖的語義信息,從而填補了因為網(wǎng)絡(luò)縮減而造成語義信息的丟失[17]。改進后的SSD結(jié)構(gòu)如圖4所示。
圖4 改進后的SSD結(jié)構(gòu)
對于單一目標(biāo)檢測的數(shù)據(jù)集,根據(jù)數(shù)據(jù)集中識別目標(biāo)物體的大小和真實框的寬高比來合理的設(shè)置Anchor,不僅能更好的檢測目標(biāo)所在位置,還能夠提升網(wǎng)絡(luò)模型的檢測速度和提高網(wǎng)絡(luò)模型的檢測精度。為了獲取實驗樣本人頭的具體寬高比,先從樣本數(shù)據(jù)集中隨機抽取50張圖像,然后進行人工截取獲得約200張單個人頭圖像,并同時記錄單個人頭圖像的寬和高。
從圖5中可以看出人頭的寬高散點圖比較集中,大致上是呈線性分布的,這是因為在電梯轎廂中,人頭的寬高比差異不大,所以比較集中。初始的輕量化SSD的Anchor寬高比設(shè)置為1/3、1/2、1、2、3,通過在寬高散點圖中畫出這五條直線,可以更加直觀的了解Anchor寬高比設(shè)置。如圖6,其中1/3、1/2、1、2、3分別對應(yīng)圖上的紅色、黑色、粉色、藍色和綠色直線。
圖5 人頭寬高散點圖
圖6 原始輕量化SSD的Anchor設(shè)置
可以看出,原始的Anchor寬高比設(shè)置并不合理,因此本文重新設(shè)置Anchor的寬高比參數(shù)。首先計算出所有從樣本數(shù)據(jù)庫中獲得的單個人頭圖像寬高比例,然后進行分析獲得新的寬高比參數(shù)。
從表2中可以得到,寬高比接近于1的人頭數(shù)量很多,其次是0.9與1.2,此外人頭寬高比的最大值和最小值分別為0.77與2。因此,以這5個比例為基準(zhǔn),分別畫出0.77、0.9、1、1.2、2在人頭寬高散點圖上的直線。其中0.77、0.9、1、1.2、2分別對應(yīng)圖上的紅色、黑色、藍色、粉色和綠色直線。
表2 人頭寬高比例范圍數(shù)據(jù)
從圖7可以看到經(jīng)過改進后的Anchor寬高比相比于原始的寬高比設(shè)置更加合理,這樣有助于網(wǎng)絡(luò)模型更準(zhǔn)確的定位人頭和識別人頭。表3為數(shù)據(jù)分析后設(shè)定的模型寬高比。
圖7 改進后輕量化SSD的Anchor設(shè)置
表3 模型寬高比調(diào)整
1)圖像的采集
本文研究的是在電梯橋廂內(nèi)人頭的檢測,從四川省綿陽市某醫(yī)院獲取電梯的監(jiān)控錄像視頻,然后通過使用視頻軟件Potplayer(版本1.7.18344)每隔一秒鐘截取一張圖片,最終留下大約6000張512×512大小的圖片。
2)數(shù)據(jù)集的擴張
由于深度神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練需要大量的訓(xùn)練樣本才能達到較好的訓(xùn)練效果,而本文獲取的訓(xùn)練樣本有限,容易造成過擬合和普適性不好的影響,因此使用Python對獲取的原始圖像進行旋轉(zhuǎn)操作,增加樣本數(shù)量,提高模型對人頭識別的效果。同時,對圖片進行隨機分配,通過人工篩選,最終留下大約訓(xùn)練集13000張圖片,測試集3250張圖片。訓(xùn)練集與測試集的比例約為4∶1。
在目標(biāo)識別方面,評價一個網(wǎng)絡(luò)模型算法的識別效果常用的標(biāo)準(zhǔn)有精確率(Precision,P)、準(zhǔn)確率(Accuracy,A)、召回率(Recall,R)、檢測速率FPS(Frames Per Second)調(diào)和均值等。本文選擇檢測精確率、檢測速率FPS和模型大小來對模型進行評估。
其中,TP為正確檢測到的正樣本數(shù)量;TN為正確檢測到的負樣本數(shù)量;FP為把負樣本檢測為正樣本的數(shù)量。
實驗所使用的操作系統(tǒng)為Windows10。基于anaconda安裝Python 3.6和TensorFlow-gpu 1.13.1。設(shè)備參數(shù)如表4所示。
表4 實驗設(shè)備參數(shù)表
優(yōu)化算法使用AdamOptimizer;初始學(xué)習(xí)率設(shè)置為0.004,衰減率為0.95,每一萬次迭代后衰減一次;目標(biāo)點生成預(yù)測框數(shù)目為6個;dropout設(shè)置為0.8;網(wǎng)絡(luò)初始化標(biāo)準(zhǔn)差為0.03,均值為0;IOU閾值為0.5;batch_size設(shè)置為8。
圖8為SSD、MobileNetV2_SSD與改進后的SSD人頭檢測結(jié)果比較。從圖中可以看出,改進后的SSD相比于原來的MobileNetV2_SSD模型和傳統(tǒng)的SSD模型人頭檢測情況,檢測效果有所提升,減輕了漏檢的情況。另一方面通過各個模型的精度和對比(表6),可以看出在電梯轎廂監(jiān)控圖像數(shù)據(jù)集上,在檢測精度方面,改進后的SSD模型相比于MobileNetV2_SSD模型準(zhǔn)確率提高了2.3%,比原始的SSD模型準(zhǔn)確率提高了1.6%;在檢測速度方面,則從原始SSD的22FPS提升到了63FPS;在模型大小方面,改進后的SSD最小。因此實驗證明了改進后的SSD在人頭檢測方面是具有可行性的。
圖8 基于SSD的三種模型人頭檢測效果比較
表5 基于SSD的三種模型性能比較
由于IOU初始值設(shè)置的是0.5,當(dāng)預(yù)測框與真實框的IOU大于0.5時,才判斷為人頭,反之則沒有檢測出人頭。因此,可能存在其他IOU值能有更好的效果,通過重新設(shè)置IOU值從0.3到0.7之間后,得到的不同IOU值模型的檢測結(jié)果對比如表6所示。
表6 不同IOU值模型的檢測結(jié)果對比
(續(xù))
從表中可以看到在不同的IOU值,各個模型的精度有所變化。其中0.3到0.5變化不大,而到了0.6、0.7時,三個模型的準(zhǔn)確率就會影響很大,這是因為IOU變大之后,要求真實框和預(yù)測框的重復(fù)率高,所以會造成很多漏檢的情況。經(jīng)過不同IOU值模型精度的比較,可以看到模型在IOU為0.5時最合適。
最后,為了與其他輕量化模型相比較,本文通過使用自制數(shù)據(jù)集對當(dāng)前較為常用的三種模型進行訓(xùn)練,包括MobileNetV1_SSDLite[18]、Tiny YOLO[19]和Tiny SSD[20]。不同輕量化模型與改進的SSD性能對比如表7所示。
表7 不同輕量化模型對比
從實驗結(jié)果可以看出改進后的SSD與MobileNetV1_SSDLite、Tiny YOLO相比,不僅在模型大小方面有明顯的優(yōu)勢,且在檢測精度上也高于MobileNetV1_SSDLite 和Tiny YOLO。雖然Tiny SSD的模型最小,但是在精度方面比改進后的SSD低了18.1%。綜合檢測精度和模型大小這兩個方面,改進后的SSD性能是最優(yōu)的。
本文利用深度學(xué)習(xí)框架TensorFlow,在SSD的基礎(chǔ)上,提出一種結(jié)合輕量級神經(jīng)網(wǎng)絡(luò)MobileNetV2人頭檢測模型,實現(xiàn)對電梯中人頭的智能檢測。實驗表明,本文的模型精度和速度明顯優(yōu)于傳統(tǒng)的SSD模型,且對實驗設(shè)備硬件配置要求不高,能滿足目標(biāo)檢測要求。