自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

久等了!希望這篇萬(wàn)字長(zhǎng)文能幫助入門的朋友徹底搞懂車道線檢測(cè)(中科院最新綜述)

人工智能 新聞
本文全面回顧了基于深度學(xué)習(xí)的單目車道線檢測(cè)的最新進(jìn)展,

寫在前面

大家好,很榮幸能受到自動(dòng)駕駛之心的邀請(qǐng)來(lái)為大家分享我們的一篇關(guān)于單目車道線檢測(cè)的綜述。與papaer里展現(xiàn)的順序和內(nèi)容可能有所不同,在這里筆者想更多地講一講本文的成文過(guò)程以及各類方法的發(fā)展史,因此對(duì)于各方法的詳細(xì)介紹讀者可以參考本文原文,這里不會(huì)花費(fèi)過(guò)多筆墨來(lái)重述。關(guān)于本文原文中提到的方法,以及更多未提到的方法的論文和代碼均可在筆者構(gòu)建的GitHub倉(cāng)庫(kù)里找到,筆者后續(xù)也會(huì)不斷更新,歡迎大家關(guān)注,也歡迎業(yè)內(nèi)同仁指正,共同探討。

  • 論文鏈接:https://arxiv.org/abs/2411.16316
  • 開源鏈接:https://github.com/Core9724/Awesome-Lane-Detection

最開始入門車道線檢測(cè)的時(shí)候要從去年春季,看了幾篇22年頂會(huì)頂刊的2D車道線檢測(cè)論文(那一年的相關(guān)論文很高產(chǎn),僅CVPR就有5篇)說(shuō)起。起初對(duì)于車道線檢測(cè)的了解也僅限于它們?cè)谖闹衦elated work部分里提到的有基于分割的、基于anchor的、基于曲線的方法等等。但是還有一些地方不明白,相信不少剛接觸這個(gè)領(lǐng)域的朋友也有同樣的疑問(wèn):

1、為什么要區(qū)分不同的實(shí)例?而且一些論文里專門針對(duì)解決這個(gè)問(wèn)題花費(fèi)大量篇幅講解,可是另一些論文里似乎又沒(méi)怎么提及;

2、為什么用語(yǔ)義分割得到的車道線mask還要進(jìn)一步擬合成點(diǎn)集或曲線?很多論文里只說(shuō)了用分割做的話需要進(jìn)一步后處理擬合,但沒(méi)說(shuō)這樣做的原因;

帶著這些疑問(wèn),筆者又翻閱了近年來(lái)的一些相關(guān)綜述,期望能得到答案。遺憾的是,當(dāng)時(shí)最新的質(zhì)量較高的綜述只到21年為止,里面包含的方法基本都是2D車道線檢測(cè)且用語(yǔ)義分割來(lái)做的方法,也沒(méi)有強(qiáng)調(diào)實(shí)例區(qū)分和曲線擬合這兩個(gè)問(wèn)題。

所幸之后接觸到了一些自動(dòng)駕駛工程師,和他們交流一番后才明白:下游規(guī)劃控制任務(wù)實(shí)際上只關(guān)心車道線中心線。如果不區(qū)分車道線實(shí)例以及缺乏矢量化格式(點(diǎn)集或曲線方程)的話,就沒(méi)法計(jì)算了。

考慮到以往的綜述年代有點(diǎn)老,近年來(lái)很多新的方法都不包含,于是萌生了寫一篇車道線檢測(cè)的綜述的想法。但是當(dāng)時(shí)筆者只對(duì)2D車道線檢測(cè)理解比較深入,而近年來(lái)也有3D車道線檢測(cè)的工作出現(xiàn),所以在綜述范圍上就又有疑問(wèn)了:只寫2D還是2D和3D都寫?

后來(lái)在看了3D車道線檢測(cè)的相關(guān)論文后才明白:下游需要的都是基于自車的3D信息,2D車道線檢測(cè)結(jié)果還需要IPM投影得到3D車道線才能用。然而IPM假設(shè)地面平坦,在上下坡時(shí)會(huì)不準(zhǔn)確,所以3D車道線檢測(cè)任務(wù)誕生。

因此筆者認(rèn)為有必要把2D車道線檢測(cè)和3D車道線檢測(cè)都寫進(jìn)去,它們之間的關(guān)系是很密切的??紤]到傳統(tǒng)方法現(xiàn)在基本很少用了,目前基本都是深度學(xué)習(xí)主導(dǎo)。另外LiDAR-based的方案太少,目前在這個(gè)領(lǐng)域里主流傳感器還是單目相機(jī)。于是確定了最終選題:基于深度學(xué)習(xí)的單目車道線檢測(cè)綜述。

1、本文組織結(jié)構(gòu)

以往的綜述過(guò)分關(guān)注每個(gè)具體的方法的網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),雖然它們對(duì)于深度學(xué)習(xí)來(lái)說(shuō)也很重要,但是并不完全構(gòu)成解決車道線檢測(cè)任務(wù)本身挑戰(zhàn)的關(guān)鍵。所以本文從車道線檢測(cè)任務(wù)的完整流程和挑戰(zhàn)出發(fā),先總結(jié)了車道線檢測(cè)算法的四個(gè)核心設(shè)計(jì),然后從這四個(gè)方面展開方法回顧。

先說(shuō)車道線檢測(cè)任務(wù)的完整流程和挑戰(zhàn):

完整流程:從前視圖(Front View,以下簡(jiǎn)稱FV)得到基于自車坐標(biāo)系下的3D車道線,即鳥瞰圖(Bird‘s Eye View,以下簡(jiǎn)稱BEV)結(jié)果,實(shí)現(xiàn)方式如圖1所示,包括:

1、2D車道線檢測(cè)+IPM;

2、3D車道線檢測(cè)。

圖片

挑戰(zhàn):

1、精確的定位和實(shí)時(shí)處理能力;

2、能夠應(yīng)對(duì)車道線被遮擋、光照等干擾因素影響的情況;

3、區(qū)分不同實(shí)例;

4、以矢量化格式呈現(xiàn)車道線檢測(cè)結(jié)果(點(diǎn)集或曲線方程)。

基于完整流程和挑戰(zhàn),筆者總結(jié)了車道線檢測(cè)算法的四個(gè)核心設(shè)計(jì):

1、任務(wù)范式,即如何區(qū)分車道線實(shí)例;

