李寶軍,薛 炯,劉澤陽,王小超,肖志鵬
(1.大連理工大學 汽車工程學院, 遼寧 大連 116024;2.天津工業大學 數學科學學院, 天津 300387;3.北京中科慧眼科技有限公司, 北京 100023)
國內公路限高設施分布廣泛,通常架設在各個城市市區入口、高速路出入口、橋梁隧道前、火車道和港口附近,起到保護隧道和橋梁的作用。目前國內的限高設施沒有統一的國標規范,各地政府設置的限高設施在外觀、標識和限高高度等方面千差萬別,給大型車輛的正常通行帶來了諸多困擾。房車、大型貨車、大型客車等,由于車身尺寸大、造價高,在公路限高場景中一旦發生限高事故,會造成公共財產和個人財產的重大損失,同時也會給駕駛員和乘客生命安全帶來極大威脅。由于國內公路限高場景復雜,限高設施外造型非標、多樣,為限高目標監測領域相關研究帶來了巨大的挑戰。
車輛在行駛工況下,存在著車速變化非均勻、路面不平激勵輸入和車身震動等多種不確定性因素,增加了中遠距離傳感器測距測高的難度,造成了輸出結果不穩定的問題。目前自動駕駛路面感知系統中常見的傳感器包括毫米波雷達、激光雷達和光學相機。研究表明[1],毫米波雷達可以探測到100~150 m范圍內的行人,除了容易受到金屬物體的影響外,只能提供距離和角度信息,物體的高度信息缺失;使用激光雷達[2]在100 m的范圍內測距精度可以達到±3 cm,但高線束的激光雷達使用成本太高。Shu等[3]提出的featdepth單目無監督深度估計算法盡管在深度估計精度上接近單目有監督的深度估計算法,但依然存在著尺度恢復困難和測距精度低的問題,難以滿足公路限高預警中實時測距測高的需求。
隨著智能汽車的大規模量產,盡管雙目相機測距精度低于激光雷達,但是成本優勢十分明顯,同時還具有豐富的圖像紋理信息,有利于限高檢測。原培新等[4]將雙目視覺應用于列車把手位置并計算把手距離相機的物理距離,為機器人自動摘鉤提供數據基礎;王洪偉等[5]采用2個不同視角的CCD攝像頭對道路前側的紅綠燈進行測距,50 m測距范圍誤差可以控制在6%以內;王昊等[6]提出基于雙目視覺的車輛跟馳系統,實現了在60 m車間距測量范圍內,使用25 mm焦距的雙目相機的平均相對誤差為2.66%;劉詩婷等[7]提出了一種基于雙目變焦的超分辨率成像測距算法,實現了在相同距離下具有更小的測距相對誤差,在相同的測距相對誤差下具有更大的測距范圍;劉志強等[8]提出了攝像頭和毫米波雷達多傳感器融合的算法,在晴天、雨天、夜晚和陰天4種不同天氣條件下對目標的平均檢測率達到88.3%。雙目相機的缺點是分辨率有限,測距和測高精度對視差的依賴性較高,獲取到的視差數據存在著噪聲多、誤差大、特征不明晰和難分離等多方面的問題。
針對上述問題,本文提出了一種基于深度學習的雙目公路限高設施自動監測算法,對中遠距離的限高設施進行檢測和實時測距測高。通過目標檢測和目標跟蹤算法得到限高設施的二維檢測框,結合獲取的視差數據對檢測框內的視差進行多步多尺度濾波,計算限高目標的距離和高度信息。最后,對計算得到的距離和高度信息進行魯棒性輸出并預警,實現輸出高精度、實時性和魯棒性的目標。
設置公路限高的目的是限制大型載重車輛通行,起到延長公路使用壽命、保護立交橋梁或隧道等跨越物安全的作用。但是如果設置不當,在限高事故中會對駕駛員和乘客的生命安全造成威脅。國內常見的公路限高設施主要包含限高桿、天橋、隧道、牌坊,考慮到橋梁和隧道的限高主體部分均無紋理,將其合并為橋洞類,故本文主要研究的限高對象為限高桿、橋洞、牌坊3大類。
各類限高設施缺乏統一的標準,其外形特征具有多樣性、復雜性,因此對不同類型的限高設施根據不同的外形特征對其進行進一步分類,限高設施分類示意圖如圖1所示。

