本文所提算法如下:
敘述按時間順序 你也可以把本文當作快速閱讀這幾篇文獻的一個途徑 所有重要的部分我都已經標注并弄懂其原理 方便自己也是方便大家
Line-CNN:基于線提議單元的端到端交通線檢測
摘要
交通線檢測是一項基礎且具有挑戰性的任務。以往的方法通常采用兩階段的方式進行交通線檢測,即先檢測線段,再對線段進行聚類。然而,這種方法很可能忽略整個線條的全局語義信息。為了解決這一問題,我們提出了一種名為 Line-CNN(L-CNN)的端到端系統,其關鍵組件是一種新穎的線提議單元(LPU)。LPU 利用線提議作為參考來準確定位交通曲線,迫使系統學習整個交通線的全局特征表示。后面的實驗部分沒有寫 了解原理即可
針對以往車道線檢測對于車道整體全局語義的忽視,本文提出了LPU線提議單元,我的理解是類似于目標檢測中的錨定框 然后根據預定義錨定框 回歸真實框
一、引言
近年來,自動駕駛系統在學術界和工業界都呈現出爆炸式的發展,各種計算機視覺技術被證明是安全可靠自動駕駛不可或缺的。例如,自動駕駛中一個基礎任務是車輛導航或可行駛車道識別,現有研究從道路區域分割和交通線檢測兩個方面來解決這一問題。由于后者不僅能確定由平行線限制的可行駛路徑,還能反映道路區域分割無法體現的交通規則和完整全局結構,因此本文聚焦于交通線檢測任務。實際上,交通線檢測極具挑戰性,因為線條形態各異,駕駛場景通常也很復雜。交通線結構多樣復雜,交通線曲線包含各種曲率半徑。此外,線條可能是虛線或實線。對于不連續的虛線,需要從語義層面找到一種方法來連接所有不連貫的部分。(這就是本文提出的意義)此外,交通線合并/分離現象頻發,這也給準確的交通線檢測帶來了很大的困難。除了交通線本身的外觀,還應全面考慮外部復雜環境,如天氣狀況(晴天/雨天/雪天)、照明條件(白天/夜晚)以及其他意外因素(陰影/遮擋)。因此,人們開發了多種交通線檢測方法來解決這些問題。(早期手段 通過集合假設 濾波器提取線特征 然后對線段聚類)早期的工作主要通過對一對交通線施加平行幾何假設,利用手工制作的濾波器來提取線段特征,然后將線段聚類成不同的交通線。許多近期的工作通過使用流行的卷積神經網絡(CNN)來實現特征提取,從而實現了上述兩階段解決方案。然而,這些方法的性能相當有限。事實上,廣泛使用的兩階段策略忽略了線條檢測的全局信息。上述現有方法的兩個階段是相互隔離的,無法保留線條的全局信息,以在聚類階段提供不同線條的可區分性,尤其是在存在陰影或嚴重遮擋的情況下。(這里說明為什么目標檢測器不適用于車道線檢測 其一 車道線細長 像素點少 貫穿場景 這也就要求了全局信息 目標檢測器是對矩形區域的預測 用矩形包住車道線 會增加冗余像素 增加不準確性)有人可能認為,現有的基于區域的有效目標檢測器(如 Faster R-CNN)可用于實現交通線檢測。在這里,我們想要澄清的是,它們并不適用于我們的任務。這是因為線條與區域有很大不同,它們更纖細且不那么緊湊。區域檢測器生成一個粗糙的邊界框來定位對象區域。然而,線條通常是貫穿整個場景的曲線,但只占據少量像素。因此,如果使用邊界框來包圍線條,盒子將包含許多不對應于線條的冗余像素,這肯定是不準確且無意義的。為了克服以往方法的局限性,我們提出了一種名為 “Line-CNN”(L-CNN)的高效、穩健的深度學習系統來處理交通線檢測,其中新穎的線提議單元(LPU)在成功檢測中起著重要作用。LPU 的動機來源于現有的基于區域的有效的目標檢測器——Faster R-CNN 及其區域提議網絡(PRN)。由于顯然不適用于通過基于區域的檢測器來檢測像交通線這樣纖細且不緊湊的對象,我們對 RPN 進行了一種優雅的算法改進——主要是用新穎的 “線提議” 替換 “區域提議” 的概念。(與我前面提到的預測相同)與 RPN 類似,其中通過其對應錨框的參考預先定義區域提議,然后首先激活該提議以進行后續的精確定位和分類,LPU 包含多個預設的線提議,這些線提議是從圖像邊界以一定方向發出的直線射線,其中一些線提議進一步被細化以獲得駕駛場景中交通線的真實形狀。這種設計使我們的系統緊湊且端到端,LPU 強迫卷積特征提取器學習整個交通線的全局表示,這與現有的兩階段流程有顯著不同。因此,可以保留整個交通線的全局信息以進行準確檢測,而以往兩階段方法的聚類步驟總是無法定位被遮擋的交通線或線條非常接近的情況。
二、相關工作
本節首先回顧一些傳統區域檢測的代表性工作,然后介紹與本文主題相關的現有交通線檢測方法。
(一)基于區域的目標檢測
區域檢測器在近年來展現出 compelling 的發展。其中大多數 [20], [21] 旨在生成可能的對象候選的粗略邊界框。例如,Faster R-CNN [18] 集成區域提議網絡(RPN)以高效且準確地生成區域提議。通過添加實例掩碼分支,Mask R-CNN [22] 進一步提升了 Faster R-CNN 的整體性能。另一種基于區域的檢測器設計是不使用區域提議。OverFeat [23] 利用全連接層直接預測對象的坐標。最近,SSD [24], [25] 和 YOLO(這兩種算法是單階段檢測算法)?[26], [27] 也通過對端到端的定位任務范式引發了該領域的研究興趣。
(二)交通線檢測
如引言所述,上述基于區域的檢測器不適合檢測交通線。因此,一系列方法被專門開發來解決這個問題。現有方法通常將交通線檢測任務分解為兩個獨立的步驟,即線段檢測和線段聚類。在第一個 “線段檢測” 步驟中,許多手工制作的濾波器(如高斯核 [6], [8]、可轉向濾波器 [15]、Sobel 濾波器、霍夫變換 [29]–[37]、顏色 [16]、基于直方圖的 [17] 特征)被提出用于檢測每個交通線的片段。這些手工制作的特征需要大量的啟發式和復雜的后處理,并且需要強烈幾何假設來確定交通線的最終位置,這在實際應用中是不切實際的。由于深度網絡(如 CNN [38]–[41])的發展,最近人們利用強大的卷積濾波器來提取線段特征。例如,全卷積網絡(FCNs)[42] 被用于查找線段 [7] 或屬于交通線的像素點 [10], [11], [43]。具體來說,在 [7] 中,通過使用 FCN 在滑動窗口中回歸預測局部線段的兩個端點。VPGNet [10] 結合輔助監督的消失點來定位交通線。Deeplanes [43] 使用兩個側向安裝的下視相機來估計車道點的位置,但由于相機的方向,該方法相當有限,因為它無法利用場景中的所有信息。空間 CNN(SCNN)[11] 被證明特別適合通過像素之間的消息傳遞來對長連續形狀結構進行像素回歸,但它在檢測數量上有限制(例如,最多 4 條交通線)。與基于 CNN 的方法不同,Li 等人 [44] 結合多任務 CNN 和 RNN 來檢測交通線段。在第二個 “線段聚類” 步驟中,通過某些聚類方法(如 DBSCAN [7], [45]、RANSAC [6], [46], [47] 線擬合或 [10], [11], [43] 中的一些啟發式貪婪選擇)將檢測到的線段分配給交通線。
三、Line-CNN
我們的端到端交通線檢測系統,稱為 LineCNN(L-CNN),由兩個連續部分組成。第一部分是 ResNet [19], [39] 主干,用于豐富的特征提取。第二部分是提出的線提議單元(LPU),它通過參考線提議直接預測整個交通線。整個系統是一個單一的統一網絡,用于交通線檢測(圖 3)。由于 L-CNN 將 Faster R-CNN 中的所有元素從局部區域重新表述為全局線條,我們在以下小節 III-A 中對 Faster R-CNN 和 L-CNN 進行類比,以便讀者能夠輕松理解 L-CNN 的實際工作原理。在類比中,我們按順序詳細解釋 L-CNN 的細節,以便讀者完整理解它及其核心組件 —— LPU。在小節 III-B 中,我們展示了用于學習 L-CNN 的損失函數,并在小節 III-C 中給出了實施的詳盡細節。
通過特征提取后 進入線提議單元 fa是a位置的全局信息 ra是a的預測向量?對于左右下三個方位 各自生成15條線提議 每條線提議包括 置信度 長度?用于準確定位真實交通線的采樣水平偏移
(一)從 Faster R-CNN 到 Line-CNN
為了將 Faster R-CNN 在基于區域檢測中的成功轉化為交通線檢測,我們對與區域相關的概念進行了重新表述,使其適用于線條:這里的提議也就是錨定框 對于每個窗口生成k個區域提議 每個提議包含 坐標信息和類別信息?
?
這種訓練策略既考慮了分類的準確性,又考慮了定位的精確性,從而使得 Line-CNN 能夠在檢測交通線時同時具有較高的準確率和召回率。
?
通過這種標簽分配方式,訓練目標函數能夠專注于那些最有希望代表真實交通線的線提議(正標簽),并忽略那些明顯不相關的線提議(負標簽),同時不考慮那些不確定的線提議。
在訓練過程中,使用多任務損失函數來最小化模型的預測與真實標簽之間的差異:
-
區域提議網絡 → 線提議單元:我們首先回顧 RPN 中區域提議的設計細節。具體來說,RPN 在每個滑動窗口位置同時預測 k 個區域提議,每個提議包含 2 個分數,用于表示對象
-
(objectness)以及 4 個坐標,用于準確的提議定位。這 k 個提議是相對于 k 個參考框(稱為錨框)進行參數化的。對于大小為 W × H 的卷積特征圖,總共有 W Hk 個錨框。在交通線檢測中,我們考慮使用直線射線代替錨框作為有效的參考,即線提議,因為交通線通常是全局且纖細的。此外,受到交通線從左/右/下邊界開始并匯聚到消失點的啟發,我們組織這些線提議(直線射線)從三個邊界上的起始點發射。直線射線設置為具有一定的方向,每個起始點與一組射線相關聯。左/右/下邊界點的射線組數分別表示為 kl, kr, kd。與 RPN 稍有不同,我們的線提議單元(LPU)在三個邊界上的每個滑動窗口位置同時預測 k 個線條形狀(直接作為最終預測的交通線結果),每個 k(這里為了清晰起見,將 kl, kr, kd 簡化為 k)包含 2 個分數,用于表示為實際交通線的置信度,以及 S + 1 個坐標,用于描述其準確形狀。圖 4 清晰地展示了從 RPN(左)到 LPU(右)的適應過程。注意,LPU 中的線提議與我們設計中的直線射線是相同的概念,因為 LPU 直接通過一步參考線提議 / 直線射線輸出最終可能的交通線,即線提議(直線射線)→ 最終交通線形狀。這與 Faster R-CNN 實際上包含兩個步驟的流程不同:錨框 → 區域提議 → 最終對象邊界框。LPU 可以通過一個小型全卷積網絡(FCN)[42] 來實現。我們在最后一個卷積特征圖的三個邊界上分別滑動三個 1 × 1 卷積網絡。從每個邊界位置獲得 1024 維特征向量,然后將其輸入到兩個并行的全連接層 —— 線回歸層和線分類層。這個小型網絡在圖 4(右)的右側邊界的一個位置上進行了說明。注意,由于該小型網絡以滑動窗口的方式運行,因此在每個邊界的所有空間位置上分別共享全連接層。這種架構自然地通過三個并行的 1 × 1 卷積層實現,每個層后面跟著兩個對應的 1 × 1 卷積層(分別用于線回歸和線分類)以及相應的每個邊界。因此,對于大小為 H × W 的卷積特征圖,總共有 H(kl + kr) + Wkd (左右是寬 還有下是長)個線提議。
-
這里S+1代表長度和S個水平偏移量用于回歸真實車道線 2代表著是否為車道線 為那一條車道線
-
-
區域表示 → 線條表示:為了描述和表示緊湊的 “區域” 對象,用矩形框(即邊界框)將其包圍是合理的,這在基于區域的目標檢測方法 [18], [25], [27] 中很常見。該矩形框可以參數化,例如,用中心坐標 x, y 及其寬度 w 和高度 h。然而,這種表述顯然不適合表示長 “線” 對象,如交通線。受到 TuSimple 基準測試中數據結構定義的啟發,我們采用均勻采樣的點序列來表示交通線,這幾乎可以表示任何可能方向的線條曲線。具體來說,原始圖像被離散為 S?1 個水平帶,S 條均勻分布的切片線。這些切片線從 1 到 S 進行索引,從底部到頂部。交通線然后由與自身相交的水平切片線的點集表示,如圖 5(右)所示。點的數量可以確定交通線在外觀上的實際長度,其被包含在兩個切片索引中 —— 起始索引(s)和結束索引(e)。因此,交通線 l 可以表示為 x 坐標的序列,即 l = {xs, xsl+1, ··· , xe},其中 sl 表示交通線 l 的起始索引,el 表示其結束索引。同樣,線提議(即直線射線)L 可以寫為 L = {XsL, XsL+1, ··· , Xin f},其中 Xin f = in f,其中 inf 指 “無限”。注意,線條表示無法處理幾乎水平的線條。對于旨在主流實際應用 —— 車道偏離警告(LDW)和車道保持輔助(LKA)的提出的算法而言,這不是問題。這些功能在交通線方向下運行的假設下工作。不適合這些應用的幾乎水平的線條將被相應忽略。
-
區域 - 區域度量 → 線條 - 線條度量:學習區域提議需要為所有錨框分配正 / 負標簽,其中通常采用錨框和真實框之間的交并比(IoU)重疊作為度量,以決定區域對象之間的距離。對于線條對象,其距離度量需要根據上述結構表示進行定義。假設線提議 Li 和交通線 l j 可以分別表示為 Li = {XsLi , XsLi +1, ··· , Xin f}(Xinf = inf)和 l j = {xsl j , xsl j +1, ··· , xel j}。
-
正負標簽
-
正標簽分配:對于每個線提議 Li?,如果它到真實交通線 lj? 的距離 D(Li?,lj?)=d 是所有距離中最小的,并且這個距離 d 小于一個閾值 tpos?(正標簽的閾值),那么 Li? 就被分配為正標簽。這個過程確保只有那些與真實交通線非常接近的線提議才被標記為正標簽。需要注意的是,一個真實交通線可以為多個線提議分配正標簽,因為多個線提議可能都與同一條真實交通線比較接近。保證兩點 第一小于一個閾值 也就是不能離得太遠 第二選擇離的最近的那條真實線 只能是一條 但一條真實線可以有多個提議
-
負標簽分配:如果一個線提議與所有真實交通線的距離都大于另一個閾值 tneg?(負標簽的閾值),則它被分配為負標簽。這意味著這個線提議與任何真實交通線都不夠接近,因此不太可能表示實際的交通線。保證一點 與所有車道線 都大于閾值 既是和所有線都不近
-
不參與訓練的線提議:既不是正標簽也不是負標簽的線提議不參與訓練目標。這些線提議可能處于不確定的區域,或者與真實交通線的距離不夠接近以被標記為負標簽,也不足夠接近以被標記為正標簽。? 這部分不作為標簽
-
分類損失:用于訓練模型判斷線提議是否為實際交通線的能力。正標簽的線提議應具有較高的 “是交通線” 的置信度,而負標簽的線提議則應具有較低的置信度。
-
回歸損失:用于調整線提議的位置和形狀,使其更接近真實交通線。只有正標簽的線提議才會觸發回歸損失的計算和優化,因為它們是模型需要精確定位的交通線的候選者。
(二)用于學習 Line-CNN 的損失函數
為了訓練 Line-CNN,正負標簽分配我們為每個線提議(直線射線)分配一個二進制分類標簽(表示是否為實際交通線)。如果滿足兩個條件,則為線提議 Li 分配正標簽:(i)它與真實交通線 l j 的距離 D(Li,l j) = d 最小,且(ii)d < t_pos,其中 t_pos 是控制正標簽閾值的超參數。注意,單個真實交通線可能為多個線提議分配正標簽。如果一個非正線提議與所有真實交通線的距離都大于 t_neg(與 t_pos 定義相反),則為其分配負標簽。既不是正標簽也不是負標簽的線提議不參與訓練目標。通過這些定義,我們通過多任務損失最小化圖像的目標函數:
L(pi?,ri?)=λi∑?Lcls(pi?,pi??)+i∑?pi??Lreg(ri?,ri??)
其中,i 是線提議的索引,p_i 是該線提議 Li 的預測概率(即為實際交通線的置信度)。該線提議的真實標簽 p_i^* 由分配的標簽確定:如果是正標簽則為 1,否則為 0。r_i 是一個向量,表示預測的交通線形狀的 S+1 個參數化坐標,r_i^* 是與線提議 Li 距離最小的 d 對應的真實交通線 l j 的參數化坐標。分類損失 Lcls 設計為兩個類別的對數損失(實際交通線或非)。回歸部分應用魯棒損失函數(平滑 L1 [49])作為 Lreg。值得注意的是,只有正線提議的回歸損失通過 p_i^* Lreg 項被激活。λ 用于平衡分類和回歸項之間的訓練。我們采用以下參數化方式:點數后跟從線提議的橫向偏移量:
ri??={elj??slj?+1,xslj??XsLi?,xslj?+1?XsLi?+1,???}.
需要注意的是,r_i^* 中有效的 x 偏移量持續 elj ? slj +1 次。因此,剩余的回歸損失不是通過簡單地將后續損失權重填充為零來計算的。此外,在實踐中,我們忽略或擴展 l j 的幾個底部點,以強制 slj = sLi,使交通線的起始索引與對應的線提議對齊,以進行正確的回歸。通過上述定義的損失函數,L-CNN 系統可以通過反向傳播和隨機梯度下降(SGD)[50] 進行端到端訓練。由于負樣本占主導,我們通過將它們的損失權重設置為零來隨機丟棄許多負樣本。
損失函數
區分正負樣本
回歸損失只針對正標簽
?