1. 程式人生 > >【無人駕駛系列三】基於計算機視覺的無人駕駛感知系統

【無人駕駛系列三】基於計算機視覺的無人駕駛感知系統

本文是無人駕駛技術系列的第三篇,著重介紹基於計算機視覺的無人駕駛感知系統。在現有的無人駕駛系統中,LiDAR是當仁不讓的感知主角。但是由於LiDAR的成本高等因素,業界有許多是否可以使用成本較低的攝像頭去承擔更多感知任務的討論。本文探索了基於計算機視覺的無人駕駛感知方案。首先,驗證一個方案是否可行需要一個標準的測試方法,我們介紹了廣泛被使用的無人駕駛視覺感知資料集KITTI。然後,我們討論了在無人駕駛場景中使用到的具體計算機視覺技術,包括Optical Flow和立體視覺、物體的識別和跟蹤以及視覺里程計演算法。

無人駕駛的感知

在無人駕駛技術中,感知是最基礎的部分,沒有對車輛周圍三維環境的定量感知,就有如人沒有了眼睛,無人駕駛的決策系統就無法正常工作。為了安全與準確的感知,無人駕駛系統使用了多種感測器,其中可視為廣義“視覺”的有超聲波雷達、毫米波雷達、鐳射雷達(LiDAR)和攝像頭等。超聲波雷達由於反應速度和解析度的問題主要用於倒車雷達,毫米波雷達和鐳射雷達承擔了主要的中長距測距和環境感知,而攝像頭主要用於交通訊號燈和其他物體的識別。

LiDAR由於出色的精度和速度,一直是無人駕駛感知系統中的主角,是釐米級的高精度定位中不可或缺的部分。但是正如本系列第一篇文章《光學雷達在無人駕駛技術中的應用》分析,LiDAR存在成本昂貴、空氣中的懸浮物影響精度等問題,毫米波雷達雖然相比LiDAR可以適應較惡劣的天氣和灰塵,但也需要防止其他通訊裝置和雷達間的電磁波干擾。

傳統計算機視覺領域的主要研究方向是基於可見光的攝像頭的視覺問題,從攝像頭採集的二維影象推斷三維物理世界的資訊。那麼最常見、成本較低的攝像頭能不能承擔更多的感知任務呢?在本文中,我們將探索基於計算機視覺的無人駕駛感知方案。首先,要驗證一個方案是否可行,我們需要一個標準的測試方法。本文將介紹由德國卡爾斯魯厄技術研究院(KIT)和豐田芝加哥技術研究院(TTIC)共同開發的KITTI資料集。在有了標準的資料集之後,研究人員可以開發基於視覺的無人駕駛感知演算法,並使用資料集對演算法進行驗證。我們將介紹計算機視覺在無人駕駛感知方面的前沿研究,包括光流(Optical Flow)和立體視覺、物體的檢測和跟蹤以及視覺里程計演算法。

KITTI資料集

KITTI資料集是由KIT和TTIC在2012年開始的一個合作專案,網站在http://www.cvlibs.net/datasets/kitti/,這個專案的主要目的是建立一個具有挑戰性的、來自真實世界的測試集。他們使用的資料採集車配備了:

  • 一對140萬畫素的彩色攝像頭Point Grey Flea2(FL2-14S3C-C),採集頻率10赫茲。
  • 一對140萬畫素的黑白攝像頭Point Grey Flea2(FL2-14S3M-C),採集頻率10赫茲。
  • 一個鐳射雷達Velodne HDL-64E。
  • 一個GPS/IMU定位系統OXTSRT 3003。

圖片描述

圖1 資料採集車

圖1這輛車在卡爾斯魯厄的高速公路和城區的多種交通環境下收集了資料,用鐳射雷達提供的資料作為ground truth,建立了面向多個測試任務的資料集:

  • Stereo/Optical Flow資料集:如圖2,資料集由圖片對組成。一個Stereo圖片對是兩個攝像頭在不同的位置同時拍攝的,Optical Flow圖片對是同一個攝像頭在相鄰時間點拍攝的。訓練資料集有194對,測試資料集有195對,大約50%的畫素有確定的偏移量資料。

Stereo/Optical Flow資料集

圖2 Stereo/Optical Flow資料集

  • 視覺里程測量資料集:如圖3,資料集由22個Stereo圖片對序列組成,一個4萬多幀,覆蓋39.2公里的里程。