2、車道線建模,即將車道線表示為一組網(wǎng)絡(luò)可學(xué)習(xí)的參數(shù);

3、全局上下文補(bǔ)充,即應(yīng)對(duì)那些不明顯的車道線;

4、(相機(jī))透視效應(yīng)消除,即為下游提供準(zhǔn)確的3D車道線。

因此本文對(duì)現(xiàn)有方法的回顧主要從以上四個(gè)核心設(shè)計(jì)為角度開展。本文的貢獻(xiàn)如下:

1、對(duì)基于深度學(xué)習(xí)的單目車道線檢測(cè)并且首次同時(shí)包含2D和3D車道線檢測(cè)方法的全面綜述;

2、本文先介紹了車道線檢測(cè)算法的四個(gè)核心設(shè)計(jì),然后從上述角度系統(tǒng)地總結(jié)現(xiàn)有方法。以往的相關(guān)綜述通常對(duì)某個(gè)方法的具體網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)做詳細(xì)介紹,然后附上相應(yīng)方法的網(wǎng)絡(luò)結(jié)構(gòu)圖。筆者更傾向于把每一類方法都總結(jié)為一個(gè)pipeline,然后針對(duì)每個(gè)pipeline介紹其框架下的每個(gè)方法,這樣可以幫助讀者更好地理解;

3、考慮到不同方法做實(shí)驗(yàn)時(shí)使用的設(shè)備可能有所不同,直接用其原論文中報(bào)告的速度來(lái)進(jìn)行比較肯定是不公平的。所以除了比較不同方法在不同benchmark下的性能以外,還在統(tǒng)一環(huán)境下重新測(cè)試了代表性方法的速度;

4、近年來(lái)還有一些工作(多任務(wù)感知、視頻車道線檢測(cè)、在線高精地圖構(gòu)建、車道線拓?fù)渫评恚┮埠苁荜P(guān)注,在任務(wù)流程上可以視為單目車道線檢測(cè)的升級(jí),所以筆者在文中也對(duì)它們進(jìn)行了介紹。基于這些介紹,讀者可以獲得一份關(guān)于車道線檢測(cè)研究熱點(diǎn)發(fā)展的路線圖。

本文的組織結(jié)構(gòu)如圖2所示。

圖片

2、數(shù)據(jù)集和評(píng)估指標(biāo)

2.1 數(shù)據(jù)集

對(duì)于2D車道線檢測(cè),最常用的四個(gè)數(shù)據(jù)集:Tusimple、CULane、LLAMAS和CurveLanes?,F(xiàn)有2D方法基本上選擇三個(gè)做實(shí)驗(yàn),CULane和Tusimple,外加LLAMAS和CurveLanes二選一。

對(duì)于3D車道線檢測(cè),雖然LLAMAS也有3D車道線標(biāo)注,但最常用的還是Apollo 3DLane、ONCE-3DLanes和OpenLane這三個(gè)。

這里多說(shuō)一些有關(guān)OpenLane、OpenLane-V和OpenLane-V2三個(gè)數(shù)據(jù)集的區(qū)別,以防讀者混淆。OpenLane是上海AI Lab在ECCV 2022提出的3D車道線檢測(cè)數(shù)據(jù)集,是對(duì)Waymo Open數(shù)據(jù)集中部分FV圖像的車道線進(jìn)行標(biāo)注得到的;OpenLane-V是ICCV 2023的RVLD這篇文章的作者團(tuán)隊(duì)基于OpenLane的部分2D車道線標(biāo)注修改得到的2D車道線檢測(cè)數(shù)據(jù)集;OpenLane-V2也是上海AI Lab提出的數(shù)據(jù)集,但它和OpenLane關(guān)系其實(shí)不大,它是基于nuScenes和Argoverse2兩個(gè)環(huán)視場(chǎng)景數(shù)據(jù)集構(gòu)建而來(lái)的,并且標(biāo)注主要集中在中心線、紅綠燈和拓?fù)潢P(guān)系,曾用于CVPR 2023拓?fù)涮魬?zhàn)賽,最終發(fā)表于NeurIPS 2023。

圖片

2.2 評(píng)估指標(biāo)(TP的判定標(biāo)準(zhǔn))

不同benchmark的評(píng)估指標(biāo)都有所不同,不過(guò)F1-Score是幾乎所有數(shù)據(jù)集的首要評(píng)估指標(biāo),而F1-Score的計(jì)算又離不開TP的判定。因此本文主要介紹不同主流benchmark的TP判定標(biāo)準(zhǔn)。

對(duì)于2D車道線檢測(cè),TP判定主要以Tusimple和CULane為代表。Tusimple主要衡量每個(gè)點(diǎn)。當(dāng)縱坐標(biāo)相同時(shí),如果與GT點(diǎn)的水平距離小于20像素,則認(rèn)為預(yù)測(cè)點(diǎn)正確。進(jìn)而當(dāng)預(yù)測(cè)的車道線包含不少于85%的正確點(diǎn)時(shí),該預(yù)測(cè)線被視為TP。相比之下,CULane更注重衡量車道線整體,車道線被視為若干像素寬的mask,如果預(yù)測(cè)的車道線mask和GT的IoU大于75%則被視為TP。

對(duì)于3D車道線檢測(cè),TP判定主要以O(shè)penLane和ONCE-3DLanes為代表。OpenLane:當(dāng)一個(gè)預(yù)測(cè)車道線有75%的覆蓋y位置與GT的逐點(diǎn)距離小于允許的最大距離(1.5米)時(shí),被視為TP;ONCE-3DLanes:首先,在z-x平面(即俯視圖)上使用CULane的計(jì)算IoU的方法來(lái)評(píng)估預(yù)測(cè)與地面實(shí)況之間的對(duì)齊情況。其次,如果IoU超過(guò)預(yù)定義閾值,則使用單側(cè)倒角距離(詳見ONCE-3DLanes原文或本文附錄)計(jì)算相機(jī)坐標(biāo)中的曲線匹配誤差。如果該單側(cè)倒角距離低于指定閾值,則預(yù)測(cè)線被歸為TP。

3、2D車道線檢測(cè)方法

3.1 分類框架

以往的相關(guān)綜述主要關(guān)注具體網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)。而實(shí)例級(jí)判別和矢量化結(jié)果表達(dá)往往被忽視。相比之下,本文對(duì)二維車道線檢測(cè)方法的分類主要依據(jù)上述兩個(gè)方面。