圖1 限高設施分類示意圖
限高桿桿體除了常見的黃黑相間的紋理外,還有紅白相間的紋理和純色無紋理的類型;限高橫桿主體除了單根類型外,還有前后并排雙根、上下平行雙根、上下平行多根、底層懸掛式桿體和異形限高桿等多種類型;部分限高桿上有限高標識牌,但限高標識牌懸掛的位置不固定,字體存在模糊不清的情況。對于橋洞類限高設施,其限高主體無紋理,與墻體的區別在于以橋洞限高主體下沿作為分界線,下方無實體。按照限高主體的造型可以分為水平型橋洞、拱門型橋洞、梯形橋洞3大類,與限高桿設備類似,部分橋洞懸掛限高標識牌。對于牌坊設施,常見于村鎮公路和景區門口,雖然紋理各不相同但其外形特征較為統一,均不懸掛限高標識,故牌坊不做分類。
對場景分類完成后采用基于深度學習的限高目標自動檢測算法,為了保證模型訓練的準確性,對不同場景的限高數據標注進行以下統一規范:1) 使用最小外接矩形框將限高設施主體完全包被;2) 對于有限高標識牌的限高設施,則將限高標識牌作為限高設施特征的一部分合并標注;3) 對于限高設施水平主體和兩側垂直固定區域連接處的2個直角特征,需要完整的被標注框包被;4) 對于橋洞類水平主體無紋理的限高設施,需要在最小外接矩形框高度的基礎上在其下方增加矩形框高度的20%的標注空間,用來與普通無紋理的墻體做區分。部分場景的標注效果如圖2所示,從左到右分別為雙橫梁限高桿、橋洞+限高桿、牌坊場景。

圖2 不同的限高設施標注效果圖
本文采集的限高數據對應的天氣情況主要分為晴朗天氣和陰天2種。雙目視覺公路限高實時預警算法的流程如圖3所示:首先,將雙目相機采集的限高場景的左目圖像作為輸入,利用目標檢測網絡Yolov5[9]對限高目標進行特征檢測,獲取限高目標的二維檢測框信息;然后,對二維檢測框內的視差數據進行多步多尺度濾波[10]算法后根據雙目視覺原理[11]計算限高目標距離相機的初步距離計算值和限高設施的初步高度計算值;最后,采用基于局部和全局的距離差分算法對初步計算的距離值、高度值進行有效性和合理性判定,準確且實時、穩定地輸出限高目標的測距、測高和預警信息。

