深入探討自動駕駛中的2D和3D視覺感知演算法
環境感知是自動駕駛的第一環,是車輛和環境互動的紐帶。一個自動駕駛系統整體表現的好壞,很大程度取決於感知系統的好壞。目前,環境感知技術有兩大主流技術路線:
①以視覺為主導的多感測器融合方案,典型代表是特斯拉;
②以雷射雷達為主導,其他感測器為輔助的技術方案,典型代表如Google、百度等。
我們將圍繞著環境感知中關鍵的視覺感知演算法進行介紹,其任務涵蓋範圍及其所屬技術領域如下圖所示。我們在下文中分別梳理了2D和3D視覺感知演算法的脈絡和方向。
2D視覺感知
本節我們先從廣泛應用於自動駕駛的幾個任務出發介紹2D視覺感知演算法,包括基於影像或視訊的2D目標檢測和跟踪,以及2D場景的語義分割。近年來,深度學習滲透到視覺感知的各個領域,取得不錯的成績,因此,我們梳理了一些經典的深度學習演算法。
1.目標偵測
1.1 兩階段偵測
兩階段指的是實作偵測的方式有先後兩個過程,一是提取物體區域;二是對區域進行CNN分類識別;因此,「兩階段」又稱基於候選區域(Region proposal)的目標檢測。代表性演算法有R-CNN系列(R-CNN、Fast R-CNN、Faster R-CNN)等。 Faster R-CNN是第一個端對端的偵測網路。第一階段利用一個區域候選網路(RPN)在特徵圖的基礎上產生候選框,使用ROIPooling對齊候選特徵的大小;第二階段以全連接層做細化分類和回歸。
這裡提出了Anchor的思想,減少運算難度,提高速度。特徵圖的每個位置會產生不同大小、長寬比的Anchor,用來作為物體框迴歸的參考。 Anchor的引入使得迴歸任務只用處理相對較小的變化,因此網路的學習會更加容易。下圖是Faster R-CNN的網路結構圖。
CascadeRCNN第一階段和Faster R-CNN完全一樣,第二階段使用多個RoiHead層進行級聯。後續的一些工作多是圍繞著上述網絡的一些改進或是前人工作的雜燴,罕有突破性提升。
1.2 單階段檢測
相較於兩階段演算法,單階段演算法只需一次提取特徵即可實現目標檢測,其速度演算法更快,一般精度稍微低一些。這類演算法的開山之作是YOLO,隨後SSD、Retinanet依序對其進行了改進,提出YOLO的團隊將這些有助於提升性能的trick融入到YOLO演算法中,後續又提出了4個改進版本YOLOv2~ YOLOv5。儘管預測準確率不如雙階段目標偵測演算法,由於較快的運行速度,YOLO成為了工業界的主流。下圖是YOLO v3的網路結構圖。
1.3 Anchor-free偵測(無Anchor偵測)
這類方法一般是將物件表示為一些關鍵點, CNN被用來回歸這些關鍵點的位置。關鍵點可以是物件框的中心點(CenterNet)、角點(CornerNet)或代表點(RepPoints)。 CenterNet將目標偵測問題轉換成中心點預測問題,即以目標的中心點來表示該目標,並透過預測目標中心點的偏移量與寬高來取得目標的矩形框。 Heatmap表示分類訊息,每個類別將會產生一個單獨的Heatmap圖。對於每張Heatmap圖而言,當某個座標處包含目標的中心點時,則會在該目標處產生一個關鍵點,我們利用高斯圓來表示整個關鍵點,下圖展示了具體的細節。
RepPoints提出將物體表示為代表性點集,並且透過可變形卷積來適應物體的形狀變化。點集最後被轉換為物體框,用於計算與手動標註的差異。
1.4 Transformer偵測
#無論是單階段或兩階段目標偵測,無論採用Anchor與否,都沒有很好地利用到注意力機制。針對這種情況,Relation Net和DETR利用Transformer將注意力機制引入目標偵測領域。 Relation Net利用Transformer對不同目標之間的關係建模,在特徵之中融入了關係訊息,實現了特徵增強。 DETR則是基於Transformer提出了全新的目標偵測架構,開啟了目標偵測的新時代,下圖是DETR的演算法流程,先採用CNN擷取影像特徵,再用Transformer對全域的空間關係進行建模,最後得到的輸出透過二分圖匹配演算法與手動標註進行匹配。
下表中的準確度採用MS COCO資料庫上的mAP作為指標,而速度則採用FPS來衡量,對比了上述部分演算法,由於網路的結構設計中存在著許多不同的選擇(例如不同的輸入大小,不同的Backbone網路等),各個演算法的實現硬體平台也不同,因此準確率和速度並不完全可比,這裡只列出來一個粗略的結果供大家參考。
2.目標追蹤
在自動駕駛應用程式中,輸入的是視訊數據,需要關注的目標有很多,例如車輛,行人,自行車等等。因此,這是一個典型的多物體追蹤任務(MOT)。對於MOT任務來說,目前最受歡迎的框架是Tracking-by-Detection,其流程如下:
#①由目標偵測器在單幀影像上得到目標框輸出;
##②提取每個檢測目標的特徵,通常包括視覺特徵和運動特徵;③根據特徵計算來自相鄰幀的目標檢測之間的相似度,以判斷其來自同一個目標的機率;④將相鄰影格的目標偵測進行匹配,並給來自同一個目標的物體分配相同的ID。 深度學習在以上這四個步驟都有應用,但以前兩個步驟為主。在步驟1中,深度學習的應用主要在於提供高品質的目標偵測器,因此一般都選擇準確率較高的方法。 SORT是基於Faster R-CNN的目標檢測方法,並利用卡爾曼濾波演算法匈牙利演算法,大大提高了多目標追蹤的速度,同時達到了SOTA的準確率,也是在實際應用中使用較為廣泛的演算法。在步驟2中,深度學習的應用主要在於利用CNN來提取物體的視覺特徵。 DeepSORT最大的特點是加入外觀訊息,借用了ReID模組來提取深度學習特徵,減少了ID switch的次數。整體流程圖如下:3.語意分割
在自動駕駛的車道線偵測和可行駛區域偵測任務中均用到了語意分割。代表性的演算法有FCN、U-Net、DeepLab系列等。 DeepLab使用擴張卷積和ASPP(Atrous Spatial Pyramid Pooling )結構,對輸入影像進行多尺度處理。最後採用傳統語意分割法中常用的條件隨機場(CRF)來最佳化分割結果。下圖是DeepLab v3 的網路結構。3D視覺感知
本節我們將介紹自動駕駛中必不可少的3D場景感知。因為深度資訊、目標三維尺寸等在2D感知中是無法取得的,而這些資訊才是自動駕駛系統對周遭環境做出正確判斷的關鍵。想得到3D訊息,最直接的方法就是採用光達(LiDAR)。但是,LiDAR也有其缺點,例如成本較高,車規級產品量產困難,受天氣影響較大等等。因此,單純基於相機的3D感知仍然是一個非常有意義和價值的研究方向,接下來我們梳理了一些基於單目和雙目的3D感知演算法。
1.單眼3D感知
基於單一相機影像來感知3D環境是一個不適定問題,但是可以透過幾何假設(例如像素位於地面)、先驗知識或一些額外資訊(例如深度估計)來輔助解決。本次將從實現自動駕駛的兩個基本任務(3D目標偵測和深度估計)出發進行相關演算法介紹。
1.1 3D目標偵測
#表示轉換(偽雷射雷達):視覺感測器對周圍其他車輛等的偵測通常會遇到遮蔽、無法度量距離等問題,可以將透視圖轉換成鳥瞰圖表示。這裡介紹兩種變換方法。一是逆透視圖映射(IPM),它假定所有像素都在地面上,並且相機外參準確,此時可以採用Homography變換將圖像轉換到BEV,後續再採用基於YOLO網絡的方法檢測目標的接地框。二是正交特徵變換(OFT),利用ResNet-18擷取透視圖影像特徵。然後,透過在投影的體素區域上累積基於影像的特徵來產生基於體素的特徵。
然後將體素特徵沿垂直方向折疊以產生正交的地平面特徵。最後,用另一個類似ResNet的自上而下的網路進行3D目標偵測。這些方法只適應車輛、行人這類貼地的目標。對於交通標誌牌、紅綠燈這類非貼地目標來說,可以透過深度估計來產生偽點雲,進而進行3D偵測。 Pseudo-LiDAR先利用深度估計的結果產生點雲,再直接應用基於雷射雷達的3D目標偵測器產生3D目標框,其演算法流程如下圖所示,
關鍵點和3D模型:待偵測目標如車輛、行人等其大小和形狀相對固定且已知,這些可以被用作估計目標3D資訊的先驗知識。 DeepMANTA是這個方向的開創性工作之一。首先,採用一些目標偵測演算法例如Faster RNN來得到2D目標框,同時也偵測目標的關鍵點。然後,將這些2D目標框和關鍵點與資料庫中的多種3D車輛CAD模型分別進行匹配,選擇相似度最高的模型作為3D目標偵測的輸出。 MonoGRNet則提出將單眼3D目標偵測分成四個步驟:2D目標偵測、實例層級深度估計、投影3D中心估計值和局部角點迴歸,演算法流程如下圖所示。這類方法都假設目標有相對固定的形狀模型,對於車輛來說一般是滿足的,對於行人來說就相對困難一些。
2D/3D幾何限制:對3D中心和粗略實例深度的投影進行迴歸,並使用這二者估算粗略的3D位置。開創性的工作是Deep3DBox,首先用2D目標框內的影像特徵來估計目標大小和朝向。然後,透過一個2D/3D的幾何限制來求解中心點3D位置。這個限制就是3D目標框在影像上的投影是被2D目標框緊密包圍的,也就是2D目標框的每條邊上都至少能找到一個3D目標框的角點。透過先前已經預測的大小和朝向,再配合上相機的標定參數,可以求解出中心點的3D位置。 2D和3D目標框之間的幾何約束如下圖所示。 Shift R-CNN在Deep3DBox的基礎上將先前得到的2D目標框、3D目標框以及相機參數合併起來作為輸入,採用全連接網路預測更為精確的3D位置。
直接產生3DBox:這類方法從稠密的3D目標候選框出發,透過2D影像上的特徵對所有的候選框進行評分,評分高的候選框即是最終的輸出。有些類似目標偵測中傳統的滑動視窗方法。代表性的Mono3D演算法首先基於目標先驗位置(z座標位於地面)和大小產生稠密的3D候選框。這些3D候選框投影到影像座標後,透過綜合2D影像上的特徵對其進行評分,再透過CNN再進行二輪評分得到最終的3D目標框。
M3D-RPN是一種基於Anchor的方法,定義了2D和3D的Anchor。 2D Anchor透過影像上稠密採樣得到,3D Anchor是透過訓練集資料的先驗知識(如目標實際大小的平均值)來確定的。 M3D-RPN也同時採用了標準卷積和Depth-Aware卷積。前者俱有空間不變性,後者將影像的行(Y座標)分成多個組,每組對應不同的場景深度,並以不同的捲積核來處理。上述這些稠密取樣方法計算量非常大。 SS3D則採用更高效的單階段偵測,包括用於輸出影像中每個相關目標的冗餘表示以及相應的不確定性估計的CNN,以及3D邊框最佳化器。 FCOS3D也是單階段的偵測方法,迴歸目標額外增加了一個由3D目標框中心投影到2D影像所得到的2.5D中心(X,Y,Depth)。
1.2 深度估計
#不管是上述的3D目標偵測或是自動駕駛感知的另一個重要任務-語意分割,從2D擴展到3D,都或多或少得應用到了稀疏或稠密的深度資訊。單眼深度估計的重要性不言而喻,其輸入是一張影像,輸出是相同大小的一張由每個像素對應的場景深度值組成的影像。輸入也可以是影片序列,利用相機或物件運動帶來的額外資訊來提高深度估計的準確度。相較於監督學習,單目深度估計的無監督方法無需建立極具挑戰性的真值資料集,實現難度較低。單目深度估計的無監督方法可分為基於單眼視訊序列和基於同步立體影像對兩種。
前者是建立在運動攝影機和靜止場景的假設之上的。在後者的方法中,Garg等人首次嘗試使用同一時刻立體校正後的雙眼影像對進行影像重建,左右視圖的位姿關係透過雙目標定得到,獲得了較為理想的效果。在此基礎上,Godard等人用左右一致性約束進一步地提升了精度,但是,在逐層下採樣提取高級特徵來增大感受野的同時,特徵分辨率也在不斷下降,粒度不斷丟失,影響了深度的細節處理效果和邊界清晰度。
為緩解這個問題,Godard等人引入了全解析度多尺度的損失,有效減少了低紋理區域的黑洞和紋理複製帶來的偽影。但是,這對精度的提升效果仍是有限的。最近,一些基於Transformer的模型層出不窮,旨於獲得全階段的全局感受野,這也非常適用於密集的深度估計任務。在有監督的DPT中就提出採用Transformer和多尺度結構來同時確保預測的局部精確性和全局一致性,下圖是網路結構圖。
2.雙目3D感知
雙目視覺可以解決透視變換帶來的歧義性,因此從理論上來說可以提高3D感知的準確度。但是雙眼系統在硬體和軟體上要求都比較高。硬體上來說需要兩個精確配準的攝影機,而且需要確保在車輛運行過程中始終保持配準的正確性。軟體上來說演算法需要同時處理兩個攝影機的數據,計算複雜度較高,演算法的即時性難以保證。與單目相比,雙目的工作相對較少。接下來也同樣從3D目標偵測和深度估計兩方面進行簡單介紹。
2.1 3D目標偵測
#3DOP是一個兩階段的檢測方法,是Fast R-CNN方法在3D領域的拓展。首先利用雙眼影像產生深度圖,將深度圖轉換為點雲後再量化為網格資料結構,再以此為輸入產生3D目標的候選框。與先前介紹的Pseudo-LiDAR類似,都是將稠密的深度圖(來自單目、雙眼甚至低線數LiDAR)轉換為點雲,然後再應用點雲目標偵測領域的演算法。 DSGN利用立體匹配來建立平面掃描體,並將其轉換成3D幾何體,以便編碼3D幾何形狀和語義訊息,是一個端到端的框架,可提取用於立體匹配的像素級特徵和用於目標識別的高級特徵,並且能同時估計場景深度和偵測3D目標。 Stereo R-CNN擴展了 Faster R-CNN 用於立體輸入,以同時檢測和關聯左右視圖中的目標。在RPN之後增加額外的分支來預測稀疏的關鍵點、視點和目標尺寸,並結合左右視圖中的2D邊界框來計算粗略的3D目標邊界框。然後,透過使用左右感興趣區域的基於區域的光度對齊來恢復準確的3D邊界框,下圖是它的網路結構。
2.2 深度估計
#雙眼深度估計的原理很簡單,就是根據左右視圖上同一個3D點之間的像素距離d(假設兩台相機保持相同高度,因此只考慮水平方向的距離)即視差,相機的焦距f,以及兩個相機之間的距離B(基線長度),來估計3D點的深度,公式如下,估計出視差就可以計算出深度。那麼,需要做的就是為每個像素點在另一張影像上找出與之相符的點。
對於每一個可能的d,都可以計算每個像素點處的匹配誤差,因此就得到了一個三維的誤差資料Cost Volume。透過Cost Volume,我們可以很容易地得到每個像素處的視差(對應最小匹配誤差的d),從而得到深度值。 MC-CNN用一個卷積神經網路來預測兩個影像區塊的匹配程度,並用它來計算立體匹配成本。透過基於交叉的成本總和和半全域匹配來細化成本,然後進行左右一致性檢查以消除被遮蔽區域中的錯誤。 PSMNet提出了一個不需要任何後處理的立體匹配的端到端學習框架,引入金字塔池模組,將全局上下文資訊納入圖像特徵,並提供了一個堆疊沙漏3D CNN進一步強化全局資訊。下圖是其網路結構。
以上是深入探討自動駕駛中的2D和3D視覺感知演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

