張亞芹 劉 暢 覃 源 程 科
(1.江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212003)(2.鎮(zhèn)江明知科技有限公司 鎮(zhèn)江 212003)
進(jìn)入21 世紀(jì)以后,人們生活水平的不斷提升,尤其是物質(zhì)生活水平的提升,大家越來越注重個(gè)人安全和工業(yè)安全,對人、家庭以及住所的小區(qū)的監(jiān)控方面提出了更高的需求[1]。人防的保安方式難以適應(yīng)人們的請求,智能監(jiān)控已變成當(dāng)下的主流趨勢。所以目標(biāo)檢測成為當(dāng)前計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)領(lǐng)域研究的熱門課題。
圖像目標(biāo)檢測算法發(fā)展史如圖1 所示。從圖可知,從2001年到2008年,都是用傳統(tǒng)的方法進(jìn)行目標(biāo)檢測,傳統(tǒng)算法的典型代表有:Haar特征+Adaboost 算法,Hog 特征+Svm 算法和DPM 算法。在傳統(tǒng)的方法中,目標(biāo)檢測算法流程為多尺度滑動(dòng)窗口,對每個(gè)窗口進(jìn)行特征提取,分類器分類。多尺度滑動(dòng)窗口提取很多不同尺度的窗口,之后對每個(gè)窗口進(jìn)行特征提取。比如多層感知機(jī)(MLP),其輸入通常是一個(gè)特征向量,需要人工設(shè)計(jì)特征,然后將這些特征計(jì)算的值組成特征向量。以實(shí)踐和經(jīng)驗(yàn)來看,人工找到的特征并不是很準(zhǔn)確,特征有時(shí)多有時(shí)少,更糟糕的是,有時(shí)選擇的特征根本不起作用[2]。