圖3 雙目視覺公路限高實時預警算法流程
為了實現公路限高目標檢測的自動化,首先要進行限高目標的自動定位和提取[12]。為了獲取精度較高的視差數據,需要對立體匹配得到的視差數據進行多步多尺度濾波。
本文研究的公路限高場景繁雜且限高設施外造型多樣化,使用雙目相機的左目圖像作為目標檢測的輸入,為了保證在復雜場景中限高目標的自動檢測,本文采用YOLOv5s目標檢測算法,為了降低限高目標檢測過程中的漏檢率,在YOLOv5s目標檢測算法中加入ByteTrack[13]跟蹤算法,得到限高目標的二維檢測框。
本文使用的視差數據是通過雙目相機內部封裝的立體匹配[14]算法獲取,利用限高目標檢測得到的二維檢測框對獲取到的視差數據進行截取,得到連續幀圖像目標區域內的視差數據。
當雙目相機距離限高目標較遠時,通過對檢測框區域內的視差數據進行可視化分析發現,限高目標的視差數據中存在高度非均勻、離群點復雜、頻繁出現山谷分布以及包含不明強噪聲等問題,影響目標區域視差計算的精度。遠距離視差噪聲分布的可視化效果如圖4所示。
針對視差存在的問題,本文采用粗粒度濾波策略和多步多尺度的細粒度濾波策略對限高目標的視差數據進行清洗。
記ρ為每行視差數據中非零視差值所占的比率,2個清洗閾值分別為ρ1和ρ2,粗粒度濾波實現過程如下。
步驟1:對目標區域內的單行非零項目和單行所有項目分別求均值,若該行中有占比大于ρ的視差數據為0,將該行數據清零。
步驟2:對目標區域內的視差數據逐行進行處理,若當前像素的視差減該行的非零平均視差大于ρ1,將該像素的視差置為0。
步驟3:若當前像素視差小于清洗閾值ρ2,將該像素的視差值用非零均值填充。
經過粗粒度濾波后,視差數據中的大幅噪聲和近零視差均被濾除,替換為動態非零均值,接下來將對視差數據進行多步多尺度的細粒度濾波。假設限高設施處于水平狀態,細粒度濾波的目標是將粗粒度濾波得到的視差數據進行更精細的過濾,在目標區域內準確地定位限高目標的上沿和下沿。
細粒度濾波實現過程:給定細粒度濾波步數ST,細粒度濾波步長SL,動態迭代尺度DM,i∈[1,ST],動態迭代尺度公式為
DM=(ST+1)*SL-i*SL
步驟1:對粗粒度濾波得到的目標區域逐行求視差均值,并將該行中的所有大于視差均值與當前尺度DM之和的視差數據置為零。
步驟2:逐行求非零項目的平均值,將所有非零行中小于當前尺度DM的視差數據替換為該行的視差非零平均值。
步驟3:重復以上步驟直到循環結束,將限高區域內的所有非零視差數據的均值作為該限高目標最終的視差值DS和相機光心與限高目標下沿之間的像素高度值HP輸出。
本文的測距[15]和測高均基于3.2節濾波輸出后的視差數據DS,相機的安裝高度為HC,相機的焦距為f,基線長度為BL,限高目標和相機之間的距離為DT,限高目標下沿與相機光心之間的實際高度為HT,限高目標下沿與相機光心之間的像素高度為HP,限高目標距離地面的高度為H。
不同于靜止場景的測距測高任務,車輛在行駛過程中,車速存在非均勻變化、地面有不平激勵輸入、上下坡等多種不確定性因素,均會增加傳感器對限高目標測量的難度,同時為測距測高輸出帶來大量噪聲導致最終輸出數據波動大且不穩定。本文提出的魯棒性輸出策略對初始輸出的距離和高度數據進行處理,輸出準確魯棒的距離信息和高度信息。該策略應遵循以下2條假設:1) 限高設施表面是平整的;2) 速度變化盡可能合理,即輸出的距離差分要盡可能均勻。
由于輸入距離的不確定性,采用2種策略并行處理。首先,假設條件信號滿足高斯噪聲,由于視差計算的不確定性,同時距離預測本質上是一維線性信號問題,故利用卡爾曼濾波[16]對距離預測值進行濾波,盡可能降低噪聲的影響;其次,根據行車規律,為了達到單調性輸出的目標,盡可能遵循采集數據的規律,將距離信息還原。考慮到輸入的信號在距離限高設施較遠的時候以大幅度隨機分布為主,故采用局部鄰域的距離差分估計來擬合距離輸出。假設車輛以速度v1勻速前進,雙目相機幀率為n,從計算模塊輸出的連續N(N>30)幀對應的計算距離分別為D1,D2,…,DN-1,DN,距離輸出的具體步驟如下。
步驟1:根據車速v1和雙目相機幀率n計算距離差分閾值α,其中α=v1/n。
步驟2:計算第N幀和第N-1幀的距離差分值αN,當αN<=α時,將距離預測值DN作為最終距離預測值輸出,否則執行步驟3,其中αN=DN-DN-1。
步驟3:給定全局控制參數β,局部控制參數θ,以當前幀DN為基準,采用多項式擬合對[DN-β,DN-1]數據進行擬合,得到當前幀的全局距離預測值GD。
步驟4:若當前幀沒有檢測到目標,以當前幀DN為基準,利用直線擬合的方式對[DN-θ,DN-1]數據進行擬合得到預測值LD,將LD輸出。


