點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/157530787
轉(zhuǎn)自 | 計(jì)算機(jī)視覺(jué)工坊
前言
車(chē)道線(xiàn)檢測(cè)是自動(dòng)駕駛中的一個(gè)基礎(chǔ)模塊,其實(shí)也是一個(gè)由來(lái)已久的任務(wù),早期已有很多基于傳統(tǒng)圖像處理實(shí)現(xiàn)的車(chē)道線(xiàn)檢測(cè)算法。但隨著大家研究的深入,車(chē)道線(xiàn)檢測(cè)任務(wù)所應(yīng)對(duì)的場(chǎng)景越來(lái)越多樣化,逐步已經(jīng)脫離了對(duì)于“白、黃色線(xiàn)條”這種低階理解。目前更多的方式是尋求對(duì)于 語(yǔ)義上 車(chē)道線(xiàn)存在位置的檢測(cè),即使它是模糊的、被光照影響的、甚至是完全被遮擋的,如下圖所示。
圖1 目前車(chē)道線(xiàn)檢測(cè)的難點(diǎn)為尋找語(yǔ)義上的線(xiàn),而不是局限于表觀存在的線(xiàn)
對(duì)于上圖這類(lèi)問(wèn)題,基于傳統(tǒng)圖像處理的方法幾乎無(wú)法實(shí)現(xiàn)檢測(cè),因此有了一些方法開(kāi)始嘗試一種最直接的深度學(xué)習(xí)方案——把車(chē)道線(xiàn)檢測(cè)視為分割任務(wù)。雖然深度分割方法效果強(qiáng)于傳統(tǒng)方法,但存在兩個(gè)關(guān)鍵問(wèn)題
因?yàn)榉指钍侵鹣袼胤诸?lèi)的,要對(duì)圖像中每一個(gè)像素點(diǎn)進(jìn)行分類(lèi)。為了分割車(chē)道線(xiàn)要進(jìn)行非常密集的計(jì)算,導(dǎo)致的結(jié)果就是速度比較慢。其實(shí)車(chē)道線(xiàn)像素其實(shí)只占圖像很少一部分,想想也不需要進(jìn)行這么舍本逐末的操作。
分割的另一個(gè)問(wèn)題是感受野問(wèn)題。因?yàn)榉指钜话闶侨矸e得到分割結(jié)果,而卷積基本上是比較局部的,所以每個(gè)像素的感受野有限。在其他分割問(wèn)題中可能問(wèn)題不大,但在車(chē)道線(xiàn)檢測(cè)中,問(wèn)題就很大了。由于我們關(guān)注的問(wèn)題大多是上圖這種語(yǔ)義線(xiàn)的檢測(cè),需要對(duì)全局有很好的感知才能實(shí)現(xiàn)良好的定位。比如在圖1中,對(duì)于車(chē)道線(xiàn)的定位只有靠周?chē)?chē)流走向這種全局信息才能很好地定位。
雖然有些很好的工作,比如SCNN[1]使用不同方向上的特征傳播實(shí)現(xiàn)信息傳遞,間接完成了增大感受野,增加全局信息的目標(biāo),但是速度更慢了。
其實(shí)直觀感受來(lái)說(shuō),做車(chē)道線(xiàn)檢測(cè)沒(méi)必要這么大動(dòng)干戈把每個(gè)像素都進(jìn)行分類(lèi)。基于此,我們的方法遵循著一個(gè)非常簡(jiǎn)單的動(dòng)機(jī):有沒(méi)有更簡(jiǎn)單的方式建模車(chē)道線(xiàn)檢測(cè)?
方法介紹
為了更簡(jiǎn)單地建模車(chē)道線(xiàn),也為了解決上述兩個(gè)分割方法存在的問(wèn)題,我們提出了一個(gè)全新的車(chē)道線(xiàn)檢測(cè)定義:將車(chē)道線(xiàn)檢測(cè)定義為尋找車(chē)道線(xiàn)在圖像中某些行的位置的集合,即基于行方向上的位置選擇、分類(lèi)(row-based classification),如下圖所示。
圖2 將車(chē)道線(xiàn)檢測(cè)定義為在某些行上位置的選擇、分類(lèi)
假設(shè)我們要檢測(cè)一條車(chē)道線(xiàn)的圖像大小為HxW,對(duì)于分割問(wèn)題,我們需要處理HxW個(gè)分類(lèi)問(wèn)題。
由于我們的方案是行向選擇,假設(shè)我們?cè)趆個(gè)行上做選擇,我們只需要處理h個(gè)行上的分類(lèi)問(wèn)題,只不過(guò)每行上的分類(lèi)問(wèn)題是W維的。因此這樣就把原來(lái)HxW個(gè)分類(lèi)問(wèn)題簡(jiǎn)化為了只需要h個(gè)分類(lèi)問(wèn)題,而且由于在哪些行上進(jìn)行定位是可以人為設(shè)定的,因此h的大小可以按需設(shè)置,但一般h都是遠(yuǎn)小于圖像高度H的。
這樣,我們就把分類(lèi)數(shù)目從HxW直接縮減到了h,并且h遠(yuǎn)小于H,更不用說(shuō)h遠(yuǎn)小于HxW了。因此我們的方法將計(jì)算復(fù)雜度縮減到了一個(gè)極小的范圍內(nèi),解決了分割速度慢的問(wèn)題,極大地提速的了車(chē)道線(xiàn)檢測(cè)算法的速度,這也是我們方法能夠達(dá)到300+FPS的原因。下圖展示了我們方法和基于分割的車(chē)道線(xiàn)檢測(cè)方法的比較。
圖3 和傳統(tǒng)分類(lèi)方法的比較。我們的方法直接做行方向上的選擇,而不是逐像素分割。
圖4 我們的方法是行上的水平選擇
圖5 分割方法是逐像素上channel維度的選擇
除了速度快之外,我們的方法還可以解決上文提到的另一個(gè)問(wèn)題:局部感受野小導(dǎo)致的復(fù)雜車(chē)道線(xiàn)檢測(cè)困難問(wèn)題。由于我們的方法不是分割的全卷積形式,是一般的基于全連接層的分類(lèi),它所使用的特征是全局特征。這樣就直接解決了感受野的問(wèn)題,對(duì)于我們的方法,在檢測(cè)某一行的車(chē)道線(xiàn)位置時(shí),感受野就是全圖大小。因此也不需要復(fù)雜的信息傳遞機(jī)制就可以實(shí)現(xiàn)很好的效果。
除此之外,由于有了水平行方向上直接的位置信息,我們還可以使用這些信息來(lái)加入車(chē)道線(xiàn)的先驗(yàn)約束——平滑性和剛性。
我們將相鄰行上分類(lèi)的L1范數(shù)定義為平滑性,希望車(chē)道線(xiàn)位置在相鄰行上是相近且平滑變化的。
將相鄰行間的二階差分定義為車(chē)道線(xiàn)的形狀。由于車(chē)道線(xiàn)大多是直線(xiàn),因此其二階差分為0,所以約束其二階差分與0的差異可以在優(yōu)化過(guò)程中使得預(yù)測(cè)出的車(chē)道線(xiàn)更直。
具體公式符號(hào)定義請(qǐng)見(jiàn)我們的文章。
由于分割方法得到的為車(chē)道線(xiàn)的二值分割圖,其結(jié)構(gòu)是逐像素建模,因此幾乎無(wú)法實(shí)現(xiàn)對(duì)上述高層語(yǔ)義(平滑、剛性)層級(jí)的約束,這也是我們方法的另一個(gè)優(yōu)點(diǎn)。
實(shí)驗(yàn)結(jié)果
我們?cè)赥usimple和CULane上都進(jìn)行了測(cè)試,都驗(yàn)證了我們的方法可以在超快速度下達(dá)到接近或超越SOTA方法的性能。
Tusimple數(shù)據(jù)集結(jié)果
可以看到在Tusimple數(shù)據(jù)集上我們的方法比SCNN[1]快了41.7倍,比SOTA的SAD[2]也快了4倍。但是Tusimple數(shù)據(jù)集上大家性能也比較飽和了,沒(méi)有達(dá)到SOTA的水平。
CULane數(shù)據(jù)集結(jié)果
在另一個(gè)更為挑戰(zhàn)性的CULane數(shù)據(jù)集上,我們的方法同時(shí)達(dá)到了最快的速度和最好的精度。SOTA性能的模型能跑到175幀,輕量級(jí)的模型甚至可以跑到322幀。
這個(gè)速度是我們?cè)贕TX 1080Ti上測(cè)的,在20系或者Tesla顯卡上應(yīng)該速度會(huì)更快。但已經(jīng)這么快了,還要啥自行車(chē) : )
目前代碼和模型都已開(kāi)源,希望大家多多指教!
https://arxiv.org/abs/2004.11757
https://github.com/cfzd/Ultra-Fast-Lane-Detection
參考
1.abhttps://arxiv.org/abs/1712.06080
2.https://arxiv.org/abs/1908.00821
本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目31講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目31講,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線(xiàn)檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線(xiàn)、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。
下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。
下載4:leetcode算法開(kāi)源書(shū)
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):leetcode,即可下載。每題都 runtime beats 100% 的開(kāi)源好書(shū),你值得擁有!

交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~