視覺傳感器:2D感知算法

來源 | 巫婆塔里的工程師@知乎

1 前言


自動駕駛中的視覺感知模塊通過圖像或視頻數據來了解車輛周圍環境,具體的任務包括物體檢測和跟蹤(2D或3D物體),語義分割(2D或3D場景),深度估計,光流估計等。

這篇文章里我們先介紹一下基于圖像或視頻的2D物體檢測和跟蹤,以及2D場景的語義分割。這幾個任務在自動駕駛中應用的非常廣泛,各種綜述文章也已經非常多了,所以這里我只選擇介紹一些經典的算法,以脈絡和方向的梳理為主。

深度學習自從2012年在圖像分類任務上取得突破以來,就迅速的占領了圖像感知的各個領域,所以下面的介紹也以基于深度學習的算法為主。


2 物體檢測


2.1 兩階段檢測


傳統的圖像物體檢測算法大多是滑動窗口,特征提取和分類器的組合,比如Haar特征+AdaBoost分類器,HOG特征+SVM分類器。這類方法的一個主要問題在于針對不同的物體檢測任務,需要手工設計不同的特征。因此,在深度學習興起之前,特征設計是物體檢測領域的主要增長點。

R-CNN[1]作為深度學習在物體檢測領域的開創性工作,其思路還是有著很多傳統方法的影子。首先,選擇性搜索(Selective Search)代替了滑動窗口,以減少窗口的數量。其次,也是最重要的一點改變,采用卷積神經網絡(CNN)提取每個窗口的圖像特征,以代替手工特征設計。這里的CNN在ImageNet上進行預訓練,對于通用圖像特征的提取非常有效。最后,每個窗口的特征采用SVM進行分類,以完成物體檢測的任務。

R-CNN的一個主要問題在于選擇性搜索得到的窗口數量重疊太多,這樣導致特征提取部分做了很多的冗余的操作,嚴重影響了算法的運行效率(一張圖片大約2000個候選框,GPU上也需要10秒以上的運行時間)。

視覺傳感器:2D感知算法的圖1
R-CNN

為了重復利用不同位置的特征,Fast R-CNN[2]提出首先由CNN提取圖像特征,然后再將選擇性搜尋得到的候選框進行ROI Pooling,得到同樣長度的特征向量。最后采用全連接網絡進行候選框分類和邊框回歸。這樣就避免了重疊候選框的冗余運算,大幅提高了特征提取的效率。

與R-CNN相比,Fast R-CNN將VOC07數據集上的mAP從58.5%提高到70.0%,檢測速度則提高了約200倍。但是,Fast R-CNN仍然采用選擇性搜索來得到候選區域,這個過程還是比較慢,處理一張圖片大約需要2秒,這對于對實時性要求較高的應用來說還是遠遠不夠的。

視覺傳感器:2D感知算法的圖2
Fast R-CNN

既然選擇性搜索是算法速度的瓶頸,那么人們自然就會想到,能否用神經網絡來完成這個步驟呢?問題的答案就是Faster R-CNN[3]。它利用一個區域候選網絡(RPN)在特征圖的基礎上生成候選框。接下來的步驟與Fast R-CNN類似,都是ROI Pooling生成候選框的特征,然后再用全連接層來做分類和回歸。

Faster RCNN里出現了一個重要的概念,也就是Anchor。特征圖的每個位置會生成不同大小,不同長寬比的Anchor,用來作為物體框回歸的參考。Anchor的引入,使得回歸任務只用處理相對較小的變化,因此網絡的學習會更加容易。

Faster RCNN是第一個端到端的物體檢測網絡,VOC07上的mAP達到73.2%,速度也達到了17 FPS,接近于實時。

視覺傳感器:2D感知算法的圖3
Faster R-CNN

后續的FPN[4](Feature Pyramid Network)在特征提取階段又進行了優化,采用了類似U-Shape網絡的特征金字塔結構,來提取多尺度的信息,以適應不同大小的物體檢測。

視覺傳感器:2D感知算法的圖4
FPN


2.2 單階段檢測


兩階段的檢測器需要處理大量的物體候選框,每個候選框通過ROI Pooling來生成統一長度的特征,這個過程相對比較耗時,因此影響了算法的整體速度。單階段檢測器的主要思路是利用全卷積網絡,在特征圖的每個位置進行物體分類和邊框回歸。這其實相當于在每個位置都生成候選框,但是因為省略了費時的ROI Pooling,而只采用標準的卷積操作,因此算法的運行速度得到了提升。