圖1 圖像目標(biāo)檢測算法發(fā)展史
從圖1 可知,基于深度學(xué)習(xí)的目標(biāo)檢測算法的發(fā)展從2012 年興起,有兩條主線,第一條是基于Object Proposal 的檢測主線,另一條是一體化卷積網(wǎng)絡(luò)的檢測主線,這條主線基本是按照YOLO,SSD,Retina-Net發(fā)展的。在第二條主線中,人們拋棄了傳統(tǒng)的粗檢測+精檢測的檢測流程,經(jīng)過單次檢測即可直接得到最終的檢測結(jié)果,因此有著更快的檢測速度[3]。YOLO[4]是第一個(gè)一體化卷積網(wǎng)絡(luò)檢測算法,由Joseph 和Girshick 等人在2015 年提出。該算法最大的優(yōu)勢是速度快,徹底解決基于深度學(xué)習(xí)速度上的缺陷。SSD[5]算法由Wei Liu 等人于2015 年提出。SSD 算法吸收了YOLO 速度快和RPN 定位精準(zhǔn)的優(yōu)點(diǎn),采用了RPN 中的多參考窗口技術(shù),并進(jìn)一步提出在多個(gè)分辨率的特征圖上進(jìn)行檢測。
基于視覺的人體動(dòng)作識別要解決的主要問題是通過計(jì)算機(jī)對攝像機(jī)采集的原始圖像或圖像序列數(shù)據(jù)進(jìn)行處理和分析,學(xué)習(xí)并理解其中人的動(dòng)作和行為,通過分析獲得人體運(yùn)動(dòng)模式,最終正確識別出人體的動(dòng)作。動(dòng)作識別的主要難點(diǎn)在于模型的設(shè)計(jì),使其不僅能從背景中檢測出目標(biāo)和動(dòng)作,而且能準(zhǔn)確識別動(dòng)作多樣性的變化。目前手動(dòng)設(shè)計(jì)的模型,當(dāng)動(dòng)作有部分被遮擋或同一動(dòng)作在不同的環(huán)境下發(fā)生時(shí),識別的效果較差。利用卷積神經(jīng)網(wǎng)絡(luò),能夠?qū)W習(xí)到更高效的特征與模式[6]。同時(shí)SSD 算法吸收了YOLO 速度快和RPN 定位精準(zhǔn)的優(yōu)點(diǎn),所以用SSD 框架進(jìn)行訓(xùn)練和優(yōu)化模型,不僅很好地解決了傳統(tǒng)方法存在的缺陷,還能比在其他深度學(xué)習(xí)框架(如YOLO)下得到的模型,在精度和定位上更準(zhǔn)確。
通過對比和分析各種目標(biāo)檢測方法,實(shí)驗(yàn)最終選擇在ssd 框架上進(jìn)行了實(shí)驗(yàn),優(yōu)化得出最終的模型。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),是一種前饋神經(jīng)網(wǎng)絡(luò),人工神經(jīng)元可以響應(yīng)周圍單元,從而進(jìn)行大型圖像處理。卷積神經(jīng)網(wǎng)絡(luò)是受到生物思考方式啟發(fā)的MLPs(多層感知器),它有著不同的類別層次,并且各層的工作方式和作用也不同[7]。它主要由輸入層、卷積層、激活層、池化層和輸出層組成。卷積層用于局部感知和權(quán)重共享。激活層用于模擬人的神經(jīng)系統(tǒng),只對部分神經(jīng)元的輸入做出反應(yīng)。常用的激活函數(shù)有Sigmoid 函數(shù),Tanh 函數(shù),Relu 函數(shù)等。池化層提供avg-pooling 和max-pooling 兩種方式,來保證網(wǎng)絡(luò)的魯棒性,減少參數(shù)數(shù)量,防止過擬合現(xiàn)象的發(fā)生。輸出層采用Softmax 回歸模型,實(shí)現(xiàn)logistic 回歸模型在多分類問題上的推廣。
其工作原理是:由輸入層對數(shù)據(jù)進(jìn)行預(yù)處理,比如均值化,歸一化等,然后經(jīng)過若干次卷積+激勵(lì)+池化后,最后到輸出層,通過softmax 函數(shù)得到最終的輸出。最終得到一個(gè)模型,該模型將學(xué)到一個(gè)高質(zhì)量的特征圖片全連接層。此外,為了得到更好的模型,也會(huì)在網(wǎng)絡(luò)結(jié)構(gòu)中增加一些額外的操作。比如,引入dropout 操作解決過擬合現(xiàn)象,或者采用進(jìn)行局部歸一化(LRN)、數(shù)據(jù)增強(qiáng)等操作,來增加魯棒性[8]。
典型的CNN 結(jié)構(gòu)有LeNet,AlexNet,VGG-Net,GoogLeNet,ResNet,輕 量 級CNN 模 型,如MobileNet,SqueezeNet,ShuffleNet 等。綜合各個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn),選擇VGG16 網(wǎng)絡(luò)結(jié)構(gòu),同時(shí)考慮內(nèi)存和時(shí)間等因素,也用mobilenet_v1 進(jìn)行了實(shí)驗(yàn)。對比實(shí)驗(yàn)表明,雖然mobilenet_v1 的內(nèi)存占用率和時(shí)間大大減小,但是它的召回率和準(zhǔn)確率也下降很多。
本文的基于卷積神經(jīng)網(wǎng)絡(luò)的電話動(dòng)作識別方法,其特征在于,使用的檢測模型由重新設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練得到,所述模型網(wǎng)絡(luò)基于VGG16 網(wǎng)絡(luò)并進(jìn)行了重構(gòu)。
本文選擇基于VGG16[17]網(wǎng)絡(luò)并進(jìn)行了重構(gòu)。采用的模型網(wǎng)絡(luò)在VGG16 的基礎(chǔ)上減少了一個(gè)全連接層,保留了兩個(gè)全連接層,增加了6 個(gè)卷積層和1個(gè)池化層,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 網(wǎng)絡(luò)結(jié)構(gòu)圖
為了優(yōu)化模型,需要對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行參數(shù)調(diào)整。本實(shí)驗(yàn)調(diào)整了輸入數(shù)據(jù)的尺寸大小,和各個(gè)卷積層的卷積核個(gè)數(shù)。
考慮到減小模型的內(nèi)存占用率,實(shí)驗(yàn)對比兩個(gè)輸入圖片尺寸,即512×512和300×300,綜合對比內(nèi)存占用率、所需時(shí)間和準(zhǔn)確率,最終證明輸入圖片尺寸為512×512的效果更好。
由于VGG 網(wǎng)絡(luò)結(jié)構(gòu)的寬度和深度都相對較大,而本文選擇的是對電話動(dòng)作識別,是二分類問題。希望能夠減小內(nèi)存占用率和縮短處理時(shí)間,同時(shí)為了保證準(zhǔn)確率。所以不改變網(wǎng)絡(luò)結(jié)構(gòu)的深度,嘗試改變網(wǎng)絡(luò)結(jié)構(gòu)的寬度。最終通過多次實(shí)驗(yàn)調(diào)參數(shù),最終得到:將VGG16 前四層的卷積核個(gè)數(shù)減半,既能保證在準(zhǔn)確率只下降一點(diǎn)的情況,大大減小了模型的大小,同時(shí)也縮減了處理的時(shí)間。
本實(shí)驗(yàn)的訓(xùn)練數(shù)據(jù)集是8400 張,測試集市2800 張圖片。為了豐富圖像訓(xùn)練集,更好地提取圖像特征,提高模型的準(zhǔn)確率,采取對樣本進(jìn)行隨機(jī)擴(kuò)充。主要有兩種方式,一種是自己在準(zhǔn)備數(shù)據(jù)時(shí),編寫程序,手動(dòng)對樣本進(jìn)行增加。另一種是對caffe-ssd 源碼進(jìn)行了修改,增加了數(shù)據(jù)增廣的功能,然后通過在網(wǎng)絡(luò)結(jié)構(gòu)給參數(shù)賦值,系統(tǒng)進(jìn)行圖像增廣。綜合考慮兩種方法,發(fā)現(xiàn)第二種方法更加靈活,所以本文采用第二種方法增加數(shù)據(jù)增廣功能。不過兩種方法都是通過隨機(jī)旋轉(zhuǎn)圖像,裁剪圖像,改變圖像色度,改變圖像飽和度,圖像亮度,圖像尺寸大小等,進(jìn)行對樣本數(shù)據(jù)增廣[18]。
實(shí)現(xiàn)原理是先將圖像RBG 轉(zhuǎn)換為HSV,然后隨機(jī)對H(色度)S(飽和度)V(亮度)進(jìn)行調(diào)整或同時(shí)對其中的兩個(gè)或三個(gè)調(diào)整,之后再將圖像HSV轉(zhuǎn)換為RBG,最后將圖像送入網(wǎng)絡(luò)結(jié)構(gòu)中。
具體實(shí)現(xiàn):在ssd 的源程序data_transfer.cpp 程序中添加數(shù)據(jù)增廣功能。DistortImage 這個(gè)主要是修改圖片的亮度、色度、對比度和飽和度。在annotated_data_layer.cpp 增加顏色扭曲函數(shù)。 在im_transforms.cpp 中實(shí)現(xiàn)RandomHue()函數(shù),AdjustHue()函數(shù),RandomSaturation 函數(shù),AdjustSaturation 函 數(shù),RandomBrightness 函 數(shù),AdjustBrightness各個(gè)函數(shù),主要是實(shí)現(xiàn)隨機(jī)更改圖像中的某個(gè)參數(shù)。之后再編寫ApplyDistort函數(shù),通過調(diào)用ApplyDistort函數(shù)來實(shí)現(xiàn)隨機(jī)更改圖像。

