車道線檢測(cè)、跟蹤的項(xiàng)目,主要是通過設(shè)置ROI(感興趣區(qū)域)、調(diào)試算法閾值,通過人為設(shè)定規(guī)則的方式實(shí)現(xiàn)車道線檢測(cè)。隨著人工智能技術(shù)的發(fā)展,近幾年在圖像處理領(lǐng)域越來越多地采用深度學(xué)習(xí)的方式進(jìn)行圖像中物體的識(shí)別。使用深度學(xué)習(xí)的方法識(shí)別圖像,不僅性能更為魯棒,而且相比于設(shè)定規(guī)則的方式,識(shí)別率更高。
正文
先通過一張簡(jiǎn)單的圖,認(rèn)識(shí)工智能、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的關(guān)系。由圖可以看出深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,機(jī)器學(xué)習(xí)又是人工智能的一個(gè)分支。
人工智能最早可以追溯到上個(gè)世紀(jì)五十年代,受制于當(dāng)時(shí)的計(jì)算能力,人工智能技術(shù)并沒有得到很好地發(fā)展;直到上世紀(jì)八十年代,計(jì)算機(jī)算力的大幅提高,人工智能才得以蓬勃發(fā)展,繼而衍生出了機(jī)器學(xué)習(xí)技術(shù),機(jī)器學(xué)習(xí)的出現(xiàn),幫助人類解決了很多諸如垃圾郵件分類、房?jī)r(jià)估計(jì)等簡(jiǎn)單問題,也輔助解決圖像識(shí)別等復(fù)雜問題,但準(zhǔn)確度未能達(dá)到預(yù)期。直到深度學(xué)習(xí)(通過的神經(jīng)網(wǎng)絡(luò)進(jìn)行機(jī)器學(xué)習(xí))技術(shù)的出現(xiàn)以及并行計(jì)算技術(shù)的加持,使得圖像識(shí)別等復(fù)雜問題的準(zhǔn)確度得到了大幅提升,一舉超越了人類識(shí)別的水平。越來越多的科學(xué)工作者、工程人員和資本投入到了深度學(xué)習(xí)領(lǐng)域。
人工智能主要是為了解決預(yù)測(cè)(回歸)和分類兩大問題。在生活中,預(yù)測(cè)的例子有很多,比如根據(jù)房屋面積等信息預(yù)測(cè)房屋的價(jià)格,或是根據(jù)前幾年的銷售額,預(yù)測(cè)今年的銷售額等。分類的問題也有很多,比如判定股票的漲跌,圖像中的物體(比如手寫數(shù)字、字母)的識(shí)別等。
認(rèn)識(shí)神經(jīng)網(wǎng)絡(luò)
提到神經(jīng)網(wǎng)絡(luò)時(shí),我們總會(huì)看到如下由圓圈和線組成的網(wǎng)絡(luò),下面說一下這樣繪制的原因。
人類的神經(jīng)元通過多個(gè)樹突接收數(shù)據(jù),經(jīng)過處理后,將信號(hào)通過軸突發(fā)出,與上述結(jié)構(gòu)十分相似,因此我們搭建的網(wǎng)絡(luò)圖也被稱為神經(jīng)網(wǎng)絡(luò)。
圖片出處:優(yōu)達(dá)學(xué)城(Udacity)無人駕駛工程師學(xué)位
通過一個(gè)房?jī)r(jià)計(jì)算的例子,解釋一下這里的圓圈和線段。
在一個(gè)地區(qū),決定一個(gè)房子最直接因素就是房子的面積,面積越大,房子的價(jià)格就越高。
即房屋價(jià)格 = 房屋面積*每平方米房?jī)r(jià)。我們用兩個(gè)圓圈和一條線段可將這個(gè)關(guān)系表示為:
這是房屋價(jià)格最簡(jiǎn)單的計(jì)算方法。
但是房屋價(jià)格還受到其他因素的影響,比如是是否裝修、家具等。
引入裝修和家具的支出,得房屋價(jià)格 = 房屋面積*每平方米房?jī)r(jià) + 裝修面積 * 每平方米裝修 + 家具支出 * 1。最終的房屋價(jià)格組成的圖應(yīng)該如下所示:
這就組成了一個(gè)預(yù)測(cè)房屋價(jià)格的基本網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)中房屋面積、裝修面積、家具支出是這個(gè)網(wǎng)絡(luò)的輸入,房?jī)r(jià)/平米、裝修/平米為這個(gè)網(wǎng)絡(luò)的參數(shù),線段代表的是這個(gè)參數(shù)的乘法運(yùn)算,房屋價(jià)格為這個(gè)網(wǎng)絡(luò)的輸出。
我們將上面的網(wǎng)絡(luò)圖做一個(gè)抽象表達(dá),使其能夠應(yīng)用于除房?jī)r(jià)預(yù)測(cè)外的更多場(chǎng)景。如下所示:
對(duì)于這個(gè)簡(jiǎn)單的網(wǎng)絡(luò)而言,x1、x2、b被稱作這個(gè)網(wǎng)絡(luò)的輸入,位于這一層的數(shù)據(jù)被稱為輸入層(Input Layer);w1、w2被稱作這個(gè)網(wǎng)絡(luò)的參數(shù);線段為參數(shù)的運(yùn)算規(guī)則,這里既可以是四則運(yùn)算,也可是復(fù)雜的函數(shù)運(yùn)算;output為這個(gè)網(wǎng)絡(luò)的輸出,位于這一層數(shù)據(jù)被稱為輸出層(Output Layer)。
房?jī)r(jià)預(yù)測(cè)問題相對(duì)直觀、簡(jiǎn)單,不需要太過復(fù)雜的網(wǎng)絡(luò)即可實(shí)現(xiàn)。可一旦面對(duì)復(fù)雜的問題(如圖像識(shí)別)時(shí),無法通過簡(jiǎn)單的線性網(wǎng)絡(luò)描述清楚,需要引入更多的參數(shù)和更為復(fù)雜的計(jì)算(比如sigmoid、relu等函數(shù))。就出現(xiàn)了這種需要包含隱藏層(hidden layers)的網(wǎng)絡(luò)。當(dāng)網(wǎng)絡(luò)越大時(shí),整個(gè)網(wǎng)絡(luò)所包含的參數(shù)就越多,網(wǎng)絡(luò)也越復(fù)雜。網(wǎng)絡(luò)越復(fù)雜,神經(jīng)網(wǎng)絡(luò)中的參數(shù)越難解釋其作用,這就是深度神經(jīng)網(wǎng)絡(luò)被稱為“黑盒”的原因。
神經(jīng)網(wǎng)絡(luò)的參數(shù)
房?jī)r(jià)計(jì)算的神經(jīng)網(wǎng)絡(luò)搭建好后,我們就可以通過向網(wǎng)絡(luò)中輸入房屋面積、裝修面積、家具支出等信息,得到房屋的價(jià)格了。當(dāng)網(wǎng)絡(luò)的參數(shù)(房?jī)r(jià)/平米、裝修/平米)越準(zhǔn)確時(shí),使用該模型預(yù)測(cè)得到的輸出(房屋價(jià)格)也將越準(zhǔn)確。因此合理的參數(shù)設(shè)置,決定著一個(gè)神經(jīng)網(wǎng)絡(luò)的好壞。
在深度學(xué)習(xí)技術(shù)普及前,神經(jīng)網(wǎng)絡(luò)的參數(shù),是根據(jù)開發(fā)者的經(jīng)驗(yàn)設(shè)置的。再通過真實(shí)的數(shù)據(jù),帶入驗(yàn)證,不斷微調(diào),使網(wǎng)絡(luò)預(yù)測(cè)出的值盡可能接近真實(shí)值,進(jìn)而得到越來越準(zhǔn)確的參數(shù)。這種人為設(shè)置參數(shù)的行為在淺層的神經(jīng)網(wǎng)絡(luò)中尚可行得通,一旦網(wǎng)絡(luò)參數(shù)達(dá)到千甚至上萬級(jí)別時(shí),這種方法變得不再可行。
為解決深層神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)試方法,深度學(xué)習(xí)領(lǐng)域的專家提出了反向傳播(Back propagation)理論。
數(shù)據(jù)由輸入層傳入,再經(jīng)過隱藏層的一系列計(jì)算得到結(jié)果,并由輸出層傳出的這個(gè)過程被稱為前向傳播(Forward propagation)。反向傳播的思路與前面提到的人為設(shè)置參數(shù)的方法類似,也是通過對(duì)比網(wǎng)絡(luò)預(yù)測(cè)值與真實(shí)值之間的差異,進(jìn)而微調(diào)網(wǎng)絡(luò)。
不過反向傳播的做法與人為設(shè)置參數(shù)有所不同,它需要計(jì)算預(yù)測(cè)值和真實(shí)的損失函數(shù)L,損失函數(shù)可以理解為預(yù)測(cè)值和真實(shí)值之間的差值,差值越大,損失函數(shù)越大。
完成預(yù)測(cè)值與真值的損失函數(shù)計(jì)算后,通過求取前向傳播參數(shù)的偏導(dǎo)的方法,將損失函數(shù)對(duì)參數(shù)的偏導(dǎo)傳遞到前一層網(wǎng)絡(luò),利用這個(gè)偏導(dǎo)與一個(gè)系數(shù)(學(xué)習(xí)率)的乘積更新網(wǎng)絡(luò)中的參數(shù)。隨后繼續(xù)傳播到更上一層的網(wǎng)絡(luò),直到網(wǎng)絡(luò)中所有的參數(shù)都被更新。
每有一組數(shù)據(jù),就可以利用反向傳播的方法進(jìn)行一次參數(shù)的更新,這就是深度學(xué)習(xí)網(wǎng)絡(luò)會(huì)隨著訓(xùn)練數(shù)據(jù)量的增大,變得越來越準(zhǔn)確的原因。
反向傳播的理論在優(yōu)達(dá)學(xué)城(Udacity)無人駕駛工程師學(xué)位的深度學(xué)習(xí)基礎(chǔ)課程中做了詳細(xì)的介紹,也可以參考CSDN的文章《一文弄懂神經(jīng)網(wǎng)絡(luò)中的反向傳播法》,該文使用了一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)一步步闡述了反向傳播的過程,淺顯易懂。
訓(xùn)練集、驗(yàn)證集、測(cè)試集
在前面的介紹中,我一直使用數(shù)據(jù)一詞來表達(dá)神經(jīng)網(wǎng)絡(luò)的輸入。實(shí)際上這些數(shù)據(jù)在神經(jīng)網(wǎng)絡(luò)的不同階段有不同的稱呼。他們分別是訓(xùn)練集(Training Set)、驗(yàn)證集(alidation Set)和測(cè)試集(Test Set)。
訓(xùn)練集和驗(yàn)證集是在神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練階段使用的數(shù)據(jù),而測(cè)試集是在神經(jīng)網(wǎng)絡(luò)模型完成訓(xùn)練后,用于評(píng)估模型時(shí)所使用的數(shù)據(jù)。做一個(gè)簡(jiǎn)單的比喻,訓(xùn)練集就是的學(xué)生的課本,學(xué)生需要根據(jù)課本來學(xué)習(xí)知識(shí)(訓(xùn)練模型);驗(yàn)證集就是課后習(xí)題,學(xué)生通過課后習(xí)題來判斷自己是否掌握了課本上的知識(shí);測(cè)試集就是期末考試(評(píng)估模型),期末考試的題一般是課本和課后習(xí)題中沒有,但是十分類似的題。
一個(gè)學(xué)生的成績(jī)好不好,看下他期末考的好不好就知道了。一個(gè)神經(jīng)網(wǎng)絡(luò)模型好不好,看看它在測(cè)試集中的表現(xiàn)就知道了。
深度學(xué)習(xí)領(lǐng)域比較出名的數(shù)據(jù)集當(dāng)屬M(fèi)NIST手寫體數(shù)字?jǐn)?shù)據(jù)集了,它包含了60000個(gè)訓(xùn)練樣本和10000個(gè)測(cè)試樣本。部分樣本如下所示:
使用Google推出的深度學(xué)習(xí)框架TensorFlow,能夠直接獲取MNIST手寫體數(shù)字?jǐn)?shù)據(jù)集,代碼如下:
代碼中的train_features和test_features分別為訓(xùn)練集和測(cè)試集,即為手寫字體數(shù)字的圖片集合;train_labels和test_labels分別是訓(xùn)練集和測(cè)試集的圖像所對(duì)應(yīng)的標(biāo)簽,即0-9的數(shù)字集合。
MNIST數(shù)據(jù)集未提供驗(yàn)證集,工程上一般會(huì)從訓(xùn)練集中取出15%~20%的數(shù)據(jù)作為驗(yàn)證集,余下的80%~85%的數(shù)據(jù)作為訓(xùn)練集,用于完成訓(xùn)練過程。
使用LeNet-5做交通標(biāo)志牌分類
了解以上內(nèi)容后,就能大致理解神經(jīng)網(wǎng)絡(luò)的工作原理了。再補(bǔ)充一下TensorFlow的語(yǔ)法知識(shí)、看幾個(gè)TensorFlow的例子,就可以自己動(dòng)手搭建神經(jīng)網(wǎng)絡(luò)了。
如果面對(duì)復(fù)雜的圖像處理問題,需要使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)。卷積神經(jīng)網(wǎng)絡(luò)是由卷積神經(jīng)網(wǎng)絡(luò)之父Yann Lecun在貝爾實(shí)驗(yàn)室工作期間,為解決手寫數(shù)字識(shí)別而提出的。卷積是一個(gè)特殊的函數(shù),其在神經(jīng)網(wǎng)絡(luò)中的定位與四則遠(yuǎn)算或某些特殊函數(shù)的地位沒有區(qū)別。
下面我們通過導(dǎo)入交通標(biāo)志牌的訓(xùn)練集,使用卷積神經(jīng)網(wǎng)絡(luò)之父Yann Lecun提出的LeNet模型,訓(xùn)練一個(gè)能識(shí)別交通標(biāo)志的神經(jīng)網(wǎng)絡(luò)。
首先導(dǎo)入交通標(biāo)志牌的數(shù)據(jù)。優(yōu)達(dá)學(xué)城(Udacity)無人駕駛工程師學(xué)位為我們提供了34799張圖組成的數(shù)據(jù)集、4410張圖組成的驗(yàn)證集和12630張圖組成的測(cè)試。這些數(shù)據(jù)集一共包含了43種不同的標(biāo)志牌,比如限速、轉(zhuǎn)向、停車標(biāo)志牌。部分訓(xùn)練集的樣本如下圖所示:
由于LeNet-5默認(rèn)需要輸入尺寸為(32 x 32 x 1)的單通道的圖像,因此我將訓(xùn)練集、驗(yàn)證集和測(cè)試集都進(jìn)行灰度、縮放和歸一化處理。處理后的部分樣本如下:
LeNet-5是一個(gè)不太復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò),下圖顯示了其結(jié)構(gòu)。網(wǎng)絡(luò)輸入的是單通道的二維圖像,先經(jīng)過兩次卷積層到池化層,再經(jīng)過全連接層,最后使用softmax分類作為輸出層。
圖片出處:優(yōu)達(dá)學(xué)城(Udacity)無人駕駛工程師學(xué)位
有關(guān)LeNet-5模型更詳細(xì)介紹可以搜索文章《網(wǎng)絡(luò)解析(一):LeNet-5詳解》
在訓(xùn)練時(shí)會(huì)出現(xiàn)一個(gè)問題:訓(xùn)練集的準(zhǔn)確率很高,但是驗(yàn)證集的準(zhǔn)確率上不去。這表明模型訓(xùn)練時(shí)過擬合了,導(dǎo)致驗(yàn)證集只能達(dá)到89%左右的識(shí)別率,而課程的要求是達(dá)到93%以上。
為了解決模型過擬合導(dǎo)致的模型準(zhǔn)確率低的問題,我做了兩件事:
使用imgaug庫(kù)做數(shù)據(jù)增廣
使用imgaug庫(kù)能夠通過很簡(jiǎn)單的代碼完成圖像的翻轉(zhuǎn)、平移、旋轉(zhuǎn)、縮放、仿射變換、加噪聲、修改顏色通道等功能。以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增廣,達(dá)到豐富訓(xùn)練集的目的。下圖是imgaug庫(kù)對(duì)同一張圖片實(shí)現(xiàn)的數(shù)據(jù)增廣的效果。
圖片出處:https://github.com/aleju/imgaug
我對(duì)交通標(biāo)志牌訓(xùn)練集添加隨機(jī)噪聲、修改對(duì)比度和橫向翻轉(zhuǎn)操作,完成了數(shù)據(jù)集增廣。
在LeNet-5模型的全連接層后加入了Dropout函數(shù)
在LeNet-5網(wǎng)絡(luò)中加入Dropout函數(shù),能夠讓網(wǎng)絡(luò)不會(huì)太依賴某些參數(shù),因?yàn)檫@些參數(shù)隨時(shí)可能被丟棄掉。在訓(xùn)練時(shí),網(wǎng)絡(luò)會(huì)被迫地學(xué)習(xí)一切的冗余表示,以確保至少將某些重要信息保存下來。當(dāng)網(wǎng)絡(luò)中的某個(gè)參數(shù)被丟棄時(shí),還有其他參數(shù)能夠完成相同的工作,這就是Dropout的功能。
在網(wǎng)絡(luò)中加入Dropout函數(shù)的方式可以使得網(wǎng)絡(luò)更加穩(wěn)固,并能防止過擬合。
應(yīng)用數(shù)據(jù)增廣和Dropout函數(shù)后,重新訓(xùn)練即可使模型在測(cè)試集中的準(zhǔn)確率超過93%,達(dá)到要求。
結(jié)語(yǔ)
以上就是《深度學(xué)習(xí)入門之交通標(biāo)志分類》的全部?jī)?nèi)容。文中的部分源碼、圖片和數(shù)據(jù)集來自優(yōu)達(dá)學(xué)城(Udacity)無人駕駛工程師學(xué)位的第三個(gè)項(xiàng)目。
在這次分享中,我介紹了深度學(xué)習(xí)中所涉及的有關(guān)神經(jīng)網(wǎng)絡(luò)的理論知識(shí)。包括神經(jīng)網(wǎng)絡(luò)中的參數(shù),反向傳播原理,訓(xùn)練集、驗(yàn)證集和測(cè)試集的區(qū)別。在正文的最后介紹了如何利用LeNet-5網(wǎng)絡(luò)實(shí)現(xiàn)交通標(biāo)志牌的分類工作,當(dāng)分類效果不理想時(shí),分析原因并提供了解決方案。
在無人駕駛領(lǐng)域,深度學(xué)習(xí)除了用于識(shí)別圖像中的物體外,還在激光點(diǎn)云分類障礙物、障礙物的軌跡預(yù)測(cè)、端到端的運(yùn)動(dòng)控制等領(lǐng)域得到了廣泛應(yīng)用。為現(xiàn)階段無人駕駛技術(shù)的發(fā)展提供了巨大的幫助。掌握深度學(xué)習(xí)的理論知識(shí)和應(yīng)用方法能夠幫助我們解決無人駕駛領(lǐng)域很多棘手的問題。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100772 -
人工智能
+關(guān)注
關(guān)注
1791文章
47279瀏覽量
238511 -
無人駕駛
+關(guān)注
關(guān)注
98文章
4059瀏覽量
120513 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121170
原文標(biāo)題:無人駕駛技術(shù)入門——初識(shí)深度學(xué)習(xí)之交通標(biāo)志分類
文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論