視覺里程測量資料集

圖3 視覺里程測量資料集

  • 三維物體檢測資料集:手工標註,包含轎車、廂車、卡車、行人、自行車者、電車等類別,用三維框標註物體的大小和朝向,有多種遮擋情況,並且一張圖片通常有多個物體例項,如圖4。

三維物體檢測資料集

圖4 三維物體檢測資料集

  • 物體追蹤資料集:手工標註,包含21個訓練序列和29個測試序列,主要追蹤目標型別是行人和轎車,如圖5。

物體追蹤資料集

圖5 物體追蹤資料集

  • 路面和車道檢測資料集:手工標註,包含未標明車道、標明雙向單車道和標明雙向多車道三種情況,289張訓練圖片和290張測試圖片,ground truth包括路面(所有車道)和自車道,如圖6。

路面和車道檢測資料集

圖6 路面和車道檢測資料集

和以往計算機視覺領域的資料集相比,KITTI資料集有以下特點:

  • 由無人駕駛車上常見的多種感測器收集,用LiDAR提供高精度的三維空間資料,有較好的ground truth。
  • 不是用計算機圖形學技術生成的,更加接近實際情況。
  • 覆蓋了計算機視覺在無人駕駛車上應用的多個方面。

由於這些特點,越來越多的研究工作基於這個資料集開展,一個新的演算法在這個資料集上的測試結果有較高的可信度。

計算機視覺能幫助無人駕駛解決的問題

計算機視覺在無人車上的使用有一些比較直觀的例子,比如交通標誌和訊號燈的識別(Google)、高速公路車道的檢測定位(特斯拉)。現在基於LiDAR資訊實現的一些功能模組,其實也可以用攝像頭基於計算機視覺來實現。下面我們介紹計算機視覺在無人駕駛車上的幾個應用前景。當然,這只是計算機視覺在無人車上的部分應用,隨著技術的發展,越來越多的基於攝像頭的演算法會讓無人車的感知更準確、更快速、更全面。

計算機視覺在無人車場景中解決的最主要的問題可以分為兩大類:物體的識別與跟蹤,以及車輛本身的定位。

  • 物體的識別與跟蹤:通過深度學習的方法,我們可以識別在行駛途中遇到的物體,比如行人、空曠的行駛空間、地上的標誌、紅綠燈以及旁邊的車輛等。由於行人以及旁邊的車輛等物體都是在運動的,我們需要跟蹤這些物體以達到防止碰撞的目的,這就涉及到Optical Flow等運動預測演算法。

  • 車輛本身的定位:通過基於拓撲與地標演算法,或者是基於幾何的視覺里程計演算法,無人車可以實時確定自身位置,滿足自主導航的需求。

Optical Flow和立體視覺

物體的識別與跟蹤,以及車輛本身的定位都離不開底層的Optical Flow與立體視覺技術。在計算機視覺領域,Optical Flow是圖片序列或者視訊中畫素級的密集對應關係,例如在每個畫素上估算一個2維的偏移向量,得到的Optical Flow以2維向量場表示。立體視覺則是從兩個或更多的視角得到的影象中建立對應關係。這兩個問題有高度相關性,一個是基於單個攝像頭在連續時刻的影象,另一個是基於多個攝像頭在同一時刻的圖片。解決這類問題時有兩個基本假設:

  • 不同影象中對應點都來自物理世界中同一點的成像,所以“外觀”相似。

  • 不同影象中的對應點集合的空間變換基本滿足剛體條件,或者說空間上分割為多個剛體的運動。從這個假設我們自然得到Optical Flow的二維向量場片狀平滑的結論。

在今年6月於美國拉斯維加斯召開的CVRP大會上,多倫多大學的Raquel Urtasun教授和她的學生改進了深度學習中的Siamese網路,用一個內積層代替了拼接層,把處理一對圖片的時間從一分鐘左右降低到一秒以內。

圖片描述

圖7 Siamese結構的深度神經網路

如圖7所示,這個Siamese結構的深度神經網路分左右兩部分,各為一個多層的卷積神經網路(CNN),兩個CNN共享網路權重。Optical Flow的偏移向量估計問題轉化為一個分類問題,輸入是兩個9x9的圖片塊,輸出是128或者256個可能的偏移向量y。通過從已知偏移向量的圖片對中抽取的圖片塊輸入到左右兩個CNN,然後最小化交叉熵(cross-entropy):