步驟6:若未出現當前幀限高檢測失敗和連續幀檢測不到限高目標的情況,給定全局預測權值r和局部預測權值(1-r),將當前幀的全局預測值GD和局部預測值LD加權后輸出最終的距離預測值。
高度輸出部分由于高度計算與圖像中有效高度像素關聯較大,其計算精度與距離成正比,同時又受到限高設施是否水平、地面是否有不平激勵、是否存在上下坡等多種外部因素的影響,誤差范圍在近距離表現為高斯分布、椒鹽噪聲[17]、行車狀態和隨機噪聲,遠距離表現為近距離噪聲和大幅隨機噪聲。故本文采用近似于累加貝葉斯估計算法,將局部鄰域的有效值進行平均輸出,采用有效范圍的加權平均估計與小幅值加權均值估計結合,盡可能取小范圍進行輸出,具體步驟如下。
步驟1:用第N幀和第N-1幀的距離差分值αN和距離差分閾值α判斷第N幀的視差值是否有效。若無效,則將[HN-3,HN-1]連續3幀的高度有效預測值的平均值作為當前幀的高度預測值輸出;若N<3,則將前一幀高度預測值直接輸出;若當前幀視差值有效,則執行步驟2。
步驟2:以當前幀DN為基準,采用多項式擬合的方式對[HN-β,HN-1]數據進行擬合,預測當前幀的全局高度預測值GH。
步驟3:若當前幀沒有檢測到目標,以當前幀DN為基準,對[HN-θ,HN-1]求均值得到預測值LH。


步驟6:結合相機的安裝高度,將當前幀限高目標距離地面的最終預測高度H輸出。
將經過魯棒性輸出策略的距離預測值DT和高度預測值H輸出,車輛高度為H0,安全高度預警閾值MV,當H-H0>MV時,在輸出界面顯示可安全通過,不進行預警。否則,在DT∈(2 m,30 m] 時,進行一級預警;在DT∈(30 m,60 m]時,進行二級預警;在DT∈(60 m,100 m]時,進行三級預警。
考慮到公路限高場景具有非標性、種類多樣性、路況多樣性、天氣和光照多樣性、限高設施方位分布多樣性等特點,給公路限高實時檢測和測高帶來了極大的挑戰。數據規模的大小和數據場景的多樣性均是影響限高目標檢測精度和測高計算精度的關鍵因素,故本文采用實車搭載雙目相機在全國多個城市進行實地采集、在線虛擬采集和網絡圖像庫中人工收集的方式,構建大規模、多場景的公路限高數據集。
對收集的限高數據進行統計,本文構建的公路訓練數據集數據類型為單目限高圖像,數據規模為26 600幅,覆蓋了北京、上海、廣州等國內25個城市,包含85個限高桿場景,規模為 14 343;35個橋洞場景,規模為9 857;8個牌坊場景,規模為2 400。各類限高場景的規模分布如圖5所示。

