細(xì)看深度學(xué)習(xí)在ADAS中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
內(nèi)容提綱:
ADAS系統(tǒng)包括車輛檢測、行人檢測、交通標(biāo)志識別、車道線檢測等多種任務(wù),同時(shí),由于無人駕駛等應(yīng)用場景的要求,車載視覺系統(tǒng)還應(yīng)具備相應(yīng)速度快、精度高、任務(wù)多等要求。對于傳統(tǒng)的圖像檢測與識別框架而言,短時(shí)間內(nèi)同時(shí)完成多類的圖像分析任務(wù)是難以實(shí)現(xiàn)的。
袁雪副教授的項(xiàng)目組提出使用一個(gè)深度神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)交通場景中多任務(wù)處理的方法。其中交通場景的分析主要包括以下三個(gè)方面:大目標(biāo)檢測(車輛、行人和非機(jī)動(dòng)車),小目標(biāo)分類(交通標(biāo)志和紅綠燈)以及可行駛區(qū)域(道路和車道線)的分割。
這三類任務(wù)可以通過一個(gè)深度神經(jīng)網(wǎng)絡(luò)的前向傳播完成,這不僅可以提高系統(tǒng)的檢測速度,減少計(jì)算參數(shù),而且可以通過增加主干網(wǎng)絡(luò)的層數(shù)的方式提高檢測和分割精度。
以下為當(dāng)天分享的內(nèi)容總結(jié)。
圖文分享總結(jié)
一、任務(wù)分析
WHO在2009年統(tǒng)計(jì)的一個(gè)數(shù)據(jù)顯示,在全世界范圍內(nèi)每年由交通事故死亡的人數(shù)有123萬人。但是我們知道,在朝鮮戰(zhàn)爭中,整個(gè)戰(zhàn)爭死亡的人數(shù)也差不多一百多萬。也就是說,每年死于交通事故的人數(shù)差不多等于一次非常慘烈的戰(zhàn)爭的死亡人數(shù)了。根據(jù)WHO統(tǒng)計(jì),在全世界范圍內(nèi)每年由交通事故造成的死亡人數(shù)有123萬之多;而發(fā)生交通事故90%是由司機(jī)人為原因造成的,比如注意力不集中、超速、安全意識弱等等。所以目前減少交通事故的最主要途徑通過采用高級輔助駕駛系統(tǒng)(ADAS)就是減少認(rèn)為錯(cuò)誤。
對于ADAS系統(tǒng),基本上包括這些功能:夜視輔助、車道保持、司機(jī)提醒、防撞提醒、車道變換輔助、停車輔助、碰撞疏解、死角障礙物檢測、交通標(biāo)志識別、車道線偏移提醒、司機(jī)狀態(tài)監(jiān)測、遠(yuǎn)光燈輔助等。這些功能是ADAS所必備的。
為了實(shí)現(xiàn)這些功能,一般其傳感器需要包括視覺傳感器、超聲波傳感器、GPS&Map傳感器、Lidar傳感器、Radar傳感器,還有一些別的通信設(shè)備。但是我們在市面上看到的大多數(shù)傳感器其功能其實(shí)是比較少的,例如mobile I,它只有車道保持、交通標(biāo)志識別、前車監(jiān)測和距離監(jiān)測的功能,但并不全面。從廠家或者用戶的角度來說,自然我們希望能用最便宜的傳感器來完成更多ADAS的功能。最便宜的傳感器基本上就是視覺傳感器。所以我們設(shè)計(jì)方案時(shí)就想,能不能通過算法將視覺傳感器實(shí)現(xiàn)更多ADAS系統(tǒng)的功能呢?這就是我們整個(gè)研發(fā)的初衷。
此外,我們還需要考慮ADAS的一些特點(diǎn)。ADAS系統(tǒng)(包括無人駕駛)是在一個(gè)嵌入式平臺下進(jìn)行的,也就是說它的計(jì)算資源很少。那么我們也必須考慮如何在這樣一個(gè)計(jì)算資源非常少的基礎(chǔ)上,保證ADAS系統(tǒng)能夠快速且高精度地響應(yīng),同時(shí)還能保證多任務(wù)的需求。這是我們第二個(gè)要考慮的問題。
為了解決以上兩個(gè)問題,我們首先把ADAS的任務(wù)分解一下。如圖所示,我們將ADAS的任務(wù)分解成目標(biāo)檢測與識別、圖像分割、攝像機(jī)成像目標(biāo)跟蹤、圖像分割。我們過去一年多的研發(fā)工作其實(shí)就是,用一個(gè)深度學(xué)習(xí)框架來同時(shí)實(shí)現(xiàn)上述這四個(gè)的功能。
對于一個(gè)前向傳播的網(wǎng)絡(luò),其計(jì)算量和計(jì)算時(shí)間主要取決于它的參數(shù)數(shù)量,而80%的參數(shù)都來自全鏈接層,所以我們的第一個(gè)想法就是去掉全鏈接層。其次,網(wǎng)絡(luò)越深,它的參數(shù)就會越多所以如果我們把目標(biāo)檢測與識別、圖像分割、攝像機(jī)成像目標(biāo)跟蹤、圖像分割做成四個(gè)網(wǎng)絡(luò)的話,就會有X4倍的參數(shù)。
所以針對這兩個(gè)考量,我們用一個(gè)主干的網(wǎng)絡(luò)來做前面的運(yùn)算,然后在后面再根據(jù)具體的任務(wù)分成多個(gè)小的分支加到主干網(wǎng)絡(luò)上。這樣多個(gè)圖像處理的任務(wù)就可以通過一個(gè)主干網(wǎng)絡(luò)的前向傳播來完成了,其參數(shù)大大減少,計(jì)算速度也變的更快。同時(shí)我們也能實(shí)現(xiàn)多個(gè)任務(wù)同時(shí)進(jìn)行的需求。另外,在最后我們還可以將多個(gè)結(jié)果進(jìn)行融合,駕到訓(xùn)練過程的調(diào)整中,這樣就可以提高我們結(jié)果的可信性。
但是在這個(gè)過程中我們也碰到一些難點(diǎn)。第一個(gè)難點(diǎn)就是我們在同一個(gè)網(wǎng)絡(luò)中需要將較大的目標(biāo)(例如車輛)和較小的目標(biāo)(例如交通標(biāo)志)同時(shí)檢測出來。第二個(gè)難點(diǎn)是,測速測距時(shí)我們需要的目標(biāo)的位置是非常精確的,目前這個(gè)問題我們還沒有解決。
二、模型結(jié)構(gòu)
這個(gè)是我們設(shè)計(jì)的網(wǎng)絡(luò)的一個(gè)基本結(jié)構(gòu)。它分為幾個(gè)部分:主干網(wǎng)絡(luò)(我們稱為解碼器)、多個(gè)分支(我們稱為編碼器)和基于CRF的結(jié)果融合?,F(xiàn)在這個(gè)網(wǎng)絡(luò)我們只設(shè)計(jì)了兩個(gè)編碼器,一個(gè)是檢測任務(wù)編碼器,還有一個(gè)是分割任務(wù)編碼器,以后我們還可以增加其他的編碼器。結(jié)果融合,主要是想用它來影響主干網(wǎng)絡(luò)的一些權(quán)重選擇。主干網(wǎng)絡(luò),我們選擇了一些比較有人氣的算法,例如VGG 16、GoogleNet、ResNet等。分割任務(wù)編碼器我們用了FCN編碼器,檢測任務(wù)編碼器我們用了YOLO9000編碼器。
1、主干網(wǎng)絡(luò)
下面我們來詳細(xì)看一下這個(gè)網(wǎng)絡(luò)各個(gè)部分。首先我們來看主干網(wǎng)絡(luò)。主干網(wǎng)絡(luò)我們使用了VGG、GoogleNet或者ResNet。這幾個(gè)是可選擇的。從右側(cè)的這張圖(縱軸是網(wǎng)絡(luò)深度,圈的大小表示模型的大小)我們可以看到ResNet在深度和大小上都比較好,我們選擇使用ResNet可以有比較好的實(shí)時(shí)性。[!--empirenews.page--]
2、FCN語義分割解碼器
然后我們看一下FCN語義分割解碼器。在神經(jīng)網(wǎng)絡(luò)中,一張圖片經(jīng)過主干網(wǎng)絡(luò)后,再對其提取高維特征圖。其實(shí)這個(gè)過程就是用pooling的方法給它降維。結(jié)果到了輸出高維特征圖時(shí),它只有原圖像的1/32大小了。隨后我們采用上采樣把它升維成原圖像大小。上采樣的過程就如左側(cè)所示,這個(gè)示例中我們將2*2的圖像上采樣成4*4的圖像。
上采樣的結(jié)果就是解碼器預(yù)測出來的,我們將它與標(biāo)注好的圖像進(jìn)行比較運(yùn)算,算出loss,然后對權(quán)重進(jìn)行修改。在上采樣中一個(gè)問題就是,比較小的物體是計(jì)算不出來的。我們知道一些較淺的卷積層感知閾比較小,它會包含更多比較局部的信息;而較深的卷積層具有較大的感知閾,它能夠?qū)W習(xí)到更加抽象的信息。于是FCN就通過將pool3、pool4和pool5的信息疊加在一起進(jìn)行上采樣,這樣就可以做到同時(shí)上采樣多個(gè)尺度的信息了。
3、目標(biāo)檢測/識別解碼器 YOLO
其次我們再來介紹一下用于目標(biāo)檢測/識別的解碼器YOLO。我們使用的是YOLO V2的解碼器,但這里我們先介紹一下YOLO V1。這是YOLO V1的主框架,它的主干網(wǎng)絡(luò)是Darknet19,我們不用管它。我們重點(diǎn)關(guān)注編碼器的過程。主干網(wǎng)絡(luò)輸出的特征圖,這種特征圖會用1*1 的卷積核給正規(guī)化成7*7*30的特征圖。那么這個(gè)30是什么呢?
在這樣一個(gè)7*7的矩形框中,每一個(gè)方形框用一個(gè)點(diǎn)來表示。然后我們分別用5維表示包含這個(gè)方形框的一個(gè)矩形框,其中4維表示x、y、z、w,另外一維為confidence。
在YOLO V1中30維的前10個(gè)為兩個(gè)這樣的矩形框。它們的(x,y,z,w)分別表示了坐標(biāo)預(yù)測,而另外一維為confidence預(yù)測。另外的20維為類別預(yù)測(也就是說在模型中有20種可能出現(xiàn)的例如汽車、行人之類的模型 )。
YOLO V2與V1最大的不同就是采用了Anchor boxes。所謂Anchor boxes就是每個(gè)中心預(yù)測(例如9種)不同大小和比例的建議框,每一個(gè)建議框?qū)?yīng)一個(gè)4維的坐標(biāo)預(yù)測、1維confidence預(yù)測和20維的類別預(yù)測。它提出一個(gè)非常有意思的思想就是維度聚類,也即現(xiàn)在訓(xùn)練集里通過聚類的方式算出Anchor boxes的大小。這樣,例如它從9個(gè)boxes選出5個(gè)boxes。于是對于VOC數(shù)據(jù)集,總共就5*(4+1+20)=125個(gè)輸出維度。
YOLO V2 Anchor boxes的選擇以及維度聚類的思想對于我們車載攝像的問題是更有效的,因?yàn)槲覀償z像機(jī)的位置是相對固定的,所以我們可以算出每一個(gè)目標(biāo)的大小都是相對比較固定的。
我們在YOLO V2的基礎(chǔ)上也做了一些改動(dòng)。首先是我們做了一些細(xì)粒度特征,來檢測小目標(biāo)。其次我們還在淺層特征中進(jìn)一步地做坐標(biāo)預(yù)測,然后加到我們的整個(gè)預(yù)測當(dāng)中,這樣可以提高小目標(biāo)的預(yù)測。
4、一些思考
在這個(gè)研究的過程中,我們做了一些思考。
首先,在計(jì)算機(jī)視覺領(lǐng)域里,低中層視覺問題更關(guān)注原始視覺信號,與語義信息的聯(lián)系相對松散,同時(shí)也是許多高層視覺問題的預(yù)處理步驟。本屆CVPR有關(guān)低中層視覺問題的論文有很多,涵蓋去模糊、超分辨率、物體分割、色彩恒定性(color constancy)。
其次,在最后的層中抽象的特征對分類很有幫助,可以很好地判斷出一幅圖像中包含什么類別的物體,但是因?yàn)閬G失了一些物體的細(xì)節(jié),不能很好地給出物體的具體輪廓,指出每個(gè)像素具體屬于哪個(gè)物體。
我們該如何將淺層特征和深層特征結(jié)合起來呢?這其實(shí)還需要進(jìn)一步的研究。
三、數(shù)據(jù)庫建立
在數(shù)據(jù)庫這方面,我們發(fā)現(xiàn)國內(nèi)的路況與國外路況很不一樣,且中國的車的種類也多種多樣。所以我們開發(fā)了一種半自動(dòng)標(biāo)注軟件,也就是我們可以通過算法自動(dòng)完成車輛標(biāo)注,同時(shí)我們還可以手動(dòng)修正誤差較大的標(biāo)注。目前我們已經(jīng)標(biāo)注了5萬張矩形標(biāo)注數(shù)據(jù)集。我們力爭在年底能夠開放數(shù)據(jù)集,另一方面我們也能協(xié)助企業(yè)建立數(shù)據(jù)庫。
另外在數(shù)據(jù)庫建立方面,我們還要拓展一下數(shù)據(jù)庫類型。例如通過原來白天的圖片,我們可以生成黑夜的圖片,增加到我們的訓(xùn)練樣本中去。
四、結(jié)果顯示
[!--empirenews.page--]