圖片描述

我們可以用監督學習的方法訓練整個神經網路。

  • i是畫素的指標。
  • y_i是畫素i可能的偏移向量。
  • p_gt是一個平滑過的目標分佈,用來給一兩個畫素的預估誤差反饋一個非0的概率,gt表示ground truth。
  • p_i (y_i,w)是神經網路輸出的給定wy_i的概率。

在KITTI的Stereo2012資料集上,這樣一個演算法可以在0.34秒完成計算,並達到相當出色的精度,偏移估計誤差在3-4畫素左右,對大於3畫素的偏移估計誤差在8.61畫素,都好於其他速度慢很多的演算法。

在得到每個畫素y_i上的分佈後,我們還需要加入空間上的平滑約束,這篇文章試驗了三種方法:

  • 最簡單直接的5x5視窗平均。
  • 加入了相鄰畫素一致性的半全域性塊匹配(Semi Global Block Matching,SGBM)。
  • 超畫素+3維斜面。

這些平滑方法一起,能把偏移估計的誤差再降低大約50%,這樣一個比較準確的2維偏移向量場就得到了。基於它,我們就能夠得到如圖8所示場景3維深度/距離估計。這樣的資訊對無人駕駛非常重要。

圖片描述

圖8 深度資訊圖

物體的識別與追蹤

從畫素層面的顏色、偏移和距離資訊到物體層面的空間位置和運動軌跡,是無人車視覺感知系統的重要功能。無人車的感知系統需要實時識別和追蹤多個運動目標(Multi-ObjectTracking,MOT),例如車輛和行人。物體識別是計算機視覺的核心問題之一,最近幾年由於深度學習的革命性發展,計算機視覺領域大量使用CNN,物體識別的準確率和速度得到了很大提升,但總的來說物體識別演算法的輸出一般是有噪音的:物體的識別有可能不穩定,物體可能被遮擋,可能有短暫誤識別等。自然地,MOT問題中流行的Tracking-by-detection方法就要解決這樣一個難點:如何基於有噪音的識別結果獲得魯棒的物體運動軌跡。在ICCV 2015會議上,斯坦福大學的研究者發表了基於馬爾可夫決策過程(MDP)的MOT演算法來解決這個問題,下面我們就詳細介紹這個工作。

運動目標的追蹤用一個MDP來建模(圖9):

圖片描述

圖9 DMM狀態圖

  • 運動目標的狀態:s∈S=S_active∪S_tracked∪S_lost∪S_inactive,這幾個子空間各自包含無窮多個目標狀態。被識別到的目標首先進入active狀態,如果是誤識別,目標進入inactive狀態,否則進入tracked狀態。處於tracked狀態的目標可能進入lost狀態,處於lost狀態的目標可能返回tracked狀態,或者保持lost狀態,或者在足夠長時間之後進入inactive狀態。
  • 作用a∈A,所有作用都是確定性的。
  • 狀態變化函式T:S×A→S定義了在狀態s和作用a下目標狀態變為s'
  • 獎勵函式R:S×A→R定義了作用a之後到達狀態s的即時獎勵,這個函式是從訓練資料中學習的。
  • 規則π:S→A決定了在狀態s採用的作用a

如圖10,這個MDP的狀態空間變化如下:

圖片描述

圖10 狀態轉換例項

  • active狀態下,物體識別演算法提出的物體候選通過一個線下訓練的支援向量機(SVM),判斷下一步的作用是a_1還是a_2,這個SVM的輸入是候選物體的特徵向量,空間位置大小等,它決定了在S_active中的MDP規則π_active

  • tracked狀態下,一個基於tracking-learning-detection追蹤演算法的物體線上外觀模型被用來決定目標物體是否保持在tracker狀態還是進入lost狀態。這個外觀模型(appearance model)使用當前幀中目標物體所在的矩形(bounding box)作為模板(template),所有在tracked狀態下收集的物體外觀模板在lost狀態下被用來判斷目標物體是否回到tracked狀態。另外在tracked狀態下,物體的追蹤使用上述外觀模型模板,矩形範圍內的Optical Flow和物體識別演算法提供的候選物體和目標物體的重合比例來決定是否保持在tracked狀態,如果是,那麼目標物體的外觀模板自動更新。

  • lost狀態下,如果一個物體保持lost狀態超過一個閾值幀數,就進入inactive狀態;物體是否返回tracked狀態由一個基於目標物體和候選物體相似性特徵向量的分類器決定,對應了S_lost中的π_lost