SSD[5]采用了上述全卷積網絡的思路,并且在多個分辨率的特征圖上進行物體檢測,以提高對物體尺度變化的適應能力。同時,在特征圖的每個位置上采用不同尺度和長寬比的Anchor來做邊框回歸。

在特征圖的每個位置上進行稠密的物體檢測,這樣做雖然省略了ROI Pooling,但會帶來一個新的問題,那就是正負樣本的不平衡。稠密的采樣導致負樣本(非物體)的數量遠遠大于正樣本(物體)的數量,在訓練中大量容易分類的負樣本所產生的Loss會起支配作用,而真正有價值的困難樣本反而得不到很好的學習。

視覺傳感器:2D感知算法的圖5
SSD

為了解決這個問題,RetinaNet[6]提出了Focal Loss,根據Loss的大小自動調節權重,以代替標準的Cross Entropy,使得訓練過程更多的關注困難樣本。在特征提取方面,RetinaNet也采用了FPN的結構。

視覺傳感器:2D感知算法的圖6
Focal Loss vs. Cross Entropy

最后,還是得說一下YOLO[7]系列的檢測器,這也是工業界使用最廣泛的算法,甚至可以不加之一。YOLOv1采用卷積和Pooling結合提取特征,最后的特征圖空間大小為7*7。與SSD和RetinaNet不同,YOLOv1采用全連接層直接輸出每個7*7位置的物體類別和邊框,并不需要Anchor的輔助。每個位置輸出兩個物體,并選擇置信度較大的那一個。當場景中小物體比較多的時候,相近位置的物體有可能會被丟掉,這也是YOLOv1的一個主要問題。

之后YOLO又推出四個改進的版本(v2-v5),增強了特征提取網絡,采用多尺度特征圖,利用了Anchor和IOU Loss來輔助邊框回歸,以及很多其他物體檢測領域的Trick,大幅提高了檢測的準確率,在運行速度和部署的靈活性上也仍然保持了YOLO一貫的優勢。

視覺傳感器:2D感知算法的圖7
YOLO


2.3 無Anchor檢測


之前介紹的方法大都采用Anchor來輔助物體框的回歸。Anchor的參數是需要手工設計的,通常需要根據不同的檢測任務設計不同的Anchor,影響了算法的通用性。此外,為了覆蓋任務中的所有物體,Anchor的數量會比較大,對算法的速度也有一定影響。

因此,如何避免使用Anchor或者說讓網絡自動的學習Anchor參數,目前受到了越來越多的重視。這類方法一般是將物體表示為一些關鍵點,CNN被用來回歸這些關鍵點的位置。關鍵點可以是物體框的中心點(CenterNet),角點(CornerNet)或者代表點(RepPoints)。

CenterNet[8]采用多層卷積神經網絡處理輸入圖像,將其轉換成物體類別的Heatmap,其上的Peak位置對應物體中心。中心點處的特征被用來進行邊框的回歸。整個網絡可以完全通過卷積操作來實現,非常的簡潔。

視覺傳感器:2D感知算法的圖8
Objects as Center Points

只用物體中心點的特征來回歸物體框是有一定局限性的,因為中心點處的特征有時并不能夠很好的描述這個物體,尤其是當物體比較大的時候。CornerNet[9]通過卷積神經網絡和Corner Pooling操作預測物體框的左上角和右下角,同時輸出每個角點的特征向量,用于匹配屬于同一物體的角點。

視覺傳感器:2D感知算法的圖9
CornerNet

無論是中心點還是角點,物體都是被表示為矩形框。這種表示方法雖然有利于計算,但是沒有考慮到物體的形狀變化,矩形框內也包含了很多來自背景的特征,從而影響物體識別的準確率。RepPoints[10]提出將物體表示為一個代表性點集,并且通過可變形卷積來適應物體的形狀變化。點集最后被轉換為物體框,用于計算與手工標注的差異。

視覺傳感器:2D感知算法的圖10

最后來說一下物體檢測領域的最新趨勢,那就是采用在自然語言處理(NLP)中取得巨大成功的Transformer結構。Transformer是完全基于自注意力機制的深度學習網絡,在大數據和預訓練模型的輔助下,性能超過經典的循環神經網絡方法。2020年以來,Transformer在各種視覺任務中被應用,取得了不錯的效果。

Transformer在NLP任務中可以提取單詞的長時間依賴關系(或者說上下文信息),對應到圖像中就是提取像素的長距離依賴(或者說擴大的感受野)。

