摘要:自動駕駛領域最近的發展表明,這些車輛在不久的將來會出現在每個城市的街道上,而這些城市不會容忍交通事故的發生。為了保證安全需求,自動駕駛汽車和被使用的軟件必須在盡可能多的條件下進行詳盡的測試。通常被考慮的影響因素越多,測試越全面,一般情況下,汽車就越安全。然而,在每次產生或希望產生特定的場景之前,都要反復地記錄相同的測試集,這是一種非常耗費時間和資源的過程,特別是在使用真實車輛測試的時候。這就需要用環境模擬進行仿真測試。
本課題通過對環境的仿真模擬,研究了影響自動駕駛車輛傳感器的環境因素。主要模擬了下雨環境中,擋風玻璃上的雨滴是如何影響攝像頭成像的。我們提出了一種新的方法,利用基于R-樹連續最近鄰查詢算法來渲染雨滴。攝像頭前的3D場景由立體圖像生成,這些水滴被設置了真實的物理特性。所構建的模擬環境真實,派生的圖像可以用來擴展用于機器學習的訓練數據集,而不必強制獲取新的真實圖像。
這篇論文的第一作者為 Alexander von Bernuth, 來自德國圖賓根大學Wilhelm Schickard計算機科學研究所計算機工程系主任。
Rendering Physically Correct Raindrops on Windshields for Robustness Verification of Camera-based Object Recognition
Alexander von Bernuth, Georg Volk and Oliver Bringmann University of Tubingen, ¨ {bernuth, volkg, bringmann}@informatik.uni-tuebingen.de
惡劣天氣狀況仿真模擬測試的必要性
自動駕駛汽車將使世界各地的研究人員和制造商在很長一段時間內都處于忙碌的狀態。這是因為自動駕駛汽車在未來可能會成為公共交通的主導,而且必須經過徹底的安全驗證。如果像車輛或行人檢測這樣的關鍵系統沒有進行最全面的測試,這個檢測覆蓋所有能想到的環境影響,以及所有可能的組合,難以想象會發生什么。比如在陰天的陽光下,有背光和臟鏡頭的情況。
在測試過程中希望隨機遇到或者刻意設計所有這些邊緣場景的組合,看起來都非常愚蠢的。根據分析師的觀點,一輛載有所有待測試技術的汽車必須以109公里的速度駕駛沒有出錯,才有資格獲得ISO 26262 [1]標準。此外,車輛的任何部分接收到更新時,都需要重新運行所有測試。
因此,許多制造商面臨的主要挑戰之一是時間密集型測試,特別是在原型車中調度大量的測試驅動程序。一種可能的解決方案是依靠一個相對較短的驅動器,并通過模擬不同的環境影響因素通過隨機組合來生成多個版本。雖然目前已經有人對這些環境影響因素進行了一些模擬研究,但尚未探索的天氣條件和影響仍然很多。
我們自己的調查得出的結論是,下雨時,如果不是暴雨,不會影響目標或交通標志檢測算法。因此,本文研究了在相機或相機鏡頭前擋風玻璃上放置被渲染的雨滴以及這些雨滴對物體識別算法的影響。本文的第一部分將綜述了其他學者的研究,重點研究在攝像機前和攝像機上模擬雨和塵埃等影響。第二部分關注的是水滴的產生,從場景重建開始,到我們的射線追蹤法結束。之后,第三部分將介紹結果和應用。在第四部分中,我們討論調查結果并提出可以改善方法和未來工作。
下雨場景天氣模擬研究現狀
大多數與天氣和環境相關的模擬研究都集中在游戲中的直接使用或合成場景的渲染,只有很少的研究考慮到環境的物理特性。到目前為止,所有的論文作品都沒有研究雨滴在鏡頭前的影響,但在某些情況下,他們對水滴的描述非常準確。Starik 和 Werman 的工作使用了3D場景,該場景假設在任何地方都具有相同深度[2]。他們從視頻中提取雨的特征,并將學習過的蒙版應用到沒有下雨的圖像上。然而他們忽略了單個雨滴的物理特性,如果從視差圖中提取場景的深度,考慮更確切的情況可能會有更好的結果[3],[4]。實現上述這些是可行的,因為作者在視頻采集時使用的是立體相機,他們用攝像頭和物體把空間分隔成小部分,通過計算這些部分的正確雨量并在OpenGL中渲染雨滴。
Hospach和Muller研究把雨滴抽象成非常薄的三角形,它們呈現出多彩的白色,并且他們混合比例基于降雨強度。這個技巧需要快速顯卡來支持渲染。他們忽略了折射等效果,因為差異很小。
Wang等人使用光線追蹤來渲染雨滴,這種方法依賴于光源精確位置信息[5]。作者將來自不同光源的光線射向所有雨滴,并根據 Phong 照明模型計算像素顏色。不發光的物體被篩掉,而且不會在雨滴中發生折射。
與本文相比,最相似的論文是T. Sato的論文,但是他們為了滿足實時約束做了許多簡化的假設[6]。作者將視頻圖像映射到攝像頭的前面單個半球,而不管物體與攝像頭的真實距離如何。然后,他們向雨滴占領的每個像素投射光線,并檢查這些光線與半球接觸形成的圖像。相應的像素值將在渲染雨滴時用作紋理元素。
許多研究雨滴在擋風玻璃上的研究人員關注的是它們的定位、合并和移動。不同的工作大都集中在模擬流體動力學[7]-[11]。 Extrand等人研究放置在傾斜表面上的水滴的形狀,如玻璃板[12]。 Garg和Nayar [13]做了更多有關下落過程水形狀的研究。此外,還有人在竭盡全力描述水滴的物理和光學特性[14]。不同的研究人員采用了完全不同的方法,有人通過檢測并去除圖像中的雨滴,而不是創建這些雨滴[15],[16]。由于所描述的方法利用了一些有趣的物理性質,因此可以從移除雨滴的方法中學到很多東西。
之前發表的論文都局限于單一的雨滴,靜止和下降,忽略了相機的環境是三維場景。要么他們完全忽略了深度,要么作出廣泛的假設,也忽略了水滴中場景物體的正確折射。我們的方法將所有這些考慮在內。仿真結果接近于真實照片,這對于訓練神經網絡的數據集來說是非常必要的。
點云渲染的方法
關于點云的渲染,現有許多不同的方法。一種是創建一個表示曲面的網格,并將圖像作為紋理映射到它們上[17]。其他人也使用大量的預處理來創建多個深度圖并逐步細化渲染[18]。但即使網格劃分簡單且便宜,我們也不得不填補出現在樹木或汽車等物體后面的間隙。如果不是固定的,這些縫隙可能會導致黑點,因為它們可能會將光線折射到通??床灰姷膮^域。
Schaufler和Jensen將光線射入點云并搜索超過某個閾值的點密度[19]。在一個范圍內的所有點都被用于表面法線和位置的插值。這樣就避免了昂貴的3D重建。不幸的是,如果沒有足夠的點或沒有足夠密集地采樣,表面上可能會出現孔。這些孔將表現為黑色區域,并且尤其出現在具有非常不同深度的物體的邊緣附近,例如在天空的前方看到一個交通標志。 Adnoni等人提出了另一種尋找線段最近鄰的方法 [20]。它們在高維搜索時使用近似值。
Adnoni等人提出了另一種尋找線段最近鄰的方法 [20],它們在高維搜索時使用近似值。這不一定適用于我們的用例,并且涉及復雜的數據結構,這對我們做三維來說太難了。
上面提到的所有論文都沒有將雨滴的真實渲染環境和有限場景中找到相應的對象并用最先進的目標檢測算法結合起來。本文將完成以上所有內容,并額外展示了訓練渲染圖片的神經網絡模型,這可能會給現代物體識別帶來幫助。
基于最近鄰查詢算法的雨滴下落仿真
為了描述出物體折射和雨滴渲染相結合的場景,必須將其作為點云以3D形式再現。這個過程需要了解場景的深度??梢允褂脤O幾何(對應于深度的視差圖)或利用LiDAR或其他傳感器來計算每個像素與相機距離的深度圖。場景計算完成后,必須對擋風玻璃上的雨滴進行建模。我們用一個簡單而強大的抽象模型:每一滴水都被擋風玻璃切斷的球體所代表。
這就看起像一個球形帽,起碼在幾何上很容易處理。然后,光線會投射到由投影面積的每個圖像像素上,并在這些像素中發生折射。產生的射線被發送到場景中,并搜索點云中最近的位置。這一點的顏色決定了降落的像素顏色。搜索兩百萬個點中的其中一個點的最近鄰點可能是微不足道而且是快速的,用同樣的方法搜索空間中的一條線就顯得非常費勁。只有使用連續最近鄰搜索才能使此方法可行。
1.場景重建
第一步是攝像機前場景的三維重建。在處理來自(校準過的)立體相機的圖像時,可以使用立體重建計算相機到每個像素的距離[21]。其他方法也可以用額外的傳感器,如LiDAR來捕捉深度。我們用的數據集是Cityscapes[22]中的圖像。它由數千張包含各種街景的圖片組成,使用立體相機拍攝,并帶有預先計算的視差圖。這些可以很容易地轉換成深度圖。 VIRES虛擬測試驅動軟件[23]是我們使用的具有相應深度圖像的另一個來源。深度圖非常精確,因為它們基于地面實況數據。此外,可以使用汽車(用戶或計算機控制的),行人和其他障礙物快速構建自定義場景。我們用于物體檢測的圖像來源是KITTI數據集[24]。深度圖使用Hirschmuller匹配算法 [25] 的OpenCV來計算。
結合深度和顏色信息,我們可以定位攝像頭的三維位置。通過公式可以求得所有像素組成的3D點云,如圖1所示。這些點云呈現了在渲染雨滴場景中物體的圖像。
2.下落模型
一旦完成3D表示,就有必要在虛擬擋風玻璃上創建和分配雨滴。 單個雨滴被模擬為球帽狀。這個帽子的特點是它的中心c,半徑r,高度和法線n(從基座指向圓頂)。生成雨滴意味著設置固定的z值(從相機到擋風玻璃的距離),隨機或故意設置每個雨滴的x和y坐標,高度和半徑。當高度和半徑相關時,一個值就能通過另一個值求得[26]。 我們選擇h = tan(θ/ 2)·d,其中h表示液滴高度,θ表示液滴的接觸角,d表示液滴直徑。 Park等人在觀察半徑為2mm的液滴時,接觸角θ被確定為大約87° [27]。 相應的法線簡單地指向與相機視角矢量相同的方向。當向前傾斜擋風玻璃時,所有下降中心和法線也圍繞x軸旋轉。
3.折射
在折射場景形成之前,我們將從相機發出的光線照射到圖像平面中的每個像素。為了減少計算工作量,只有光線落在圓點的后面(具有中心,半徑和法線的圓)才被跟蹤。所有其他光線都被丟棄,并且來自原始圖像的像素值被用于最終的圖像。在雨滴下落的過程中,我們折射的射線遵循斯奈爾定律。有關折射的更多信息,請參閱已建立的文獻[28]。折射的光線落在雨滴內, 然后,通過生成垂直于法線的隨機矢量并且只要下降半徑來計算球體的中心。加上正常縮放到半徑長度,我們現在有四個點位于球體上,足以計算球體的中心[29]。在全內反射的情況下,所得到的光線不會被進一步折射。每種折射的視覺表示可以在圖2中找到。
4.最近鄰查詢算法
接下來,我們將計算光線中最近鄰的像素來推遲光線等效像素的顏色。此點的顏色分配給相應的像素,并在展示位置中可見。找到神經網絡的一個非常簡單的方法是查看每條射線的每個點,計算從該點到射線的距離并取最近的點。即使在允許快速最近鄰(NN)查詢的R樹中組織點后,也可以對光進行采樣,并搜索每個樣本的NN。最后,我們選擇了連續最近鄰搜索[31],因為它不僅提供了一個精確的最近鄰點,而且在包含超過兩百萬個點的大型點云中,很短時間內(僅僅是毫秒)就能完成搜索。
在數據集里評估該算法的質量
為了評估我們的光線跟蹤算法的質量,我們用完全渲染場景,忽略雨滴和拍攝光線通過每個像素進行對比。這允許進行詳細的錯誤檢測。在圖4中可以由相減圖像和取絕對值的差分圖像。像素越亮,兩個圖像之間的差異越高。顯然,不同深度的物體的邊緣顯示出不同的差異。這是因為前面提到的Z值問題,但遠好于完全沒有修正情況下的識別。
作為雨滴渲染的例子,我們從Cityscapes數據集中獲取一幅圖像,隨機生成雨滴并渲染了這些圖像。結果可以在圖5中找到。
為了測試物體識別算法的能力,我們將其應用于KITTI數據集中排名最高的神經網絡模型算法中??梢灶A料到的是,大雨滴可能會遮擋像行人的小物體或行駛車輛的部分外觀,可能會讓在完美圖像上訓練過的神經網絡產生混淆。
我們使用的網絡是一個單階段對象檢測網絡[31]的循環滾動卷積(RRC)網絡。它目前在KITTI數據集中排名第四。利用相應的立體圖像重建了450個KITTI數據集的模擬雨滴場景。這些圖像用作RRC網絡的輸入。使用沒有雨滴的相同圖像做為對比。這個過程的概述可以在圖6中找到。
通過計算中[35]常用的測量平均精度(mAP)來評估結果。表I中的結果表明,當圖像中存在雨滴時,總體平均精度下降了1.18%,整體平均精度下降了0.37%。 此外,我們發現像行人這樣的小物體更容易被雨滴遮擋(mAP減少4%),而不像汽車這樣的大物體。在頂部神經網絡的識別率相差百分之零點幾的時候,即使是很小的改進,也會給予其他人很多幫助。
該研究的結果與應用
這項研究提出了僅基于一對立體圖像的人為創建雨滴方法。物理上正確的折射和反射包含在我們的模型中,以及一些允許更快開發的簡化。然而,結果是顯著的。我們在一個傾斜的擋風玻璃上實現了照片真實的雨滴下落,并呈現了他們折射出的所有物體。盡管雨滴用球帽狀做了簡化,但我們的水滴看起來很逼真。
我們的光線跟蹤方法產生了一個3D場景的近乎完美的渲染,沒有昂貴的網格和紋理的預計算。甚至像交通標志這樣的小物體也不會在整個場景中丟失;車牌中的字母也是可讀的。這是可能的,而3D場景重建依賴于特征匹配和具有離散值的視差圖。神經網絡處理的對象檢測,另外訓練與雨滴準備的圖像可以獲得更好的結果,并超越其他競爭對手。這項工作可以導致更好的整體得分和魯棒性的傳感器缺陷,這些機器學習算法。
處理目標檢測的神經網絡還額外使用雨滴制作的圖像進行訓練,取得良好的效果。這項工作可以為這些機器學習算法提供更好的總體分數和魯棒性。 到目前為止,我們的連續NN搜索運行在最多8個CPU內核上(這是我們的CPU,Intel i7-7700K提供的最高線程數)。在那里,每個KITTI圖像的運行時間大約3分鐘。雨滴越小越少,計算速度越快。
該算法的一個有趣的應用可能是使用它生成圖像,作為Iseringhausen等人工作的輸入[37]。他們在場景前面的玻璃板上使用水滴作為光場照相機,這些水滴在不同位置上用作多個鏡頭。通過逆向工程設計投影形狀,他們可以推斷出背后的場景,并能從不同的角度創建3D渲染圖,這正好與我們的工作相反。
-
驅動器
+關注
關注
52文章
8228瀏覽量
146271 -
神經網絡
+關注
關注
42文章
4771瀏覽量
100721 -
自動駕駛
+關注
關注
784文章
13787瀏覽量
166407
原文標題:IEEE IV 2018:如何構建出逼真的下雨天場景,來驗證物體識別的魯棒性?德國圖賓根大學做到了
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論