如圖3所示,首先,對(duì)于實(shí)例級(jí)判別,根據(jù)完成任務(wù)所需的階段數(shù)分為兩類范式:

(a)基于分割的方法(segmentation-based methods,兩階段),按照一定的順序完成車道線識(shí)別和實(shí)例區(qū)分。圖4總結(jié)了這類方法中實(shí)例區(qū)分的通用流程。

(b)基于目標(biāo)檢測(cè)的方法(object detection-based methods,單階段),直接同時(shí)完成實(shí)例區(qū)分和定位。這一優(yōu)勢(shì)源自目標(biāo)檢測(cè)算法的一般流程(并行地對(duì)一組候選proposal執(zhí)行分類和回歸)。

其次,矢量化結(jié)果表示要求算法考慮如何將車道線建模為一組用于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的值,即車道線建模。基于分割的方法可以進(jìn)一步分為基于mask的建模、基于grids的建模和基于keypoints的建模。對(duì)于基于目標(biāo)檢測(cè)的方法,采用bounding box來(lái)建模細(xì)長(zhǎng)的車道線往往并不合理。因?yàn)槟繕?biāo)檢測(cè)方法生成的邊界框可能會(huì)相互遮擋,而且一個(gè)框內(nèi)可能包含多個(gè)車道線實(shí)例。為了與一般的目標(biāo)檢測(cè)范式對(duì)齊,這些方法設(shè)計(jì)了獨(dú)特的“bounding box”來(lái)建模車道線,包括基于line anchor的建模和基于curve的建模。每種車道線建模方式的細(xì)節(jié)如圖5所示。

另外,大多數(shù)現(xiàn)有的2D車道線檢測(cè)數(shù)據(jù)集甚至為被車輛嚴(yán)重遮擋或受極端天氣條件影響的車道線提供了完整的標(biāo)注。這促使許多算法在其網(wǎng)絡(luò)里精心設(shè)計(jì)特殊結(jié)構(gòu)補(bǔ)充全局上下文來(lái)解決這一挑戰(zhàn),無(wú)論它們屬于哪個(gè)分類體系。因此,在回顧這些方法時(shí),還闡述了它們?yōu)榻鉀Q這一問(wèn)題所采取的措施(篇幅限制,在這里未詳細(xì)列出,具體可見本文原文)。根據(jù)上述分類標(biāo)準(zhǔn),表2詳細(xì)比較了具有代表性的二維車道線檢測(cè)工作。

注:其實(shí)不少論文里的related work部分都有把現(xiàn)有的2D車道線檢測(cè)方法分為segmentation-based、anchor-based、keypoints-based、curve-based等等。但是這個(gè)分類僅反映了不同方法的車道線建模方式。實(shí)例級(jí)判別很少被提及,原因一方面是那些基于anchor或者曲線的方法本身遵循目標(biāo)檢測(cè)的范式,不需要考慮實(shí)例判別問(wèn)題;另一方面是在related work里也確實(shí)沒(méi)必要分的這么細(xì)(再細(xì)分就超頁(yè)數(shù)了)。但對(duì)于綜述來(lái)說(shuō),有必要把這個(gè)上下級(jí)關(guān)系為讀者解釋清楚,所以本文針對(duì)實(shí)例級(jí)判別和車道線建模方式進(jìn)行了二級(jí)分類。另外,不少論文的related work里將UFLD、CondLaneNet等方法也歸為anchor-based,這一點(diǎn)可能源自于UFLD原論文中的“row-anchor”表述。但實(shí)際上它們是遵循著“實(shí)例區(qū)分、逐行/列分類”一個(gè)順序的過(guò)程,需要額外考慮實(shí)例判別過(guò)程,并不符合目標(biāo)檢測(cè)并行“分類+回歸”的特點(diǎn),因此本文將其劃分至基于分割和基于grids的建模的方法。

圖片圖片

3.2 基于分割的方法

3.2.1 基于mask的建模

基于mask的建模方法,即將車道線檢測(cè)視為語(yǔ)義分割任務(wù),也是早期被廣泛采用的方法。不過(guò)和一般的語(yǔ)義分割任務(wù)不同的是,一般的語(yǔ)義分割任務(wù)只分割可見的物體,但是車道線檢測(cè)是要能分割出那些不明顯的車道線的。所以這一類的大部分方法在解碼器上采樣之前引入了專門的結(jié)構(gòu)來(lái)增強(qiáng)特征表示,比如VPGNet、SCNN、SAD、EL-GAN、RESA、PriorLane等方法。

而對(duì)于實(shí)例級(jí)判別來(lái)說(shuō),一個(gè)比較直接的方法是用自頂向下(先有實(shí)例后有語(yǔ)義類別)的實(shí)例分割框架,比如Mask R-CNN或YOLACT,以實(shí)現(xiàn)車道線實(shí)例級(jí)別的區(qū)分和分割。然而,目標(biāo)檢測(cè)方法生成的邊界框可能包含多個(gè)車道線實(shí)例,后續(xù)的語(yǔ)義分割過(guò)程中區(qū)分它們會(huì)變得復(fù)雜。

SCNN采用了一種與上述不同的自頂向下方式,如圖4(b)所示:每條車道線視為一個(gè)類別,然后多類別語(yǔ)義分割結(jié)果和一個(gè)并行的分類分支結(jié)合。后續(xù)的SAD、EL-GAN、RESA、PriorLane也都是這么做的。這種方式方便了實(shí)例區(qū)分,但也引入了一定的局限性:需要提前定義車道線的最大數(shù)量來(lái)確定可能的實(shí)例數(shù)量。此外,車道線與類別之間的對(duì)應(yīng)關(guān)系是通過(guò)標(biāo)注建立的。當(dāng)車輛變道時(shí),這種預(yù)定義的標(biāo)注可能會(huì)導(dǎo)致歧義。

為了解決上述問(wèn)題,一些方法采用了更為靈活的自底向上(先有語(yǔ)義后有實(shí)例)的實(shí)例分割方式,即對(duì)車道線/背景的二值分割結(jié)果進(jìn)行聚類,如圖4(a)所示。最典型的當(dāng)屬LaneNet和LaneAF這倆。不過(guò)盡管這些方法提高了實(shí)例區(qū)分能力,但由于自底向上聚類的高復(fù)雜度以及語(yǔ)義分割時(shí)對(duì)所有像素分類的機(jī)制,算法的整體效率仍然不佳。

