成玉榮, 陳湘軍, 杜晨浩, 胡海洋
(江蘇理工學(xué)院計(jì)算機(jī)工程學(xué)院,江蘇常州213001)
公路是國(guó)家經(jīng)濟(jì)動(dòng)脈,通過信息化手段實(shí)時(shí)掌握公路網(wǎng)通行狀態(tài),對(duì)于公路網(wǎng)日常養(yǎng)護(hù)管理與公眾出行信息發(fā)布都具有重要意義。
近年來(lái),深度卷積神經(jīng)網(wǎng)絡(luò)[1]在計(jì)算機(jī)視覺目標(biāo)檢測(cè)任務(wù)上取得了巨大的成功,通過計(jì)算機(jī)視覺方法在現(xiàn)有監(jiān)控網(wǎng)絡(luò)中實(shí)現(xiàn)公路網(wǎng)狀態(tài)的實(shí)時(shí)監(jiān)測(cè),可以充分挖掘利用已有視頻資源,具備操作簡(jiǎn)易、維護(hù)方便等優(yōu)勢(shì)。深度神經(jīng)網(wǎng)絡(luò)經(jīng)過不斷發(fā)展,網(wǎng)絡(luò)結(jié)構(gòu)越來(lái)越復(fù)雜,從5 層的LeNet[2],到8 層的AlexNet[3],再到22 層的GoogleNet[4],甚至到了上百層的ResNet[5],不斷提升模型的準(zhǔn)確率,然而隨著神經(jīng)網(wǎng)絡(luò)參數(shù)數(shù)量不斷增大,深度學(xué)習(xí)面臨存儲(chǔ)和計(jì)算代價(jià)高、功耗高等弊端,限制了其在資源受限的平臺(tái)上使用。
本文提出一種基于網(wǎng)絡(luò)結(jié)構(gòu)剪枝與模型融合實(shí)時(shí)并發(fā)視頻檢測(cè)方法,通過網(wǎng)絡(luò)模型壓縮,并結(jié)合模型量化[6],在幾乎不影響精度的條件下,減少計(jì)算代價(jià),提升算法推理速度,實(shí)現(xiàn)多路監(jiān)控視頻實(shí)時(shí)并發(fā)檢測(cè)。基于Darknet-53[7]網(wǎng)絡(luò)剪枝設(shè)計(jì)改進(jìn)的少參數(shù)網(wǎng)絡(luò)模型,通過交叉驗(yàn)證訓(xùn)練生成改進(jìn)YOLO車輛檢測(cè)模型,在DeepSort[8]目標(biāo)追蹤算法基礎(chǔ)上,通過攝像機(jī)與車道線的仿射變換,獲取像素運(yùn)動(dòng)與車流速度的映射關(guān)系,使用虛擬線圈方式,實(shí)現(xiàn)高速公路斷面流量及車速的統(tǒng)計(jì),并生成道路通行狀態(tài)事件信息,應(yīng)用于高速公路管理決策與公眾出行信息發(fā)布。
YOLO系列算法是One-Stage 目標(biāo)檢測(cè)算法代表之一,YOLOv1[9]提出通過網(wǎng)格劃分做檢測(cè),通過目標(biāo)中心點(diǎn)在網(wǎng)格的位置檢測(cè)目標(biāo),顯著提升檢測(cè)速度,YOLOv2[10]在網(wǎng)格約束的基礎(chǔ)上應(yīng)用了anchor[11]機(jī)制,通過預(yù)設(shè)不同尺度的先驗(yàn)框使檢測(cè)器專注于檢測(cè)與先驗(yàn)框形狀相近的物體,同時(shí)采用了batch normalization[12]作為正則化、加速收斂和避免過擬合的方法。
YOLOv3[7]算法流程如圖1 所示,采用了ResNet中的殘差網(wǎng)絡(luò)思想設(shè)計(jì)了Darkent-53 作為特征提取的主干網(wǎng)絡(luò),在YOLOv2 的基礎(chǔ)上,借鑒FPN[13]的多尺度思想,設(shè)計(jì)了3 個(gè)不同尺度的檢測(cè)層,并為每個(gè)檢測(cè)層分配3 個(gè)先驗(yàn)框。YOLOv3 通過邊框回歸預(yù)測(cè)的方式預(yù)測(cè)物體位置,解決了先驗(yàn)框機(jī)制線性回歸不穩(wěn)定的問題。針對(duì)416 × 416 的圖像,3 個(gè)檢測(cè)層對(duì)應(yīng)的特征映射尺度分別52 × 52、26 × 26、13 × 13,從而能夠檢測(cè)出各種尺度的目標(biāo)。

