李 鈺,段明秀,宋思思,李 翅
(吉首大學(xué)信息科學(xué)與工程學(xué)院,湖南 吉首 416000)
在教室、圖書館和車站等人群密度較高的場所,通常都安裝了視頻監(jiān)控系統(tǒng).利用視頻監(jiān)控系統(tǒng),可以提取視頻中的人數(shù)信息,這是資源優(yōu)化配置中的關(guān)鍵信息,有較高的實用價值.統(tǒng)計人數(shù)的關(guān)鍵任務(wù)是對單個的人的檢測.1958年,神經(jīng)生物學(xué)家Hubel等[1]通過觀察貓腦內(nèi)的神經(jīng)元對投影在屏幕上精確位置的圖像的響應(yīng)情況,發(fā)現(xiàn)處于視覺系統(tǒng)較前面的神經(jīng)元對特定的光模式反應(yīng)較強烈.這一事實引起了人們對大腦識別物體的方法的思考,即大腦是從原始信號做低級抽象,再做高級抽象.卷積神經(jīng)網(wǎng)絡(luò)便是受此啟發(fā)而出現(xiàn)的,它從原始圖像開始,通過卷積核提取特征層,特征層再次通過卷積核提取出新的特征層.大量實踐證明,卷積神經(jīng)網(wǎng)絡(luò)能夠成功地應(yīng)用在計算機視覺領(lǐng)域的目標(biāo)檢測任務(wù)中.本研究中采用的單發(fā)多盒探測器(Single Shot MultiBox Detector,SSD)模型[2],正是一種基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測模型,該模型檢測目標(biāo)的類別數(shù)為20.筆者擬將該SSD模型修改為單類目標(biāo)檢測模型,即只保留數(shù)據(jù)集中的person類目標(biāo),過濾掉其他19類目標(biāo),并在同一檢測任務(wù)下對比二者的檢測效果.
SSD模型是深度卷積神經(jīng)網(wǎng)絡(luò)模型,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.SSD模型使用VGG-16作為基礎(chǔ)網(wǎng)絡(luò)(稱為base network[2]),它是用于圖像分類(已知一個類別,判斷未知目標(biāo)是否屬于該類目標(biāo))的標(biāo)準(zhǔn)架構(gòu).在base network之后,添加了額外輔助的網(wǎng)絡(luò)結(jié)構(gòu).
圖1 SSD模型的網(wǎng)絡(luò)結(jié)構(gòu)Fig. 1 SSD Architecture
SSD模型的核心方法是預(yù)測物體位置及其歸屬類別,即在檢測目標(biāo)時,需要檢測目標(biāo)所在位置(本研究為預(yù)測offset)和目標(biāo)類別(本研究為預(yù)測score).基本預(yù)測流程如圖2所示.
圖2 SSD模型的預(yù)測流程Fig. 2 SSD Forecasting Process
將300×300的圖片作為輸入,通過卷積核(kernels)對圖像不斷地進行特征提取.選取6個特征層(feature map)進行預(yù)測,其大小分別為38×38,19×19,10×10,5×5,3×3,1×1.feature map的每一點對應(yīng)原輸入圖片的一個區(qū)域的中心點(稱為feature map cell[2],m×n大小的feature map共有m×n個fea-ture map cell).以該點為中心,構(gòu)造出不同寬高比的k個默認框default box,從左到右k的取值分別為4,6,6,6,4,4,共有8 732個default box.每個框都需要預(yù)測c個類別的score和4個offset.4個offset為(x,y,w,h),其中x和y表示框中心點的坐標(biāo),w和h分別表示框的寬和高.于是,對于m×n的feature map,共有(c+4)×m×n×k個輸出結(jié)果[3].對所有的輸出結(jié)果,根據(jù)置信度排序,從大到小取一部分,然后通過Non-Maximum Suppression得到最終的預(yù)測結(jié)果.
筆者采用公開數(shù)據(jù)集pascal VOC 2007.該數(shù)據(jù)集包含20類物體(即aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,diningtable,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor),共9 963張圖片.筆者只采用包含人的圖片,并將這些圖片對應(yīng)的Annotation標(biāo)注文件中name節(jié)點值不為person的標(biāo)注數(shù)據(jù)過濾掉,最后生成4 192(其序號為0~4 191)個訓(xùn)練數(shù)據(jù),如圖3所示.將20類目標(biāo)的SSD模型的檢測目標(biāo)類別數(shù)修改為1,配置文件修改為
圖3 訓(xùn)練數(shù)據(jù)Fig. 3 Training Data
VOC_LABELS={'none':(0,'Background'),'person':(1,'Person')},
其中person的label值為1,其他均視為background,label值為0.
訓(xùn)練數(shù)據(jù)由人工在圖像上標(biāo)注的目標(biāo)位置組成,該位置稱為ground truth box[2].訓(xùn)練的主要目的是最小化損失函數(shù).SSD模型訓(xùn)練的損失函數(shù)由分類和回歸2個部分組成[2]:
使用反向傳播算法對模型進行訓(xùn)練.訓(xùn)練所用的CPU為Intel (E5-2665/i5-7500),GPU為GTX 1050TI,迭代次數(shù)設(shè)置為無限訓(xùn)練.圖4示出了訓(xùn)練過程中L(x,c,l,g)的變化情況.從圖4可以看出:0~100步,損失值迅速下降,模型快速收斂,loss值越小表示模型收斂效果越好;100~120步,損失值在很小范圍內(nèi)上下波動,即模型已收斂.
圖4 總的損失值Fig. 4 Total Loss Value
選取自習(xí)室的一張照片進行實驗對比.圖5示出了20類目標(biāo)的SSD模型的檢測結(jié)果,圖中綠色框標(biāo)記的是檢測到的人,紫色框標(biāo)記的是檢測到的椅子.圖6示出了單類目標(biāo)的SSD模型訓(xùn)練至130步時的檢測結(jié)果,圖中紅色框標(biāo)記的是檢測到的人.
圖5 20類目標(biāo)的SSD模型的檢測結(jié)果Fig. 5 Detection Results with 20 Categories
圖6 單類目標(biāo)的SSD模型的檢測結(jié)果Fig. 6 Detection Results with Single Category
從圖5和圖6可以看出,在對人的檢測任務(wù)中,單類目標(biāo)的SSD模型相比20類目標(biāo)的SSD模型能夠更準(zhǔn)確地檢測出圖像中的目標(biāo).
將20類目標(biāo)的SSD模型的檢測器修改為只檢測人的單類目標(biāo)檢測器,二者的對比實驗結(jié)果表明,單類目標(biāo)的SSD模型在檢測人的任務(wù)中精確度更高.考慮到目標(biāo)被大部分遮擋時特征嚴重缺失,以及小目標(biāo)的檢測效果并不佳,筆者下一步將從這2個方面對SSD模型作改進.