通過(guò)網(wǎng)絡(luò)分割獲得的車道線mask通常包含大量不相關(guān)區(qū)域。為了將其用于自車運(yùn)動(dòng)預(yù)測(cè)和規(guī)劃,還需要進(jìn)一步對(duì)mask進(jìn)行去噪處理,以獲得矢量化結(jié)果。通常,對(duì)于每個(gè)車道線的mask,在等間距高度上依次采樣最高響應(yīng)值,然后進(jìn)行曲線擬合。

3.2.2 基于grids的建模

為了避免語(yǔ)義分割分類所有像素的機(jī)制帶來(lái)的低效率,UFLD設(shè)計(jì)了一種逐行網(wǎng)格分類的方式完成車道線檢測(cè)。這個(gè)方法也是目前所有2D車道線檢測(cè)方法里最快的,但是它的實(shí)例判別過(guò)程也是遵循SCNN那一套。所以為了解決實(shí)例級(jí)判別問(wèn)題,受經(jīng)典實(shí)例分割方法CondInst和SOLOv2的啟發(fā),ConeLaneNet以預(yù)測(cè)動(dòng)態(tài)卷積核的方式完成實(shí)例級(jí)判別,如圖4(c)所示。后來(lái)UFLDv2又把逐行分類升級(jí)成逐行/列分類來(lái)解決水平車道線的檢測(cè)難以用逐行分類機(jī)制實(shí)現(xiàn)的問(wèn)題。但仍然遵循SCNN的實(shí)例判別過(guò)程,這使得為每個(gè)車道線實(shí)例來(lái)選擇逐行/列分類過(guò)于簡(jiǎn)單,所以后來(lái)CANet又針對(duì)這一點(diǎn)進(jìn)行了改進(jìn),讓網(wǎng)絡(luò)能夠動(dòng)態(tài)選擇行分類或列分類。

由于這類方法的網(wǎng)絡(luò)輸出每一行/列網(wǎng)格的分類概率,并非矢量化格式,因此還需要后處理。具體地說(shuō),每個(gè)點(diǎn)的坐標(biāo)計(jì)算為位置的期望值(來(lái)自同一行/列的網(wǎng)格)即概率加權(quán)平均值。這個(gè)后處理過(guò)程與語(yǔ)義分割獲得的車道線mask的后處理相比更容易實(shí)現(xiàn)。

3.2.3 基于keypoints的建模

一些方法直接預(yù)測(cè)車道線的關(guān)鍵點(diǎn),和基于grids的建模類似,可以被視為基于mask的建模的稀疏版本,但它直接提供了下游所需的矢量化表達(dá)。像PINet、FOLOLane、GANet還有RCLane這些都是以自底向上的方式進(jìn)行,也有遵循自頂向下的方式,最典型的比如CondLSTR。

3.3 基于目標(biāo)檢測(cè)的方法

3.3.1 基于line anchor的建模

這類建模方式是目前用的最多,在各個(gè)benchmark上刷點(diǎn)也很高的一類。其方法本質(zhì)就是預(yù)測(cè)一條參考線上的等距點(diǎn)的水平偏移量來(lái)描述車道線,這與一般目標(biāo)檢測(cè)方法預(yù)測(cè)中心點(diǎn)和寬高的偏移量是類似的。

這類方法最早可以追溯到Line-CNN,后來(lái)被LaneATT發(fā)揚(yáng)光大。不過(guò)由于預(yù)設(shè)大量的line anchor,以及早期一般的目標(biāo)檢測(cè)方法的正負(fù)樣本匹配策略的局限性,導(dǎo)致那一時(shí)期出現(xiàn)的方法都需要NMS后處理。后來(lái)隨著目標(biāo)檢測(cè)逐漸被DETR占據(jù)主導(dǎo)地位以及匹配策略的改進(jìn),相應(yīng)產(chǎn)生的車道線檢測(cè)方法也慢慢向其靠攏。比較典型的例如Laneformer、CLRNet、ADNet,相比于早期的基于line anchor的建模方法,它們從固定密集的line anchor轉(zhuǎn)變?yōu)閯?dòng)態(tài)稀疏的line anchor。

3.3.2 基于curve的建模

另一批基于目標(biāo)檢測(cè)的方法直接用曲線方程建模車道線,網(wǎng)絡(luò)學(xué)習(xí)曲線的參數(shù)。最初的方法比如PolyLaneNet用三次多項(xiàng)式建模車道線并學(xué)習(xí)多項(xiàng)式的系數(shù),后來(lái)LSTR又把這種建模方式套進(jìn)了DETR里。由于學(xué)習(xí)相對(duì)較少的參數(shù),這類方法在速度上屬于較快的一批。但是在性能上并不具備有競(jìng)爭(zhēng)力的優(yōu)勢(shì)。后來(lái)BézierLaneNet用三次貝塞爾曲線建模車道線,網(wǎng)絡(luò)學(xué)習(xí)貝塞爾曲線上的控制點(diǎn),顯著改善了這一問(wèn)題。

圖片

3.4 2D車道線轉(zhuǎn)3D車道線(IPM投影過(guò)程)

由于實(shí)際使用時(shí)最終需要3D車道線,所以2D車道線檢測(cè)的結(jié)果還需要進(jìn)一步利用IPM投影得到3D車道線。因此本文還對(duì)IPM的過(guò)程進(jìn)行了回顧,以幫助讀者理解其過(guò)程,以及IPM帶來(lái)的缺陷和為什么3D車道線檢測(cè)任務(wù)被提出。這里只展示一下IPM導(dǎo)致的錯(cuò)誤結(jié)果可視化(圖5,以上坡為例),具體的推導(dǎo)步驟讀者可參考本文原文。

圖片

4、3D車道線檢測(cè)方法

4.1 分類框架

作為2D車道線檢測(cè)的升級(jí),3D車道線檢測(cè)更加關(guān)注:如何用網(wǎng)絡(luò)從FV圖像中重建缺失的3D信息。如圖7所示,現(xiàn)有的3D車道線檢測(cè)方法可以分為兩大類:

