張舒瑞
(江蘇省新海高級(jí)中學(xué),江蘇連云港,222000)
無(wú)人駕駛作為當(dāng)今人工智能領(lǐng)域的頭號(hào)研究目標(biāo),其廣闊的應(yīng)用前景使其受到世界各國(guó)的強(qiáng)烈關(guān)注。人們對(duì)于無(wú)人駕駛的遐想早已在19世紀(jì)20年代便初現(xiàn)端倪,那時(shí)因?yàn)檫€不存在人工智能的概念,人們將無(wú)人駕駛的定義僅僅局限于用無(wú)線電對(duì)其進(jìn)行操控。直到半個(gè)世紀(jì)過(guò)后,智能駕駛邏輯算法的問(wèn)世方才突破此領(lǐng)域中的瓶頸,從而對(duì)實(shí)現(xiàn)無(wú)人駕駛邁出關(guān)鍵性的一步。無(wú)人駕駛最受爭(zhēng)議的部分就是安全問(wèn)題,而安全問(wèn)題大部分基于對(duì)路況和突發(fā)情況的判斷,這時(shí)讓汽車擁有獨(dú)立的“思想”就尤為重要,其中目標(biāo)檢測(cè)算法更為關(guān)鍵,只有擁有了成熟的目標(biāo)檢測(cè)算法才可以讓無(wú)人駕駛這一技術(shù)達(dá)到更安全的保障[1]。而深度學(xué)習(xí)技術(shù)則推動(dòng)了目標(biāo)檢測(cè)算法的不斷進(jìn)步,使無(wú)人駕駛技術(shù)在商用領(lǐng)域取得了重大進(jìn)展和突破。
目標(biāo)檢測(cè)屬于計(jì)算機(jī)視覺(jué)中的一個(gè)子問(wèn)題。目標(biāo)檢測(cè)技術(shù)主要目的是找出圖像中感興趣的物體,包含物體的定位和分類兩大任務(wù),即同時(shí)確定物體的類別和物體的位置。因此目標(biāo)檢測(cè)任務(wù)可分為兩個(gè)子任務(wù):目標(biāo)分類和目標(biāo)定位。目標(biāo)分類任務(wù)負(fù)責(zé)判斷輸入圖像或所選擇圖像區(qū)域中是否有感興趣類別的物體出現(xiàn),輸出一系列帶分?jǐn)?shù)的標(biāo)簽表明感興趣類別的物體出現(xiàn)在輸入圖像或所選擇圖像區(qū)域中的可能性[2]。目標(biāo)定位任務(wù)負(fù)責(zé)確定輸入圖像或所選擇圖像區(qū)域中感興趣類別的物體的位置和范圍,輸出物體的包圍框、或物體中心、或物體的閉合邊界等,通常使用方形包圍盒,即Bounding Box用來(lái)表示物體的位置信息。目標(biāo)檢測(cè)示意圖如圖1所示。
圖1 目標(biāo)檢測(cè)示意圖
圖像分類主要采用統(tǒng)計(jì)機(jī)器學(xué)習(xí)中的有監(jiān)督學(xué)習(xí)方法,通過(guò)主動(dòng)的喂給計(jì)算機(jī)關(guān)于某些特定標(biāo)簽的數(shù)據(jù),并建立模型、策略、算法的統(tǒng)計(jì)機(jī)器學(xué)習(xí)三要素[3],實(shí)現(xiàn)對(duì)物體的識(shí)別過(guò)程。經(jīng)典的二分類方法主要使用Logistic Regression進(jìn)行圖像分類,其算法流程如下:
首先需要將圖像數(shù)據(jù)進(jìn)行預(yù)處理,圖像在計(jì)算機(jī)中以三原色的方式存儲(chǔ),通過(guò)數(shù)據(jù)的拼接將單一圖片由[p_x,p_y,3]轉(zhuǎn)變?yōu)閇p_x*p_y*3,1]的一維向量。同時(shí)為每一個(gè)訓(xùn)練數(shù)據(jù)指定其標(biāo)簽,即物品的分類結(jié)果。
其次,在機(jī)器學(xué)習(xí)領(lǐng)域中,邏輯斯蒂回歸(Logistic Regression)可以用來(lái)實(shí)現(xiàn)分類操作,它可以看做一個(gè)沒(méi)有隱藏層的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)。通過(guò)建立線性部分WTX+b,其中W為各節(jié)點(diǎn)的權(quán)重、b為偏置,并對(duì)線性部分的計(jì)算結(jié)果添加非線性的激活函數(shù)Sigmoid,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的更高維度的擬合,比如二次項(xiàng)等。最終建立的預(yù)測(cè)模型為[4]:
隨后,在建立了模型的基礎(chǔ)上,指定模型擬合評(píng)價(jià)的策略即損失函數(shù),該部分用來(lái)衡量參數(shù)W和b對(duì)模型擬合的效果。
最后,制定優(yōu)化損失函數(shù)的算法,較為常用的方法是梯度下降法。通過(guò)不斷更新參數(shù),從而實(shí)現(xiàn)模型的最優(yōu)化,最終得到參數(shù)W和b。
圖2 邏輯回歸算法示意
圖3所示的貓分類就是典型的分類算法,通過(guò)將圖像進(jìn)行預(yù)處理和向量化,輸入到模型中,最后模型的輸出結(jié)果就是圖片為貓的置信度。
圖3 圖片分類示意圖
目標(biāo)定位即準(zhǔn)確的輸出目標(biāo)所在的位置,二維的物體可以使用輸出目標(biāo)的所在區(qū)域的(x,y)方框來(lái)實(shí)現(xiàn)。目標(biāo)定位任務(wù)所要預(yù)測(cè)的結(jié)果是一個(gè)連續(xù)的點(diǎn),因此可將其看作一個(gè)典型的回歸任務(wù)。
圖4 目標(biāo)定位坐標(biāo)
將其看做回歸問(wèn)題,我們需要預(yù)測(cè)出(x,y,w,h)四個(gè)參數(shù)的值,從而得出方框的位置。
基于傳統(tǒng)的機(jī)器學(xué)習(xí)算法進(jìn)行分類和回歸問(wèn)題時(shí),當(dāng)圖片輸入維度較大時(shí),會(huì)導(dǎo)致參數(shù)數(shù)量的劇增,尤其是傳統(tǒng)算法普遍使用全連接的方法,只能使用較淺的層次進(jìn)行學(xué)習(xí)。在此基礎(chǔ)上,逐漸發(fā)展而來(lái)的卷積神經(jīng)網(wǎng)絡(luò)、反向傳播等算法降低了參數(shù)量和參數(shù)計(jì)算的復(fù)雜度,從而實(shí)現(xiàn)了更深層次的模型,從而可以模擬更復(fù)雜的模型,實(shí)現(xiàn)更高的精度。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的子集,主要使用人工神經(jīng)網(wǎng)絡(luò)來(lái)妥善解決計(jì)算機(jī)網(wǎng)絡(luò)視覺(jué)效果、自然語(yǔ)言處理、自動(dòng)語(yǔ)音辨識(shí)等等關(guān)鍵問(wèn)題。
深度學(xué)習(xí)器由若干處理層組成,每層包含至少一個(gè)處理單元,每層輸出為數(shù)據(jù)的一種表征,且表征層次隨處理層次增加而提高。深度的定義是相對(duì)的。針對(duì)某具體場(chǎng)景和學(xué)習(xí)任務(wù),若學(xué)習(xí)器的處理單元總數(shù)和層數(shù)分別為M和N,學(xué)習(xí)器所保留的信息量或任務(wù)性能超過(guò)任意層數(shù)小于N且單元總數(shù)為M的學(xué)習(xí)器,則該類學(xué)習(xí)裝置為嚴(yán)格的或是狹義的深度學(xué)習(xí)裝置,其對(duì)應(yīng)的設(shè)計(jì)、訓(xùn)練以及使用方式集合為嚴(yán)格的或是狹義的深度學(xué)習(xí)。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一類包括卷積運(yùn)算且有著深度內(nèi)部結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的代表算法之一。卷積神經(jīng)網(wǎng)絡(luò)有著表征學(xué)習(xí)能力,通過(guò)疊加深層次的網(wǎng)絡(luò),能夠擬合較為復(fù)雜的模型。
深度學(xué)習(xí)的概念起源于人工神經(jīng)網(wǎng)絡(luò),本質(zhì)上是指一類對(duì)具有深層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)進(jìn)行有效訓(xùn)練的方法。神經(jīng)網(wǎng)絡(luò)是一種由許多非線性計(jì)算單元(或稱神經(jīng)元、節(jié)點(diǎn))組成的分層系統(tǒng),通常網(wǎng)絡(luò)的深度就是其中不包括輸入層的層數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)用于通過(guò)將原始圖像通過(guò)層轉(zhuǎn)換為類分?jǐn)?shù)來(lái)識(shí)別圖像。CNN的靈感來(lái)自視覺(jué)皮層。每當(dāng)我們看到某些東西時(shí),一系列神經(jīng)元被激活,每一層都會(huì)檢測(cè)到一組特征,如線條,邊緣。高層次的層將檢測(cè)更復(fù)雜的特征,以便識(shí)別我們所看到的內(nèi)容。
深度學(xué)習(xí)CNN模型進(jìn)行訓(xùn)練和測(cè)試,每個(gè)輸入圖像將通過(guò)一系列帶有卷積核,Pooling,全連接層(FC)的卷積層并通過(guò)Softmax函數(shù)對(duì)目標(biāo)的概率值的對(duì)象進(jìn)行分類。
卷積神經(jīng)網(wǎng)絡(luò)分為多層結(jié)構(gòu):
(1)輸入層(即訓(xùn)練數(shù)據(jù)):輸入圖層或輸入體積是具有以下尺寸的圖像:[寬x高x深]。它是像素值的矩陣。
圖5 RGB矩陣
(2)卷積層:卷積是從輸入圖像中提取特征的第一層,Conv層的目標(biāo)是提取輸入數(shù)據(jù)的特征。卷積通過(guò)使用小方塊輸入數(shù)據(jù)學(xué)習(xí)圖像特征來(lái)保持像素之間的關(guān)系。
圖6 卷積
(3)Stride:Stride是輸入矩陣上的像素移位數(shù)。 當(dāng)步幅為1時(shí),我們將濾波器移動(dòng)到1個(gè)像素。 當(dāng)步幅為2時(shí),我們一次將濾鏡移動(dòng)到2個(gè)像素,以此類推。
(4)Padding(填充):有時(shí)卷積的滑動(dòng)幅度不一定適合輸入圖像。我們有兩種選擇:用零填充圖片(零填充)以使其適合;刪除濾鏡不適合的圖像部分。
圖7 步幅
(5)激活函數(shù)(ReLu):ReLU代表整流線性單元,用于非線性操作。輸出是?(x)=max(0,x)ReLU的目的是在我們的卷積操作中引入非線性。 因?yàn)?,現(xiàn)實(shí)世界的真實(shí)模型往往是復(fù)雜的非線性模型。
還可以使用其他非線性函數(shù),例如tanh或sigmoid代替ReLU。大多數(shù)數(shù)據(jù)科學(xué)家使用ReLU,因?yàn)镽eLU的性能明顯比其他兩個(gè)更好。
(6)池化層:池化層部分將減少圖像太大時(shí)的參數(shù)數(shù)量。空間池化也稱為子采樣或下采樣,它降低了每個(gè)圖片映射的維度,但保留了重要信息??臻g池化可以是不同類型的:最大池化;平均池化;總和池化。
圖8 空間池化
(7)全連接層:我們稱之為FC層,我們將矩陣展平為矢量并將其饋入神經(jīng)網(wǎng)絡(luò)的全連接層。
在圖9中,特征映射矩陣將被轉(zhuǎn)換為矢量(x1,x2,x3,...)。通過(guò)全連接層,我們將這些功能組合在一起以創(chuàng)建模型。最后我們通過(guò)一個(gè)激活功能,如softmax或sigmoid,將輸出分類為貓,狗,汽車,卡車等。
圖9 全連接
圖10就是通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類的過(guò)程。
圖10 圖片分類
上述神經(jīng)網(wǎng)絡(luò)的尾部展開,也就說(shuō)CNN前面保持不變,對(duì)CNN的結(jié)尾處作出改進(jìn):加了兩個(gè)頭:“分類頭”和“回歸頭”,這樣就能實(shí)現(xiàn)一個(gè)主干網(wǎng)絡(luò)進(jìn)行多目標(biāo)學(xué)習(xí),即classification + regression模式。
圖11 目標(biāo)分類 + 位置檢測(cè)
本論文采用PASCAL VOC 數(shù)據(jù)集,共使用20類目標(biāo)分類,包含person、car、bicycle、bus等關(guān)鍵目標(biāo),樣例數(shù)據(jù)如圖12所示。
圖12 voc數(shù)據(jù)樣例
標(biāo)簽文件采用xml格式的標(biāo)注文件,數(shù)據(jù)標(biāo)注樣例如圖13所示。
圖13 voc數(shù)據(jù)標(biāo)注樣例
本文主要采用YoloV3算法,YOLOv3算法的主體結(jié)構(gòu)是一個(gè)龐大的卷積神經(jīng)網(wǎng)絡(luò)[5],YOLOv3原理圖如圖14所示。YOLOv3網(wǎng)絡(luò)的輸入層接收416×416的輸入圖像,網(wǎng)絡(luò)中有代碼體現(xiàn)出來(lái)的網(wǎng)絡(luò)層次共計(jì)252層(統(tǒng)計(jì)包括用于構(gòu)建res_block塊的add層)。從第0層到75層被統(tǒng)稱為darknet-53的部分共含有53層卷積層以及23層殘差層。這一部分網(wǎng)絡(luò)結(jié)構(gòu)不是對(duì)darknet-19的簡(jiǎn)單加深,而是引入了殘差網(wǎng)絡(luò)的跳層連接思想[6],從76到105層是YOLOv3的特征交互和輸出層,這一部分舍棄了全連接層轉(zhuǎn)而通過(guò)連續(xù)的1×1和3×3卷積核實(shí)現(xiàn)局部特征交互,作用類似于全連接層,但全連接層實(shí)現(xiàn)的是全部像素的全局特征交互。
圖14 YOLOv3原理圖
神經(jīng)網(wǎng)絡(luò)訓(xùn)練部分程序如圖15所示。
圖15 模型訓(xùn)練部分程序
神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成后,在測(cè)試集上對(duì)算法的性能進(jìn)行測(cè)試,并最終對(duì)網(wǎng)絡(luò)實(shí)時(shí)視頻檢測(cè)性能進(jìn)行測(cè)試。采取的思路是先捕獲實(shí)時(shí)視頻流,從中依次截取出每一幀圖像,再調(diào)用訓(xùn)練好的YOLOv3網(wǎng)絡(luò)的單張圖像檢測(cè)的函數(shù)對(duì)每幀圖像檢測(cè)目標(biāo)。單張圖像檢測(cè)部分程序如圖16所示。
圖16 圖片檢測(cè)驗(yàn)證代碼截圖
隨著圖像分類精度在某些領(lǐng)域達(dá)到了超越人類的水平,其應(yīng)用價(jià)值也得到了廣泛的認(rèn)可從而應(yīng)用在諸多領(lǐng)域。無(wú)人駕駛汽車在行駛過(guò)程中需要對(duì)周圍的物體進(jìn)行精確的識(shí)別,從而區(qū)分哪些是障礙物、哪些是行人,同時(shí)需要對(duì)行車指示牌等進(jìn)行精確的劃分,從而為駕駛決策提供支持??梢灶A(yù)見(jiàn),高精度的圖像分類技術(shù)將廣泛應(yīng)用在無(wú)人駕駛領(lǐng)域中??傊ㄟ^(guò)將深度學(xué)習(xí)算法運(yùn)用于無(wú)人駕駛中的目標(biāo)檢測(cè)算法,將會(huì)大大提升目標(biāo)檢測(cè)精度及進(jìn)一步加速無(wú)人駕駛技術(shù)的成熟。并結(jié)合其他傳感技術(shù),增強(qiáng)無(wú)人駕駛汽車的感知能力,這也就大大增加了無(wú)人駕駛汽車的安全性能,只有這樣才能夠推動(dòng)無(wú)人駕駛技術(shù)的盡快落地運(yùn)行。
本文通過(guò)對(duì)目標(biāo)檢測(cè)算法的闡述,并運(yùn)用傳統(tǒng)機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)方法進(jìn)行訓(xùn)練和驗(yàn)證,對(duì)目標(biāo)檢測(cè)算法進(jìn)行了原理和實(shí)際驗(yàn)證。在訓(xùn)練過(guò)程中,存在著數(shù)據(jù)歸一化、過(guò)擬合等問(wèn)題,后續(xù)將對(duì)參數(shù)初始化、正則化等有助于提高訓(xùn)練速度、防止過(guò)擬合的問(wèn)題展開研究,從而實(shí)現(xiàn)更好的對(duì)圖像數(shù)據(jù)進(jìn)行分類。