(安徽工業(yè)大學(xué)電氣與信息工程學(xué)院,安徽馬鞍山243032)
為規(guī)范工廠倉(cāng)儲(chǔ)管理,企業(yè)要求行人、車輛等按照規(guī)定的出入口進(jìn)出,且貨車通道不允許行人及其他車輛通過,利用攝像機(jī)傳回圖像實(shí)時(shí)檢測(cè)與識(shí)別成為有效方案之一?;谝曈X的目標(biāo)識(shí)別方法一般采用各種人工設(shè)計(jì)的特征+分類器的方式,如使用方向梯度直方圖(HoG)[1-2]、Haar[3-4]、SURF[5]等特征或其變體和組合,將設(shè)計(jì)特征輸入到一個(gè)可訓(xùn)練分類器,如SVM[6-7]、AdaBoost[8]等,再通過有監(jiān)督的訓(xùn)練方式獲得最終識(shí)別結(jié)果。董天陽(yáng)等[9]利用Haar特征+Adaboost分類器的方法對(duì)車輛進(jìn)行識(shí)別,但這種方式通常訓(xùn)練比較復(fù)雜,算法的實(shí)時(shí)性也無法得到保證。李天劍等[10]嘗試使用Densenet[11]+SSD(Single Shot-multibox Detector)的方法解決工業(yè)現(xiàn)場(chǎng)智能叉車對(duì)托盤的檢測(cè)識(shí)別問題,這種方法省略了繁瑣的特征篩選,簡(jiǎn)化了訓(xùn)練過程,在保證識(shí)別精度的同時(shí)也能較大提高算法的實(shí)時(shí)性。在此基礎(chǔ)上,提出一種融合Darknet19[12]與SSD模型[13]的車輛識(shí)別模型用于工業(yè)廠區(qū)特定車輛的檢測(cè)和識(shí)別。首先在Caffe框架下利用ImageNet[14]數(shù)據(jù)集對(duì)Darknet19網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,然后用預(yù)訓(xùn)練后的網(wǎng)絡(luò)替換SSD模型中的基礎(chǔ)分類網(wǎng)絡(luò)VGG16[15],并利用Pascal VOC[16]數(shù)據(jù)集對(duì)新網(wǎng)絡(luò)進(jìn)行訓(xùn)練,最后使用私有數(shù)據(jù)集對(duì)訓(xùn)練后的網(wǎng)絡(luò)進(jìn)行微調(diào)。
Darknet19是Redmon等[12]提出的一種網(wǎng)絡(luò)模型,在VGG16的基礎(chǔ)上引入1×1卷積、批歸一化(Batch Normalization,BN),并在每一次池化操作后把通道數(shù)翻倍,使Darknet19模型在精度相對(duì)VGG16變化不大的情況下大幅度減小模型的參數(shù)量及浮點(diǎn)運(yùn)算量。Darknet19網(wǎng)絡(luò)模型結(jié)構(gòu)與VGG16模型類似,主要差異在于Darknet在每組卷積核尺寸為3×3的卷積層中間添加一層卷積核尺寸為1×1的卷積層,且卷積核尺寸為1×1的卷積層通道數(shù)均為相鄰卷積層通道數(shù)的1/2。Darknet19模型的具體結(jié)構(gòu)如表1。
表1 Darknet19網(wǎng)絡(luò)模型Tab.1 Network model of Darknet19
以二維圖像及相應(yīng)的二維卷積核進(jìn)行卷積運(yùn)算,卷積核包含兩種尺寸,分別為3×3和1×1,如式(1)
其中:G(i,j)為卷積結(jié)果;I(i,j)為輸入圖像中第i行第j列的像素;H(q,n)為卷積核中第q行第n列的元素。
批歸一化的原理是將數(shù)據(jù)輸入卷積層之前對(duì)數(shù)據(jù)進(jìn)行歸一化處理,為避免歸一化卷積層學(xué)習(xí)到的特征受到影響,在歸一化的基礎(chǔ)上引入可學(xué)習(xí)參數(shù)γ,β對(duì)歸一化后的數(shù)據(jù)進(jìn)行比例縮放和位移。批歸一化的前向傳播與反向傳播的流程如圖1,圖中實(shí)線為前向傳播過程,虛線為反向傳播過程。其中:x與y分別為批歸一化操作的輸入數(shù)據(jù)與輸出數(shù)據(jù);dx,dy分別為反向傳播過程輸出與輸入的梯度;dγ,dβ分別為通過反向傳播得到的可學(xué)習(xí)參數(shù)γ與β的梯度
圖1 批歸一化層前向/反向傳播Fig.1 Forward/back propagation of BN layer
構(gòu)建的車輛檢測(cè)卷積神經(jīng)網(wǎng)絡(luò)模型是一個(gè)融合Darknet19與SSD的回歸檢測(cè)模型。該模型設(shè)計(jì)的思路是在基礎(chǔ)網(wǎng)絡(luò)環(huán)節(jié)使用Darknet19模型中conv6_2之前的網(wǎng)絡(luò)以代替SSD模型中的VGG16網(wǎng)絡(luò),在預(yù)測(cè)階段,根據(jù)conv4_3,conv6_1,conv7_2,conv8_2,conv9_2及conv10_2卷積層得到的6種不同尺度的特征圖預(yù)測(cè)物體邊界框(Bounding Box)位置及相應(yīng)的置信度。
為預(yù)測(cè)目標(biāo)物體的邊界框位置,使用回歸的方法預(yù)測(cè)邊界框的位置信息,包括邊界框的幾何中心坐標(biāo)(cx,cy)及其長(zhǎng)度(w)與高度(h)。其損失函數(shù)如式(2)。
對(duì)于每一個(gè)預(yù)選框,除需生成位置偏差估計(jì)以外,還需根據(jù)設(shè)定的網(wǎng)絡(luò)節(jié)點(diǎn)對(duì)c+1個(gè)(c個(gè)類別和1個(gè)背景)類別分別計(jì)算置信度,用以判斷該框所在位置包含目標(biāo)的類別。其損失函數(shù)采用Softmax損失函數(shù)表示,如式(3)。
迭代損失函數(shù)與SSD中的相同,是預(yù)測(cè)的位置損失Lloc與置信度損失Lconf的加權(quán)和,如式(4)。
其中α為位置損失Lloc的權(quán)重系數(shù),一般情況下令α=1。
使用不同尺度特征中的預(yù)選框?qū)δ繕?biāo)區(qū)域進(jìn)行處理,而同一種尺度特征下又包含不同尺度的預(yù)選框,從而使預(yù)選框可覆蓋輸入圖像中各種形狀和大小的目標(biāo)區(qū)域。每個(gè)特征圖上,第b類預(yù)選框尺度計(jì)算如下式。
其中:Smin與Smax分別為設(shè)定所有尺度特征圖中預(yù)選框的最大與最小比率,Smin=0.2,Smax=0.9;d為特征尺度的數(shù)量。
預(yù)選框的長(zhǎng)寬比設(shè)為a,a∈{1,2,3,1/2,1/3},長(zhǎng)寬比為1時(shí),額外增加一個(gè)預(yù)選框,該框的尺度每一個(gè)預(yù)選框,寬、高、中心點(diǎn)計(jì)算如下式。
實(shí)驗(yàn)所用數(shù)據(jù)由廠房監(jiān)控視頻處理得到,將視頻中的每幀圖片單獨(dú)提取,原始視頻圖像的分辨率為1 920×1 080,為縮短訓(xùn)練耗時(shí),將圖像縮小為原來的0.3倍作為最終樣本,使用開源的圖像標(biāo)注工具LabelImg對(duì)生成的1 800張樣本圖像進(jìn)行標(biāo)注并生成Pascal VOC格式的xml標(biāo)注文件。樣本產(chǎn)生的標(biāo)注圖如圖2。
圖2 樣本標(biāo)注Fig.2 Sample labelling
訓(xùn)練共分為3個(gè)階段,首先在Caffe中預(yù)訓(xùn)練Darknet19網(wǎng)絡(luò);然后將訓(xùn)練好的模型與SSD模型結(jié)合,并使用Pascal VOC數(shù)據(jù)集調(diào)優(yōu);最后使用私有數(shù)據(jù)進(jìn)行微調(diào)。
3.2.1 圖像分類網(wǎng)絡(luò)模型訓(xùn)練
Darknet19網(wǎng)絡(luò)提出時(shí)是在Darknet中訓(xùn)練的,Caffe框架中無法直接使用Darknet訓(xùn)練出的網(wǎng)絡(luò)參數(shù),所以在Caffe環(huán)境中重新訓(xùn)練該網(wǎng)絡(luò)。為更好地保護(hù)網(wǎng)絡(luò)的神經(jīng)元在訓(xùn)練過程中不會(huì)大面積壞死,將激活函數(shù)改為pReLU,在ImageNet Val測(cè)試集中獲得了71.6%的準(zhǔn)確率。
3.2.2 目標(biāo)檢測(cè)模型訓(xùn)練
在訓(xùn)練好的Darknet19模型參數(shù)基礎(chǔ)上,使用PASCAL VOC 07+12(16 551張樣本圖像)進(jìn)行訓(xùn)練,PASCAL VOC數(shù)據(jù)集中的目標(biāo)物體相對(duì)較大,故將生成預(yù)選框的尺度范圍設(shè)為20%~90%。各尺度特征層對(duì)應(yīng)的預(yù)選框?qū)捀弑确謩e為{2,1/2},{2,3,1/2,1/3},{2,3,1/2,1/3},{2,3,1/2,1/3},{2,1/2}及{2,1/2}。將Darknet19網(wǎng)絡(luò)中Maxpool5的參數(shù)由大小為2×2、步長(zhǎng)為2改為大小為3×3、步長(zhǎng)為1并增加一個(gè)像素的填充,然后刪除conv6_3之后的網(wǎng)絡(luò),使用隨機(jī)梯度下降法對(duì)該模型進(jìn)行微調(diào)。為在預(yù)訓(xùn)練模型的基礎(chǔ)上更好地訓(xùn)練新添加的網(wǎng)絡(luò),在將預(yù)訓(xùn)練模型中各層參數(shù)凍結(jié)的情況下,分別使用10-2與10-3的學(xué)習(xí)率各訓(xùn)練2×104次。對(duì)新添加的網(wǎng)絡(luò)訓(xùn)練到一定程度后,再恢復(fù)預(yù)訓(xùn)練模型中各層參數(shù)學(xué)習(xí)更新的能力,并分別使用10-3,10-4和10-5的學(xué)習(xí)率各訓(xùn)練40 000,30 000,20 000次。實(shí)驗(yàn)所用的計(jì)算機(jī)CPU型號(hào)為Intel Core i7-6800K,GPU為GTX1080Ti。當(dāng)預(yù)測(cè)框與標(biāo)簽框的重疊率>0.5時(shí),在PASCAL VOC test2007(共4 952張樣本圖像)中的測(cè)試結(jié)果如表2。
表2 在Pascal VOC2007上的測(cè)試指標(biāo)Tab.2 Test index on Pascal VOC2007
由表2可知:相比Faster R-CNN(VGG)[17]模型,本文模型在測(cè)試精度得到提升的同時(shí)大幅提高了檢測(cè)幀率;相對(duì)于Densenet+SSD[10]及YOLO[18]模型,本文模型無論在檢測(cè)精度還是在檢測(cè)幀率方面均有大幅提高;相對(duì)于SSD300[13]模型,本文模型測(cè)試精度稍低,但由于基礎(chǔ)網(wǎng)絡(luò)的計(jì)算量得到大幅削減,檢測(cè)幀率得到了有效提升;與YOLOv2 352×352[12]相比,本文模型測(cè)試精度與其相當(dāng),檢測(cè)速度方面,在硬件性能較弱的情況下稍低于YOLOv2 352×352[12]。由此表明本文模型在保證檢測(cè)精度的同時(shí)可有效提升檢測(cè)的實(shí)時(shí)性,為后續(xù)在硬件性能較弱的情況下仍可有效應(yīng)用奠定了基礎(chǔ)。
使用私有數(shù)據(jù)集微調(diào)后,在測(cè)試集中得到的平均查準(zhǔn)率為99.2%。經(jīng)分析得知,導(dǎo)致最終平均查準(zhǔn)率無法繼續(xù)提升的原因主要是SSD模型對(duì)小目標(biāo)不敏感。但在實(shí)際應(yīng)用場(chǎng)景中,識(shí)別的目標(biāo)是針對(duì)從貨車通道通行的貨車,因此對(duì)小目標(biāo)不敏感不會(huì)對(duì)系統(tǒng)的應(yīng)用造成影響,且在檢測(cè)速度上較以往模型有較大提升,故本文模型能夠滿足工業(yè)廠房中對(duì)貨運(yùn)車輛識(shí)別的特定需求。圖3為本模型在測(cè)試集中得到的部分識(shí)別結(jié)果,由圖3可看出采用本文模型可準(zhǔn)確對(duì)各類目標(biāo)進(jìn)行識(shí)別。
為解決工廠倉(cāng)儲(chǔ)環(huán)境中無人門禁系統(tǒng)識(shí)別出貨運(yùn)車輛的問題,通過采集真實(shí)場(chǎng)景大量圖片并進(jìn)行人工標(biāo)注,構(gòu)建相應(yīng)私有數(shù)據(jù)集,提出一種融合Darknet19網(wǎng)絡(luò)與SSD模型的車輛檢測(cè)與識(shí)別模型。該模型結(jié)合了Darknet計(jì)算量小與SSD模型平均查準(zhǔn)率較高的優(yōu)點(diǎn),成功實(shí)現(xiàn)了通過攝像機(jī)傳回的圖像實(shí)時(shí)識(shí)別出可放行的貨車與不可放行的行人和其他車輛,避免了傳統(tǒng)方案中需不斷進(jìn)行人工干預(yù)的問題。該方案已成功應(yīng)用于某工業(yè)廠房貨車通道中的車輛、行人與其他車輛的有效識(shí)別中。
圖3 測(cè)試結(jié)果Fig.3 Results of tests