昨天面試被問到了是否做過長尾相關的問題,所以就想著簡單總結一下。自動駕駛長尾問題是指自動駕駛汽車中的邊緣情況,即發生機率較低的可能場景。感知的長尾問題是目前限制單車智慧自動駕駛車輛運行設計域的主要原因之一。自動駕駛的底層架構和大部分技術問題已經解決,剩下的5%的長尾問題,逐漸成了限制自動駕駛發展的關鍵。這些問題包括各種零碎的場景、極端的情況和無法預測的人類行為。自動駕駛中的邊緣場景"長尾"是指自動駕駛汽車(AV)中的邊緣情況,邊緣情況是發生機率較低的可能場景。這些罕見的事件

寫在前面&筆者的個人理解目前,在整個自動駕駛系統當中,感知模組扮演了其中至關重要的角色,行駛在道路上的自動駕駛車輛只有通過感知模組獲得到準確的感知結果後,才能讓自動駕駛系統中的下游規控模組做出及時、正確的判斷和行為決策。目前,具備自動駕駛功能的汽車中通常會配備包括環視相機感測器、光達感測器以及毫米波雷達感測器在內的多種數據資訊感測器來收集不同模態的信息,用於實現準確的感知任務。基於純視覺的BEV感知演算法因其較低的硬體成本和易於部署的特點,以及其輸出結果能便捷地應用於各種下游任務,因此受到工業