(a)基于BEV的方法:利用相機(jī)參數(shù),以某種方式將FV特征轉(zhuǎn)換為含有高度信息的BEV特征。這個(gè)構(gòu)建中間代理,即BEV轉(zhuǎn)換的過(guò)程通常稱為View Transformation。通過(guò)這種方式,3D車道線檢測(cè)任務(wù)可以簡(jiǎn)化為在BEV上的2D車道線檢測(cè)和高度估計(jì)。因此,這類方法的性能不僅取決于BEV中的2D車道線檢測(cè)結(jié)果,還取決于View Transformation的實(shí)現(xiàn)方式。

(b)無(wú)BEV方法:不依賴BEV特征,可以進(jìn)一步分為兩類。一種是結(jié)合深度估計(jì)值將2D車道線檢測(cè)結(jié)果投影至3D空間中;另一種是直接建模3D車道線,有了初始化的3D信息,就可以根據(jù)相機(jī)參數(shù)將其投影到FV上,讓3D車道線與FV特征之間進(jìn)行交互,并更新3D車道線。

對(duì)于每種方法,實(shí)例級(jí)判別和車道線建模仍然有討論。表3中列出了代表性工作的比較。

圖片

4.2 基于BEV的方法

4.2.1 IPM用于View Transformation

3D-LaneNet既是3D車道線檢測(cè)任務(wù)的提出者,也是3D車道線檢測(cè)中基于BEV的方法的首個(gè)工作。隨后Gen-LaneNet、3D-LaneNet+、CLGo等工作進(jìn)一步進(jìn)行改進(jìn),但是這些早期的3D車道線檢測(cè)方法對(duì)于BEV的轉(zhuǎn)換都是基于IPM實(shí)現(xiàn)的,相當(dāng)于是把IPM從2D車道線檢測(cè)結(jié)果階段提前到了特征階段。

4.2.2 可學(xué)習(xí)的View Transformation

因此,后續(xù)的工作為了避免IPM帶來(lái)的固有誤差,嘗試以更靈活的方式完成BEV轉(zhuǎn)換,即可學(xué)習(xí)的View Transformation。這一思想其實(shí)早在一些3D目標(biāo)檢測(cè)的工作中就有體現(xiàn)了,比如LSS、BEVDet、BEVFormer等。對(duì)于車道線檢測(cè)來(lái)說(shuō),PersFormer算是首個(gè)以可學(xué)習(xí)的方式實(shí)現(xiàn)View Transformation的工作,之后也引出了不少優(yōu)秀工作,比如BEV-LaneDet、SPG3DLane、LaneCPP等。

4.3 無(wú)BEV方法

4.3.1 結(jié)合深度估計(jì)

和早期的一些深度輔助的單目3D目標(biāo)檢測(cè)方法類似,SALAD將3D車道線檢測(cè)分解為FV上的2D車道線檢測(cè)和深度估計(jì)任務(wù),有了準(zhǔn)確的深度值即可將2D車道線精準(zhǔn)投影至3D空間。

4.3.2 直接建模3D車道線

這一思想也是類似于一些3D目標(biāo)檢測(cè)中的Sparse BEV方法例如DETR3D和PETR(將3D參考點(diǎn)或3D位置embedding投影回FV進(jìn)行交互)。典型的方法當(dāng)屬CurveFormer、Anchor3DLane、LATR等,都是Persformer之后的同時(shí)期工作。盡管在交互細(xì)節(jié)上可能有所不同(比如Anchor3DLane在投影回FV后用類似LaneATT的方式做pooling,CurveFormer和LATR則是用query和FV做cross attention),但是它們的核心思想都遵循:建模3D車道線并正向投影回FV進(jìn)行交互對(duì)齊。

圖片

注:1、關(guān)于“3D Line Anchor”的表述:雖然在CurveFormer和LATR原文里沒(méi)有像Anchor3DLane和PVALane中明確的“3D Anchor”的表述,但是這些方法的本質(zhì)都是遵循目標(biāo)檢測(cè)的范式,并學(xué)習(xí)3D參考線上等距點(diǎn)的X方向和Z方向的偏移量。因此本文將它們的建模方式都?xì)w為“3D Line Anchor”;2、盡管PVALane構(gòu)建了BEV特征,但僅用于輔助增強(qiáng)3D車道線檢測(cè)效果,而不是像基于BEV的方法那樣成為網(wǎng)絡(luò)的必要組成部分。

5、方法性能對(duì)比

5.1 主流Benchmark下的結(jié)果比較

CULane和OpenLane是目前最常用的2D和3D車道線檢測(cè)數(shù)據(jù)集。表4和表5分別報(bào)告了這兩個(gè)benchmark下代表性方法的性能。所有結(jié)果均來(lái)自原文數(shù)據(jù)。更多數(shù)據(jù)集下的結(jié)果在附錄。

圖片圖片

5.2 主流Benchmark下的結(jié)果比較

考慮到現(xiàn)有方法中實(shí)驗(yàn)所用設(shè)備的差異性,直接用各方法原論文中報(bào)告的速度來(lái)進(jìn)行比較是不公平的。因此,筆者在統(tǒng)一環(huán)境中重新測(cè)試了代表性方法。表6展示了這些方法的工作效率。根據(jù)代表性且開源的方法在CULane或OpenLane數(shù)據(jù)集上的設(shè)置,筆者對(duì)其進(jìn)行了重新評(píng)估。為確保公平性,僅測(cè)試了模型的推理速度以報(bào)告FPS值(即不包含后處理部分,因?yàn)橛械姆椒ǖ暮筇幚砜赡茉贑PU上執(zhí)行)。同時(shí),還描述了每種方法的骨干網(wǎng)絡(luò)、輸入大小、模型輸出以及可能的后處理(即模型的輸出是否反映了每個(gè)唯一車道線實(shí)例的矢量化表示)。所有測(cè)試均使用單張Nvidia GeForce RTX 3090 GPU。

圖片

5.3 討論

先前的章節(jié)中從任務(wù)范式、車道線建模、全局上下文補(bǔ)充和透視效應(yīng)消除四個(gè)方面概述了現(xiàn)有方法。結(jié)合性能和效率的比較,筆者繼續(xù)討論它們對(duì)車道線檢測(cè)的重要性。