圖1 YOLOv3算法流程
神經(jīng)網(wǎng)絡(luò)模型剪枝是指在對(duì)模型檢測(cè)效果沒有太大影響的前提下剔除模型中不重要的參數(shù),再重新微調(diào)模型以恢復(fù)模型性能的一種方式。本文針對(duì)實(shí)際工程應(yīng)用中模型過大,難以實(shí)現(xiàn)并發(fā)實(shí)時(shí)檢測(cè),提出對(duì)YOLOv3 算法的剪枝方案。
Darknet-53 分為5 個(gè)主要層次,如圖2 所示。本文在該網(wǎng)絡(luò)結(jié)構(gòu)中間3 個(gè)層次中引入層次比例因子α,即通過減少部分網(wǎng)絡(luò)層次深度減少網(wǎng)絡(luò)參數(shù)。在最后一個(gè)層次的神經(jīng)網(wǎng)絡(luò)層中引入寬度因子β實(shí)現(xiàn)通道剪枝調(diào)整模型大小,即使用寬度因子β 控制輸出的通道數(shù),使輸出通道數(shù)由C轉(zhuǎn)變?chǔ)翪。

圖2 利用比例因子實(shí)現(xiàn)層次與通道裁剪
本文采用SCUT-HEAD-B公開數(shù)據(jù)集在剪枝后的網(wǎng)絡(luò)中進(jìn)行試驗(yàn),該數(shù)據(jù)集包含2 300 張圖片,將其以7∶3的比例隨機(jī)分為訓(xùn)練樣本與測(cè)試樣本。在英偉達(dá)TITAN X 上以層次比例因子α = 50% 與β 分別為100%、75%、50%與25%進(jìn)行訓(xùn)練,以IoU = 0.5 作為評(píng)測(cè)指標(biāo)在不同尺度圖片輸入的情況下進(jìn)行驗(yàn)證,記模型格式為S-[α]-[β]-[ImgSize],其中S表示使用的是SCUT-HEAD-B數(shù)據(jù)集,α與β分別代表層次比例因子與通道寬度因子,ImgSize 代表輸入圖片的寬高,通常為32 的倍數(shù),模型S-50%-25%-416 訓(xùn)練273 個(gè)epoch過程如圖3 所示,其中召回率(Recall)為正確被檢測(cè)到的數(shù)量與應(yīng)該被檢測(cè)到的數(shù)量的比值,由圖3可以看出在迭代100 個(gè)epoch 后,召回率與平均精準(zhǔn)率(mAP)均穩(wěn)定保持在80%左右。

圖3 訓(xùn)練過程
表1 給出的是SCUT-HEAD-B 數(shù)據(jù)集在不同比例因子與檢測(cè)尺寸下的檢測(cè)效果,其中Size 為模型權(quán)重文件大小,Inference為單張圖片推理所需時(shí)間。

表1 SCUT-HEAD-B數(shù)據(jù)集訓(xùn)練結(jié)果
實(shí)驗(yàn)結(jié)果表明,深度卷積神經(jīng)網(wǎng)絡(luò)適當(dāng)?shù)貕嚎s網(wǎng)絡(luò)結(jié)構(gòu),能取得相當(dāng)?shù)男阅埽瑫r(shí)有效地減少推理時(shí)間,滿足實(shí)際場(chǎng)景中的應(yīng)用。
GoogleNet的Inception[4]模塊如圖4 所示。該模塊使用密集結(jié)構(gòu)來(lái)近似一個(gè)稀疏的卷積結(jié)構(gòu),通過采用不同大小的卷積獲得不同大小的感受野,卷積核大小分別采用1、3 和5,步長(zhǎng)設(shè)置為1,padding 分別設(shè)定為0、1 和2,便于獲得相同維度的特征,最終拼接實(shí)現(xiàn)不同尺度特征的融合。此外,為了減少計(jì)算量,利用1 × 1 卷積實(shí)現(xiàn)降維。

圖4 Inception模塊
在網(wǎng)絡(luò)剪枝的基礎(chǔ)上,本文將YOLOv3 第1 個(gè)檢測(cè)層中用于深層特征提取的DBL 模塊替換為Inception模塊,提高特征層間的空間信息交互的同時(shí),也減少了部分網(wǎng)絡(luò)參數(shù),從而提高模型整體的魯棒性與推理速度,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。