DETR[11]是Transformer在物體檢測領域的代表性工作。前面介紹的所有物體檢測網絡無論兩階段還是單節段,無論采用Anchor與否,都是在圖像空間上進行稠密的檢測。而DETR將物體檢測看作set prediction問題,直接輸出稀疏的物體檢測結果。具體的流程是先采用CNN提取圖像特征,然后用Transformer對全局的空間關系進行建模,最后得到的輸出通過二分圖匹配算法與手工標注進行匹配。

DETR一般需要更長的訓練收斂時間,由于感受野的擴大,在大物體的檢測上效果較好,而在小物體上相對較差。

視覺傳感器:2D感知算法的圖11
DETR


2.4 性能對比


下面我們來對比一下以上介紹的部分算法,準確度采用MS COCO數據庫上的mAP作為指標,而速度則采用FPS來衡量。從下表的對比中可以看出,YOLOv4在準確率和速度上表現都很好,因此也是目前工業界采用最廣泛的模型。最新的DETR模型也有著非常不錯的準確率,后續應該還有更多的改進工作出現。這里需要說一下的是,由于網絡的結構設計中存在很多不同的選擇(比如不同的輸入大小,不同的Backbone網絡等),各個算法的實現硬件平臺也不同,因此準確率和速度并不完全可比,這里只列出來一個粗略的結果供大家參考。

視覺傳感器:2D感知算法的圖12


3 物體跟蹤


在自動駕駛應用中,輸入的是視頻數據,需要關注的目標有很多,比如車輛,行人,自行車等等。因此,這是一個典型的多物體跟蹤任務(MOT)。對于MOT任務來說,目前最流行的框架是Tracking-by-Detection,其流程如下:

  1. 由物體檢測器在單幀圖像上得到物體框輸出。
  2. 提取每個檢測物體的特征,通常包括視覺特征和運動特征。
  3. 根據特征計算來自相鄰幀的物體檢測之間的相似度,以判斷其來自同一個目標的概率。
  4. 將相鄰幀的物體檢測進行匹配,給來自同一個目標的物體分配相同的ID。

視覺傳感器:2D感知算法的圖13
Tracking-by-Detection方法流程[12]

深度學習在以上這四個步驟中都有應用,但是以前兩個步驟為主。

在步驟1中,深度學習的應用主要在于提供高質量的物體檢測器。理論上說,所有的物體檢測器都可以用來提供檢測框,但是由于檢測的質量對Tracking-by-Detection方法來說非常重要,因此一般都選擇準確率較高的方法,比如說Faster R-CNN。SORT[13]是這個方向早期的工作之一,作者采用Faster R-CNN代替ACF物體檢測器,在MOT15數據庫上將物體跟蹤準確率指標(MOTA)的絕對值提高了18.9%。SORT采用卡爾曼濾波來預測目標的運動(得到運動特征),并采用匈牙利算法來計算物體的匹配。

在步驟2中,深度學習的應用主要在于利用CNN提取物體的視覺特征。SORT算法后續采用CNN進行特征提取,這個擴展算法被稱為DeepSORT[14]。

視覺傳感器:2D感知算法的圖14
DeepSORT中的視覺特征提取網絡

深度學習在步驟3和4中的應用較少。其中一個比較典型的方法由Milan等人[15]提出的一個端對端的物體跟蹤算法。在這個算法中,一個RNN網絡被用來模擬貝葉斯濾波器,完成主要的檢測工作,其包含運動運動預測模塊,狀態更新模塊和Track管理模塊。其中狀態更新模塊可以完成物體匹配(Association)的工作,Association向量則由一個LSTM來提供。這個方法的跟蹤效果并不是很好,但是由于特征簡單,速度可以達到165FPS (不包含物體檢測模塊)。

視覺傳感器:2D感知算法的圖15
Milan等人提出的端對端物體跟蹤網絡

除了Tracking-by-Detection以外,還有一種框架稱之為Simultaneous Detection and Tracking,也就是同時進行檢測和跟蹤。CenterTrack[16]是這個方向的代表性方法之一。CenterTrack來源于之前介紹過的單節段無Anchor的物體檢測算法CenterNet。與CenterNet相比,CenterTrack增加了前一幀的RGB圖像和物體中心Heatmap作為額外輸入,增加了一個Offset分支用來進行前后幀的Association。與之前介紹的多個階段Tracking-by-Detection策略相比,CenterTrack將檢測和匹配階段用一個網絡來實現,提高了MOT系統的速度。