1、任務(wù)范式?;诜指畹姆椒ㄍㄟ^(guò)兩階段方法實(shí)現(xiàn)實(shí)例級(jí)判別和車道線定位,算法運(yùn)行時(shí)間的大部分被獨(dú)立的實(shí)例判別過(guò)程所占據(jù),這使得它們總體上不如一階段實(shí)現(xiàn)的目標(biāo)檢測(cè)方法高效。而對(duì)于基于目標(biāo)檢測(cè)的方法,有必要考慮網(wǎng)絡(luò)訓(xùn)練過(guò)程中的正負(fù)樣本匹配策略,這將決定后處理是否需要NMS。

2、車道線建模。在基于mask的建模方法中,每個(gè)像素都被分類,這可能導(dǎo)致不準(zhǔn)確的分割mask,進(jìn)而阻礙矢量化擬合。因此,實(shí)現(xiàn)最佳性能和效率仍然是個(gè)挑戰(zhàn)。相比之下,基于keypoints的建模、基于line anchor的建模和基于curve的建模方法學(xué)習(xí)的點(diǎn)或參數(shù)更少,且直接產(chǎn)生下游所需的矢量化結(jié)果。

基于keypoints的建模方法表現(xiàn)出強(qiáng)大的性能,得益于其在專注于局部方向上的高精度姿態(tài)估計(jì)技術(shù)。然而,這些算法的整體效率受到其分割范式中固有實(shí)例判別步驟的限制。

基于line anchor的建模方法利用車道線在單目圖像中的垂直和細(xì)長(zhǎng)特性,在性能和效率之間取得了良好的平衡。然而,這些方法學(xué)習(xí)等距點(diǎn)的水平偏移量,因此不適用于U形或近乎水平的車道線。這一特殊情況將在后續(xù)章節(jié)進(jìn)一步討論。

基于curve的建模方法表現(xiàn)出良好的效率,但在2D車道線檢測(cè)基準(zhǔn)上的競(jìng)爭(zhēng)性能方面有所欠缺。有趣的是,這種方法在3D車道線檢測(cè)中取得了有競(jìng)爭(zhēng)力的表現(xiàn)。根據(jù)Han等人的分析,這種差異應(yīng)該是由于地面高度的影響,使得在FV中難以擬合不規(guī)則的車道線。相比之下,這些車道線在BEV中看起來(lái)更平滑,因此更容易擬合。

最后,像UFLD這樣的基于grids的建模方法實(shí)現(xiàn)了最高的效率;然而,這是以降低計(jì)算量為代價(jià)的,導(dǎo)致性能次優(yōu),通常需要更高級(jí)的算子(CondLaneNet里的Transformer encoder和動(dòng)態(tài)卷積)來(lái)彌補(bǔ)。

3、全局上下文補(bǔ)充。無(wú)論屬于哪種類型,大多數(shù)方法都達(dá)成了一個(gè)共識(shí),即補(bǔ)充全局信息可以顯著提高車道線檢測(cè)性能,特別是對(duì)于檢測(cè)那些不明顯的車道線。此外,確保這些專門設(shè)計(jì)的結(jié)構(gòu)在高效處理和有效結(jié)果之間取得平衡至關(guān)重要。雖然這一方面在現(xiàn)有的3D車道線檢測(cè)benchmark和方法中很少被關(guān)注(主要還是因?yàn)?D車道線檢測(cè)更關(guān)注在網(wǎng)絡(luò)中消除透視效應(yīng)),但在實(shí)際應(yīng)用中,2D車道線檢測(cè)中的某些解決方案可以作為參考或者直接無(wú)縫集成到三維車道線檢測(cè)框架中。

4、透視效應(yīng)消除。最終目標(biāo)仍然是實(shí)現(xiàn)精確的3D車道線檢測(cè),以支持下游應(yīng)用。使用IPM將二維車道線檢測(cè)結(jié)果投影到三維空間中是可行的。然而,由于假設(shè)地面平坦,即使在FV中預(yù)測(cè)準(zhǔn)確,BEV中也往往會(huì)出現(xiàn)錯(cuò)誤結(jié)果。雖然基于深度值將2D車道線檢測(cè)結(jié)果投影到三維空間的方法很直接,但這種方法嚴(yán)重依賴于深度估計(jì)結(jié)果,無(wú)法進(jìn)行端到端的優(yōu)化。

早期的3D車道線檢測(cè)方法仍然假設(shè)地面是平坦的,利用IPM來(lái)構(gòu)建BEV特征。后來(lái)一些方法通過(guò)融入可學(xué)習(xí)的方式對(duì)此進(jìn)行了改進(jìn),從而提高了性能。另一批方法則完全避免了BEV特征的構(gòu)建,直接對(duì)3D車道線進(jìn)行建模,并利用3D到2D的正向投影來(lái)規(guī)避IPM引入的固有誤差。應(yīng)該指出的是,Transformer在BEV轉(zhuǎn)換(PersFormer)或?qū)崿F(xiàn)3D車道線與前視圖特征之間的交互(LATR)上具有強(qiáng)大的能力,這一點(diǎn)在相關(guān)的3D目標(biāo)檢測(cè)工作(BEVFormer,PETR)也有所體現(xiàn)。然而,deformable attention等高級(jí)算子的硬件部署仍然是一個(gè)需要優(yōu)化的問(wèn)題。

6、車道線檢測(cè)的擴(kuò)展工作

其實(shí)正常到第5章后關(guān)于對(duì)車道線檢測(cè)方法的總結(jié)部分就結(jié)束了。但是筆者在接觸到一些其他和車道線檢測(cè)高度相關(guān)的領(lǐng)域后,覺(jué)得還是有必要提及一下。這些工作在任務(wù)流程上可以視作單目圖像車道線檢測(cè)的升級(jí):

1、多任務(wù)感知:一個(gè)模型同時(shí)完成目標(biāo)檢測(cè)和車道線檢測(cè)等任務(wù);

2、視頻車道線檢測(cè):多幀圖像的時(shí)序關(guān)聯(lián);

3、在線高精地圖構(gòu)建:檢測(cè)環(huán)視圖下的地圖元素,包括車道線、人行橫道、車道邊界線等各種靜態(tài)目標(biāo);

4、車道線拓?fù)渫评恚和瑯邮黔h(huán)視圖場(chǎng)景,檢測(cè)中心線,預(yù)測(cè)中心線之間的拓?fù)湟约凹t綠燈和中心線之間的拓?fù)潢P(guān)系,從而實(shí)現(xiàn)場(chǎng)景理解。