圖5 模型融合
使用伯克利數(shù)據(jù)集中提取出的車輛目標(biāo)數(shù)據(jù)對(duì)模型進(jìn)行預(yù)訓(xùn)練,該數(shù)據(jù)集包含70 000 張圖片用于訓(xùn)練,10 000 張圖片用于驗(yàn)證,數(shù)據(jù)樣本如圖6 所示。結(jié)合交叉驗(yàn)證機(jī)制訓(xùn)練車輛檢測(cè)模型,選取驗(yàn)證效果最好的權(quán)重作為訓(xùn)練COCO數(shù)據(jù)集中車輛數(shù)據(jù)的初始權(quán)重并進(jìn)行finetune[14]訓(xùn)練,記模型格式為C-[α]-[β]-[ImgSize]-[DT],其中C 表示使用的是COCO 數(shù)據(jù)集,α 與β 分別代表層次比例因子與通道寬度因子,ImgSize為輸入圖片寬高,DT(data type)為模型參數(shù)的數(shù)據(jù)類型,分別在模型參數(shù)為32 位浮點(diǎn)數(shù)和16 位浮點(diǎn)數(shù)的情況下測(cè)試模型,實(shí)驗(yàn)結(jié)果如表2 所示。

圖6 伯克利數(shù)據(jù)集樣本

表2 模型量化結(jié)果對(duì)比
實(shí)驗(yàn)結(jié)果表明,在不影響檢測(cè)精度前提下,模型量化能夠有效提高推理速度。
高速公路視頻分析系統(tǒng)實(shí)現(xiàn)流程如圖7 所示,具體步驟如下:讀取高速公路監(jiān)控視頻;提取車道線,根據(jù)車道線標(biāo)準(zhǔn)物理長(zhǎng)度進(jìn)行透視變換計(jì)算,生成變換矩陣,獲得垂直俯視視角下像素與物理距離的對(duì)應(yīng)關(guān)系;基于車輛目標(biāo)檢測(cè),實(shí)現(xiàn)車輛跟蹤;基于車輛目標(biāo)跟蹤與像素距離位移,實(shí)現(xiàn)車輛計(jì)數(shù)與測(cè)速,并判斷道路是否發(fā)生擁堵、車輛超速等事件,并自動(dòng)生成預(yù)警信息和取證錄像。

圖7 高速公路視頻分析系統(tǒng)實(shí)現(xiàn)流程
透視變換是將圖像投影到一個(gè)新的視平面,也稱作投影映射。透視變換通過二維空間到三維空間的轉(zhuǎn)換,獲得新的二維空間的映射,相對(duì)于仿射變換,它提供了更大的靈活性,可將斜視角的四邊形區(qū)域映射到垂直視角的矩形區(qū)域。透視變換通過矩陣乘法實(shí)現(xiàn),一般使用3 × 3 矩陣實(shí)現(xiàn),如下式所示(矩陣的前兩列實(shí)現(xiàn)了線性變換和平移,第3 列用于實(shí)現(xiàn)透視變換):

式中:(x,y,z)為中間變量;(u,v)為變換前的坐標(biāo);(x′,y′)為變換后的坐標(biāo)。透視變換有8 個(gè)未知數(shù),因此透視變換矩陣只需待變換四邊形區(qū)域與目標(biāo)四邊形區(qū)域?qū)?yīng)頂點(diǎn)的四組點(diǎn)便可求解。我國(guó)高速公路標(biāo)準(zhǔn)車道線相鄰間距為15 m,選取間距為15 m 方向與車道線垂直的兩條線與邊界線的交點(diǎn)作為待變換區(qū)域的頂點(diǎn)坐標(biāo),選取(0,0)(220,0)(220,96)(0,96)作為透視變換后平面上對(duì)應(yīng)的各頂點(diǎn)坐標(biāo),即長(zhǎng)為220 個(gè)像素點(diǎn)寬為96 個(gè)像素點(diǎn)的矩形區(qū)域,計(jì)算獲得透視變換矩陣,并將透視變換矩陣應(yīng)用于原圖像上目標(biāo)區(qū)域,效果如圖8 所示。根據(jù)跟蹤與像素對(duì)應(yīng)關(guān)系,目標(biāo)在變換后的垂直俯視圖中移動(dòng)1 個(gè)像素單位對(duì)應(yīng)的實(shí)際距離為0.156 25 m。