這個基於MDP的演算法在KITTI資料集的物體追蹤評估中達到了業界領先水平。

視覺里程計演算法

基於視覺的定位演算法有兩大分類:一種是基於拓撲與地標的演算法,另一種是基於幾何的視覺里程計演算法。基於拓撲與地標的演算法把所有的地標組成一個拓撲圖,然後當無人車監測到某個地標時,便可以大致推斷出自己所在的位置。基於拓撲與地標的演算法相對於基於幾何的方法容易,但是要求預先建立精準的拓撲圖,比如將每個路口的標誌物做成地標。基於幾何的視覺里程計演算法計算比較複雜,但是不需要預先建立精準的拓撲圖,這種演算法可以在定位的同時擴充套件地圖。以下著重介紹視覺里程計演算法。

視覺里程計演算法主要分為單目以及雙目兩種,純單目的演算法的問題是無法推算出觀察到的物體的大小,所以使用者必須假設或者推算出一個初步的大小,或者通過與其它感測器(如陀螺儀)的結合去進行準確的定位。雙目的視覺里程計演算法通過左右圖三角剖分(Triangulation)計算出特徵點的深度,然後從深度資訊中推算出物體的大小。圖11展示了雙目視覺里程計演算法的具體計算流程:

圖片描述

圖11 雙目視覺里程計演算法的計算流程

  1. 雙目攝像機抓取左右兩圖。
  2. 雙目影象經過Triangulation產生當前幀的視差圖(Disparity Map)。
  3. 提取當前幀與之前幀的特徵點,如果之前幀的特徵點已經提取好了,那麼我們可以直接使用之前幀的特徵點。特徵點提取可以使用Harris Corner Detector。
  4. 對比當前幀與之前幀的特徵點,找出幀與幀之間的特徵點對應關係。具體可以使用隨機抽樣一致(RANdom Sample Consensus,RANSAC)演算法。
  5. 根據幀與幀之間的特徵點對應關係,推算出兩幀之間車輛的運動。這個推算是最小化兩幀之間的重投影誤差(Reprojection Error)實現的。
  6. 根據推算出的兩幀之間車輛的運動,以及之前的車輛位置,計算出最新的車輛位置。

通過以上的視覺里程計演算法,無人車可以實時推算出自己的位置,進行自主導航。但是純視覺定位計算的一個很大問題是演算法本身對光線相當敏感。在不同的光線條件下,同樣的場景不能被識別。特別在光線較弱時,影象會有很多噪點,極大地影響了特徵點的質量。在反光的路面,這種演算法也很容易失效。這也是影響視覺里程計演算法在無人駕駛場景普及的一個主要原因。一個可能的解決方法,是在光線條件不好的情況下,更加依賴根據車輪以及雷達返回的資訊進行定位,這將會在後續的文章中詳細討論。

結論

在本文中,我們探索了基於視覺的無人駕駛感知方案。首先,要驗證一個方案是否可行,我們需要一個標準的測試方法。為此我們介紹了無人駕駛的標準KITTI資料集。在有了標準的資料集之後,研究人員可以開發基於視覺的無人駕駛感知演算法,並使用資料集對演算法進行驗證。然後,我們詳細介紹了計算機視覺的Optical Flow和立體視覺、物體的識別和跟蹤與視覺里程計演算法等技術,以及這些技術在無人駕駛場景的應用。視覺主導的無人車系統是目前研究的前沿,雖然目前各項基於視覺的技術還沒完全成熟,我們相信在未來五年,如果LiDAR的成本不能降下來,基於攝像機的視覺感知會逐步取代LiDAR的功能,為無人車的普及打好基礎。

從計算機視覺的角度,無人駕駛可能是一次難得的機遇,無人車產業爆發帶來的資源、無人車收集的大量真實世界資料和LiDAR提供的高精度三維資訊可能意味著計算機視覺將要迎來“大資料”和“大計算”帶來的紅利,資料的極大豐富和演算法的迭代提高相輔相成,會推動計算機視覺研究前進,並使之在無人駕駛中起到更加不可或缺的作用。

無人駕駛技術系列: