石建樹
(江蘇科技大學(xué) 鎮(zhèn)江 212003)
AUV(水下自主機(jī)器人)在執(zhí)行任務(wù)時(shí)由于受到水下通信距離和速率,以及自身能源消耗的約束需要定時(shí)回航與回收塢站對(duì)接完成充電及數(shù)據(jù)傳輸。AUV回航階段末期需要使用視覺定位彌補(bǔ)超短基線及慣導(dǎo)近距離定位的不足,能否正確識(shí)別光源引導(dǎo)信號(hào)就變得非常重要。
一般水下近距離定位使用的是光視覺圖像。與空氣中的圖像不同,由于水介質(zhì)的光學(xué)特性,水下圖像在不同的水下條件下容易產(chǎn)生模糊、顏色偏移、對(duì)比度降低和光照不均勻的效果,且在不同的位置和角度(方向度)下拍攝會(huì)產(chǎn)生變形,這是水下對(duì)接的一個(gè)難題。許多國(guó)內(nèi)外學(xué)者對(duì)該問題投入了研究,取得了不少研究成果。現(xiàn)有的光源識(shí)別方法大多是基于經(jīng)典的普通分類識(shí)別方法進(jìn)行設(shè)計(jì)和修改的。文獻(xiàn)[1]提出了一種基于仿射不變矩作為衡量標(biāo)準(zhǔn),以顏色、形狀、紋理和SISF、SIFT、HOG作為局部不變特征,以SVM做分類的光源檢測(cè)方法。該方法使得檢測(cè)具備一定魯棒性,對(duì)于正面目標(biāo)查準(zhǔn)率能達(dá)到90.3%。文獻(xiàn)[2]提出了基于幾何關(guān)系的偽光源剔除,根據(jù)真?zhèn)喂庠匆话闼幍奈恢藐P(guān)系剔除偽光源,識(shí)別真光源。文獻(xiàn)[3]提出了一種基于BLOB分析的貝葉斯最小錯(cuò)誤率偽光源剔除,以BLOB算子從7個(gè)維度對(duì)光源圖像進(jìn)行分析,并從實(shí)驗(yàn)中提取了200多個(gè)光源的BLOB算子下的特征建立起高斯模型并以貝葉斯最小錯(cuò)誤率準(zhǔn)則進(jìn)行剔除偽光源,再將剩下的光源與模板進(jìn)行匹配獲得識(shí)別結(jié)果。以往的研究多以水下光源的直觀形態(tài)特征作為分類識(shí)別的標(biāo)準(zhǔn),研究者多以自己的經(jīng)驗(yàn)和圖像的直觀表現(xiàn)選擇圖像特征,而水下情況復(fù)雜、水質(zhì)、亮度、距離等都將影響到最后的識(shí)別結(jié)果,是否有一種方法能夠自己提取圖像有關(guān)特征并進(jìn)行識(shí)別是一個(gè)值得研究的問題。
近年來深度學(xué)習(xí)技術(shù)在人工智能領(lǐng)域備受關(guān)注,監(jiān)督學(xué)習(xí)在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)訓(xùn)練過程中的應(yīng)用,使深度學(xué)習(xí)技術(shù)的實(shí)際應(yīng)用成為可能[4~7]。水下圖像作為一種信息量較大的圖像類型,也可以應(yīng)用深度學(xué)習(xí)進(jìn)行算法開發(fā)。在訓(xùn)練樣本較小的情況下,由于CNN的識(shí)別分類效果并不能與常規(guī)圖像分類算法,如相比于尺度不變特征變換(Scale Invariant Feature Transform,SIFT)[8]和壓縮梯度直方圖(Compressed Histogram of Gradients,CHoG)[9]等拉開明顯差距,為了準(zhǔn)確分辨出水下各種情況下的光源圖像,首先利用CNN網(wǎng)絡(luò)對(duì)采集到的圖像進(jìn)行訓(xùn)練,以訓(xùn)練所得的模型提取目標(biāo)圖像CNN特征,并用這些特征訓(xùn)練支持向量機(jī)(Support Vector Machine,SVM)完成目標(biāo)分類。并且由于缺少水下光源的現(xiàn)有數(shù)據(jù)集,如果直接帶入CNN模型進(jìn)行訓(xùn)練,容易導(dǎo)致過擬合,使得訓(xùn)練完成的模型泛化型較差,不能滿足篩選出光源目標(biāo)的要求。
為了準(zhǔn)確地篩選出目標(biāo)光源,推出來一種基于CNN、遷移學(xué)習(xí)(Transfer Learning)[10]和SVM[11]的光源識(shí)別算法。該算法基于ImageNet數(shù)據(jù)庫(kù)訓(xùn)練完成的網(wǎng)絡(luò),對(duì)光源識(shí)別算法進(jìn)行了遷移學(xué)習(xí)訓(xùn)練,并以采集圖像訓(xùn)練所得CNN模型所得的特征為輸入,再將特征向量帶入SVM的圖像從而實(shí)現(xiàn)圖像分類。
CNN是一種輸入層后帶有卷積結(jié)構(gòu)的深度神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)采用端到端的學(xué)習(xí)模型,通過卷積運(yùn)算由淺人深地提取圖像不同層次的特征,彌合了低級(jí)視覺特征和高層語(yǔ)義之間的鴻溝。通常包含5種類型的層[12]。網(wǎng)絡(luò)的最前端為輸入層(data input layer),通常將圖像分為紅(R),綠(G),藍(lán)(B)三個(gè)顏色的亮度矩陣作為網(wǎng)絡(luò)輸入,放入輸入層。輸入層后會(huì)concat不同維度、不同數(shù)量的卷積層(convolutional layer)。卷積層作用在像素矩陣上能夠提取出圖像的部分特征。不同的卷積核能提取出不同的特征。現(xiàn)階段CNN在卷積層后會(huì)加上池化層(pooling layer)以縮小模型大小、提高計(jì)算速度,同時(shí)提高特征提取的魯棒性。很多時(shí)候?qū)⒕矸e層和池化層統(tǒng)稱為卷積層。卷積層后concat全連接層(fully connected layer),最后加上softmax分類器作為輸出層(output)。
現(xiàn)知名的CNN模型模型有AlexNet、VGGNet、ResNet以 及Google的Inception network。早 期 的LeNet-5網(wǎng)絡(luò)過于簡(jiǎn)單,無法滿足水下圖像的識(shí)別要求,VGGNet最少也有1.38億個(gè)參數(shù),需要訓(xùn)練的特征數(shù)量非常巨大。而ResNet主要通過直連通道構(gòu)成殘差塊,再以殘差塊作為基礎(chǔ)搭建網(wǎng)絡(luò),主要是用來解決深度很深的網(wǎng)絡(luò)在訓(xùn)練時(shí)梯度丟失和梯度爆炸以至于代價(jià)函數(shù)無法正常下降的問題。Inception網(wǎng)絡(luò)能夠自動(dòng)選取卷積核的數(shù)量和維數(shù),但是其結(jié)構(gòu)復(fù)雜,計(jì)算量需求大。而AlexNet結(jié)構(gòu)不如前者那么復(fù)雜且擁有6500萬(wàn)個(gè)神經(jīng)元,能夠從原始圖像中獲得更多的特征滿足水下圖像處理的需求。AlexNet網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