視覺傳感器:2D感知算法的圖16
CenterTrack


4 語義分割


深度學習在語義分割上最早的應用比較直接,也就是對固定大小的圖像塊進行語義分類。這里對圖像塊進行分類的網絡其實就是一些全連接層,因此塊的大小需要固定。顯然,這種簡單粗暴的方式不是最優的,尤其是無法有效的利用空間上下文信息,而這個信息對于語義分割來說是非常重要的。

為了更好的提取上下文信息,神近網絡需要更大的感受野。全卷積網絡(FCN)[17]通過疊加多個卷積層和下采樣層,不斷地擴大感受野,提取高層次空間上下文特征,最終的特征圖經過反卷積上采樣后恢復到原始圖像的分辨率,其每個位置的輸出對應了該位置的語義分類。雖然下采樣操作有利于上下文特征提取并降低計算量,但也存在一個問題,那就是空間細節信息的丟失,這會影響最終的語義分割結果在位置上的分辨率和正確性。

視覺傳感器:2D感知算法的圖17
FCN

U-Net[18]采用了類似編碼器-解碼器的結構,但是在同樣分辨率的特征圖之間,增加了Skip連接。這樣做的好處是可以同時保留高層的上下文特征和底層的細節特征,讓網絡通過學習來自動的平衡上下文和細節信息的比重。

視覺傳感器:2D感知算法的圖18
U-Net

在語義分割中,上下文信息和細節信息都很重要。FCN只關注了上下文信息,而U-Net則通過層間的Skip連接同時保留了兩種信息。語義分割領域后續的大部分工作都是在致力于更好的保留這兩種信息。

空洞卷積(Dilated/Atrous Convolution)對標準卷積操作的卷積核進行了修改,使其覆蓋更大的空間位置??斩淳矸e可以用來代替了下采樣,一方面可以保持空間分辨率,另一方面也可以在不增加計算量的前提下擴大感受野,以更好的提取空間上下文信息。

視覺傳感器:2D感知算法的圖19
Dilated Convolution

DeepLab[18]系列的方法使用擴張卷積和ASPP(Atrous Spatial Pyramid Pooling )結構,對輸入圖像進行多尺度處理。最后采用傳統語義分割方法中常用的條件隨機場(CRF)來優化分割結果。CRF作為后處理的步驟單獨訓練。

視覺傳感器:2D感知算法的圖20
DeepLab

最后一個介紹的方法是采用大卷積核。這是一種很自然的增加感受野的方法,并且在Stride不變的情況下卷積結果的空間分辨率也不會受影響。但是大卷積核會顯著的增加計算量,這也是為什么要采用空洞卷積的原因。Large Kernel Matters[19]這篇文章提出將二維的大卷積核(KxK)分解為兩個一維的卷積核(1xK和Kx1),二維卷積的結果用兩個一維卷積結果的和來模擬。這樣做可以將計算量由O(KxK)降低到O(K)。

視覺傳感器:2D感知算法的圖21
一個二維卷積分解為兩個一維卷積

參考文獻:

[1] Girshick et al., Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation, 2014.
[2] Girshick, Fast R-CNN, 2015.
[3] Ren et al., Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 2016.
[4] Lin et al., Feature Pyramid Networks for Object Detection, 2017.
[5] Liu et al., SSD: Single Shot MultiBox Detector, 2015.
[6] Lin et al., Focal Loss for Dense Object Detection, 2017.
[7] Redmon et al., You Only Look Once: Unified, Real-Time Object Detection, 2015.
[8] Zhou et al., Objects as Points, 2019.
[9] Law and Deng, CornerNet: Detecting Objects as Paired Keypoints, 2019.
[10] Yang et al., RepPoints: Point Set Representation for Object Detection, 2019.
[11] Carion et al., End-to-End Object Detection with Transformers, 2020.
[12] Ciaparrone et al., Deep Learning in Video Multi-Object Tracking: A Survey, 2019.
[13] Bewley et al., Simple Online and Realtime Tracking, 2016.
[14] Wojke et al., Simple Online and Realtime Tracking with A Deep Association Metric, 2017.
[15] Milan et al., Online Multi-Target Tracking using Recurrent Neural Networks, 2017.
[16] Zhou et al., Tracking Objects as Points, 2020.
[17] Long et al., Fully Convolutional Networks for Semantic Segmentation, 2014.
[18] Chen et al., DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs, 2017.
[19] Peng et al., Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network, 2017.

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP