王軍群, 李華鵬
(1.中遠(yuǎn)海運(yùn)科技股份有限公司,上海 200135;2.深圳大學(xué) 深圳電磁控制重點(diǎn)實(shí)驗(yàn)室,廣東 深圳 518060)
近年來,隨著我國(guó)經(jīng)濟(jì)的不斷發(fā)展,人們的生活水平不斷提高,道路上的車輛越來越多,相應(yīng)的交通擁堵問題和交通事故頻繁發(fā)生。造成交通擁堵問題和交通事故的主要原因是車輛違法行為,因此對(duì)車輛違法行為進(jìn)行智能分析較為重要。在車輛違法行為監(jiān)測(cè)方面,傳統(tǒng)的檢測(cè)工具主要有磁感應(yīng)線圈、紅外線和超聲波等。這些交通檢測(cè)工具雖然在緩解交通秩序和交通壓力方面起到一定的作用,但維護(hù)成本高、硬件設(shè)備安裝復(fù)雜等缺點(diǎn)限制了其應(yīng)用。近年來,隨著計(jì)算機(jī)視覺技術(shù)的不斷發(fā)展,基于視頻監(jiān)控的車輛違法行為檢測(cè)技術(shù)逐漸得到應(yīng)用。
基于視頻監(jiān)控的車輛違法行為檢測(cè)主要包括目標(biāo)檢測(cè)、目標(biāo)追蹤和軌跡運(yùn)動(dòng)分析,其中目標(biāo)檢測(cè)以往采用的是傳統(tǒng)的圖像處理方法,只能檢測(cè)出運(yùn)動(dòng)的車輛目標(biāo),無(wú)法實(shí)現(xiàn)車輛類型分類,且檢測(cè)速度慢,檢測(cè)精度低,極易受外界環(huán)境的影響。檢測(cè)完畢之后運(yùn)用卡爾曼濾波、粒子濾波和CamShift等方法進(jìn)行跟蹤時(shí),由于車輛目標(biāo)檢測(cè)階段造成的檢測(cè)精度低、檢測(cè)速度慢和漏檢情況頻發(fā)等情況,使得后續(xù)目標(biāo)追蹤的效果很差,進(jìn)而影響軌跡的運(yùn)動(dòng)分析。對(duì)此,本文將深度學(xué)習(xí)算法應(yīng)用到車輛違法行為分析系統(tǒng)中,采用基于YOLOv3的深度學(xué)習(xí)算法對(duì)車輛目標(biāo)進(jìn)行檢測(cè),利用卡爾曼濾波對(duì)車輛目標(biāo)進(jìn)行跟蹤,繪制車輛的運(yùn)動(dòng)軌跡,進(jìn)而通過對(duì)車輛的運(yùn)動(dòng)軌跡進(jìn)行分析,判斷車輛是否存在違法行為。
輸入一張圖片或一段視頻序列,輸出圖片中每輛車的類別和邊界框(可選置信度),結(jié)果見圖1。車輛類別選擇小客車、大客車、小卡車(車長(zhǎng)小于6 m)和其他(清潔車、消防車等)等4類。4類車輛示例見圖2。
為實(shí)現(xiàn)車輛檢測(cè),對(duì)基于YOLOv3的車輛檢測(cè)算法進(jìn)行分析。首先需確定YOLOv3的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中網(wǎng)絡(luò)采用darknet-53[1]框架,網(wǎng)絡(luò)結(jié)構(gòu)見圖3。
YOLOv3是一個(gè)完全卷積神經(jīng)網(wǎng)絡(luò),主要是卷積層、殘差塊和上采樣層的組合,最顯著的特點(diǎn)是可在3種尺度上進(jìn)行檢測(cè),主要通過3個(gè)不同尺度的feature map來實(shí)現(xiàn)。卷積層在第79層之后經(jīng)過3個(gè)卷積層得到第82層的feature map,相當(dāng)于原始圖像的32倍下采樣,由于下采樣倍數(shù)高、多尺度范圍大,該feature map用來檢測(cè)尺寸較大的車輛目標(biāo)。為實(shí)現(xiàn)對(duì)更細(xì)粒度的檢測(cè),第79層的卷積層進(jìn)行上采樣,與第61層融合,得到第94層的feature map,相當(dāng)于原始圖像的16倍下采樣,感受野中等,用來檢測(cè)中等尺寸的車輛目標(biāo)。同理,第106層得到的feature map相當(dāng)于原始圖像的8倍下采樣,尺度小,用來檢測(cè)小尺寸的車輛目標(biāo)。
若只觀察輸入到輸出的映射關(guān)系,可將上述YOLOv3的網(wǎng)絡(luò)架構(gòu)簡(jiǎn)化(見圖4)。
根據(jù)YOLOv3的設(shè)計(jì),網(wǎng)絡(luò)的輸入是分辨率為416×416的RGB圖片,3個(gè)像素通道;輸出是3個(gè)不同尺度的張量,大小分別是13×3×3×9、26×26×3×9和52×52×3×9。以13×13×3×9的張量為例:13×13是輸入圖像經(jīng)過下采樣32倍得到的feature map的尺寸,可將輸入圖像劃分為尺寸為13×13的網(wǎng)格(見圖5)。輸出張量中的13×13像素對(duì)應(yīng)著輸入圖像的尺寸為13×13的網(wǎng)格;3表示顏色通道,代表每個(gè)網(wǎng)格輸出邊框的個(gè)數(shù),由先驗(yàn)框的個(gè)數(shù)決定;9代表邊框的4個(gè)坐標(biāo)、1個(gè)邊框置信度和4個(gè)車輛類別概率。
YOLOv3借鑒Faster RCNN的做法,嘗試使用先驗(yàn)框[2]。預(yù)先在每個(gè)網(wǎng)格設(shè)定一組不同大小和不同寬高比的邊框,用其覆蓋圖像的不同位置和不同尺度。這些先驗(yàn)框作為預(yù)定義的候選區(qū),檢測(cè)網(wǎng)格中是否存在車輛目標(biāo),若存在,則微調(diào)邊框的位置。根據(jù)第1.2節(jié)的分析,輸入416×416的圖片會(huì)得到3種不同尺度的feature map,用來檢測(cè)不同尺寸的目標(biāo)。由于利用了先驗(yàn)框的約束作用,實(shí)現(xiàn)了多尺度檢測(cè)。以圖6中的3幅圖為例,框A是先驗(yàn)框,框B是ground truth(真實(shí)對(duì)象),框C是ground truth的中心。
如圖6所示,根據(jù)輸出feature map的大小,將輸入圖片劃分成相應(yīng)數(shù)量的網(wǎng)格,并在每個(gè)網(wǎng)格上放置3個(gè)先驗(yàn)框。由于先驗(yàn)框的尺寸不同,可約束檢測(cè)目標(biāo)的大小。由于有3種尺度的feature map,每個(gè)尺度需3個(gè)先驗(yàn)框,總計(jì)需9個(gè)先驗(yàn)框。通過在數(shù)據(jù)集上進(jìn)行k-means聚類[3],得到具體的先驗(yàn)框尺寸分配情況和適用車輛目標(biāo)大小見表1。
由圖6和表1可知,先驗(yàn)框可約束預(yù)測(cè)的bounding box。圖7為先驗(yàn)框的約束作用。其中:短劃線邊框是先驗(yàn)框;實(shí)線邊框是待預(yù)測(cè)邊框;bx、by、bw和bh為預(yù)測(cè)邊框的中心和寬、高;cx和cy為歸一化之后當(dāng)前網(wǎng)格左上角與圖像左上角之間的距離,cx=cy=1;tx、ty、tw、th為網(wǎng)絡(luò)的輸出的用于計(jì)算坐標(biāo)的中間值;σ為sigmoid函數(shù),可將tx和ty約束到(0,1)的范圍內(nèi),進(jìn)而將預(yù)測(cè)邊框的中心點(diǎn)約束到實(shí)際目標(biāo)中心點(diǎn)所在的網(wǎng)格A內(nèi);pw和ph為先驗(yàn)框的寬和高,通過圖中右側(cè)的計(jì)算式可使預(yù)測(cè)目標(biāo)的尺寸接近于先驗(yàn)框的尺寸,即可實(shí)現(xiàn)先驗(yàn)框的約束作用。
在確定網(wǎng)絡(luò)的輸入和輸出之后,即可進(jìn)行訓(xùn)練樣本構(gòu)造。作為監(jiān)督學(xué)習(xí),需先構(gòu)造訓(xùn)練樣本,使模型從中學(xué)習(xí)。
對(duì)于一張416×416的輸入圖片,會(huì)得到3個(gè)輸出張量,以尺度為13×13×3×9的張量為例,其他2個(gè)張量的構(gòu)造同理。首先輸出的13×13對(duì)應(yīng)于輸入的13×13網(wǎng)格;對(duì)于3×9共27維的向量,可看作是3個(gè)1×9維的向量,且這3個(gè)向量的構(gòu)造方式相同。由第1.3節(jié)可知,每個(gè)1×9維的向量中包含4個(gè)車輛類別的概率、1個(gè)bounding box的置信度和bounding box的4個(gè)坐標(biāo)。
1) 4個(gè)車輛類別的概率。對(duì)于輸入圖像的每個(gè)車輛目標(biāo),先找到其中心點(diǎn)。例如圖8中的小客車,其中心點(diǎn)在框A內(nèi),因此在該框?qū)?yīng)的3×9維向量中,小客車的概率是1,其他3類的概率都是0。
2) 1個(gè)bounding box的置信度。對(duì)于訓(xùn)練樣本來說,bounding box即為ground truth,故置信度的值為1。
3) bounding box的4個(gè)坐標(biāo)。YOLOv3網(wǎng)絡(luò)輸出的bounding box的4個(gè)坐標(biāo)輸出值為tx、ty、tw和th。
在確定每個(gè)維度的信息之后,便可進(jìn)行樣本便簽向量的填寫,具體樣本標(biāo)簽見圖9。
圖9 樣本標(biāo)簽
在訓(xùn)練前期的迭代中,前向傳播之后,網(wǎng)絡(luò)的實(shí)際輸出值與樣本標(biāo)簽值之間一定會(huì)有偏差。假設(shè)第一次迭代網(wǎng)絡(luò)輸出見圖10,與圖9的樣本標(biāo)簽存在差異,這時(shí)需用YOLOv3的損失函數(shù)[1]計(jì)算出該偏差,并通過反向傳播減小該誤差。不斷迭代前向傳播和反向傳播的過程,逐步減小偏差,使網(wǎng)絡(luò)的實(shí)際輸出值盡可能地逼近樣本標(biāo)簽值,即使預(yù)測(cè)變得更加精確。
在網(wǎng)絡(luò)訓(xùn)練好之后,便可進(jìn)行預(yù)測(cè)(inference),輸入一張416×416×3的圖片,輸出大小分別為13×13×3×9、26×26×3×9和52×52×3×9的3個(gè)張量,其中包含每個(gè)預(yù)測(cè)目標(biāo)的位置信息、置信度和類別概率。但是,由于每個(gè)網(wǎng)格都會(huì)預(yù)測(cè)3個(gè)bounding box,總計(jì)會(huì)有10 647個(gè)bounding box,而對(duì)于每個(gè)目標(biāo),最終只需要1個(gè)預(yù)測(cè)的bounding box,故采用非極大值抑制算法(Non Maximum Suppression,NMS)來去除多余的bounding box。NMS效果示意見圖11。
圖10 假設(shè)的網(wǎng)絡(luò)輸出a) NMS前 b) NMS后圖11 NMS效果示意
首先構(gòu)造訓(xùn)練樣本,從上海市東寶興路與芷江中路交叉路口采集監(jiān)控視頻。視頻時(shí)長(zhǎng)1 067 s,共計(jì)26 679幀,每60幀取1幀圖像,共獲得樣本444幀。對(duì)每個(gè)樣本的每幀圖像中的所有車輛進(jìn)行標(biāo)注,包括類別和外接矩形。在構(gòu)造完訓(xùn)練樣本之后,使用TensorFlow框架,在NVIDIA RTX2080顯卡下進(jìn)行訓(xùn)練。采用遷移學(xué)習(xí)的方式,預(yù)加載YOLOv3在COCO數(shù)據(jù)集[5]上訓(xùn)練得到的權(quán)重,以416×416的圖片大小訓(xùn)練200個(gè)epoch,再以640×640的圖片大小訓(xùn)練200個(gè)epoch。訓(xùn)練完成之后,輸入視頻序列,得到的檢測(cè)結(jié)果見圖12,視場(chǎng)中不同遠(yuǎn)近和不同尺寸的車輛均得到有效檢測(cè)。
在對(duì)算法進(jìn)行評(píng)估時(shí),選擇平均精度(Average Precision,AP)、均值平均精確度(mean Average Precision,mAP)和檢測(cè)速度(Frames Per Second,FPS)作為評(píng)價(jià)指標(biāo),其中:AP可反映模型在檢測(cè)特定類別車輛時(shí)的性能表現(xiàn);mAP通過對(duì)所有車輛類別的AP求平均值得到,不僅能反映模型在所有車輛類別上的平均性能表現(xiàn)[6],而且可避免某些類別比較極端化而弱化其他類別的性能表現(xiàn)的問題;FPS為檢測(cè)每幀圖像中的所有車輛所花費(fèi)的時(shí)間。各項(xiàng)性能指標(biāo)見表2。
表2 檢測(cè)性能指標(biāo)
在完成車輛檢測(cè)之后,便可對(duì)車輛進(jìn)行跟蹤。車輛跟蹤算法采用卡爾曼濾波算法[7],用來預(yù)測(cè)更新軌跡??柭鼮V波是一種遞歸的估計(jì),即只需獲知上一時(shí)刻狀態(tài)的估計(jì)值和當(dāng)前時(shí)刻狀態(tài)的觀測(cè)值就可計(jì)算出當(dāng)前狀態(tài)的估計(jì)值,經(jīng)過卡爾曼濾波的預(yù)測(cè)和更新,可得到車輛在當(dāng)前時(shí)刻預(yù)測(cè)得到的位置信息,將其與當(dāng)前時(shí)刻車輛檢測(cè)得到的位置信息相關(guān)聯(lián),由每個(gè)檢測(cè)得到的車輛目標(biāo)與每個(gè)預(yù)測(cè)得到的車輛目標(biāo)之間邊界框的交并比IOU[8]計(jì)算成本矩陣,采用匈牙利算法進(jìn)行匹配[9],即可實(shí)現(xiàn)目標(biāo)跟蹤。隨后對(duì)跟蹤的車輛繪制運(yùn)動(dòng)軌跡,結(jié)合車輛的運(yùn)動(dòng)軌跡、位置信息和相應(yīng)的交通標(biāo)志,便可實(shí)現(xiàn)對(duì)車輛違法行為的智能分析。交通系統(tǒng)中常見的車輛違法行為包括闖紅燈、逆向行駛、違反禁止標(biāo)線、左轉(zhuǎn)不讓執(zhí)行、路口滯留和機(jī)動(dòng)車占用非機(jī)動(dòng)車道等。圖13為監(jiān)控視頻中檢測(cè)到的常見車輛違法行為,其中:方框表示的是違法車輛的位置信息;曲線線條表示的是車輛近2 s內(nèi)的運(yùn)動(dòng)軌跡。
為實(shí)現(xiàn)對(duì)車輛違法行為的智能分析,采用基于YOLOv3的深度學(xué)習(xí)算法對(duì)車輛進(jìn)行檢測(cè),利用卷積神經(jīng)網(wǎng)絡(luò)提取車輛特征進(jìn)行分類識(shí)別,同時(shí)采用多尺度檢測(cè)方法優(yōu)化對(duì)監(jiān)控視場(chǎng)遠(yuǎn)景處小目標(biāo)進(jìn)行檢測(cè)的能力,將車輛目標(biāo)的定位和識(shí)別步驟合并,大幅度提高了檢測(cè)精度和檢測(cè)速度,為后續(xù)車輛目標(biāo)跟蹤提供了依據(jù)。由此,便可通過卡爾曼濾波器進(jìn)行目標(biāo)跟蹤獲取車輛的運(yùn)動(dòng)軌跡,根據(jù)車輛的運(yùn)動(dòng)軌跡和位置信息對(duì)車輛的違法行為進(jìn)行智能分析判定。然而,當(dāng)車輛目標(biāo)出現(xiàn)大范圍遮擋,或出現(xiàn)某些樣本集很少的車輛類別時(shí),仍會(huì)出現(xiàn)漏檢或誤檢的情況,進(jìn)而影響車輛的跟蹤效果,甚至影響車輛違法行為分析結(jié)果的準(zhǔn)確性。因此,如何擴(kuò)充數(shù)據(jù)集和在有目標(biāo)遮擋時(shí)進(jìn)行更加準(zhǔn)確的檢測(cè),是未來研究的重點(diǎn)。