圖1 AlexNet網(wǎng)絡(luò)結(jié)構(gòu)
Alex網(wǎng)絡(luò)具有5層卷積層(含池化層),3層全連接層,總深度8層。卷積層C1、C2、C5帶有池化層,最終可以將227*227*3的圖像分為1000類。
假設(shè)Alex網(wǎng)絡(luò)識(shí)別K類I個(gè)訓(xùn)練圖像,訓(xùn)練樣本為(xi,yi),xi為輸入訓(xùn)練圖像,yi為識(shí)別結(jié)果編號(hào)。第L層共有sl個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),則l層的第n個(gè)節(jié)點(diǎn)的bias為bl n,第l層的n節(jié)點(diǎn)與第l+1層的m節(jié)點(diǎn)間的weigh為,其中n和m分別是l和l+1層的神經(jīng)元序號(hào),n=1,2,…,sl;m=1,2,…,sl+1。則l+1層的輸出特征向量為

其中,l+1層輸入為上層輸出向量為,輸出向量為,是由組成的與等長(zhǎng)的bias向量。Alex網(wǎng)絡(luò)中采用ReLU作為激活函數(shù)代替sigmoid函數(shù),以線型函數(shù)代替指數(shù)運(yùn)算,簡(jiǎn)化其反向傳播計(jì)算。
假設(shè)I個(gè)訓(xùn)練圖像的樣本集為{(x1,y1),…,(xi,yi),…,(xI,yI)},則該CNN模型的代價(jià)函數(shù)為[7]

