曹 凱, 王 召, 高 嵩*, 宋曉茹, 陳超波
(1.西安工業(yè)大學(xué)電子信息工程學(xué)院,西安 710021;2.西安工業(yè)大學(xué)機(jī)電工程學(xué)院,西安 710021)
場(chǎng)景理解作為智能視頻監(jiān)控領(lǐng)域的難點(diǎn)問題和核心內(nèi)容,其目標(biāo)是利用計(jì)算機(jī)視覺相關(guān)算法從自然場(chǎng)景中直接獲取語(yǔ)義信息,近年來已經(jīng)逐漸成為計(jì)算機(jī)視覺領(lǐng)域研究的核心問題[1]。人數(shù)計(jì)數(shù)是場(chǎng)景理解的一個(gè)重要內(nèi)容[2],隨著辦學(xué)規(guī)模越來越大,學(xué)生隨之越來越多,作為高校硬件資源之一的自習(xí)室、圖書館存在著求過于供的情況,多數(shù)學(xué)校的自習(xí)室、圖書館經(jīng)常一座難求,這些場(chǎng)所座位資源的合理分配問題是高校需要解決的難題。
目前,人數(shù)統(tǒng)計(jì)的方法大體可以分為兩類[3-4]:一類是基于視頻序列的運(yùn)動(dòng)目標(biāo)檢測(cè)算法,將整個(gè)人體作為對(duì)象進(jìn)行數(shù)量統(tǒng)計(jì),此類方法首先對(duì)場(chǎng)景中的背景進(jìn)行建模,后續(xù)幀與背景模型進(jìn)行比較而提取出運(yùn)動(dòng)的前景區(qū)域,然后計(jì)算運(yùn)動(dòng)區(qū)域的面積、邊緣輪廓等特征信息,再與人體的先驗(yàn)知識(shí)進(jìn)行特征匹配,來估計(jì)人數(shù)。這種方法的精確度主要取決于先驗(yàn)知識(shí),不穩(wěn)定且準(zhǔn)確率低。另一類是基于圖像特征和深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,該方法通過采集并學(xué)習(xí)圖像中能夠反映人體的特征來訓(xùn)練樣本集,之后輸出識(shí)別結(jié)果。這種方法的優(yōu)點(diǎn)是精確度高,缺點(diǎn)是訓(xùn)練需要大量樣本數(shù)據(jù)且比較耗時(shí)。深度學(xué)習(xí)目標(biāo)檢測(cè)算法[5]有YOLO(you only look once)[6-7]、單次多盒檢測(cè)器(single shot multibox detector, SSD)[8]、Faster R-CNN[9-10],其中YOLO的目標(biāo)檢測(cè)速度較快,YOLO v3在Titan X GPU下檢測(cè)速度可達(dá)到每幀22 ms,但在計(jì)算成本有限條件下可能數(shù)秒檢測(cè)1幀,無法在實(shí)際中廣泛使用。
以SSD為基礎(chǔ)進(jìn)行改進(jìn),采用Mobile-NetV2[11]卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,并加入SENet[12]到網(wǎng)絡(luò)結(jié)構(gòu)中,增強(qiáng)網(wǎng)絡(luò)對(duì)特征的選擇能力。在顯著減少計(jì)算的情況下,保留網(wǎng)絡(luò)準(zhǔn)確性,實(shí)現(xiàn)了移動(dòng)應(yīng)用等計(jì)算成本有限下的目標(biāo)檢測(cè)任務(wù)。使用深度學(xué)習(xí)算法與計(jì)算機(jī)視覺相結(jié)合的方法進(jìn)行室內(nèi)人數(shù)檢測(cè),設(shè)計(jì)人數(shù)監(jiān)控系統(tǒng),有助于學(xué)校自習(xí)室、圖書館座位對(duì)學(xué)生指引。人數(shù)檢測(cè)也有利于解決其他公共資源的合理分配和利用問題,在機(jī)場(chǎng)、地鐵站等公共場(chǎng)合[13],對(duì)人流的準(zhǔn)確計(jì)數(shù),能夠有效地發(fā)揮智能調(diào)度系統(tǒng)的作用,讓公共資源得到更充分的利用。
SSD目標(biāo)檢測(cè)模型是由Liu等[8]提出的使用卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)圖像中目標(biāo)的方法。模型的結(jié)構(gòu)如圖1所示,其主要由4部分組成: 基礎(chǔ)特征提取部分、附加特征提取部分、原始包圍框生成部分和卷積預(yù)測(cè)部分。主要工作過程:將300×300的輸入圖像經(jīng)過基礎(chǔ)特征提取部分與附加特征提取部分后得到圖像的特征圖;再經(jīng)過原始包圍框生成部分和卷積預(yù)測(cè)部分得到大量多尺度的目標(biāo)包圍框和對(duì)應(yīng)位置處目標(biāo)包圍框的修正值及預(yù)測(cè)概率;根據(jù)原始包圍框的位置、預(yù)測(cè)的類別與準(zhǔn)確率、圖片真實(shí)值計(jì)算誤差,反向傳播實(shí)現(xiàn)網(wǎng)絡(luò)參數(shù)更新。
Conv代表卷積層;FC代表全連接層;ConvM_N代表此卷積層序號(hào)是M且包含N層卷積;FCM代表此全連接層的序號(hào)為M;Conv: MxNxC-sP代表此卷積層卷積核大小為 MxN,通道數(shù)為C,卷積步長(zhǎng)為P,步長(zhǎng)為1時(shí)省略不寫圖1 SSD模型結(jié)構(gòu)Fig.1 Composition of SSD
基礎(chǔ)特征提取部分用于對(duì)輸入圖像進(jìn)行初步的特征提取,得到的淺層特征用于對(duì)目標(biāo)分類與目標(biāo)包圍框回歸,也作為后續(xù)附加特征提取等部分的輸入。原始SSD目標(biāo)檢測(cè)模型直接將VGG-16[14]模型的卷積部分用作基礎(chǔ)特征提取部分,其包含13層卷積層,對(duì)輸入為300×300像素的彩色圖像進(jìn)行卷積運(yùn)算,得到尺寸為19×19的特征圖512張,作為附加特征提取層的輸入。
附加特征提取層部分包含10層卷積層,對(duì)基礎(chǔ)特征提取部分輸出的特征圖進(jìn)行進(jìn)一步卷積運(yùn)算。在基礎(chǔ)特征提取部分的VGG-16結(jié)構(gòu)中后兩層為全連接層,全連接層計(jì)算量較大,且存在參數(shù)冗余,故將后兩層的全連接層修改為卷積層,如圖1中的Fc6-Conv層和Fc7-Conv層。
SSD模型使用卷積層來實(shí)現(xiàn)目標(biāo)分類與目標(biāo)包圍框修正,需要在被選特征層的每個(gè)特征值位置上生成若干原始包圍框,在原始包圍框基礎(chǔ)上使用回歸方法來修正目標(biāo)包圍框結(jié)果。網(wǎng)絡(luò)中不同層輸出的特征圖具有不同的感受野(receptive field),即對(duì)原始圖像不同的檢測(cè)區(qū)域。通過設(shè)計(jì)各層的縮放因子來調(diào)整不同層內(nèi)原始包圍框的尺寸以適應(yīng)不同大小的目標(biāo)。假設(shè)共選m個(gè)特征層,則SSD模型對(duì)于第k層的縮放因子為
(1)
式(1)中:smin=0.2,smax=0.9。設(shè)輸入圖像的高和寬分別為Hinput和Winput,則該層對(duì)應(yīng)的寬高比r的原始包圍框?qū)挒?/p>
(2)
原SSD目標(biāo)檢測(cè)模型使用VGG網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),但VGG網(wǎng)絡(luò)主要有兩個(gè)問題:①模型參數(shù)眾多,計(jì)算量大,在特征提取過程中占用了較大內(nèi)存與計(jì)算時(shí)間;②在前向傳播過程中由于存在非線性變換導(dǎo)致變換過程中信息的損失。
針對(duì)第一個(gè)問題,使用深度可分離卷積網(wǎng)絡(luò)[15-17],結(jié)構(gòu)如圖2所示,基本思想是將卷積分成兩個(gè)單獨(dú)的層:深度卷積和逐點(diǎn)卷積。深度卷積使用n×n卷積核對(duì)每個(gè)輸入通道分別進(jìn)行卷積。逐點(diǎn)卷積使用1×1卷積對(duì)深度卷積輸出的特征圖進(jìn)行線性組合來構(gòu)建新的特征圖。這種結(jié)構(gòu)將空間相關(guān)性和通道相關(guān)性分離,相比傳統(tǒng)的卷積,它可以減少約k2計(jì)算復(fù)雜度,當(dāng)卷積核k=3時(shí),計(jì)算成本少8~9倍,而保留了準(zhǔn)確率。
Depthwise Conv為深度卷積,3×3、1×1為卷積層的卷積核大??;Batch Normalization為批歸一化;Pointwise Conv為逐點(diǎn)卷積;ReLU(rectified linear unit)為線性整流函數(shù),其后的數(shù)字 6為此函數(shù)的參數(shù)圖2 深度可分離卷積Fig.2 Depthwise separable convolutions
針對(duì)問題二,Sandler等[11]在流形學(xué)習(xí)理論的基礎(chǔ)上提出非線性激活函數(shù)ReLU在高維度下會(huì)較好地保留信息,而在低維度下會(huì)丟失特征信息,故在輸入層應(yīng)該增加特征維度之后再對(duì)其進(jìn)行非線性變換,而在輸出層應(yīng)該對(duì)特征進(jìn)行降維后使用線性激活函數(shù)以減少信息的丟失,據(jù)此提出倒置殘差結(jié)構(gòu)(inverted residual block),如圖3所示。倒置殘差結(jié)構(gòu)與殘差結(jié)構(gòu)[18]相比,輸入和輸出的通道數(shù)更少,并使用深度可分離卷積來過濾中間擴(kuò)展層中的特征,這樣提高了內(nèi)存效率。
在MobileNetv2倒置殘差結(jié)構(gòu)的基礎(chǔ)上加入SENet,如圖4所示。SENet是由Momenta研發(fā)工程師Hu等[12]提出的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),此結(jié)構(gòu)通過建模特征通道間的依賴關(guān)系,增強(qiáng)網(wǎng)絡(luò)對(duì)特征的選擇和抑制能力,其主要由Squeeze、Excitation和Reweight 3部分構(gòu)成,如圖5所示。其主要操作流程為:①Squeeze操作,使用全局平均池化壓縮每個(gè)通道的特征,將每個(gè)通道的特征壓縮為一個(gè)數(shù)值;②Excitation操作,通過控制兩層全連接層的權(quán)值,來建模各個(gè)特征通道之間的相互依賴關(guān)系;③Reweight操作,通過Sigmoid得到范圍為0~1的歸一化權(quán)重,最后對(duì)每個(gè)通道分別進(jìn)行乘法操作將權(quán)值加權(quán)到原特征上。
expansion convolution為擴(kuò)展卷積,作用是擴(kuò)展特征圖的大??;depthwise convolution為深度卷積;projection convolution為投影卷積,作用是縮減特征圖的大小圖3 倒置殘差結(jié)構(gòu)Fig.3 Inverted residual block
expansion convolution為擴(kuò)展卷積;depthwise convolution為深度卷積;GAP(global average pooling)為全局平均池化層;FC代表全連接層圖4 改進(jìn)的倒置殘差結(jié)構(gòu)Fig.4 Modified inverted residual block
X代表輸入;H、W、C分別代表圖片的高、寬、通道數(shù);Ftr代表卷積、池化操作是傳統(tǒng)的(tradition);Fsq代表卷積、池化操作的作用是Squeeze操作;Fex代表卷積、池化操作的作用是Excitation操作;Fscale代表卷積、池化操作的作用是尺度放縮(scale)圖5 SENet結(jié)構(gòu)Fig.5 Composition of SENet
訓(xùn)練樣本來源主要有兩部分,一部分樣本數(shù)據(jù)來自微軟開源數(shù)據(jù)集(common object in context,COCO)[19],另一部分樣本是自己采集制作。原始COCO數(shù)據(jù)集中包含80多類對(duì)象,所以需要去除與實(shí)驗(yàn)無關(guān)的類別,僅留下關(guān)于人類別的數(shù)據(jù)。自己的數(shù)據(jù)集來自教室上方安裝攝像機(jī)拍攝的視頻,將采集的視頻分幀,取出不同時(shí)段的圖像作為訓(xùn)練樣本,選取人數(shù)較少的圖片來減少數(shù)據(jù)標(biāo)注的成本。由于相機(jī)采集的是720P而網(wǎng)絡(luò)輸入是300×300,為避免數(shù)據(jù)過度壓縮損失信息,將每幀分為4份數(shù)據(jù),然后在這些圖像上標(biāo)注,制作成PASCAL VOC數(shù)據(jù)集,最終訓(xùn)練集共66 615張,其中包含人的樣本有43 622張。測(cè)試集共11 370張,包含人的樣本為7 331張。
由于樣本中各種情形下的圖像樣本并不一致,為了避免樣本分布不均導(dǎo)致訓(xùn)練出的模型泛化性能不佳問題,對(duì)自己采集的樣本進(jìn)行旋轉(zhuǎn)、縮放、裁剪、平移、對(duì)比度、色彩抖動(dòng)等操作,實(shí)現(xiàn)數(shù)據(jù)增廣,使得訓(xùn)練的模型更好適應(yīng)小尺度目標(biāo),提高泛化性。同時(shí)由于室內(nèi)光照問題,特別是在距離光源較近的人身上的光照很強(qiáng),使得處于此環(huán)境下的人相對(duì)于光照射下表面會(huì)有較大變化,從而會(huì)影響室內(nèi)人檢測(cè)的精度。采用自適應(yīng)直方圖均衡化來對(duì)圖像進(jìn)行增強(qiáng)從而提高圖像的質(zhì)量,減少光照變化對(duì)圖像的影響。
采用NVIDIA GeForce RTX 2080 Ti型GPU、Intel i7-9700K CPU作為硬件平臺(tái),操作系統(tǒng)為Windows 10,并行計(jì)算框架版本為CUDA v10.0,深度神經(jīng)網(wǎng)絡(luò)加速庫(kù)為CUDNN v10.0。采用Python 編程語(yǔ)言在Tensorflow[20]深度學(xué)習(xí)框架上實(shí)現(xiàn)本文的SSD目標(biāo)檢測(cè)模型并完成對(duì)模型的訓(xùn)練。
訓(xùn)練過程中使用困難樣本挖掘 (hard negative mining)策略[21],即訓(xùn)練過程中先用原始的正負(fù)樣本訓(xùn)練檢測(cè)模型,然后使用訓(xùn)練出的模型對(duì)樣本進(jìn)行檢測(cè)分類,把其中檢測(cè)錯(cuò)誤的樣本繼續(xù)放入負(fù)樣本集合進(jìn)行訓(xùn)練,從而加強(qiáng)模型判別假陽(yáng)性的能力。訓(xùn)練過程中主要參數(shù)為:批大小為128,最大迭代次數(shù)為90 000次,每10 000次迭代后衰減一次,每間隔20 000次迭代后保存一次模型,最終選取精度最高的模型,訓(xùn)練loss曲線如圖6所示。
圖6 改進(jìn)SSD的訓(xùn)練loss曲線Fig.6 Improved SSD training loss curve
模型測(cè)試平臺(tái)是搭載神經(jīng)元計(jì)算棒NCS2的樹莓派3B+,計(jì)算環(huán)境是OpenVINO 2019R1。訓(xùn)練完成后將ckpt模型轉(zhuǎn)化為pb模型文件,pb模型文件具有語(yǔ)言獨(dú)立性,可獨(dú)立運(yùn)行,封閉的序列化格式,可移植性好。最后將pb模型文件轉(zhuǎn)化為IR模型,將IR模型在部署好環(huán)境的樹莓派上運(yùn)行測(cè)試。
通過在測(cè)試集中分析模型改進(jìn)前后的檢測(cè)精度、檢測(cè)速度和參數(shù)量以對(duì)比模型的性能。把測(cè)試集圖像輸入訓(xùn)練好的網(wǎng)絡(luò),對(duì)室內(nèi)的人進(jìn)行檢測(cè)并記錄其位置,當(dāng)模型預(yù)測(cè)的目標(biāo)邊界與測(cè)試集對(duì)應(yīng)的標(biāo)注數(shù)據(jù)中的邊界框的交并集比(IOU)大于等于設(shè)定的閾值時(shí),認(rèn)為檢測(cè)結(jié)果正確,否則視為檢測(cè)錯(cuò)誤。檢測(cè)精度的評(píng)價(jià)指標(biāo)選取準(zhǔn)確率P、召回率R和調(diào)和均值F1,各個(gè)評(píng)價(jià)指標(biāo)的定義為
(3)
(4)
(5)
式中:TP為正確檢測(cè)到人的數(shù)量;FP為誤把非人目標(biāo)檢測(cè)為人的數(shù)量;FN為誤把人檢測(cè)為背景的數(shù)量;F1為對(duì)準(zhǔn)確率和召回率的調(diào)和均值。
在制作的測(cè)試數(shù)據(jù)集上,默認(rèn)IOU閾值情況下,分別對(duì)改進(jìn)前后的SSD目標(biāo)檢測(cè)模型做測(cè)試,準(zhǔn)確率與幀率如表1所示。
表1 改進(jìn)前后SSD的實(shí)驗(yàn)結(jié)果
由表1可以看出,改進(jìn)的SSD目標(biāo)檢測(cè)模型準(zhǔn)確率提高了4.48%,召回率提高了1.44%,在特征提取MobileNetv2中加入SENet模塊可以使SSD目標(biāo)檢測(cè)模型準(zhǔn)確率和召回率均得到提高,且在搭載NCS2的樹莓派3B+測(cè)試平臺(tái)下檢測(cè)速度可達(dá)8幀/s,適合在移動(dòng)設(shè)備上部署。下面實(shí)驗(yàn)均在改進(jìn)的SSD模型上進(jìn)行。
當(dāng)IOU閾值在0. 5以上時(shí),對(duì)人的檢測(cè)結(jié)果會(huì)受到很大影響,其漏檢率將快速上升[22]。不同于城市環(huán)境下對(duì)檢測(cè)到的人要求精確的位置,在室內(nèi)人數(shù)檢測(cè)場(chǎng)景下,對(duì)室內(nèi)人檢測(cè)的位置精度要求不高,只需較高的準(zhǔn)確率即可。通過比較IOU閾值在0.3~0.6時(shí)準(zhǔn)確率和召回率,選擇較為合適的 IOU閾值。不同IOU閾值下,模型檢測(cè)結(jié)果如表2所示,測(cè)試樣圖如圖7所示。根據(jù)結(jié)果得出改進(jìn)的SSD 目標(biāo)檢測(cè)模型在室內(nèi)環(huán)境下檢測(cè)人的IOU閾值在0.4最合適,模型的準(zhǔn)確率和召回率比默認(rèn)的閾值0.5時(shí)分別提高了0.98個(gè)百分點(diǎn)和0.62個(gè)百分點(diǎn),故而在IOU閾值為0.4下進(jìn)行下面模型檢測(cè)性能的對(duì)比試驗(yàn)。
表2 IOU對(duì)準(zhǔn)確率的影響
圖7 IOU對(duì)準(zhǔn)確率的影響Fig.7 Experimental results on various IOU thresholds
室內(nèi)圖像數(shù)據(jù)大多是在空中的攝像機(jī)采集,不同攝像機(jī)高度下采集的圖像中人臉與頭部的面積比例不同,會(huì)影響模型的準(zhǔn)確率。本實(shí)驗(yàn)包含拍攝高度3、4、5 m各100張測(cè)試集,選擇實(shí)際中較為合適的拍攝高度,檢測(cè)結(jié)果如表3所示。根據(jù)結(jié)果得出模型在室內(nèi)環(huán)境下在4 m高度采集人照片最合適,模型的F1比另兩種高度下分別高出0.69個(gè)百分點(diǎn)與1.38個(gè)百分點(diǎn)。
表3 拍攝高度對(duì)檢測(cè)準(zhǔn)確率的影響
(1)通過修改原SSD的特征提取網(wǎng)絡(luò)部分,將原VGG特征提取部分更換為加入SENet的MobileNetv2,使目標(biāo)檢測(cè)模型更輕量化,并提高了模型對(duì)特征信息的選擇能力。在綜合COCO數(shù)據(jù)與自制作的數(shù)據(jù)集上,改進(jìn)后SSD模型比改進(jìn)前準(zhǔn)確率和召回率分別提高了4.48%和1.44%,且在硬件平臺(tái)為搭載NCS2的樹莓派3B+下每秒可檢測(cè)8幀。試驗(yàn)結(jié)果表明,模型具有較高的準(zhǔn)確性。在邊緣計(jì)算設(shè)備上有較好的實(shí)時(shí)性。
(2)由于室內(nèi)人數(shù)檢測(cè)無須精確的人的位置信息,故將IOU閾值取為 0.4。在此閾值下,模型的準(zhǔn)確率和召回率比默認(rèn)的閾值0.5時(shí)分別提高了0.98個(gè)百分點(diǎn)和0.62個(gè)百分點(diǎn)。
(3)通過比較不同拍攝角度下數(shù)據(jù)的檢測(cè)結(jié)果,本文訓(xùn)練的模型在室內(nèi)環(huán)境下在4 m高度采集人照片最合適,比3、5 m高度下分別高出0.69個(gè)百分點(diǎn)與1.38個(gè)百分點(diǎn)。