圖8 透視變換效果
從高速公路攝像頭讀取監(jiān)控視頻流作為加載完權(quán)重網(wǎng)絡(luò)的輸入,逐幀進(jìn)行檢測(cè),將3 個(gè)尺度預(yù)測(cè)的張量拼接生成一個(gè)維度為(1,10 647,8)的張量,其中1 表示當(dāng)前batch為一張圖片,10 647 代表3 個(gè)尺度預(yù)測(cè)框的總個(gè)數(shù),8 代表中心點(diǎn)坐標(biāo)、寬高、目標(biāo)置信度得分、三類車輛(小汽車、卡車、公交車)的可能性得分,10 647 個(gè)框中存在大量冗余框,通過設(shè)置置信度閾值與交并比閾值,基于非極大值抑制算法去除無(wú)效的檢測(cè)框[15]。首先將目標(biāo)置信度得分低于閾值的框全部去除,在剩余的框中取出置信度最高的框,此框?yàn)闄z測(cè)到的一個(gè)目標(biāo),計(jì)算它與其他所有框的交并比,去除交并比大于交并比閾值的框,重復(fù)上述操作,非極大值抑制算法如下所示:
輸入 B,S,Nt
輸出 D,S
1.B ={b1,b2,…,bN},S ={s1,s2,…,sN}
2.begin
3.D ←{}
4.while B ≠empty do
5. m ←argmax S
6. M ←bm
7. D ←D∪M;B ←B - M
8. for biin B do
9. if iou(M,bi)≥Ntthen
10. B ←B-bi;S←S-si
11. end
12.end
13.return D,S
14.end
其中:B 為檢測(cè)框的集合;S 為對(duì)應(yīng)框置信度的集合;D 為符合要求框的集合;Nt為交并比閾值。首先獲取目標(biāo)框中置信度最高的框的索引,取出該框并將該框納入集合D,將剩余目標(biāo)框與其依次計(jì)算交并比,若高于交并比閾值則將當(dāng)前目標(biāo)框剔除,重復(fù)上述操作,直至B為空集,抑制前后效果如圖9 所示。

圖9 非極大值抑制算法檢測(cè)效果
通過射線法判斷視頻流中每1 幀圖片檢測(cè)到的目標(biāo)中心點(diǎn)坐標(biāo)(x,y)是否在標(biāo)定區(qū)域內(nèi),射線法即以該點(diǎn)為頂點(diǎn)做一條射線若射線穿越多邊形邊界的次數(shù)為偶數(shù)時(shí),則在多邊形外部,若穿越多邊形邊界次數(shù)為奇數(shù)時(shí),則在多邊形內(nèi)部,從而篩選出標(biāo)定區(qū)域內(nèi)的車輛目標(biāo)。將標(biāo)定區(qū)域內(nèi)檢測(cè)到的車輛目標(biāo)圖像塊作為一個(gè)重識(shí)別卷積神經(jīng)網(wǎng)絡(luò)輸入,最終輸出一個(gè)128 維的特征向量,計(jì)算與跟蹤物體之間的馬氏距離,當(dāng)兩者距離小于特定閾值時(shí)則表示兩者關(guān)聯(lián),

式中:bi與yi分別是當(dāng)前幀檢測(cè)到的目標(biāo)與關(guān)聯(lián)幀中追蹤目標(biāo)對(duì)應(yīng)的特征向量;t為閾值,當(dāng)兩者的馬氏距離≤t時(shí)則表示兩者為同一目標(biāo),將同一目標(biāo)在通過該區(qū)域過程中中心點(diǎn)坐標(biāo)存儲(chǔ)在各自的列表[(x1,y1),(x2,y2),…,(xn,yn)]中。
當(dāng)區(qū)域內(nèi)出現(xiàn)新目標(biāo)時(shí),計(jì)數(shù)器自動(dòng)加1。利用上述求得的透視變換矩陣將原圖片中追蹤到目標(biāo)的中心點(diǎn)(x,y)映射到透視變換后的平面中(x′,y′),通過變換后的目標(biāo)中心點(diǎn)橫坐標(biāo)值所在區(qū)間判斷其屬于哪個(gè)車道,當(dāng)變換后的目標(biāo)中心點(diǎn)接近虛擬檢測(cè)線時(shí),通過該目標(biāo)對(duì)應(yīng)列表中坐標(biāo)的個(gè)數(shù)獲取幀數(shù)N,監(jiān)控?cái)z像頭設(shè)定的幀率為25 f/ s,計(jì)算通過該區(qū)域所需的時(shí)間,利用列表中縱坐標(biāo)的最大差值獲取該目標(biāo)經(jīng)過的像素距離Sp,單位像素的實(shí)際距離0.156 25 m,計(jì)算得出當(dāng)前目標(biāo)速度為

通過截面斷點(diǎn)車道平均車速計(jì)算,可實(shí)時(shí)獲取道路通行狀態(tài),實(shí)現(xiàn)緩行或擁堵事件檢測(cè),也可實(shí)現(xiàn)個(gè)體車輛超速取證,系統(tǒng)自動(dòng)生成事件錄像和超速取證圖像,通過Web系統(tǒng)發(fā)布實(shí)現(xiàn)自動(dòng)事件檢測(cè)功能。
基于本文改進(jìn)后的YOLOv3 構(gòu)建了高速公路視頻分析系統(tǒng),系統(tǒng)在江蘇沿海高速連云港與南通路段進(jìn)行試運(yùn)行測(cè)試,實(shí)驗(yàn)條件如下:
軟件環(huán)境 Ubuntu 18.04,Python3.6.8,OpenCV3.4.1,Pytorch1.1。
硬件環(huán)境 CPU:Intel Xeon E5-2620 v3 @ 2.40 GHz六核;內(nèi)存:DDR4 64 GB;GPU:Nvidia GeForce GTX TITAN X。
實(shí)際場(chǎng)景應(yīng)用效果如圖10 所示。

圖10 高速公路境景應(yīng)用效果圖
傳統(tǒng)的基于監(jiān)控視頻的車輛測(cè)速與計(jì)數(shù)方法有背景差分法與Harris角點(diǎn)法[16],背景差分法利用序列圖像中的當(dāng)前幀與背景圖像做差分檢測(cè)運(yùn)動(dòng)車輛目標(biāo),Harris角點(diǎn)法利用Harris算子對(duì)車輛目標(biāo)進(jìn)行角點(diǎn)特征檢測(cè)。截取1 h高速公路監(jiān)控視頻進(jìn)行車輛測(cè)速與計(jì)數(shù)檢測(cè)效果對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3 所示,本文基于改進(jìn)YOLOv3 構(gòu)建的車輛測(cè)速計(jì)數(shù)方法相較于傳統(tǒng)視頻測(cè)速計(jì)數(shù)方法具有更好的測(cè)速精度與計(jì)數(shù)準(zhǔn)確率。

表3 改進(jìn)YOLOv3 車輛測(cè)速計(jì)數(shù)方法與其他方法比較
取一段高速公路監(jiān)控視頻對(duì)改進(jìn)前后的YOLOv3模型檢測(cè)性能進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果如表4 所示。本文基于改進(jìn)后YOLOv3 實(shí)現(xiàn)的高速公路視頻并發(fā)檢測(cè)應(yīng)用,在幾乎不影響精度的條件下,并發(fā)量與檢測(cè)幀率大大提高,完全能滿足實(shí)際運(yùn)用的需求。

表4 模型改進(jìn)前后性能比較
YOLOv3 具有一個(gè)輕量化模型Tiny-YOLOv3,該模型參數(shù)量少檢測(cè)幀數(shù)高,但由于檢測(cè)精度較低,不能夠滿足實(shí)際場(chǎng)景中工程應(yīng)用的需求。
實(shí)際應(yīng)用中,能夠精準(zhǔn)地檢測(cè)出車輛目標(biāo)、車流量與速度檢測(cè)準(zhǔn)確率高,能夠滿足現(xiàn)實(shí)應(yīng)用場(chǎng)景需求。但也表現(xiàn)出一些問題:較小目標(biāo)檢測(cè)效果一般,模型的計(jì)算量仍然高于移動(dòng)端以及部分嵌入式設(shè)備的算力。后期將進(jìn)一步進(jìn)行網(wǎng)絡(luò)剪枝、模型量化,以及使用深度可分離卷積替換標(biāo)準(zhǔn)卷積模塊的實(shí)驗(yàn),希望能夠在對(duì)精度影響不大的條件下,減少模型計(jì)算量,提高推理速度,使模型的整體性能能夠滿足實(shí)際工程中并發(fā)的需求。