其中λ為權(quán)重衰減參數(shù),以抑制過擬合,L為網(wǎng)絡(luò)總層數(shù),yi是期望向量,是與期望等長(zhǎng)的輸出向量,訓(xùn)練中使用批量梯度下降法調(diào)整權(quán)重和,目標(biāo)使代價(jià)函數(shù)最小收斂,則得到訓(xùn)練好的CNN模型,記學(xué)習(xí)率為α,則網(wǎng)絡(luò)第l層按照如下公式更新:

卷積神經(jīng)網(wǎng)絡(luò)作為一種擁有多參數(shù)的監(jiān)督學(xué)習(xí)系統(tǒng)需要大量的訓(xùn)練樣本才能夠保證訓(xùn)練完成的網(wǎng)絡(luò)具備良好的泛化性。
遷移學(xué)習(xí)[13]是指通過利用不同學(xué)習(xí)目標(biāo)之間的共性,將不同訓(xùn)練任務(wù)的網(wǎng)絡(luò)中間層進(jìn)行遷移,也能適應(yīng)新場(chǎng)景的任務(wù)需求。研究表明,通過遷移學(xué)習(xí),能夠有效地大幅度提升小樣本訓(xùn)練下的卷積神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確度[10]。遷移學(xué)習(xí)分為兩部分。
1)特征提取器(feature extractor)。被遷移的CNN模型一般作為待檢測(cè)目標(biāo)的特征提取器。例如一個(gè)已訓(xùn)練完成的花鳥分類卷積神經(jīng)網(wǎng)絡(luò),將其除最后Softmax分類層外所有的層都freeze,加入其它數(shù)據(jù)集進(jìn)行訓(xùn)練也能使這個(gè)CNN模型達(dá)到一個(gè)很好的識(shí)別分類效果。
2)模型微調(diào)(fine-tuned model)。當(dāng)原數(shù)據(jù)集不足以完全訓(xùn)練出一個(gè)良好的新網(wǎng)絡(luò)時(shí),微調(diào)策略能夠避免網(wǎng)絡(luò)從頭訓(xùn)練[14]。微調(diào)策略不僅能使訓(xùn)練網(wǎng)絡(luò)以適應(yīng)新的數(shù)據(jù)集,而且能通過反向傳播算法來調(diào)整網(wǎng)絡(luò)參數(shù),一般視數(shù)據(jù)集大小決定調(diào)整多少層網(wǎng)絡(luò)。
通常CNN前幾層學(xué)習(xí)的是圖像的底層通用特征,適用于大多數(shù)的視覺任務(wù),后幾層是為特定任務(wù)學(xué)習(xí)的高層特征,因此一般選擇網(wǎng)絡(luò)的后幾層作為調(diào)整層,就可以取得良好的分類效果。模型微調(diào)策略直接解決了由于訓(xùn)練樣本較小不能滿足從頭訓(xùn)練完整網(wǎng)絡(luò)而導(dǎo)致的過擬合問題,是小樣本規(guī)模訓(xùn)練,尤其是機(jī)器視覺領(lǐng)域應(yīng)用的有效策略[15]。
基于CNN、遷移學(xué)習(xí)和SVM的水下光源識(shí)別算法流程,如圖2所示。

