于秀萍, 呂淑平, 陳志韜
(哈爾濱工程大學(xué)自動(dòng)化學(xué)院,哈爾濱150001)
目標(biāo)識(shí)別是計(jì)算機(jī)視覺(jué)領(lǐng)域中的一個(gè)新興的應(yīng)用方向,也是近年來(lái)的研究熱點(diǎn)之一。隨著中國(guó)城市化的進(jìn)程不斷加快,很多城市提出了要建設(shè)“智慧城市”,視頻監(jiān)控設(shè)備作為智慧城市的眼睛,將在未來(lái)發(fā)揮重要的作用。人們希望監(jiān)控設(shè)備能夠自動(dòng)捕捉到視頻中的異常情況,并能夠最大限度降低誤報(bào)和漏報(bào)現(xiàn)象,以最快、最佳的方式發(fā)出警報(bào)和提供有用信息。這就需要對(duì)視頻中各種各樣的目標(biāo)進(jìn)行快速、準(zhǔn)確的識(shí)別。
早期的目標(biāo)識(shí)別方法大多是利用尺度不變特征變換(Scale-invariant Feature Transform,SIFT)進(jìn)行物體檢測(cè),利用方向梯度直方圖(Hist Ogram of Oriented Gradients,HOG)進(jìn)行行人檢測(cè)等。例如利用 HOG+LBP特征處理行人遮擋,提高檢測(cè)準(zhǔn)確率[1]。上述方法都是將提取到的特征輸入到分類(lèi)器中來(lái)進(jìn)行識(shí)別,本質(zhì)上是由人手工設(shè)計(jì)的特征工程。手工設(shè)計(jì)特征工程存在費(fèi)時(shí)費(fèi)力,對(duì)專(zhuān)業(yè)領(lǐng)域知識(shí)要求高,泛化性能差等問(wèn)題。由于卷積神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學(xué)習(xí)能力,越來(lái)越多的研究者開(kāi)始利用卷積神經(jīng)網(wǎng)絡(luò)來(lái)完成目標(biāo)識(shí)別任務(wù)。
深層的卷積神經(jīng)網(wǎng)絡(luò)在不同的視覺(jué)識(shí)別任務(wù)中取得了巨大的成功[2-5]。在多類(lèi)目標(biāo)識(shí)別任務(wù)上,提出了 R-CNN[6]、 SPP-NET[7]、 Fast-RCNN[8]、 Faster-RCNN[9]、SSD[10]、YOLO[11]等多種算法。其中 YOLO是目前識(shí)別效果較好的算法之一。
本文以tiny-yolo為基礎(chǔ)設(shè)計(jì)了一個(gè)包含15個(gè)卷積層的神經(jīng)網(wǎng)絡(luò)模型m-yolo,實(shí)現(xiàn)多個(gè)類(lèi)別的目標(biāo)進(jìn)行識(shí)別。改進(jìn)了tiny-yolo的網(wǎng)絡(luò)結(jié)構(gòu),增加了3×3卷積層的數(shù)量,并在兩個(gè)3×3卷積層中間加入了1×1卷積層 NIN[12](Network in Network),使用 voc2007 數(shù)據(jù)集對(duì)改進(jìn)的效果進(jìn)行了測(cè)試。
tiny-yolo是一種微型的YOLO,僅由9個(gè)卷積層和6個(gè)最大池化層構(gòu)成,參數(shù)量?jī)H有標(biāo)準(zhǔn)YOLO模型的22%[11]。為了提高識(shí)別的準(zhǔn)確性和定位的精確性,對(duì)tiny-yolo的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),改進(jìn)后的模型用myolo表示。m-yolo的網(wǎng)絡(luò)基于darknet框架實(shí)現(xiàn),包括15個(gè)卷積層和6個(gè)最大池化層。m-yolo網(wǎng)絡(luò)的結(jié)構(gòu)如表1所示。
表1 m-yolo的網(wǎng)絡(luò)結(jié)構(gòu)
所有卷積層的激活函數(shù)都設(shè)置為L(zhǎng)eaky函數(shù):
由表1可以看到,改進(jìn)后的網(wǎng)絡(luò)增加了3×3的卷積層,加入3×3的卷積層可以提高特征提取的能力,但是使模型的參數(shù)量有所增加。為了保證模型的識(shí)別速度,需要讓模型小型化,盡量壓縮參數(shù)量。為此加入了1×1的卷積層。1×1卷積層不會(huì)改變輸入圖像的維度,它的作用是實(shí)現(xiàn)多個(gè)特征映射的線(xiàn)性組合,壓縮或增加通道的數(shù)量,實(shí)現(xiàn)多通道的信息交互和整合。在3×3的卷積層的中間加入1×1的卷積層起到了降低參數(shù)量作用。例如,第8層輸入圖像的尺寸為52×52,通道數(shù)為128,卷積核尺寸為3×3,數(shù)量為128。在沒(méi)有第7層1×1卷積層的情況下,第8層的參數(shù)量為128×3×3×128=147 456。加入卷積核數(shù)量為64的1×1卷積層之后,總的參數(shù)量為1×1×128×643×3×64×128=81 920。參數(shù)量降低為原來(lái)的55.6%。參數(shù)的降低使層與層之間的連接稀疏化,減輕過(guò)擬合的同時(shí)減少了計(jì)算的復(fù)雜度,降低了訓(xùn)練的難度。輸出層的維度為13×13×5×(20+5)。
使用voc2007和voc2012數(shù)據(jù)集進(jìn)行m-yolo網(wǎng)絡(luò)模型的訓(xùn)練和性能測(cè)試。數(shù)據(jù)集中包含有person,car,bicycle,motorbike,train,bus,cat,dog 等 20 類(lèi)常見(jiàn)的物體,voc2007中包含了9 963張標(biāo)注過(guò)的圖片,一共標(biāo)注了24 640個(gè)物體。voc2012的訓(xùn)練集包含了11 540張圖片,一共標(biāo)注了27 450個(gè)物體。
實(shí)驗(yàn)在Windows10環(huán)境下實(shí)現(xiàn),電腦的CPU型號(hào)為Intel(R)Core(TM)i5-7300HQ,GPU型號(hào)為NVIDIA GeForce GTX 1050Ti,顯存為4 GB,內(nèi)存8 GB。設(shè)置動(dòng)量常數(shù)β為0.9,權(quán)值衰減系數(shù)為0.000 5,每個(gè)batch訓(xùn)練64個(gè)樣本,采用分段調(diào)節(jié)學(xué)習(xí)率的策略,初始學(xué)習(xí)率為0.001,steps分別設(shè)置為100,25 000,35 000,最大迭代次數(shù)40 200 次,scales分別設(shè)置為10,0.1,0.1。
實(shí)驗(yàn)的loss函數(shù)下降散點(diǎn)圖如圖1、2所示。圖1是tiny-yolo模型的loss函數(shù)散點(diǎn)圖,可以看到迭代40 200次時(shí)模型基本收斂,loss約在0.7~1.4之間。圖2是m-yolo模型的loss函數(shù)散點(diǎn)圖,loss約在0.6 ~1.2之間。從收斂情況來(lái)看,模型訓(xùn)練比較理想。
圖1 tiny-yolo模型的loss函數(shù)散點(diǎn)圖
圖2 m-yolo模型的loss函數(shù)散點(diǎn)圖
兩種模型在voc2007的20種物體上的識(shí)別準(zhǔn)確率如表2、3所示。對(duì)比表2、3可以發(fā)現(xiàn),m-yolo模型在所有的20類(lèi)物體上的識(shí)別準(zhǔn)確率都比tiny-yolo模型要高。提升最多的是對(duì)桌子(table)的識(shí)別,提高了14.36%。提升最少的是對(duì)瓶子(bottle)的識(shí)別,提高了 0.55%。
表3 m-yolo模型在voc2007數(shù)據(jù)集上的測(cè)試結(jié)果 %
在目標(biāo)識(shí)別中有一些重要的指標(biāo):平均準(zhǔn)確率(mAP),識(shí)別速度,查準(zhǔn)率(precision),查全率(recall),平均交并比(avg IOU),平均識(shí)別時(shí)間(avg time)等。計(jì)算預(yù)測(cè)邊界框和實(shí)際邊界框的交并比IOU。當(dāng)IOU>0.5定義為真正例;IOU<0.5定義為假正例;IOU=0.5定義為假反例[13-14]。用TP代表真正例,F(xiàn)P代表假正例,F(xiàn)N代表假反例,則查準(zhǔn)率和查全率[15]的計(jì)算公式為:
計(jì)算兩個(gè)模型的查全率(recall)和查準(zhǔn)率(precision),平均識(shí)別率(mAP),平均 IOU,平均檢測(cè)時(shí)間等如表4所示。
表4 查全率和查準(zhǔn)率等指標(biāo)
從表4可以看出,m-yolo模型的查準(zhǔn)率(precision)提高了 0.01,查全率(recall)提高了 0.1。查全率提高的幅度比較大,說(shuō)明m-yolo模型的漏檢的數(shù)量明顯減少(將正例判成反例,即假反例FN)。myolo模型的 mAP從 tiny-yolo的44.02%提高到了51.04%,平均交并比(avg IOU)從 tiny-yolo 的41.83%提高到了43.60%。在識(shí)別速度方面,測(cè)試共使用了4 952張圖片,tiny-yolo模型識(shí)別一張圖片平均用時(shí)23.2 ms,m-yolo 模型識(shí)別一張圖片平均用時(shí) 23.8 ms。m-yolo的識(shí)別時(shí)間僅上升了0.6 ms。
實(shí)驗(yàn)表明,改進(jìn)后的模型m-yolo在識(shí)別的準(zhǔn)確性上,定位的精確性上與tiny-yolo相比均有了明顯的提升,同時(shí)平均識(shí)別時(shí)間僅上升了0.6 ms,識(shí)別的速度幾乎沒(méi)有下降。說(shuō)明在m-yolo模型中加入的NIN結(jié)構(gòu)達(dá)到了預(yù)期的效果,改進(jìn)的方案有效可行。
在tiny-yolo網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)之上,m-yolo增加了3×3卷積層的數(shù)量,并在兩個(gè)3×3卷積層中間加入了1×1卷積層。實(shí)驗(yàn)表明,改進(jìn)的方法在提高了模型性能的同時(shí),有效的避免了識(shí)別時(shí)間大幅度的上升。YOLO算法為了提高識(shí)別的速度放棄了Region Proposal策略,直接對(duì)輸入圖像劃分格子導(dǎo)致對(duì)小目標(biāo)識(shí)別效果差,可以嘗試找尋更好的方法來(lái)代替對(duì)輸入圖像劃分格子的方法。目前深度學(xué)習(xí)仍然處于快速發(fā)展的階段,不斷有新的算法提出,所以考慮對(duì)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行修改和優(yōu)化也是研究的方向之一。