C++中機器學習演算法面臨的常見挑戰包括記憶體管理、多執行緒、效能最佳化和可維護性。解決方案包括使用智慧指標、現代線程庫、SIMD指令和第三方庫,並遵循程式碼風格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

寫在前面&出發點端到端的範式使用統一的框架在自動駕駛系統中實現多任務。儘管這種範式具有簡單性和清晰性,但端到端的自動駕駛方法在子任務上的表現仍然遠遠落後於單任務方法。同時,先前端到端方法中廣泛使用的密集鳥瞰圖(BEV)特徵使得擴展到更多模態或任務變得困難。這裡提出了一種稀疏查找為中心的端到端自動駕駛範式(SparseAD),其中稀疏查找完全代表整個駕駛場景,包括空間、時間和任務,無需任何密集的BEV表示。具體來說,設計了一個統一的稀疏架構,用於包括檢測、追蹤和線上地圖繪製在內的任務感知。此外,重

最近一個月由於眾所周知的一些原因,非常密集地和業界的各種老師同學進行了交流。交流中必不可免的一個話題自然是端到端與火辣的特斯拉FSDV12。想藉此機會,整理當下這個時刻的一些想法和觀點,供大家參考和討論。如何定義端到端的自動駕駛系統,應該期望端到端解決什麼問題?依照最傳統的定義,端到端的系統指的是一套系統,輸入感測器的原始訊息,直接輸出任務關心的變數。例如,在影像辨識中,CNN相對於傳統的特徵提取器+分類器的方法就可以稱之為端到端。在自動駕駛任務中,輸入各種感測器的資料(相機/LiDAR

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

C++sort函數底層採用歸併排序,其複雜度為O(nlogn),並提供不同的排序演算法選擇,包括快速排序、堆排序和穩定排序。

寫在前面項目連結:https://nianticlabs.github.io/mickey/給定兩張圖片,可以透過建立圖片之間的對應關係來估計它們之間的相機姿態。通常,這些對應關係是二維到二維的,而我們估計的姿態在尺度上是不確定的。一些應用,例如隨時隨地實現即時增強現實,需要尺度度量的姿態估計,因此它們依賴外部的深度估計器來恢復尺度。本文提出了MicKey,這是一個關鍵點匹配流程,能夠夠預測三維相機空間中的度量對應關係。透過學習跨影像的三維座標匹配,我們能夠在沒有深度測試的情況下推斷度量相對