圖2 水下光源識(shí)別算法流程
算法主要包括四個(gè)步驟:
1)用ImageNet上的數(shù)據(jù)集對(duì)AlexNet進(jìn)行訓(xùn)練,得到用于遷移的初始網(wǎng)絡(luò)模型。
2)利用現(xiàn)有的水下圖像數(shù)據(jù)集對(duì)初始網(wǎng)絡(luò)模型最后的Softmax分類層及最后一層全連接層的參數(shù)進(jìn)行微調(diào)訓(xùn)練,使得AlexNet模型最終的輸出為代表著正面光源目標(biāo),側(cè)面光源目標(biāo),其他光源目標(biāo)及其他物體的4維輸出,則可以使得經(jīng)過遷移的原網(wǎng)絡(luò)正常地對(duì)光源進(jìn)行識(shí)別分類。
3)對(duì)訓(xùn)練好的AlexNet模型輸入水下圖像,并提取全連接層第二層的輸出,即fc2層的4096維特征作為CNN-TL特征,并將特征向量按照L1-norm標(biāo)準(zhǔn)歸一化。
4)將歸一化后的特征向量輸入到支持向量機(jī)中作為輸入x,以實(shí)際圖像類別作為期望輸出y,進(jìn)行訓(xùn)練,得到一個(gè)能夠根據(jù)特征向量進(jìn)行分類的SVM。
本方法以ImageNet作為輔助數(shù)據(jù)庫(kù),以水下各種光源圖像作為調(diào)整數(shù)據(jù)庫(kù),首先利用輔助數(shù)據(jù)庫(kù)進(jìn)行CNN訓(xùn)練,得到初始CNN模型,隨后對(duì)利用調(diào)整數(shù)據(jù)庫(kù)對(duì)網(wǎng)絡(luò)末端進(jìn)行微調(diào)以實(shí)現(xiàn)遷移學(xué)習(xí)。具體流程如圖3所示。

圖3 遷移學(xué)習(xí)訓(xùn)練原理
圖中Alex網(wǎng)絡(luò)總共8層,其中卷積層5層(含池化層),全連接層3層,總深度8層。各層參數(shù)如下:
C1:96*11*11*3共34848個(gè)參數(shù);
C2:256*5*5*48共307200個(gè)參數(shù);
C3:384*3*3*256共884736個(gè)參數(shù);
C4:256*3*3*192共663552個(gè)參數(shù);
C5:4096*6*6*256共442368個(gè)參數(shù);
FC1:4096*6*6*256共37748736個(gè)參數(shù);
FC2:4096*4096共16777216個(gè)參數(shù);
FC3:4096*1000共4096000個(gè)參數(shù)。
總計(jì)60924656個(gè)參數(shù)。
本方法使用輔助數(shù)據(jù)庫(kù)中的數(shù)據(jù)集對(duì)原CNN模型進(jìn)行訓(xùn)練,共需要訓(xùn)練60924656個(gè)參數(shù),而后將C1到FC2所有參數(shù)進(jìn)行遷移至光源圖像識(shí)別的模型中,再使用反向傳播算法訓(xùn)練,使得網(wǎng)絡(luò)所需要訓(xùn)練的參數(shù)降到了20873216個(gè),使用SVM代替Softmax分類層后實(shí)際用到的訓(xùn)練的參數(shù)為1677721個(gè),AlexNet的Dropout將全臉層的一些神經(jīng)元節(jié)點(diǎn)舍去,加之SVM的訓(xùn)練適應(yīng),能夠大幅度提高模型的泛化性。
經(jīng)過遷移學(xué)習(xí)并帶入水下圖像集訓(xùn)練的模型能夠通過Softmax分類器完成光源識(shí)別,而FC2層輸出的4096維向量即所需要的特征向量FC,將其L1歸一化以降低SVM計(jì)算復(fù)雜度。

支持向量機(jī)是一種大間距分類器,其本質(zhì)是擁有大邊距的邏輯回歸模型。本方法選用高斯核函數(shù)(RBF kernel),以預(yù)測(cè)與實(shí)際的之間的“距離”衡量代價(jià)。RBF核定義如下:

將CNN-TL特征帶入作為輸入進(jìn)行訓(xùn)練,訓(xùn)練代價(jià)函數(shù)表示為

