倪健 甄玉航
摘要:為了實(shí)現(xiàn)自動駕駛,提高道路車輛姿態(tài)檢測識別精度,實(shí)驗(yàn)以計(jì)算機(jī)視覺識別技術(shù)為基礎(chǔ),提出了一種基于CenterNet的車輛姿態(tài)識別方法。首先使用在車輛正常行駛道路拍攝的高清圖片模擬行車記錄儀所拍到的每幀圖像;然后,用CenterNet網(wǎng)絡(luò)模型進(jìn)行特征提取;最后,特征網(wǎng)絡(luò)用回歸的方式,輸出一個(gè)四元數(shù),來描述車輛具體的位置信息和姿態(tài)信息。實(shí)驗(yàn)結(jié)果表明,此方法能有效檢測出圖片中車輛姿態(tài)信息。
關(guān)鍵詞:計(jì)算機(jī)視覺;車輛姿態(tài)識別;四元數(shù);CenterNet
中圖分類號:TP18? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)20-0001-03
1 引言
在日常生活中,路上的私家車越來越多,伴隨著汽車數(shù)量增多的同時(shí),汽車具有自動駕駛功能也成了需求與趨勢,這成為汽車制造商需要關(guān)注和解決的實(shí)際問題。自動駕駛這一部分,最基礎(chǔ)的功能就是計(jì)算機(jī)視覺中的目標(biāo)檢測與識別。因?yàn)轳{駛系統(tǒng)是以檢測到前方車輛并且獲取到其位置信息為前提下才能做出反應(yīng)與調(diào)整,所以目標(biāo)檢測是自動駕駛后續(xù)所有操作的前提。因此如何提升目標(biāo)檢測算法[1]的精準(zhǔn)度、速度是主要問題。
首先,利用Anchor的方法來獲取到可能會存在目標(biāo)物體位置的信息,再通過目標(biāo)物體位置信息對其進(jìn)行分類,是前些年目標(biāo)檢測常采納的方法。此種方法不但耗時(shí)長、效率還低,并且還需要NMS去除重復(fù)框[2],所以,這樣的目標(biāo)檢測法正逐漸被摒棄。近幾年的目標(biāo)檢測算法層出不窮,如CornerNet、Yolo 、CenterNet等,這類Anchor-Free算法提供了更大更靈活的解空間,以提升計(jì)算量的方式擺脫Anchor,使檢測和分割進(jìn)一步走向?qū)崟r(shí)高精度,體現(xiàn)了計(jì)算機(jī)視覺領(lǐng)域的技術(shù)正以蓬勃的勢頭發(fā)展。對于數(shù)字設(shè)備來講,檢測識別圖片以及視頻中的物體可以集快速、準(zhǔn)確于一體,這對于交通、體育、建筑等行業(yè)來說,為其行業(yè)內(nèi)的視覺數(shù)據(jù)的收集、處理、分析等提供了更便利的條件與基礎(chǔ)。
本文采用CenterNet [3]目標(biāo)檢測算法對城市道路的車輛進(jìn)行目標(biāo)檢測,加入EfficientNet網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練數(shù)據(jù)集,結(jié)合翻轉(zhuǎn)、旋轉(zhuǎn)等手段來進(jìn)行數(shù)據(jù)增強(qiáng),再利用四元數(shù)來解決歐拉角產(chǎn)生的萬向鎖問題,網(wǎng)絡(luò)采用[x,y,z,yaw,pitch,roll]等變量輸出,顯示更為簡潔直觀。
2 模型方法
2.1 實(shí)驗(yàn)內(nèi)容
本實(shí)驗(yàn)主要包括兩部分:目標(biāo)檢測、姿態(tài)評估。目標(biāo)檢測用CenterNet算法把輸入圖片進(jìn)行關(guān)鍵點(diǎn)檢測,得到關(guān)鍵點(diǎn)的熱力圖,熱力圖中中心點(diǎn)的位置預(yù)測了目標(biāo)的寬高。用訓(xùn)練好的網(wǎng)絡(luò)模型進(jìn)行特征提取,之后姿態(tài)評估部分為了避免軸共面,產(chǎn)生萬向鎖問題,所以利用網(wǎng)絡(luò)特征回歸的方式輸出為一個(gè)四元數(shù),用來描述圖片車輛具體的位置信息、姿態(tài)信息。
CenterNet網(wǎng)絡(luò)結(jié)構(gòu)包括主干網(wǎng)絡(luò)(EfficientNet)、上采樣模塊(雙線性差值或轉(zhuǎn)置卷積)、head輸出預(yù)測值。
2.2 CenterNet算法
本實(shí)驗(yàn)算法CenterNet的前身為CornerNet[3],CornerNet算法可取之處在于可以消除anchor box(錨框) ,如圖1所示,把目標(biāo)檢測轉(zhuǎn)化為一對關(guān)鍵點(diǎn)的檢測,即左上角點(diǎn)和右下角點(diǎn)。
相對于CornerNet而言,CenterNet的中心思想是把目標(biāo)檢測問題轉(zhuǎn)化成目標(biāo)物體的一個(gè)關(guān)鍵點(diǎn)估計(jì)問題[5],如圖2所示,傳入卷積網(wǎng)絡(luò)一張圖片,得到熱力圖(heatmap) ,圖中的峰值點(diǎn)、中心點(diǎn)為同一點(diǎn),目標(biāo)的寬高由中心點(diǎn)的位置預(yù)測決定。
CenterNet的檢測過程關(guān)鍵點(diǎn)熱力圖生成:
輸入圖像的規(guī)格為I∈RW×H×3,W為寬,H為高。生成的關(guān)鍵點(diǎn)熱力圖規(guī)格為 Y∈[[0,1]WR×HR×C],其中R為輸出圖像的步長(stride) ,C是關(guān)鍵點(diǎn)類型數(shù)(特征圖通道數(shù)) 。
在目標(biāo)檢測中,Yx,y,c=1表示檢測到的物體預(yù)測值為1,即在坐標(biāo)(x,y) 處檢測到了類別為C的物體;反之,Yx,y,c=0則表示未檢測到。
在訓(xùn)練中,CenterNet沿用CornerNet的方法,對標(biāo)簽圖(ground truth) 里的某一C類,把真實(shí)關(guān)鍵點(diǎn)(true keypoint) p∈R2計(jì)算出來用于訓(xùn)練,中心點(diǎn)坐標(biāo)的計(jì)算方式為P =([x1+x22,y1+y22]) ,對于下采樣后的坐標(biāo)設(shè)為 p^=[pR],其中 R是上文中提到的下采樣因子4。所以計(jì)算出來的中心點(diǎn)與低分辨率的中心點(diǎn)[4]相對應(yīng)。
然后利用 Y∈[[0,1]WR×HR×C] 來對圖像進(jìn)行標(biāo)記,在下采樣的[128,128]圖像中標(biāo)簽真值點(diǎn)(ground truth point) 以 Y∈[[0,1]WR×HR×C]的形式,用一個(gè)高斯核將關(guān)鍵點(diǎn)分布到特征圖上。
Yxyc=exp(-[x-px2+y-py22σ2p])? ? ? ? ? (1)
其中 σp是標(biāo)準(zhǔn)差,σp的值與目標(biāo)物體的寬高相關(guān)。如果某一個(gè)類的兩個(gè)高斯分布發(fā)生了重疊,取最大元素即可。
每個(gè)點(diǎn)Y∈[[0,1]WR×HR×C]的范圍為0~1,當(dāng)Y=1時(shí),代表此點(diǎn)為目標(biāo)中心點(diǎn)(預(yù)測學(xué)習(xí)的點(diǎn)) 。
運(yùn)行demo,輸入一張圖,得到其熱力圖如圖3所示。
2.3 損失函數(shù)
整體損失函數(shù)(Ldet) 包括目標(biāo)中心點(diǎn)預(yù)測損失(Lk) 、目標(biāo)中心偏置損失(Loff)、目標(biāo)大小損失(Lsize),總公式如下:
Ldet=Lk+λsizeLsize+λoffLoff? (2)
其中λsize=0.1,λoff=1。在主干網(wǎng)絡(luò)后,每個(gè)坐標(biāo)生成C+4個(gè)數(shù)據(jù),包括類別、偏置x與y、寬、高。
2.4 歐拉角、四元數(shù)
實(shí)驗(yàn)已經(jīng)用訓(xùn)練模型進(jìn)行特征提取,下一步實(shí)現(xiàn)車輛姿態(tài)的識別,識別的思路為利用網(wǎng)絡(luò)特征回歸的方式輸出為一個(gè)四元數(shù),用來描述圖片車輛具體的位置信息,此時(shí)引入歐拉角和四元數(shù)。
歐拉角[6]包括三個(gè)獨(dú)立的角參量,如圖4:章動角θ、旋進(jìn)角(進(jìn)動角) ψ和自轉(zhuǎn)角φ。三個(gè)參量為一組來描述一個(gè)以定點(diǎn)轉(zhuǎn)動的剛體的位置。
繞X軸旋轉(zhuǎn)Roll翻滾角,繞Y軸旋轉(zhuǎn)Pitch仰俯角,繞Z軸旋轉(zhuǎn)Yaw偏航角。
萬向鎖問題:正常情況下,物體旋轉(zhuǎn)時(shí)三個(gè)旋轉(zhuǎn)軸相互獨(dú)立,但是選擇±90°作為pitch角,在時(shí)間上產(chǎn)生了共軸、共面,就會使第一次旋轉(zhuǎn)和第三次旋轉(zhuǎn)效果相同,整個(gè)旋轉(zhuǎn)表示系統(tǒng)被限制在只能繞豎直軸旋轉(zhuǎn),缺少一個(gè)表示維度。
為了解決萬向鎖,這里引入四元數(shù),四元數(shù)是一種簡單的超復(fù)數(shù),包括實(shí)數(shù)部和三個(gè)虛數(shù)部,一般形式為a + bi+ cj + dk(a、b、c、d均為實(shí)數(shù),i、j、k均為虛數(shù)單位) ??梢园裪 j k(X軸Y軸Z軸) 本身的幾何含義當(dāng)作是旋轉(zhuǎn),滿足左手系準(zhǔn)則:大拇指指向旋轉(zhuǎn)軸,另外四根手指所握方向即為旋轉(zhuǎn)的正方向,所轉(zhuǎn)角度即為正角度,反之為反向旋轉(zhuǎn)。依次可得出i、j、k的正向旋轉(zhuǎn)與反向旋轉(zhuǎn)[7]。
用四元數(shù)表示姿態(tài)信息優(yōu)點(diǎn)在于只要參考坐標(biāo)系、動坐標(biāo)系恒定,四元數(shù)就唯一,并且四元數(shù)保存的姿態(tài)信息數(shù)據(jù)可以轉(zhuǎn)化成歐拉角。
3 數(shù)據(jù)收集與增強(qiáng)
本次實(shí)驗(yàn)采用多種方式獲取數(shù)據(jù),用來測試和訓(xùn)練模型。包括個(gè)人拍攝圖片30張,網(wǎng)絡(luò)圖片108張,Kaggle無人車大賽公開數(shù)據(jù)集2762張。其中Kaggle為車輛的目標(biāo)檢測提供車輛的類別標(biāo)簽,從中提取車輛圖像。這樣的數(shù)據(jù)集進(jìn)行模型訓(xùn)練,更能準(zhǔn)確地檢測識別出單幀圖像中的車輛姿態(tài)。最終用于模型訓(xùn)練的訓(xùn)練集1703張,測試集662張,驗(yàn)證集530張。
實(shí)驗(yàn)中數(shù)據(jù)增強(qiáng)的操作包括尺寸變換(scale)、翻轉(zhuǎn)變換(flip)。其中scale設(shè)置為8,在主干網(wǎng)絡(luò)上采樣中,產(chǎn)生的mask特征圖尺寸為128[×]40,訓(xùn)練模型中圖像尺寸1024[×]320的1/8。開啟翻轉(zhuǎn)(flip)的話,就將mask特征圖(單通道的)、 regression特征圖(7通道的) 取反。通過數(shù)據(jù)增強(qiáng)可以阻止神經(jīng)網(wǎng)絡(luò)模型學(xué)習(xí)不相關(guān)的特征,從根本上提升網(wǎng)絡(luò)的整體性能。
4 實(shí)驗(yàn)結(jié)果與分析
4.1 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)操作系統(tǒng)Win10下完成,CPU為Intel(R) Core(TM) i7-6700HQ /GPU:GTX950M,內(nèi)存為16G。開發(fā)環(huán)境為Python3.8、EfficientNet-B0等。
4.2 實(shí)驗(yàn)結(jié)果
最后驗(yàn)證經(jīng)過訓(xùn)練后的模型,如圖5所示,分別為原圖和測試結(jié)果圖。
以表1為圖5中各個(gè)車輛的位置信息:
4.3 實(shí)驗(yàn)結(jié)果分析
通過圖片驗(yàn)證與測試可以看出,車輛即使較遠(yuǎn),小目標(biāo)車輛也能很好地檢測到,對于其位置姿態(tài),也能用偏航角(pitch)、x、y、z等直觀地展現(xiàn)出來,達(dá)到了本實(shí)驗(yàn)的基本目的。本實(shí)驗(yàn)僅對車輛這一類物體進(jìn)行識別,因此采用精確率[8](Precision) 、召回率(Recall) 兩個(gè)參數(shù)評價(jià)模型。精確率反映在測試集識別時(shí),預(yù)測正樣本中實(shí)際正樣本所占的比例;召回率反映所有正樣本中預(yù)測正樣本所占的比例。
Precision=[tptp+fp] (3)
Recall=[tptp+fn] (4)
注:[tp]為識別到樣本中的正樣本,[fp]為識別到樣本中的負(fù)樣本,[fn]為未識別到樣本中的正樣本。
使用662張圖片測試集在訓(xùn)練好的模型上進(jìn)行驗(yàn)證,得到基于CenterNet的車輛姿態(tài)識別模型的精確率和召回率如表2所示:
通過表2以及圖5可以看出,本實(shí)驗(yàn)訓(xùn)練的基于CenterNet的車輛姿態(tài)識別模型,對一些目標(biāo)較小、較偏的車輛也能進(jìn)行識別,其精準(zhǔn)率以及召回率都在90%以上,可以較準(zhǔn)確地檢測車輛、識別車輛姿態(tài),達(dá)到本實(shí)驗(yàn)?zāi)康摹?/p>
5 結(jié)論
針對道路車輛姿態(tài)識別問題,傳統(tǒng)目標(biāo)檢測算法識別率較低,魯棒性不強(qiáng),所以本文在基于CenterNet的目標(biāo)檢測算法上,實(shí)現(xiàn)了車輛的檢測與姿態(tài)識別。結(jié)果表明,識別準(zhǔn)確度與識別速度都得到了不錯的結(jié)果,在662張圖片測試集測試下進(jìn)行模型評估,精準(zhǔn)度基本在93%,證實(shí)了本實(shí)驗(yàn)的可行性,滿足車輛姿態(tài)識別的要求。同樣,后續(xù)的車輛姿態(tài)識別依然有很大的改進(jìn)空間,進(jìn)一步優(yōu)化網(wǎng)絡(luò)能得到更理想的效果。
參考文獻(xiàn):
[1] 黃健,張鋼.深度卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法綜述[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(17):12-23.
[2] 杜鵬,諶明,蘇統(tǒng)華.深度學(xué)習(xí)與目標(biāo)檢測[M].北京:電子工業(yè)出版社,2020.
[3] 黃躍珍,王乃洲,梁添才,等.基于改進(jìn)CenterNet的車輛識別方法[J].華南理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2021,49(7):94-102.
[4] Law H,Deng J.CornerNet:detecting objects as paired keypoints[J].International Journal of Computer Vision,2020,128(3):642-656.
[5] 石先讓,蘇洋,提艷,等.基于CenterNet目標(biāo)檢測算法的改進(jìn)模型[J].計(jì)算機(jī)工程,2021,47(9):240-251.
[6] 中國大百科全書總編輯委員會《力學(xué)》編輯委員會.中國大百科全書(力學(xué)) [M].北京:中國大百科全書出版社,1987:373.
[7] 程烺,俞家勇,馬龍稱,等.單位四元數(shù)、羅德里格轉(zhuǎn)換模型與歐拉角的映射關(guān)系[J].北京測繪,2020,34(1):44-50.
[8] 李航.統(tǒng)計(jì)學(xué)習(xí)方法[M].北京:清華大學(xué)出版社,2012.
【通聯(lián)編輯:唐一東】