多任務學習 | YOLOP,一個網絡同時完成三大任務
YOLOP: You Only Look Once for Panoptic Driving Perception。提出了一個全景駕駛感知網絡(YOLOP)來同時執行交通目標檢測、可行駛區域分割和車道檢測。
一、前言
全景駕駛感知系統是自動駕駛的重要組成部分,高精度、實時的感知系統可以輔助車輛在行駛中做出合理的決策。本文提出了一個全景駕駛感知網絡(YOLOP)來同時執行交通目標檢測、可行駛區域分割和車道檢測。它由一個用于特征提取的編碼器和三個用于處理特定任務的****組成。所提模型在具有挑戰性的 BDD100K 數據集上表現非常出色,在準確性和速度方面在所有三個任務上都達到了SOTA。此外,本文通過消融研究驗證了所提多任務學習模型對聯合訓練的有效性,應該第一個可以在嵌入式設備 Jetson TX2(23 FPS)上用一個網絡實時同時處理三個視覺感知任務并保持出色精度的工作。
論文作者 | 華科王興剛老師團隊
二、YOLOP多任務學習
全景駕駛感知系統中通常會涉及物體檢測,以幫助車輛避開障礙物并遵守交通規則,還需要可行駛區域分割和車道檢測,這對于規劃車輛的行駛路線至關重要。已經有許多方法在分別處理這些任務,例如,Faster R-CNN 和 YOLOv4 處理對象檢測,UNet 、DeepLab 和 PSPNet 來執行語義分割,SCNN 和 SAD-ENet 用于檢測車道。但在自動駕駛汽車常用的嵌入式設備上部署全景駕駛感知系統時,需要考慮有限的計算資源和延遲,單獨處理這些任務需要更長的耗時。另外,交通場景理解中的不同任務往往有很多相關的信息,如圖 1 所示,車道往往是可行駛區域的邊界,可行駛區域通常緊密圍繞著交通目標。多任務網絡更適合這種情況,因為(1)它可以通過一次處理多個任務而不是一個接一個地處理來加速圖像分析過程,(2)它可以在多個任務之間共享信息,這可以提升每一個任務的性能,因為多任務網絡的每個任務通常共享相同的特征提取主干。因此,探索自動駕駛中的多任務方法至關重要。
圖1 多任務模型輸出結果
多任務學習的目標是通過多個任務之間的共享信息來學習更好的表示,尤其是基于CNN的多任務學習方法還可以實現網絡結構的卷積共享。Mask R-CNN 擴展了 Faster R-CNN,增加了一個預測對象掩碼的分支,有效地結合了實例分割和對象檢測任務,這兩個任務可以相互提升性能。
MultiNet共享一個編碼器和三個獨立的****,同時完成場景分類、目標檢測和駕駛區域分割三個場景感知任務。它在這些任務上表現良好,并在 KITTI 可行駛區域分割任務上達到了最先進的水平。然而,分類任務在控制車輛方面不如車道檢測那么重要。
DLT-Net繼承了編碼器-****結構,將交通目標檢測、可行駛區域分割和車道檢測結合在一起,并提出上下文張量來融合****之間的特征圖,以在任務之間共享指定信息。雖然具有競爭力的性能,但它并沒有達到實時性。
張等人提出了車道區域分割和車道邊界檢測之間相互關聯的子結構,同時提出了一種新的損失函數來將車道線限制在車道區域的外輪廓上,以便它們在幾何上重疊。然而,這個先驗的假設也限制了它的應用,因為它只適用于車道線緊緊包裹車道區域的場景。
更重要的是,多任務模型的訓練范式也值得思考。康等人指出只有當所有這些任務確實相關時,聯合訓練才是合適和有益的,否則需要采用交替優化。所以 Faster R-CNN 采用實用的 4 步訓練算法來學習共享特征,這種范式有時可能會有所幫助,但也乏善可陳。
本文為全景駕駛感知系統構建了一個高效的多任務網絡YOLOP,包括目標檢測、可行駛區域分割和車道檢測任務,并且可以在部署 TensorRT 的嵌入式設備 Jetson TX2 上實現實時。通過同時處理自動駕駛中的這三個關鍵任務,本文方法減少了全景駕駛感知系統的推理時間,將計算成本限制在一個合理的范圍內,并提高了每個任務的性能。
為了獲得高精度和快速的速度,YOLOP設計了一個簡單高效的網絡架構。本文使用輕量級 CNN 作為編碼器從圖像中提取特征,然后將這些特征圖饋送到三個****以完成各自的任務。檢測****基于當前性能最佳的單級檢測網絡 YOLOv4,主要有兩個原因:(1)單級檢測網絡比兩級檢測網絡更快,(2) 單級檢測器基于網格的預測機制與其他兩個語義分割任務相關,而實例分割通常與基于區域的檢測器相結合。編碼器輸出的特征圖融合了不同級別和尺度的語義特征,分割分支可以利用這些特征圖出色地完成像素級語義預測。
除了端到端的訓練策略外,本文還嘗試了一些交替優化范式,逐步訓練模型。一方面,將不相關的任務放在不同的訓練步驟中,以防止相互限制,另一方面,先訓練的任務可以指導其他任務,所以這種范式有時雖然繁瑣但效果很好。然而,實驗表明本文所提的模型并沒有這個必要,因為端到端訓練的模型可以表現得足夠好。最終,所設計的全景駕駛感知系統在單個 NVIDIA TITAN XP 上達到了 41 FPS,在 Jetson TX2 上達到了 23 FPS;同時,它在 BDD100K 數據集的三個任務上取得SOTA。
YOLOP主要貢獻是:
(1)提出了一個高效的多任務網絡,可以一個網絡模型同時處理自動駕駛中的三個關鍵任務:物體檢測、可行駛區域分割和車道檢測,減少推理時間的同時提高了每項任務的性能,顯著節省計算成本。應該是第一個在嵌入式設備上一個模型同時跑三個任務實現實時性,同時在 BDD100K 數據集上保持SOTA的工作。
(2)設計了消融實驗驗證了所提多任務處理方案的有效性,證明了三個任務可以聯合學習,無需繁瑣的交替優化。
三、YOLOP方法細節
本文提出了一個簡單高效的前饋網絡,可以同時完成交通目標檢測、可行駛區域分割和車道檢測任務。如圖 2 所示,本文的全景駕駛感知單次網絡 YOLOP,包含一個共享編碼器和三個后續****來解決特定任務。不同****之間沒有復雜和冗余的共享塊,這減少了計算消耗并使網絡能夠輕松地進行端到端的訓練。
圖2 YOLOP網絡結構
A. 編碼器
網絡共享一個編碼器,它由骨干網絡和頸部網絡組成。
1. Backbone
骨干網絡用于提取輸入圖像的特征。通常將一些經典的圖像分類網絡作為主干。鑒于YOLOv4在物體檢測上的優異性能,本文選擇CSPDarknet 作為主干,其解決了優化 Cspnet 時梯度重復的問題。它支持特征傳播和特征重用,減少了參數量和計算量,有利于保證網絡的實時性。
2. Neck
Neck 用于融合 backbone 產生的特征。YOLOP 的 Neck 主要由空間金字塔池(SPP)模塊和特征金字塔網絡(FPN)模塊組成。SPP生成并融合不同尺度的特征,FPN融合不同語義層次的特征,使得生成的特征包含多尺度、多語義層次的信息,采用串聯的方法來融合這些特征。
B. ****
網絡中的三個頭是三個任務的特定****。
1. Detect Head
與YOLOv4類似,采用基于anchor的多尺度檢測方案。首先,使用一種稱為路徑聚合網絡(PAN)的結構,其是一種自下而上的特征金字塔網絡。FPN自頂向下傳遞語義特征,PAN自底向上傳遞定位特征,將它們結合起來以獲得更好的特征融合效果,直接使用PAN中的多尺度融合特征圖進行檢測。多尺度特征圖的每個網格將被分配三個不同長寬比的先驗anchor,檢測頭將預測位置的偏移量、尺度化的高度和寬度,以及每個類別的對應概率和預測的置信度。
2. Drivable Area Segment Head & Lane Line Segment Head
可行駛區域分割頭和車道線分割頭采用相同的網絡結構,將 FPN 的底層饋送到分割分支,大小為 (W/8, H/8, 256)。分割分支非常簡單,經過三個上采樣過程,將輸出特征圖恢復到(W, H, 2)的大小,兩個通道分別代表了輸入圖像中每個像素對于可行駛區域/車道線和背景的概率。由于頸部網絡中共享SPP,本文沒有像其他人通常所做的那樣添加額外的SPP模塊到分割分支,因為這不會對所提網絡的性能帶來任何改善。此外,上采樣層使用最鄰近插值方法來降低計算成本而不是反卷積。因此,模型的分割****不僅獲得了高精度的輸出,而且在推理過程中也非常快。
C. 損失函數
由于網絡中有三個****,因此多任務損失包含三個部分。對于檢測損失 ,它是分類損失、目標損失和邊界框損失的加權和,如公式(1)所示:
ααα
其中 和 采用的是 Focal Loss 損失,用于減少分類良好的樣本的損失,從而迫使網絡專注于困難的樣本。 用于懲罰分類, 用于懲罰一個預測的置信度。 采用的是 CIoU,它考慮了預測框和 ground truth 之間的距離、重疊率、尺度和縱橫比的相似性。
可行駛區域分割的損失 和車道線分割損失 都是包含具有 Logits 的交叉熵損失,旨在最小化網絡輸出像素和目標之間的分類誤差。值得提出的是 IoU loss: 添加到了 ,它對于車道線稀疏類別的預測特別有效。 和 分別定義為等式(2)和(3):
最終損失函數是三個部分的加權和,如公式 (4) 所示: γγγ
D. 訓練范式
本文嘗試了不同的范式來訓練模型。最簡單的一種是端到端的訓練,可以聯合學習三個任務。當所有任務確實相關時,這種訓練范式很有用。
此外,還嘗試了一些交替優化算法,逐步訓練模型。在每一步中,模型都可以專注于一個或多個相關的任務,而不管那些不相關的任務。即使不是所有的任務都是相關的,所提模型仍然可以通過這種范式對每個任務進行充分的學習。算法 1 說明了一種逐步訓練方法的過程。
算法1 一種逐步訓練多任務模型的方法
四、實驗
A. 設置
1. 數據集設置
BDD100K 數據集支持自動駕駛領域多任務學習的研究,擁有 10 萬幀圖片和 10 個任務的注釋,是最大的駕駛視頻數據集。由于數據集具有地理、環境和天氣的多樣性,在 BDD100K 數據集上訓練的算法足夠健壯,可以遷移到新環境,因此用 BDD100K 數據集來訓練和評估網絡是很好的選擇。BDD100K 數據集分為三部分,70K 圖像的訓練集,10K 圖像的驗證集,20K 圖像的測試集。由于測試集的標簽不是公開的,所以在驗證集上進行模型評估。
2. 實現細節
為了提高模型的性能,根據經驗采用了一些實用的技術和數據增強方法。
為了使檢測器能夠獲得更多交通場景中物體的先驗知識,使用 k-means 聚類算法從數據集的所有檢測幀中獲取先驗錨點。使用 Adam 作為優化器來訓練模型,初始學習率、β1 和 β2 分別設置為 0.001、0.937 和 0.999。在訓練過程中使用預熱(Warm-up)和余弦退火來調整學習率,旨在引導模型更快更好地收斂。
使用數據增強來增加圖像的變化,使模型在不同環境中具有魯棒性。訓練方案中考慮了光度失真和幾何畸變,調整圖像的色調(hue)、飽和度(saturation)和像素值進行光度失真,使用隨機旋轉、縮放、平移、剪切和左右翻轉進行幾何畸變。
3. 實驗設置
實驗中選擇了一些優秀的多任務網絡和專注于單個任務的網絡與本文所提網絡進行比較。
MultiNet 和 DLT-Net 都同時處理多個全景駕駛感知任務,并且在 BDD100K 數據集上的目標檢測和可行駛區域分割任務中取得了很好的性能,Faster-RCNN 是兩階段目標檢測網絡的杰出代表,YOLOv5 是在 COCO 數據集上實現最先進性能的單級網絡,PSPNet憑借其超強的聚合全局信息能力在語義分割任務上取得了出色的表現。通過在 BDD100k 數據集上重新訓練上述網絡,與本文在目標檢測和可行駛區域分割任務上的網絡進行比較。
由于在 BDD100K 數據集上沒有合適的現有多任務網絡處理車道檢測任務,本文將所提網絡與 Enet、SCNN 和 Enet-SAD 這三個先進的車道檢測網絡進行了比較。
另外,將聯合訓練范式的性能與多種交替訓練范式進行了比較,將經過訓練以處理多項任務的多任務模型的準確性和速度與經過訓練以執行特定任務的模型進行比較。實驗中將BDD100K 數據集中的圖像從 1280×720×3 調整為 640×384×3,所有對照實驗都遵循相同的實驗設置和評估指標,均在 NVIDIA GTX TITAN XP 上運行。
B. 結果
通過簡單的端到端訓練YOLOP,將其與所有三個任務的其他代表性模型進行比較。
1. 交通目標檢測結果
由于 Multinet 和 DLT-Net 只能檢測車輛,我們只考慮BDD100K數據集上5個模型的車輛檢測結果。如表 I 所示,使用 Recall 和 mAP50 作為檢測精度的評估指標。YOLOP在檢測精度上超過了 Faster RCNN、MultiNet 和 DLT-Net,并且可以與實際上使用更多技巧的 YOLOv5s 相媲美。速度上模型可以實時推斷,YOLOv5s 更快是因為它沒有車道線頭和可行駛區域頭。交通目標檢測的可視化如圖 3 所示。
2. 可行駛區域分割結果
本文將 BDD100K 數據集中的“區域/可行駛”和“區域/替代”類都歸為“可行駛區域”,模型只需要區分圖像中的可行駛區域和背景。mIoU 用于評估不同模型的分割性能。從結果表II可以看出,YOLOP 分別優于 MultiNet、DLT-Net 和 PSPNet 19.9%、20.2% 和 1.9%,而且推理速度快 4 到 5 倍。可行駛區域分割的可視化結果如圖 4 所示。
3. 車道檢測結果
BDD100K 數據集中的車道線用兩條線標注,所以直接使用標注非常棘手。實驗遵循侯等人的設置以便進行比較,首先根據兩條標線計算中心線,然后將訓練集中的車道線寬度設置為8個像素,同時保持測試集的車道線寬度為2個像素,使用像素精度和車道的 IoU 作為評估指標。如表 III 所示,YOLOP的性能大幅超過了其他三個模型。車道檢測的可視化結果如圖5所示。
C. 消融研究
本文設計了以下兩個消融實驗來進一步說明所提方案的有效性。
1. End-to-end vs Step-by-step
表 IV 比較了聯合訓練范式與多種交替訓練范式的性能。可以看出YOLOP通過端到端的訓練已經表現得非常好,已經不再需要進行交替優化。有趣的是,端到端范式訓練檢測任務首先似乎表現更好,這可能主要是因為整個模型更接近一個完整的檢測模型,并且模型在執行檢測任務時更難收斂(更難的任務用更適配的模型能達到更好的效果)。另外,由三步組成的范式略勝于兩步,類似的交替訓練可以運行更多的步驟,但改進已可以忽略不計。
注:E, D, S 和 W 分別表示Encoder, Detect head, two Segment heads and whole network。比如 ED-S-W 表示先只訓練 Encoder and Detect head,然后凍結 Encoder and Detect head訓練two Segmentation heads,最后聯合三個任務訓練whole network。
2. Multi-task vs Single task
為了驗證多任務學習方案的有效性,對多任務方案和單任務方案的性能進行了比較。表 V 顯示了這兩種方案在每個特定任務上的性能比較,可以看出采用多任務方案訓練的模型性能接近于專注單個任務的性能,更重要的是,與單獨執行每個任務相比,多任務模型可以節省大量時間。
五、總結
本文提出了一個簡單高效的多任務網絡YOLOP,它可以同時處理物體檢測、可行駛區域分割和車道線檢測三個典型的駕駛感知任務,并且可以進行端到端的訓練。訓練出的模型在具有挑戰性的 BDD100k 數據集上表現異常出色,在所有三個任務上都達到或大大超過了最先進的水平,并且可以在嵌入式設備Jetson TX2上進行實時推理,使得模型可以在真實場景中使用。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。