為了驗(yàn)證本文提出算法的識(shí)別性能,在水下圖像數(shù)據(jù)集上進(jìn)行了分類實(shí)驗(yàn),同時(shí)與BOLB算子模型結(jié)合貝葉斯最小錯(cuò)誤率分析、仿射不變矩+SVM、CNN這三個(gè)已有的識(shí)別算法進(jìn)行對(duì)比。實(shí)驗(yàn)在TensoFlow環(huán)境下進(jìn)行,PC配置為Windows10,CPU i7-7700hq,GPU NVDA GTX1070ti。
實(shí)驗(yàn)中使用的目標(biāo)光源圖片部分來自于已有實(shí)驗(yàn)拍攝取得的AUV導(dǎo)向罩目標(biāo)光源、自身攜帶光源、捕魚工作誘餌光源以及水下工作時(shí)所攜帶的探照光源圖像等。
實(shí)驗(yàn)中采用的水下數(shù)據(jù)集根據(jù)需求分為4類,根據(jù)AUV視覺對(duì)接定位需求分別為正向光源,側(cè)向光源,背景光源及其他物體。每類包含50幅在不同條件(拍攝距離,水質(zhì),背景亮度)下獲得的水下圖片,并使用數(shù)據(jù)擴(kuò)充(加噪,旋轉(zhuǎn),部分遮蔽)對(duì)有限的樣本進(jìn)行擴(kuò)充,得到額外300張擴(kuò)充數(shù)據(jù)集。共1400張數(shù)據(jù)圖片其中隨機(jī)取1000張作為訓(xùn)練集,400張為測(cè)試集。

圖4 水下數(shù)據(jù)集光源圖像例圖
為了驗(yàn)證增強(qiáng)模型對(duì)其他數(shù)據(jù)類型的識(shí)別性能,實(shí)驗(yàn)采用從ImageNet數(shù)據(jù)庫(kù)中選取了250張魚類、水母等水下經(jīng)常出現(xiàn)的物體作為訓(xùn)練集,將其分類至其他類中。根據(jù)AlexNet的輸入要求,所有的圖像數(shù)據(jù)均以227*227*3的尺寸輸入。
多角度識(shí)別測(cè)試:每次測(cè)試在測(cè)試集中隨機(jī)找出5張正面光源圖像,15張側(cè)面光源圖像,其中側(cè)面圖像來自于正面圖像現(xiàn)有側(cè)面圖像或正面圖像定向模糊產(chǎn)生的模擬側(cè)面圖像。最終調(diào)整圖像大小部分距離產(chǎn)生的影響,帶入本文算法及對(duì)比算法中進(jìn)行測(cè)試,共15次,取識(shí)別率的均值。識(shí)別效果見表1。

表1 多角度識(shí)別測(cè)試下的識(shí)別率
抗干擾性能測(cè)試:取出能夠正確多角度識(shí)別的圖片組成抗干擾性能測(cè)試集,每次分別取出10張正面光源、側(cè)面光源以及背景光源,在每張圖片上隨機(jī)加上一種噪聲或遮蔽,帶入本文算法與對(duì)比算法中進(jìn)行測(cè)試,共15次,取識(shí)別率的均值。識(shí)別效果見表2。

表2 抗干擾測(cè)試下的識(shí)別率
距離及背景測(cè)試:取出能夠正確多角度識(shí)別的圖片,還原成原尺寸,組成距離及背景測(cè)試集。每次在測(cè)試集中取出10個(gè)不同的光源對(duì)其加以調(diào)整亮度,光源的大小以模擬背景的亮度和光源的距離,大小和亮度調(diào)整隨機(jī),15次測(cè)量識(shí)別率取均,識(shí)別效果見表3。

表3 距離及背景測(cè)試下的識(shí)別率
結(jié)合表中數(shù)據(jù)可知本文算法在水下多角度和強(qiáng)干擾下的情況下識(shí)別精度均好于傳統(tǒng)識(shí)別方法,也略優(yōu)于原始CNN模型,說明本算法魯棒性較強(qiáng)。當(dāng)光源處于側(cè)面時(shí)由于水下懸浮物的緣故會(huì)產(chǎn)生散射,光源形狀改變較大,此時(shí)BLOB+Bayes這種依賴先驗(yàn)形態(tài)學(xué)模型的算法識(shí)別精度會(huì)大打折扣,而SIFT具備一定的抗干擾型,四種算法都有著不錯(cuò)的光照尺度不變性,而本文算法主要優(yōu)勢(shì)在于面對(duì)非正向光源與強(qiáng)干擾下光源的識(shí)別。
直接用測(cè)試集對(duì)本文算法及對(duì)比算法進(jìn)行測(cè)試,以驗(yàn)證其實(shí)際泛化能力。對(duì)于一個(gè)識(shí)別算法,輸入輸出關(guān)系由“混淆矩陣”給出,如表4所示。

