鄧 瑞, 林金朝, 楊宏志
(重慶郵電大學(xué) 通信與信息工程學(xué)院, 重慶 400065)
城市化的快速發(fā)展給城市帶來(lái)了兩方面互相矛盾的結(jié)果:城市數(shù)量猛增,城市規(guī)模膨脹,城市功能龐雜,城市個(gè)體之間的區(qū)別越來(lái)越模糊,城市越來(lái)越趨同、越來(lái)越難以辨認(rèn);城市競(jìng)爭(zhēng)加劇,城市識(shí)別與城市營(yíng)銷變得越來(lái)越重要,即城市比以往更需要“搶眼”,更需要相互區(qū)別,城市日益呼喚個(gè)性。于是,城市地標(biāo)[1]的概念在近幾年開(kāi)始熱門起來(lái),通過(guò)地標(biāo)建筑物來(lái)吸引外來(lái)游客,通過(guò)地標(biāo)建筑來(lái)認(rèn)識(shí)一座城,越來(lái)越多地標(biāo)建筑物的出現(xiàn),給人們的識(shí)別也帶來(lái)了一定的困擾,城市與城市間的辨識(shí)度越來(lái)越弱。
本文提出的基于深度學(xué)習(xí)的建筑物識(shí)別方法將良好地解決該問(wèn)題。隨著大數(shù)據(jù)時(shí)代的來(lái)臨以及GPU等計(jì)算資源能力的大幅提高,深度學(xué)習(xí)這一名詞逐漸出現(xiàn)在人們的視線中。深度學(xué)習(xí)[2]是通過(guò)深度神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)結(jié)構(gòu)來(lái)實(shí)現(xiàn)的一種算法,它具有深度層次結(jié)構(gòu),以實(shí)現(xiàn)對(duì)圖像特征分層提取,從而解決了傳統(tǒng)特征提取[3]面臨的問(wèn)題,由計(jì)算機(jī)自動(dòng)提取圖像中的特征。對(duì)于卷積神經(jīng)網(wǎng)絡(luò),從低層可以提取到一些邊緣紋理信息,中間層可以在邊緣信息的基礎(chǔ)上學(xué)習(xí)到部分區(qū)域特征,在高層可以識(shí)別目標(biāo)的語(yǔ)義信息[4]。相較于傳統(tǒng)特征提取技術(shù),深度學(xué)習(xí)的層次特征是一種由數(shù)據(jù)驅(qū)動(dòng)的特征學(xué)習(xí)過(guò)程,不再需要人為設(shè)計(jì)特征,而是從數(shù)據(jù)中直接學(xué)習(xí)目標(biāo)特征,這種過(guò)程需要學(xué)習(xí)大量的數(shù)據(jù)。深度學(xué)習(xí)算法的一個(gè)特點(diǎn)是需要龐大的訓(xùn)練數(shù)據(jù)量,數(shù)據(jù)量越大,算法的性能越高,而且它是一個(gè)隨數(shù)據(jù)量動(dòng)態(tài)變化的過(guò)程。
利用深度學(xué)習(xí)算法提取圖片特征能力強(qiáng)以及訓(xùn)練需要龐大數(shù)據(jù)量的優(yōu)勢(shì),提出了一種基于深度學(xué)習(xí)的建筑物識(shí)別方法。不必去記憶關(guān)于某城市地標(biāo)建筑物的信息,通過(guò)該方法就能得到圖片中的建筑物信息。該方法使用改進(jìn)后的Faster R-CNN[5]算法對(duì)大量的城市地標(biāo)建筑物數(shù)據(jù)進(jìn)行學(xué)習(xí),只需要將圖片輸入訓(xùn)練好的模型,該模型就可以輸出圖片上的建筑物信息,大大減少因詢問(wèn)他人、查閱資料花費(fèi)的時(shí)間。
Faster R-CNN是一種目標(biāo)檢測(cè)算法,它由兩大模塊組成:Fast R-CNN檢測(cè)模塊和RPN(Region Proposal Network,區(qū)域建議網(wǎng)絡(luò))候選框提取模塊。RPN用于提取由VGG16網(wǎng)絡(luò)生成特征框圖中的區(qū)域建議,F(xiàn)ast R-CNN直接檢測(cè)并識(shí)別提取到的區(qū)域建議中的目標(biāo)。
Faster R-CNN的網(wǎng)絡(luò)框圖如圖1所示。對(duì)任意大小的圖片,經(jīng)過(guò)處理后由VGG16[6]網(wǎng)絡(luò)生成特征框圖,RPN在這些特征框圖上用3×3的卷積核進(jìn)行滑動(dòng)濾波,得到的結(jié)果會(huì)送入對(duì)應(yīng)回歸層和分類層產(chǎn)生帶有分?jǐn)?shù)的區(qū)域建議。這些區(qū)域建議通過(guò)ROI Pooling層[7]將之前的特征框圖處理為固定大小的特征向量,送入后面的分類層和回歸層,再通過(guò)非極大值抑制[8]選出最優(yōu)的結(jié)果。
圖1 Faster R-CNN流程圖
Fig.1 Faster R-CNN flow chart
回歸層用于產(chǎn)生預(yù)測(cè)區(qū)域建議中心錨框所對(duì)應(yīng)的預(yù)測(cè)框的中心點(diǎn)(x,y)與寬高(w,h),分類層用于判斷該區(qū)域建議是前景還是背景。每次預(yù)測(cè)都和不同位置但是相同形狀的特定錨框相關(guān)。Faster R-CNN 在一個(gè)位置上使用了9種錨框:3種不同尺度并使用3種長(zhǎng)寬比。在每個(gè)位置使用9種錨框,所以在分類層產(chǎn)生了2×9個(gè)分?jǐn)?shù),在回歸層產(chǎn)生了4×9個(gè)坐標(biāo)。這些錨框都是精心預(yù)選好的,所以它們多種多樣,同時(shí)非常合理地覆蓋了不同尺度和不同長(zhǎng)寬比的現(xiàn)實(shí)生活中的物體。這使初始訓(xùn)練將具有更好的猜測(cè),同時(shí)允許每次預(yù)測(cè)都有特定、不同的形狀。這種方式使早期的訓(xùn)練更加穩(wěn)定和容易。對(duì)于這些錨框,規(guī)定與標(biāo)記框重疊比例最大的為正樣本(保證至少有一個(gè)為正樣本),其余重疊比例大于0.7的記為正樣本,小于0.3的記為負(fù)樣本,剩余或者超出邊界的錨框舍棄不用。
損失函數(shù)[9]是為了度量預(yù)測(cè)值與真實(shí)值之間的差異,得到的損失值通過(guò)反向傳播算法更新權(quán)值,使下一次的預(yù)測(cè)值更接近于真實(shí)值。Faster R-CNN算法對(duì)一幅圖像的損失函數(shù)定義為
(1)
分類損失函數(shù)Lcls計(jì)算兩個(gè)類別之間的對(duì)數(shù)損失:
(2)
回歸損失函數(shù)Lreg計(jì)算預(yù)測(cè)框與標(biāo)記框之間的損失:
(3)
其中,R為定義魯棒性的損失函數(shù)(SmoothL1):
(4)
另外的因式項(xiàng)由轉(zhuǎn)換后預(yù)測(cè)框和標(biāo)記框的4個(gè)坐標(biāo)進(jìn)行計(jì)算,計(jì)算公式如下:
(5)
其中,x、y、w、h指的是區(qū)域建議中心坐標(biāo)以及寬和高。x、xa、x*分別指預(yù)測(cè)框、錨框、標(biāo)記框(對(duì)y、w、h也是一樣)的x坐標(biāo),可以理解為從預(yù)測(cè)框到標(biāo)記框的回歸。
由于在RPN和Fast R-CNN都產(chǎn)生了損失,所以為了將這些損失利用起來(lái),采取了一種4步訓(xùn)練法:
(1) 單獨(dú)訓(xùn)練RPN,網(wǎng)絡(luò)參數(shù)由預(yù)訓(xùn)練模型載入;
(2) 單獨(dú)訓(xùn)練Fast R-CNN,將第一步RPN的輸出候選區(qū)域作為檢測(cè)網(wǎng)絡(luò)的輸入;
(3) 再次訓(xùn)練RPN,此時(shí)固定網(wǎng)絡(luò)公共部分的參數(shù),只更新RPN獨(dú)有部分的參數(shù);
(4) 用RPN的結(jié)果再次微調(diào)Fast R-CNN,固定網(wǎng)絡(luò)公共部分的參數(shù),只更新Fast R-CNN獨(dú)有部分的參數(shù)。
RPN作為 Faster R-CNN 的一部分,是和整個(gè)模型一起訓(xùn)練得到的。也就是說(shuō),F(xiàn)aster R-CNN 的目標(biāo)函數(shù)既包括目標(biāo)檢測(cè)中的類別和邊界框預(yù)測(cè),又包括RPN中錨框的二元類別和邊界框預(yù)測(cè)。最后,RPN不僅能夠?qū)W習(xí)到如何生成高質(zhì)量的區(qū)域建議,而且在減少區(qū)域建議數(shù)量的情況下也能保證目標(biāo)檢測(cè)的精度。
地標(biāo)建筑物在拍攝時(shí),有可能受到天氣或者光照的影響,建筑物的邊緣信息被周圍環(huán)境模糊,也有可能受拍攝位置的影響,建筑物在圖像中呈現(xiàn)的特征與真實(shí)的特征有所不同,而模型對(duì)地標(biāo)建筑物特征提取能力有限,有可能識(shí)別不了或者錯(cuò)誤地識(shí)別這些特殊圖片。原始的RPN利用VGG16的Conv5_3輸出作為特征框圖,而這種特征框圖只與上一層卷積網(wǎng)絡(luò)的輸出有關(guān),與之前層的輸出關(guān)系較淺。僅通過(guò)最后一層卷積網(wǎng)絡(luò)的輸出來(lái)生成特征框圖是不夠的,希望生成特征框圖的特征信息比原來(lái)的更加豐富,但又使計(jì)算量不會(huì)增加太多,因此,使用了一種迭代結(jié)構(gòu)的CNN——Densenet[10]。通過(guò)使用Densenet來(lái)提取特征框圖,可以利用之前的特征框圖與本層輸出結(jié)果在通道維數(shù)上進(jìn)行疊加,達(dá)到特征重復(fù)利用的效果,使得生成的特征框圖不但沒(méi)有失去低層的邊緣紋理信息,而且在深層的卷積網(wǎng)絡(luò)使用到低層的特征框圖,融合后的特征框圖具有更加豐富的特征信息。
該迭代結(jié)構(gòu)如圖2所示。在該網(wǎng)絡(luò)中,任何兩層之間都有直接的連接,也就是說(shuō),網(wǎng)絡(luò)每一層的輸入都是前面所有層輸出的并集,而該層所學(xué)習(xí)的特征框圖也會(huì)被直接傳給其后面所有層作為輸入,實(shí)現(xiàn)特征信息的整合,避免了特征信息在層間傳遞時(shí)的丟失和梯度消失的問(wèn)題,還抑制了某些噪聲的產(chǎn)生。神經(jīng)網(wǎng)絡(luò)其實(shí)并不一定要是一個(gè)遞進(jìn)層級(jí)結(jié)構(gòu),也就是說(shuō)網(wǎng)絡(luò)中的某一層不僅可以依賴于緊鄰的上一層的特征,而且可以依賴于更前面層學(xué)習(xí)的特征。將多個(gè)這樣的迭代結(jié)構(gòu)組合到一起形成一個(gè)稠密塊(Dense Block)。同時(shí),考慮特征框圖合并后輸入的通道數(shù)大大增加,使得模型過(guò)于復(fù)雜,在每個(gè)模塊后面加入一個(gè)過(guò)渡層(Transition layer),通過(guò)1×1的卷積[11]來(lái)減少通道數(shù),使用步幅為2的平均池化層減半高和寬,進(jìn)一步降低模型復(fù)雜度。
用Densenet替換掉原算法中的VGG16模型,使得模型能產(chǎn)生含有更加豐富特征信息的特征框圖,模型的網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。先將想要識(shí)別的圖像輸入一個(gè)7×7的卷積網(wǎng)絡(luò)快速整合圖片特征,然后再送入池化層將特征框圖的長(zhǎng)寬減半,保留主要的特征信息,同時(shí)減少下一層的計(jì)算量。接著連續(xù)通過(guò)3個(gè)稠密塊和過(guò)渡層,在不斷豐富特征框圖特征信息的同時(shí),減小特征框圖的大小,減少模型的計(jì)算量。最后模型輸出N×512×14×14的特征框圖作為RPN模塊的輸入,保持與原算法一致。
圖2 Densenet連接圖Fig.2 Densenet connection diagram
層輸出大小結(jié) 構(gòu)卷積層112×1127×7卷積,步伐2池化層56×563×3max pool,stride2稠密塊56×561×1卷積3×3卷積×6過(guò)渡層56×561×1卷積28×282×2平均池化,步伐2稠密塊28×281×1卷積3×3卷積×12過(guò)渡層28×281×1卷積14×142×2平均池化,步伐2稠密塊14×141×1卷積3×3卷積×24過(guò)渡層14×141×1卷積
本文地標(biāo)建筑物的數(shù)據(jù)集來(lái)自百度圖片數(shù)據(jù)庫(kù),包含各種尺寸的圖像。由于在日常生活中,地標(biāo)建筑物在有遮擋物、不同天氣和環(huán)境下所呈現(xiàn)的效果不同,在制作數(shù)據(jù)集時(shí)特意加入這些圖像,使得模型在訓(xùn)練時(shí)能學(xué)習(xí)到相關(guān)的特征信息,強(qiáng)化其識(shí)別能力。對(duì)每張圖像進(jìn)行人工標(biāo)注,采用與VOC2007數(shù)據(jù)集相同的XML格式,內(nèi)容包括地標(biāo)建筑物的位置信息和類別。隨機(jī)從數(shù)據(jù)集中選取3/4作為訓(xùn)練集,1/4作為測(cè)試集。圖3為數(shù)據(jù)集部分圖像展示。
圖3 數(shù)據(jù)集部分圖像展示Fig.3 Partial image display of the data set
采用64位Ubuntu18.04Ts操作系統(tǒng)作為測(cè)試環(huán)境,配置GeForce GTX1080ti的顯卡,使用亞馬遜的MXNet深度學(xué)習(xí)庫(kù)作為軟件測(cè)試平臺(tái)。使用改進(jìn)前后的Faster R-CNN對(duì)制作的數(shù)據(jù)集進(jìn)行訓(xùn)練,為了加快訓(xùn)練速度,整個(gè)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中使用SGD反向傳播法[12]優(yōu)化整個(gè)網(wǎng)絡(luò)模型。對(duì)改進(jìn)前后的模型均迭代100次,學(xué)習(xí)率為0.001。訓(xùn)練完成后將數(shù)據(jù)集中的測(cè)試圖像輸入模型,對(duì)需要識(shí)別的21類地標(biāo)建筑物進(jìn)行測(cè)試,通過(guò)非極大值抑制,將分?jǐn)?shù)較低的候選框去除,得到的輸出結(jié)果為地標(biāo)建筑物的類別、所在區(qū)域候選框以及置信度。
實(shí)驗(yàn)結(jié)果表明,改進(jìn)的Faster R-CNN算法在地標(biāo)建筑物識(shí)別方面有較好的識(shí)別效果,而且對(duì)上述提到只有局部或夜間拍攝的建筑物圖像也有良好的識(shí)別效果。算法改進(jìn)前后的測(cè)試圖如圖4所示。圖像中方框?yàn)槟繕?biāo)建筑物的預(yù)測(cè)框,數(shù)字為預(yù)測(cè)類別的概率。在圖像中包含完整建筑物的情況下,兩種算法均有良好的識(shí)別效果,但本文算法目標(biāo)建筑物提取的區(qū)域建議更大,提取到的特征信息更多;在夜間模式下,原算法對(duì)目標(biāo)建筑物的定位有所偏差,而且部分特征缺失,而本文算法將目標(biāo)建筑物完整地從圖像中找出;在只有建筑物局部的情況下,原算法對(duì)局部建筑物雖能識(shí)別出來(lái),但是對(duì)目標(biāo)建筑物的定位不太精準(zhǔn),而改進(jìn)算法對(duì)目標(biāo)建筑物生成的區(qū)域建議明顯精準(zhǔn)許多。由此可以看出,改進(jìn)后的算法由于重復(fù)利用到了卷積網(wǎng)絡(luò)淺層的特征信息,使得生成的區(qū)域建議更加精準(zhǔn),提取到的特征信息更多,模型對(duì)不同拍攝環(huán)境下建筑物的識(shí)別能力更高。
圖4 算法改進(jìn)前后的測(cè)試圖Fig.4 Test chart before and after the algorithm improvement
使用目前常用的Faster RCNN模型在本文數(shù)據(jù)集上進(jìn)行測(cè)試,比較結(jié)果如表2。
表 2 3種算法檢測(cè)精度結(jié)果比較
利用改進(jìn)的Faster R-CNN模型,用自己制作的地標(biāo)建筑物數(shù)據(jù)集進(jìn)行訓(xùn)練,根據(jù)測(cè)試集的測(cè)試結(jié)果逐步微調(diào)網(wǎng)絡(luò)參數(shù),使得輸出結(jié)果不僅能識(shí)別出目標(biāo)而且還能精確地找到其所在的位置。該方法對(duì)地標(biāo)建筑物局部也有較好的識(shí)別能力,而且也可應(yīng)用于其他類別事物的識(shí)別,具有較強(qiáng)的通用性。從實(shí)驗(yàn)結(jié)果可以看出,深度學(xué)習(xí)方法應(yīng)用于地標(biāo)建筑物的識(shí)別,可以得到較優(yōu)的識(shí)別效果。但在實(shí)際應(yīng)用中時(shí),還存在著一些不足,由于迭代網(wǎng)絡(luò)需要對(duì)之前層的輸出重復(fù)提取特征框圖,導(dǎo)致識(shí)別速度有所下降,但是根據(jù)計(jì)算機(jī)處理器高速發(fā)展的趨勢(shì),未來(lái)的識(shí)別速度將會(huì)越來(lái)越快。利用本文的方法,以后看見(jiàn)不認(rèn)識(shí)的、風(fēng)格獨(dú)特的標(biāo)建筑物,就能快速到它的信息。如何識(shí)別周圍環(huán)境中的常見(jiàn)建筑物是下一步要研究的方向。