陶英杰, 張維緯, 馬昕, 周密
(1. 華僑大學(xué) 工學(xué)院, 福建 泉州 362021;2. 華僑大學(xué) 工業(yè)智能化與系統(tǒng)福建省高校工程研究中心, 福建 泉州 362021)
隨著交通基礎(chǔ)設(shè)施的發(fā)展,中國(guó)許多城市在市區(qū)安裝了成千上萬(wàn)個(gè)交通監(jiān)控設(shè)備.這些視頻要傳輸?shù)奖O(jiān)控中心,并進(jìn)行人工分析,成本昂貴且工作實(shí)效低.目前,無(wú)人機(jī)輔助作業(yè)因成本低、體積小、靈活方便等優(yōu)點(diǎn),成為一項(xiàng)極具發(fā)展前景的技術(shù).然而,無(wú)人機(jī)的主要作用是拍攝車輛特征明顯的視頻,所拍攝的視頻還是需要進(jìn)行人工分析.因此,無(wú)人機(jī)要真正做到“無(wú)人”,主要面臨以下困境:航拍的視頻幀數(shù)巨大,若直接處理視頻中的每一幀,計(jì)算量大;完整的目標(biāo)檢測(cè)模型部署在嵌入式設(shè)備上,會(huì)導(dǎo)致能耗高、計(jì)算量高、時(shí)延高等問題.目前,基于運(yùn)動(dòng)的車輛檢測(cè)主要分為非參數(shù)法和參數(shù)法兩類[1].非參數(shù)法主要以逐像素的方式分離前景和背景,如幀差法[2]在固定監(jiān)控、低幀率的運(yùn)動(dòng)車輛檢測(cè)中運(yùn)用廣泛,但是當(dāng)該方法用于高幀率的航拍視頻去除大量冗余幀時(shí),會(huì)丟失大量目標(biāo)幀.參數(shù)法主要分為背景建模、光流及其他方法.背景建模[3]主要針對(duì)視頻流建立背景模型,應(yīng)用前提是基于背景固定的假設(shè).Zhan等[4]利用金字塔光流估計(jì)和形態(tài)學(xué)變換算子提取運(yùn)動(dòng)車輛目標(biāo),然而,光流法所需要的計(jì)算資源是嵌入式設(shè)備無(wú)法滿足的.其他方法包括自適應(yīng)運(yùn)動(dòng)直方圖的方法[5]、基于運(yùn)動(dòng)模型的方法[6]和利用深度學(xué)習(xí)挖掘關(guān)鍵幀的方法[7]等,但是此類方法存在時(shí)耗長(zhǎng)、計(jì)算量大及模型大的問題,難以部署在嵌入式設(shè)備上.
為了去除視頻冗余幀,減少不必要的計(jì)算,研究者基于運(yùn)動(dòng)的車輛檢測(cè)方法,結(jié)合其他方法進(jìn)行了多種嘗試.Zhang等[8]采用周期性固定間隔選取幀,再利用結(jié)構(gòu)性相似的方案選取關(guān)鍵幀,但是固定間隔會(huì)導(dǎo)致目標(biāo)幀丟失過多,檢出率不高;Zhang等[9]以背景圖像為參考幀,通過幀差圖像判斷并提取關(guān)鍵幀,但這種方法需要背景圖像參考,對(duì)移動(dòng)切換的場(chǎng)景不適用;Kang等[10]直接通過跳幀以減少視頻數(shù)據(jù)量,這種方法簡(jiǎn)單,但會(huì)出現(xiàn)無(wú)目標(biāo)幀剩余情況.另外,這些方法將預(yù)處理方法和檢測(cè)模型均部署本地,邊緣計(jì)算資源浪費(fèi).因此,本文提出一種面向無(wú)人機(jī)視頻分析的車輛目標(biāo)檢測(cè)方法.通過在無(wú)人機(jī)設(shè)備上將實(shí)時(shí)拍攝的視頻進(jìn)行像素級(jí)及結(jié)構(gòu)性差異過濾處理,得到關(guān)鍵幀,再通過部署在PC上壓縮的檢測(cè)模型進(jìn)行檢測(cè).
文中提出的框架包括兩級(jí)過濾器和目標(biāo)檢測(cè)器,其中,兩級(jí)過濾器部署在嵌入式設(shè)備上,目標(biāo)檢測(cè)器部署在PC端,如圖1所示.無(wú)人機(jī)拍攝的M幀視頻通過灰度轉(zhuǎn)換,輸入像素差異檢測(cè)器(PDD)判斷相鄰幀的相似程度,根據(jù)相似度選擇丟棄或保留;一級(jí)篩選后將剩余的M-N幀輸入結(jié)構(gòu)差異檢測(cè)器(SDD)中,根據(jù)更符合人類視覺的結(jié)構(gòu)性判斷幀之間的相似度,剔除P幀;最后,將兩級(jí)過濾后的M-N-P幀送入壓縮并添加計(jì)數(shù)模塊的YOLOv3模型進(jìn)行檢測(cè).
圖1 文中算法的結(jié)構(gòu)框架Fig.1 Structural framework of this paper algorithm
1.2.1 像素差異檢測(cè)器 像素差異檢測(cè)器通過計(jì)算相鄰幀之間的像素距離確定這兩個(gè)幀是否相同.Himeur等[11]通過直方圖的方法捕捉顏色信息的相似性,但是無(wú)人機(jī)拍攝的視頻分辨率較高,一張像素為200 px×200 px的圖片就有40 000個(gè)像素點(diǎn),每一個(gè)像素點(diǎn)都保存著一個(gè)RGB值,信息量相當(dāng)龐大,而無(wú)人機(jī)拍攝的視頻圖片像素遠(yuǎn)不止200 px×200 px.Gao等[12]的實(shí)驗(yàn)結(jié)果顯示,如果將RGB圖像轉(zhuǎn)化為灰度圖,會(huì)降低計(jì)算成本,且不影響效果.因此,首先將M個(gè)視頻幀轉(zhuǎn)換為灰度圖;其次把圖片縮放到非常小,根據(jù)對(duì)比顯示縮放到9 px×8 px是相對(duì)合理的,因?yàn)槊啃?個(gè)像素值,會(huì)產(chǎn)生8個(gè)差異值,剛好構(gòu)成一個(gè)字節(jié),可以轉(zhuǎn)化為2個(gè)16進(jìn)制值進(jìn)行后續(xù)計(jì)算.
將M幀縮放過的灰度圖輸入差異檢測(cè)器,判斷相鄰幀的相似程度,如果相似,則保留相似幀中的一幀.第i幀圖像相鄰像素差值的判斷方法為
ai(x,y)=fi(x,y)-fi(x,y+1).
(1)
式(1)中:x,y為圖像像素的橫、縱坐標(biāo);fi(x,y)為第i幀圖像的x行y列的像素值;ai(x,y)表示2個(gè)像素差值.
第i幀圖像的相鄰像素強(qiáng)度的判斷方法為
(2)
式(2)中:產(chǎn)生全為0和1的8×8矩陣,而每8位可以組成2個(gè)16進(jìn)制值,連接起來轉(zhuǎn)換為字符串,得到哈希值.
第i幀和第j幀圖像的差異值的判斷方法為
Di,j(k)=Hi(k)⊕Hj(k).
(3)
式(3)中:Hi(k)和Hj(k)分別為第i幀和第j幀圖像的第k個(gè)哈希值轉(zhuǎn)換的二進(jìn)制值;⊕表示異或運(yùn)算;Di,j(k)為第i,j幀哈希值的運(yùn)算結(jié)果.
兩幀圖像的相似判斷圖為
(4)
式(4)中:Δi,j為兩幀之間的相似度度量參數(shù),當(dāng)Δi,j=5時(shí),能有效度量?jī)蓭脚膱D像之間的相似度.
1.2.2 結(jié)構(gòu)差異檢測(cè)器 通過PDD的過濾,可以初步過濾掉70%以上的冗余幀,但是交通擁堵事件發(fā)生的平均時(shí)間不超過5%[13],而且無(wú)人機(jī)的應(yīng)用場(chǎng)景和固定攝像頭不同,場(chǎng)景隨時(shí)切換,圖像結(jié)構(gòu)會(huì)發(fā)生變化,還應(yīng)進(jìn)一步過濾.而結(jié)構(gòu)相似性傾向于通過統(tǒng)計(jì)指標(biāo)(如熵、灰度平均值、協(xié)方差)和圖像質(zhì)量評(píng)價(jià)指標(biāo)(如峰值信噪比(PSNR)和結(jié)構(gòu)相似性指數(shù)(SSIM))對(duì)圖像進(jìn)行全局比較.Hore等[14]的實(shí)驗(yàn)結(jié)果表明,SSIM是一個(gè)完整的參考圖像質(zhì)量評(píng)價(jià)指標(biāo),它結(jié)合了亮度、對(duì)比度和結(jié)構(gòu)衡量圖像的相似性,在圖像相似性評(píng)價(jià)上優(yōu)于PSNR.因此,結(jié)構(gòu)差異檢測(cè)器采用SSIM算法度量圖像的結(jié)構(gòu)相似性.
給定2幅圖片,SSIM計(jì)算式為
(5)
根據(jù)實(shí)驗(yàn)發(fā)現(xiàn),利用SSIM算法將無(wú)人機(jī)拍攝的視頻進(jìn)行相鄰幀的相似度度量并做保留或丟棄處理,會(huì)產(chǎn)生相似度傳遞,并累積錯(cuò)誤,如圖2所示.
圖2 SSIM算法產(chǎn)生相似度傳遞Fig.2 SSIM algorithm produces similarity transfer
由圖2可知:對(duì)于M幀的視頻,連續(xù)的幀與幀之間的相似度非常高,最壞的可能是最后保留M-1幀圖像,只進(jìn)行相似度度量,沒有過濾幀.因此,對(duì)應(yīng)用航拍視頻的SSIM算法進(jìn)行改進(jìn).
偽代碼描述如下.
算法:基于航拍視頻的幀結(jié)構(gòu)差異過濾算法
輸入:Aerial Video,SSIM,相似度判定閾值β
輸出:相似度小于β的幀
1: i ← 0
2: j ← 0
3: read Aerial Video
4: save first frame
5: frame numbers save to array A
6: B ← A
7: while length[A]>i and length[B]>j
8: do取出A[i],B[j]
9: if SSIM(A[i],B[j])>β
10: then j ← j+1
11: End if
12: if SSIM(A[i],B[j])<β
13: then save B[j]
14: i ← j
15: end
為實(shí)現(xiàn)在線實(shí)時(shí)高精度檢測(cè),選取精度較高的YOLOv3作為基礎(chǔ)網(wǎng)絡(luò),其速度和精度在相同情況下均優(yōu)于SSD[16],fast R-CNN[17]等主流算法,在工業(yè)界也有廣泛的應(yīng)用[18-21].YOLOv3模型能避免車輛大量漏檢情況的發(fā)生,具有較高的精度和可優(yōu)化的空間.考慮到目前的壓縮方法[22-23]對(duì)精度和速度單方面的需求,沒有將速度與精度進(jìn)行權(quán)衡.故將通道剪枝和層剪枝方法結(jié)合,保證精度需求的情況下對(duì)YOLOv3模型進(jìn)行加速.
受到SlimYOLOv3[24]的啟發(fā),為了便于通道修剪,為每個(gè)通道分配一個(gè)比例因子,其中,比例因子的絕對(duì)值表示通道的重要性.在YOLOv3中的每個(gè)卷積層之后都有一個(gè)BN層,用以加速收斂和提高泛化能力,BN層使用小批量歸一化卷積特征,即
(6)
式(6)中:μ和σ分別為輸入特征的均值和標(biāo)準(zhǔn)差;γ和e分別為比例因子和偏差.
直接采用比例因子作為通道重要性的指標(biāo),為了有效區(qū)分重要通道和不重要通道,對(duì)γ增加一個(gè)正則項(xiàng)[25],即
(7)
通道剪枝示意圖,如圖3所示.
圖3 通道剪枝示意圖Fig.3 Schematic diagram of channel pruning
圖4 層剪枝示意圖Fig.4 Schematic diagram of layer pruning
在通道剪枝的基礎(chǔ)上,對(duì)每一個(gè)shortcut層前面一個(gè)CBL(YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)中的最小組件,由conv+BN+Leaky_relu激活函數(shù)三者組成)進(jìn)行評(píng)價(jià),對(duì)各層的γ均值進(jìn)行排序,最小的γ均值進(jìn)行層剪枝.為了保證結(jié)構(gòu)完整性,每剪掉一個(gè)shortcut結(jié)構(gòu),會(huì)同時(shí)剪掉一個(gè)shortcut層和前面2個(gè)conv層.對(duì)于YOLOv3,有23處shortcut,共有69個(gè)層剪層空間.
層剪枝示意圖,如圖4所示.圖4中:γi<γi+1.根據(jù)選取交并比(IoU)≥0.5的預(yù)測(cè)框,進(jìn)行計(jì)數(shù),統(tǒng)計(jì)預(yù)測(cè)車輛的數(shù)量.
系統(tǒng)為ubuntu18.04,搭建Pytorch框架進(jìn)行訓(xùn)練,通過Python進(jìn)行測(cè)試.訓(xùn)練硬件配置為Intel(R) Xeon(R) Gold 5118 CPU@2.3 GHz,NVIDIA GeForce TITAN Xp;測(cè)試硬件配置為PC機(jī)Intel(R) Core(TM) i5-8300H CPU@2.30 GHz,NVIDIA GeForce GTX 1050;jetson nano為64位4核ARM A57@1.43 GHz,128核NVIDIA Maxwell@921 MHz.實(shí)驗(yàn)方案如下:首先,使用部署在嵌入式設(shè)備jetson nano上的兩級(jí)過濾器對(duì)采集的無(wú)人機(jī)視頻進(jìn)行預(yù)處理并進(jìn)行效果對(duì)比;再將處理后的剩余幀傳輸?shù)讲渴鹪赑C端的輕量化目標(biāo)檢測(cè)器進(jìn)行檢測(cè);最后,展示效果.
實(shí)驗(yàn)訓(xùn)練數(shù)據(jù)為UA-DETRAC,VisDrone2018數(shù)據(jù)集,采集一段無(wú)人機(jī)視角的交通視頻,分辨率為1 280 px×720 px,幀數(shù)為3 634幀.其中,目標(biāo)幀數(shù)為185幀,由于目標(biāo)幀之間也存在冗余,故每5幀取1幀作為實(shí)際目標(biāo)幀,即認(rèn)為實(shí)際目標(biāo)幀為37幀.
為了能夠評(píng)估無(wú)人機(jī)視頻過濾系統(tǒng)性能,對(duì)時(shí)延、幀總過濾率、目標(biāo)幀保留率、目標(biāo)幀占比率、冗余幀過濾率等參數(shù)進(jìn)行評(píng)估.
幀總過濾率(RTFF)表達(dá)式為
(8)
目標(biāo)幀保留率(RTFR)表達(dá)式為
(9)
目標(biāo)幀占比率(PTF)表示被過濾的剩余幀數(shù)中含有多少目標(biāo)幀,其表達(dá)式為
(10)
冗余幀過濾率(RRFF)表達(dá)式為
(11)
式(8)~(11)中:Ftot為測(cè)試視頻的總幀數(shù);Ftot_t為測(cè)試視頻包含的目標(biāo)幀幀數(shù);Ffil為測(cè)試視頻被過濾的幀數(shù);Ffil_t為測(cè)試視頻被過濾的目標(biāo)幀幀數(shù).單一的目標(biāo)幀保留率或冗余幀過濾率無(wú)法驗(yàn)證過濾器的性能,因此,將二者結(jié)合來評(píng)估過濾器性能,幀總過濾率作為參考.
為了能夠評(píng)估加速的目標(biāo)檢測(cè)器的性能,采用平均精確率均值(PmA)、檢測(cè)速度及參數(shù)總量作為評(píng)價(jià)準(zhǔn)則,其中,平均精確率均值是目標(biāo)檢測(cè)任務(wù)中最重要的指標(biāo),決定了檢測(cè)效果.為了在計(jì)算機(jī)中更快速精確地求出PmA的大小,通常使用以下方法,即
(12)
為了驗(yàn)證過濾系統(tǒng)的效果并評(píng)估其性能,在jetson nano平臺(tái)將文中方法與文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]中的方法進(jìn)行對(duì)比實(shí)驗(yàn).不同方法下的過濾時(shí)間和過濾效果的對(duì)比,如圖5,6所示.圖5中:t為過濾時(shí)間.
圖5 不同方法下的過濾時(shí)間對(duì)比 圖6 不同方法下的過濾效果對(duì)比Fig.5 Comparison of filtering time Fig.6 Comparison of filtering effects in different methods in different methods
文中方法通過PDD將高分辨率幀進(jìn)行像素級(jí)壓縮,再進(jìn)行哈希值相似度判斷,大大減少了計(jì)算量,時(shí)耗僅為11.7 s.過濾系統(tǒng)不僅要提高速度,還要提高目標(biāo)幀的保留率,因此,使用SDD根據(jù)人類視覺,通過結(jié)構(gòu)化相似度判斷,進(jìn)一步去除冗余幀.由于已經(jīng)通過PDD初步篩選,因此,SDD需要判斷的幀數(shù)相對(duì)減少,時(shí)耗僅為20.77 s.由圖5可知:文獻(xiàn)[8]和文獻(xiàn)[10]方法的過濾時(shí)間分別為25.30,16.34 s,這是由于文獻(xiàn)[10]直接進(jìn)行了跳幀處理,文獻(xiàn)[8]在選擇跳幀后進(jìn)行了相似度檢測(cè),因此,兩種方法的速度都較快.
由圖6可以看出:文中方法的目標(biāo)幀保留率RTFR明顯優(yōu)于文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]的方法,達(dá)到97.30%,幾乎可以保留所有目標(biāo)幀;文中方法、文獻(xiàn)[8]、文獻(xiàn)[9]和文獻(xiàn)[10]方法的冗余幀過濾率RRFF都非常高,分別是99.38%,95.96%,96.83%和99.64%.但單一指標(biāo)無(wú)法評(píng)估性能,由綜合目標(biāo)幀占比率PTF可以看出,在剩余的幀數(shù)中,使用兩級(jí)過濾器的文中方法含有目標(biāo)幀的幀數(shù)分別是文獻(xiàn)[8]、文獻(xiàn)[9]、文獻(xiàn)[10]方法的1.54,4.29,5.14倍.
YOLOv3通道剪枝壓縮情況,如表1所示.采用層剪枝的方式將YOLOv3中的shortcut層進(jìn)行修剪,為了保證結(jié)構(gòu)的完整性,同時(shí)將shortcut層對(duì)應(yīng)的2個(gè)CBL層也剪掉.YOLOv3層剪枝壓縮情況,如表2所示.
表1 YOLOv3通道剪枝壓縮情況Tab.1 YOLOv3 channel pruning compression situation
表2 YOLOv3層剪枝壓縮情況Tab.2 YOLOv3 layer pruning compression situation
壓縮后的YOLOv3模型的各項(xiàng)指標(biāo),如表3所示.為了評(píng)估壓縮YOLOv3的效果與性能,在PC端將壓縮模型與YOLOv3模型和輕量化YOLOv3模型的各項(xiàng)指標(biāo)進(jìn)行對(duì)比,結(jié)果如表4所示.表3,4中:V為模型參數(shù)量;tf為前向推斷耗時(shí);F為檢測(cè)速度.
通過通道剪枝,模型大小為33.2 MB,參數(shù)壓縮了86.8%,再通過層剪枝,剪了12個(gè)shoutcut,相當(dāng)于剪了36層,模型大小為22 MB.
表3 壓縮后的YOLOv3模型的各項(xiàng)指標(biāo)Tab.3 Various indicators of compressed YOLOv3 model
表4 壓縮模型與YOLO模型對(duì)比Tab.4 Comparison between compression model and YOLOv3 model
通過層剪枝和通道剪枝的結(jié)合,去除對(duì)網(wǎng)絡(luò)輸入結(jié)果影響小的卷積核和卷積層,壓縮了模型的深度和寬度,從而加快了模型檢測(cè)速度;YOLOv3模型的參數(shù)量壓縮了91.23%,大大減少了計(jì)算量.由表4可知:與YOLOv3模型相比,壓縮模型雖然在精度方面降低了20%左右,但是檢測(cè)速度提高了78.3%,推斷速度提升了71.2%;相較于輕量化YOLOv3模型,壓縮模型的精度提高了103%,而檢測(cè)速度差別不大.3種模型各截取一幀,檢測(cè)效果如圖7所示.
(a) YOLOv3模型 (b) 輕量化YOLOv3模型 (c) 壓縮模型 圖7 3種模型檢測(cè)效果Fig.7 Detection effects in three models
針對(duì)視頻幀大量冗余的問題,進(jìn)行了大規(guī)模且有效的過濾;另外,對(duì)全功能模型檢測(cè)速度慢的問題,進(jìn)行了壓縮加速,在保證精度的情況下,減少模型的參數(shù)總量和模型體積,與現(xiàn)有的模型相比,實(shí)現(xiàn)了精度與速度的均衡.然而,研究的最終目的是將過濾器及檢測(cè)模型全部部署在無(wú)人機(jī)上,充分利用邊緣設(shè)備計(jì)算資源.因此,在今后工作中,將會(huì)進(jìn)一步研究模型的壓縮和改進(jìn),從而實(shí)現(xiàn)無(wú)人機(jī)實(shí)時(shí)在線全功能過濾交通視頻檢測(cè)異常的情況.