表4 混淆矩陣
對(duì)于一個(gè)識(shí)別檢測(cè)算法,準(zhǔn)確率是一個(gè)最常見的評(píng)價(jià)指標(biāo),準(zhǔn)確率的計(jì)算公式如下:

準(zhǔn)確率是一個(gè)很直觀的評(píng)價(jià)指標(biāo),但是有時(shí)候準(zhǔn)確率高并不能代表一個(gè)算法的好壞。因此本文采用查準(zhǔn)率P(Precision)和召回率R(Recall)來衡量本文及對(duì)比算法的性能。查準(zhǔn)率P和召回率R的計(jì)算公式如下:

查準(zhǔn)率表明識(shí)別為正的示例中真正為正的比例,召回率表明識(shí)別為正的示例與實(shí)際所有為正的比例。本文算法及對(duì)比算法的識(shí)別率和召回率如圖5所示,由于BLOB不能衡量規(guī)則圖型以外的事物,SIFT對(duì)于水中其他物體的分類也不夠明確,故不統(tǒng)計(jì)其于其他物體識(shí)別性能。

圖5 識(shí)別算法泛化性能圖
從圖中分析可知,BLOB算子和樸素貝葉斯分類器對(duì)于一般形狀不變的正面光源識(shí)別率尚可,P和R均接近0.8,但是由于其度量算子不具備旋轉(zhuǎn),遮蔽等不變性,對(duì)于側(cè)面光源及偽光源的識(shí)別能力較差。SIFT由于其具備一定的尺度,旋轉(zhuǎn)不變性,對(duì)于正面光源的識(shí)別能力優(yōu)于上算法,P已接近0.9,但是對(duì)于正面光源外的識(shí)別還是不夠理想。CNN對(duì)各類均具有不錯(cuò)的識(shí)別率,而CNN+SVM對(duì)于正面光源及其他物體的P和R均超過0.9。由于其所需訓(xùn)練的參數(shù)較少,加之SVM對(duì)CNN提取特征的二次訓(xùn)練,在樣本容量不夠充足的條件下識(shí)別能力要強(qiáng)于CNN。
對(duì)于一個(gè)識(shí)別算法,查重率和召回率越高,其識(shí)別效果越好,但是查重率和召回率對(duì)于一個(gè)算法是矛盾的,是一對(duì)此消彼長(zhǎng)的量,因此本文采用F-Measure對(duì)其統(tǒng)一得出一個(gè)綜合評(píng)價(jià)指標(biāo)。F-Measure是Precision和Recall加權(quán)調(diào)和平均:

當(dāng)a=1時(shí),就是F1,即:

各算法對(duì)各類的綜合評(píng)價(jià)指標(biāo)如表5所示。

表5 算法綜合評(píng)價(jià)指標(biāo)
從表格中可以看出本文算法對(duì)于各項(xiàng)識(shí)別綜合性能都高于其他算法,單純的CNN的識(shí)別效果也很好,而SIFT對(duì)于正面光源的泛化性能不錯(cuò),但是側(cè)面光源的效果不佳,貝葉斯分類器效果不夠理想,對(duì)側(cè)面光的識(shí)別效果較差。
本文提出了一種基于CNN和SVM的水下光源識(shí)別方法主要以提高水下光源的識(shí)別率,為AUV水下對(duì)接工作提供較高可靠性。該方法采用遷移學(xué)習(xí)的方法彌補(bǔ)水下數(shù)據(jù)集缺乏的影響,并且將CNN全連接層的輸出作為特征向量,帶入SVM訓(xùn)練以增強(qiáng)其泛化能力。實(shí)驗(yàn)結(jié)果表明該算法有著不錯(cuò)的魯棒性和泛化性,識(shí)別能力強(qiáng)于現(xiàn)有算法。