圖5 數據集中各類限高數據規模分布圖
本文構建的公路限高測試集數據類型包括左目相機圖像、右目相機圖像、視差數據和相機內外參文件,數據規模為6 089。其中正樣本數據規模為4 558,負樣本數據規模為1 531,正樣本數據中包含12個限高桿場景,規模為2 996;6個橋洞場景,規模為1 120;2個牌坊場景,規模為442。公路限高測試集中的左目相機圖像數據用來做目標檢測實驗;左目相機圖像、視差數據和相機內外參數據用作目標檢測后的測距測高任務。
硬件設備:中科慧眼雙目相機焦距為8 mm、基線長度為119.5 mm、相機中心離地高度1 570 mm,分辨率為1 280×720,雙目相機與實驗車輛之間剛性固定。硬件設備CPU為Intel(R) Core(TM) i7-10700 CPU@2.90 GHz,GPU為NVIDIA GeForce RTX3090,內存為24 GB,實現平臺模塊為Matlab、Python 3.6、OpenCV等。實驗內容主要包括目標檢測實驗、測高精度實驗、輸出穩定性實驗等。
實驗工況:實驗地點主要在北京和大連,實驗路況包括平整公路路面、輕微不平激勵輸入路面和坡道路面,天氣工況僅考慮晴朗天氣及陰天,實驗車速保持在30~50 km/h之間。
在本文構建的規模為26 600幅圖像的公路限高雙目訓練集上使用YOLOv5s網絡訓練目標檢測模型,訓練1 200個epoch,總耗時136.4 h,訓練精度P達到98.8%,召回率R達到99.5%。
使用訓練好的模型在規模為4 458的限高測試集上進行測試實驗,實驗結果如表1所示;在規模為1 531的負樣本測試集上進行測試實驗,誤檢率為0.3%,對實驗結果進行統計得出本文算法的實際測距范圍為(0,100 m),限高檢測效果如圖6所示。

表1 YOLOv5s在公路限高測試集上的實驗結果

注:距離為28 m; 高度為2.25 m; 真值為2.28 m
測高精度實驗采用測試集中20組不同類型的限高場景,部分場景的測高結果如圖7—圖10所示。圖中所示的綠色基準線為限高設施的真值,綠色區域為高度真值±0.1 m的范圍,粉色區域為高度真值±0.2 m的范圍。對實驗結果進行統計,60 m內的測高平均誤差<4%,具有較高的測量精度。

圖7 測高精度(按距離分布場景1)

圖9 測高精度(按距離分布場景3)

圖10 測高精度(按距離分布場景4)
圖11為經過細粒度濾波后直接把測高計算值輸出效果與使用魯棒性輸出策略后的高度輸出效果對比。在測試場景1中,使用魯棒性策略輸出后的測高曲線整體的波動幅度收窄,測高輸出比使用魯棒性輸出策略前精度更高;在測試場景2中,[40 m,80 m]距離范圍內的測高精度和波動幅度均低于[8 m,40 m]距離范圍內的測高輸出,符合距離目標越近,視差精度越高的規律。

圖11 魯棒性輸出前后測高穩定性對比圖
在中遠距離范圍內,可以看出魯棒性輸出策略能夠有效地屏蔽車輛在行駛過程中由路況和車輛發動機振動產生的不確定性噪聲,同時能夠增加測高輸出的穩定性,平滑高度輸出曲線,給駕駛員帶來更加舒適的使用體驗,能夠滿足大型車車輛日常公路的限高場景使用要求。
1) 針對公路限高設施種類繁多、場景復雜導致限高目標檢測難的問題,構建大規模、高場景覆蓋度的限高數據集,并在測試集上得到98.77%的檢測精度,漏檢率為0.87%,誤檢率為0.36%,幀率為50FPS,可實現實時檢測。
2) 采用距離和高度魯棒性輸出策略,大幅提高測距輸出的合理性和測高輸出的穩定性。
3) 針對雙目相機在中遠距離下視差噪聲多、誤差大等問題,采用多步多尺度濾波算法處理視差數據,將60 m范圍內的限高目標測高平均誤差控制在4%以內,為大型車輛的駕駛員在通過公路限高場景時提供決策依據。
盡管本文算法能夠實現公路限高目標的自動檢測,以及實時魯棒地輸出測距、測高和預警信息,但面對更加復雜的場景,如有坡度的限高場景,大霧、大雪、大雨等低能見度限高場景還存在一定的局限。在后續工作中將采集復雜光照和復雜坡度的限高場景數據,進一步提高算法在低能見度限高場景和有坡度的限高場景下的測距測高精度。