并且在近年來(lái)也很火熱,因此筆者在本章對(duì)它們進(jìn)行了介紹,并給出一份關(guān)于車道線檢測(cè)研究熱點(diǎn)的發(fā)展路線圖(圖8)??梢杂^察到,從檢測(cè)2D車道線到檢測(cè)3D車道線,再到檢測(cè)地圖元素,再到檢測(cè)中心線和拓?fù)潢P(guān)系預(yù)測(cè),模型的輸出越來(lái)越靠近下游應(yīng)用。

圖片

6.1 多任務(wù)感知

早期的一些工作主要集中在BDD100K數(shù)據(jù)集上的三個(gè)任務(wù):目標(biāo)檢測(cè)、可行使區(qū)域分割和車道線檢測(cè)。其代表性方法例如YOLOP、YOLOPv2等,它們采用強(qiáng)力Encoder結(jié)構(gòu)提特征然后銜接多個(gè)任務(wù)頭,實(shí)現(xiàn)了強(qiáng)大的性能。不過(guò)需要指出的是BDD100K數(shù)據(jù)集里的車道線沒(méi)有實(shí)例級(jí)標(biāo)注,注釋都是語(yǔ)義分割mask,所以這些方法的車道線檢測(cè)頭也都是用語(yǔ)義分割的方式來(lái)做的。最近的研究慢慢上升到3D多任務(wù)感知上,比如PETRv2設(shè)計(jì)三種query,用三個(gè)任務(wù)頭完成3D目標(biāo)檢測(cè)、BEV分割和3D車道線檢測(cè),還有RFTR設(shè)計(jì)一種統(tǒng)一向量場(chǎng)表示從而將3D目標(biāo)檢測(cè)和3D車道線檢測(cè)集成到一個(gè)單頭模型里。

6.2 視頻車道線檢測(cè)

對(duì)于2D的視頻車道線檢測(cè),早期的一些工作用經(jīng)典RNN網(wǎng)絡(luò)(LSTM、GRU)實(shí)現(xiàn)多幀特征融合。后來(lái)21年ICCV新出了VIL-100數(shù)據(jù)集,每個(gè)視頻的幀率下采樣至10s,因此更適合視頻車道線檢測(cè)。其相應(yīng)的baseline方法設(shè)計(jì)兩種attention模塊來(lái)關(guān)聯(lián)多幀的特征。后續(xù)也有RVLD、OMR等創(chuàng)新工作。在3D車道線檢測(cè)方面,STLane3D算是第一篇利用時(shí)序信息的工作,利用attention關(guān)聯(lián)多幀的BEV特征。相比之下,Anchor3DLane-T和CurveFormer++在3D Line Anchor的特征上做attention來(lái)補(bǔ)充時(shí)序信息。

6.3 在線高精地圖構(gòu)建

即現(xiàn)在業(yè)內(nèi)大火的無(wú)圖NOA?;玖鞒淌峭ㄟ^(guò)環(huán)視圖構(gòu)建BEV特征,然后解碼器預(yù)測(cè)地圖元素。因此其關(guān)鍵和車道線檢測(cè)類似,需要考慮如何統(tǒng)一地建模各種地圖元素。需要指出的就是當(dāng)傳感器從單目相機(jī)增加到多相機(jī)時(shí),在BEV平面上會(huì)出現(xiàn)很多U型或水平線,那這時(shí)候車道線檢測(cè)里常用的學(xué)習(xí)等距點(diǎn)偏移量的line anchor modeling方法就不適用了。該任務(wù)最先由HDMapNet提出,其采用自底向上的分割方法預(yù)測(cè)所有地圖元素的mask,并結(jié)合instance embedding聚類得到地圖元素實(shí)例。但這種方法仍然需要矢量化后處理以供下游使用,因此后續(xù)的工作試圖直接完成端到端矢量化建圖。在后續(xù)的一眾方法里,MapTR可謂是最具代表性的工作,其用均勻點(diǎn)來(lái)統(tǒng)一建模地圖元素,所有地圖元素都被表示為具有相同點(diǎn)數(shù)和不同排列順序的集合。得益于其統(tǒng)一的置換等價(jià)建模方式和層級(jí)化query的設(shè)計(jì),MapTR在nuScenes上僅靠相機(jī)輸入就實(shí)現(xiàn)了當(dāng)時(shí)的SOTA,為后續(xù)的研究提供了強(qiáng)有力的baseline。后續(xù)的大部分工作基本都是針對(duì)MapTR進(jìn)行了改進(jìn),比如PivotNet、HIMap、StreamMapNet、MapTracker等,也有一些工作引入地圖先驗(yàn)來(lái)加強(qiáng)局部建圖能力。這一領(lǐng)域內(nèi)的優(yōu)秀工作還有很多,由于這一章是對(duì)車道線檢測(cè)擴(kuò)展工作的簡(jiǎn)單介紹,所以筆者沒(méi)有列出所有的方法(僅ECCV 2024的在線建圖論文貌似就高達(dá)7篇),更多方法的論文和代碼可以在筆者構(gòu)建的GitHub倉(cāng)庫(kù)里找到。

6.4 車道線拓?fù)渫评?/span>

早期的工作主要集中在線和線之間的拓?fù)潢P(guān)系上,即檢測(cè)車道中心線來(lái)構(gòu)建一幅車道圖(lane graph)。開創(chuàng)性工作當(dāng)屬STSU,之后也衍生了如CenterLineDet、LaneGAP等創(chuàng)新工作。后來(lái)OpenLane-V2數(shù)據(jù)集誕生,除了包含中心線檢測(cè)以外,還引入了線和交通標(biāo)志之間的拓?fù)潢P(guān)系,代表性方法例如TopoNet和TopoMLP。TopoNet也是當(dāng)時(shí)的拓?fù)涮魬?zhàn)賽的冠軍。后來(lái)LaneSegNet又把車道線和中心線的關(guān)系連接起來(lái),進(jìn)一步加強(qiáng)了場(chǎng)景理解。

7、未來(lái)方向

對(duì)于未來(lái)方向,討論的范圍包括:領(lǐng)域內(nèi)仍然有待改進(jìn)的問(wèn)題,尚未充分探索的子領(lǐng)域,以及在本領(lǐng)域之外具有重大研究?jī)r(jià)值的相關(guān)任務(wù)。

