自動駕駛感知,到底感知了個啥

今天我們來聊一聊自動駕駛中最核心的模組——感知。也正是由於撰寫這部分的文章難度非常大,因此幾次欲提筆創作結果又放棄,不過好在功夫不負有心人,我還是將這一部分的筆記及自己的思考整理出來了。

在瞭解感知模組到底在感知些啥之前,我們首先要了解一點,自動駕駛中的這部分感知其核心實際上是計算機視覺的範疇。因為掀起這一輪自動駕駛浪潮的正是自2012年開始的計算機視覺(卷積神經網路)大突破,這才有了自動駕駛技術的蓬勃發展。而同屬感知部分的毫米波雷達感知實際上在很早之前就已經在一些國外高階車型中作為輔助駕駛的感測器使用了。至於鐳射雷達,由於其高解析度,也常常被當做視覺感測器而採用視覺的方法進行處理。因此,可以說,想要學習感知,就必須先學習計算機視覺(Computer Vision, CV)。

自動駕駛感知,到底感知了個啥

對於我們人類而言,人類本身便具有眾多的感知器官——眼睛,能夠為我們提供絕大部分周圍環境的資訊,大小、距離、顏色等等。我們還有嗅覺、觸覺等一眾感知資訊作為參考,這些海量的資訊和資料最終彙總到人腦,經過複雜的至今也沒能研究透的神經細胞處理,讓人類時時刻刻知道自己所處的環境和情況。而自動駕駛的感知便是想要模仿人類的這種感知能力,從而為車輛的駕駛提供輸入資訊。這些資訊包括但不限於是否有障礙物、距離我多遠、車道線及路邊緣在哪,交通訊號燈是紅還是綠等等,所有與駕駛有關的資訊它都得提供。

我們總體上可以將感知分為四個子任務——檢測、分類、跟蹤和分割。檢測是最基本的感知任務,即找出環境中有哪些物體,這就像教幼兒園小朋友看圖說話一樣,找出圖中所有的物體。當然,在檢測這一步還會同時提供目標的距離、速度、方向等關鍵資訊,也為之後的分類跟蹤和分割做準備;分類,這個好理解,就是把你檢測到的物體分門別類,比如這是車、這是人、這是交通標誌等等;跟蹤,這個難度就稍大了些,即你不光要能探測到、對目標做出分類,你還需要進一步去追蹤他,隨著時間的推移觀察該物體,尤其是運動物體。分割在這裡更明確地說叫語義分割,它與分類最大的區別在於它能將一幅影象中每一個畫素與語義進行匹配,例如這一片是天空,那和藍天白玉會被分割成一整塊,而不是識別到一朵雲就把它貼個標籤,這是雲。語義分割對影象的理解能力又提升了一個維度,獲取到了更多更深層次的資訊。實際上這也更符合人類感知世界的方式,我們不會每路過一輛車、一棵樹都會說一遍,哦,它是車、它是樹,我們會從整體去感受整個環境,比如路兩旁都載滿了樹,道路上行駛著很多小汽車。

自動駕駛感知,到底感知了個啥

那麼車輛又是如何具體去進行感知和環境建模的呢?實際上,感測器在每一週期內會採集到豐富的資料,攝像頭是影象資料、雷達是點雲資料。這裡以影象資料為例,對於攝像頭而言,世界是由一個一個畫素點組成的,紅綠藍三原色透過不同的配比疊加在一起形成了我們看到的豐富多彩的世界。而這些影象資料實則是一個影象矩陣,每一塊都可以用數值來表示。有了這個數值矩陣作為表示,影象處理技術便得以施展。例如影象翻轉、變深變淡、提取特徵點等等。有了這些特徵點之後,我們便可以從影象中勾勒出目標物體的輪廓和形態,從而標註出這是什麼,對其進行分類。目前最常用的演算法便是卷積神經網路(CNN),我們可以將影象送入CNN網路,最後它會輸出檢測和分類的結果。接下來就需要進行目標追蹤,這種跨幀的目標檢測方式能夠讓車輛持續地對同一目標進行探測,它能知道上一幀和下一幀是有關聯的,不會憑空消失的。目前比較常用的演算法是卡爾曼濾波演算法,這也是解決這一類問題最經典的演算法。最後的語義分割為車輛提供了可行駛區域,這也為之後的路徑規劃與決策奠定了基礎。用於語義分割的演算法也是以CNN為基礎,不同於檢測分類演算法的是分割需要確保輸出影象大小與原輸入影象大小一致,因此網路結構有所改變,需要編碼器提取特徵,再透過解碼器還原影象從而產生上圖我們看到的分割好的影象。

本次的文章從核心的感知模組入手,回答了感知到底在感知啥的問題,同時也簡單介紹了常用的演算法。之後也會對細節和後續模組展開介紹和深入的研究,歡迎大家點贊關注,謝謝!

本文首發於零束開發者論壇

原文地址:https://bbs。z-onesoft。com/omp/community/front/api/page/mainTz?articleId=7665