圖3 數(shù)據(jù)增廣功能
本文所重構(gòu)的網(wǎng)絡(luò)結(jié)構(gòu)中,最后有五個(gè)prior-Box 層(即fc7_mbox_priorbox,conv6_2,conv7_2,conv8_2,conv9_2),用于在每一個(gè)feature map 上獲得prior box。為了使獲得的prior box 更加精準(zhǔn),最后的五個(gè)融合檢測網(wǎng)絡(luò)層所使用的預(yù)選框尺寸用K-means聚類算法進(jìn)行統(tǒng)計(jì)來得到,因?yàn)槟繕?biāo)框的寬高并不是簡單的線性關(guān)系,而K-means聚類算法具有出色的速度和良好的可擴(kuò)展性,所以用它來進(jìn)行統(tǒng)計(jì)標(biāo)定的目標(biāo)框。可以讓預(yù)選框尺寸大小和比例更為適配檢測的場景。
Means 算法的原理[19]是:K-means 是一種通過均值對數(shù)據(jù)點(diǎn)進(jìn)行聚類的算法。其中K 表示類別數(shù),Means 表示均值。因?yàn)楸疚男枰@得的是五個(gè)預(yù)選框的大小,所以K 取5。K-Means 算法通過預(yù)先設(shè)定的K 值及每個(gè)類別的初始質(zhì)心對相似的數(shù)據(jù)點(diǎn)進(jìn)行劃分。并通過劃分后的均值迭代優(yōu)化獲得最優(yōu)的聚類結(jié)果。
由于天氣或光照的原因,導(dǎo)致攝像頭傳送過來的圖片存在偏暗或偏亮的現(xiàn)象,光照不均勻在一定程度上改變了圖像的原始面貌,從而使模型檢測結(jié)果出錯(cuò)[8]。為了提高模型的檢測效果。在傳送圖像的過程中,對圖像進(jìn)行簡單的光照判斷。
圖像偏暗或偏亮的判斷方法:通過統(tǒng)計(jì)圖像灰度直方圖,然后統(tǒng)計(jì)達(dá)到閾值的灰度值(閾值是通過統(tǒng)計(jì)3000 張偏暗或偏亮的圖片統(tǒng)計(jì)得到的),最后作灰度線性變換。
圖像光照不均勻預(yù)處理的算法[9]為先對圖像進(jìn)行冪律變換,主要是擴(kuò)大圖像在光線不足情況下的動(dòng)態(tài)范圍和壓縮在光線強(qiáng)烈時(shí)的動(dòng)態(tài)范圍。之后采用高斯差分濾波器,對低頻和高頻部分進(jìn)行處理。最后,重新歸一化所有的像素點(diǎn)值。

圖4 圖像光照處理流程圖
模型測試結(jié)果如下圖所示。
考慮到實(shí)際應(yīng)用中對GPU 或CPU、內(nèi)存占用率和時(shí)間的要求,本文綜合考慮這幾種因素,進(jìn)行了三次模型的訓(xùn)練。由于每個(gè)模型要統(tǒng)計(jì)2800 張圖片的測試結(jié)果,人為的統(tǒng)計(jì)費(fèi)時(shí)長而且不科學(xué),所以選擇編寫Python程序進(jìn)行實(shí)現(xiàn)。

圖5 模型測試結(jié)果
程序的主要思路是對比標(biāo)定的框和模型測試的框是否重疊。反向思考,不妨先解決出“不重疊”的情況,設(shè)兩個(gè)框?yàn)锳,B 矩陣。即B 矩陣,可能在A 的左側(cè)、右側(cè)、上側(cè)、下側(cè)。如果用公式表示,即(p2.y≤p3.y)∨(p1.y≥p4.y)∨(p2.x≤p3.x)∨(p1.x≥p4.x),那么可知兩個(gè)矩陣重疊時(shí),公式為?[(p2.y≤p3.y)∨(p1.y≥p4.y)∨(p2.x≤p3.x)∨(p1.x≥p4.x)]
根據(jù)德·摩根定律可轉(zhuǎn)換為
(p2.y>p3.y)∧(p1.y<p4.y)∧(p2.x>p3.x)∧(p1.x<p4.x)。
SSD512模型是重構(gòu)VGG16的網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練所得,mobilenet 模型是用mobilenet v1 網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練所得。

表1 不同網(wǎng)絡(luò)結(jié)構(gòu)模型測試結(jié)果統(tǒng)計(jì)表
SSD512 模型大小為96425K,約94.1M。mobilenet 模型大小為22764K,約為22.23M。根據(jù)上面表格統(tǒng)計(jì)的結(jié)果可知,mobilenet網(wǎng)絡(luò)結(jié)構(gòu)的模型雖然內(nèi)存大大的減小,但是正檢率也降低了很多,所以模型效果不好。
SSD512模型是重構(gòu)VGG16的網(wǎng)絡(luò)結(jié)構(gòu)并且輸入的圖片尺寸為512×512 訓(xùn)練所得,SSD512 模型是用重構(gòu)VGG16 的網(wǎng)絡(luò)結(jié)構(gòu)并且輸入的圖片尺寸為300×300訓(xùn)練所得。

表2 不同輸入尺寸模型測試結(jié)果統(tǒng)計(jì)表
SSD512 模 型 大 小 為96425K,約94.1M。SSD300 模型大小為:93814K,約91.6M。根據(jù)上面表格統(tǒng)計(jì)的結(jié)果可知,輸入尺寸為300×300 的模型,內(nèi)存只降低了一點(diǎn),但正檢率下降了0.170,誤檢率提高了0.117,時(shí)間處理上也沒有減少。所以輸入尺寸為300×300的模型效果不是很好。
SSD512模型是重構(gòu)VGG16的網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練所得,SSD512 卷積個(gè)數(shù)減半模型是用重構(gòu)VGG16 的網(wǎng)絡(luò)結(jié)構(gòu)并且將前四層卷積層的卷積個(gè)數(shù)減半訓(xùn)練所得。

表3 同一卷積層不同的卷積核個(gè)數(shù)模型測試結(jié)果統(tǒng)計(jì)表
SSD512×512 模型大小為96425K,約94.1M。SSD512×512 卷積個(gè)數(shù)減半模型大小為78346K,約為76.5M。由上圖表格可知:將VGG 前4 層的卷積層的卷積個(gè)數(shù)減半的模型,正檢率只下降0.028,誤檢率提高0.069,而模型的內(nèi)存下降了17.6M,處理每張圖片的時(shí)間也減少了。綜上可得:SSD512×512卷積個(gè)數(shù)減半模型是相對較好的模型。
本文研究基于卷積神經(jīng)網(wǎng)絡(luò)的電話動(dòng)作識別的方法,網(wǎng)絡(luò)結(jié)構(gòu)是基于VGG16 并重構(gòu)VGG16。對比mobilenet 網(wǎng)絡(luò)結(jié)構(gòu)發(fā)現(xiàn):重構(gòu)后的VGG16 網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練出的模型效果,同時(shí)還對比了微調(diào)參數(shù)的模型效果。對比結(jié)果表明,對于接打電話的監(jiān)控檢測,正檢率可達(dá)0.965。此外,對于誤檢的圖片進(jìn)行分析,大多數(shù)為圖像過暗、光照不均勻和動(dòng)作與打電話動(dòng)作相似的情況。圖像過暗、光照不均勻已通過前期對送入的圖像進(jìn)行圖像光照預(yù)處理得到解決,動(dòng)作與打電話相似的還有待進(jìn)一步優(yōu)化。但是本文優(yōu)化的模型已經(jīng)能夠很好地應(yīng)用于智能監(jiān)控場景。