1、高效統(tǒng)一的建模方式。就目前而言,在不影響效率的條件下有效地建模任意形狀的車道線仍然是一個(gè)挑戰(zhàn)。特別是當(dāng)場(chǎng)景從單目相機(jī)前視圖擴(kuò)展到多相機(jī)環(huán)視圖時(shí),會(huì)存在大量U形或近乎水平的車道線。在這種情況下,嚴(yán)重依賴先驗(yàn)知識(shí)的建模方法,如基于grids的逐行分類建模,或是學(xué)習(xí)等距點(diǎn)偏移量的基于line anchor的建模方式都不適用。這種情況下往往表現(xiàn)不佳的基于mask的建模方式實(shí)際上更有效。像MapTR的均勻點(diǎn)建模方式就不會(huì)出現(xiàn)這種歧義性,不過(guò)這些建圖方案在實(shí)車應(yīng)用的時(shí)候還需要對(duì)速度進(jìn)行優(yōu)化。再有就是CVPR 2024的Lane2Seq通過(guò)序列生成來(lái)統(tǒng)一2D車道線檢測(cè)也是一個(gè)不錯(cuò)的思路,盡管其效率需要進(jìn)一步改進(jìn)(Lane2Seq以自回歸的方式輸出車道線的點(diǎn)集,當(dāng)車道線數(shù)量增多時(shí)推理速度就會(huì)顯著下降,這可能也是為什么其沒(méi)有在CurveLanes這種多車道線場(chǎng)景的數(shù)據(jù)集做實(shí)驗(yàn)的原因)。

2、多模態(tài)車道線檢測(cè)。其實(shí)近年來(lái)純LiDAR的車道線檢測(cè)Benchmark和方案也有,最典型的比如CVPR 2022的K-Lane。盡管LiDAR可以直接提供3D信息,但其較短的感知范圍和較高的成本使得基于相機(jī)的方法更普遍。不過(guò)后續(xù)的技術(shù)路線肯定是多模態(tài)融合,這一點(diǎn)已經(jīng)在很多通用3D感知工作中得到印證了,但對(duì)于車道線檢測(cè)來(lái)說(shuō)目前這類方法還很稀少,代表性的如-3DLaneNet、DV-3DLane,都是LATR團(tuán)隊(duì)的工作。

3、標(biāo)簽高效的車道線檢測(cè)。即弱監(jiān)督策略和無(wú)監(jiān)督策略,同樣目前相關(guān)工作較少。

4、對(duì)于端到端自動(dòng)駕駛。在端到端框架中,車道線檢測(cè)往往不再輸出顯式的車道線坐標(biāo),而是作為提供中間表示的模塊。后續(xù)的研究或許可以將特定的車道線檢測(cè)輸出(如中心線、車道線寬度、曲率等)作為先驗(yàn)知識(shí)整合進(jìn)端到端框架里來(lái)提高性能。

5、針對(duì)車道線檢測(cè)的視覺(jué)推理。大語(yǔ)言模型(LLM)和視覺(jué)語(yǔ)言模型(VLM)目前也已經(jīng)被廣泛用于自動(dòng)駕駛領(lǐng)域,相關(guān)工作有很多。值得注意的是今年CVPR的一個(gè)新數(shù)據(jù)集MapLM,是專門針對(duì)地圖和交通場(chǎng)景里的車道線等靜態(tài)目標(biāo)開發(fā)的benchmark,利用大模型來(lái)更好地理解交通場(chǎng)景,未來(lái)在這方面的研究應(yīng)該會(huì)更多。

6、路側(cè)車道線檢測(cè)。V2X也是目前比較火熱的一個(gè)方向,其相應(yīng)的路側(cè)3D目標(biāo)檢測(cè)任務(wù)和相關(guān)方法也得到了廣泛關(guān)注。但是目前還沒(méi)有針對(duì)路側(cè)場(chǎng)景車道線標(biāo)注的相關(guān)數(shù)據(jù)集和方法。如果能誕生相應(yīng)benchmark和baseline,路側(cè)車道線檢測(cè)可以有效地幫助監(jiān)控車輛非法變道等行為,在安防領(lǐng)域具有巨大的潛力。

8、總結(jié)

本文全面回顧了基于深度學(xué)習(xí)的單目車道線檢測(cè)的最新進(jìn)展,涵蓋了先進(jìn)的2D和3D車道線檢測(cè)方法。通過(guò)理論分析和實(shí)驗(yàn)評(píng)估,確定了車道線檢測(cè)算法的四個(gè)核心設(shè)計(jì):(1)所遵循的任務(wù)范式;(2)車道線的建模方式;(3)全局上下文補(bǔ)充;(4)相機(jī)透視效應(yīng)的消除。從這些角度,本文對(duì)現(xiàn)有方法進(jìn)行了全面概述。此外,本文還回顧了單目車道線檢測(cè)的擴(kuò)展工作,旨在為讀者提供對(duì)車道線檢測(cè)發(fā)展的更全面理解。最后指出了車道線檢測(cè)的未來(lái)研究方向。

責(zé)任編輯:張燕妮 來(lái)源: 自動(dòng)駕駛之心
相關(guān)推薦

2024-04-28 15:04:08

自動(dòng)駕駛視覺(jué)

2024-03-07 12:31:29

AI技術(shù)

2022-07-19 16:03:14

KubernetesLinux

2020-11-16 10:47:14

FreeRTOS應(yīng)用嵌入式

2021-06-04 07:27:24

sourcemap前端技術(shù)

2021-10-18 11:58:56

負(fù)載均衡虛擬機(jī)

2022-09-06 08:02:40

死鎖順序鎖輪詢鎖

2022-07-15 16:31:49

Postman測(cè)試

2021-01-19 05:49:44

DNS協(xié)議

2018-05-31 08:50:54

區(qū)塊鏈數(shù)字貨幣比特幣

2022-09-14 09:01:55

shell可視化

2024-03-07 18:11:39

Golang采集鏈接

2023-12-04 08:10:34

Spring循環(huán)依賴

2020-07-15 08:57:40

HTTPSTCP協(xié)議

2023-06-12 08:49:12

RocketMQ消費(fèi)邏輯

2020-07-09 07:54:35

ThreadPoolE線程池

2022-10-10 08:35:17

kafka工作機(jī)制消息發(fā)送

2024-05-10 12:59:58

PyTorch人工智能

2021-08-26 05:02:50

分布式設(shè)計(jì)

2024-01-11 09:53:31

面試C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)