李想 李宏偉
地圖以簡單、直觀的方式呈現地物的名稱、位置、分布、聯系及變化,是人們學習和生活中不可或缺的工具。注記是地圖符號系統的有機組成部分,是地圖的重要元素,其作用包括標識對象、表明對象間的關系、指示對象屬性等。注記包括名稱注記和說明注記,一般用文字和數字表示,不同類別注記的特征(字體、顏色、尺寸等)不同。注記配置是地圖制圖中的重要步驟,往往耗時較長,自動化地圖制圖必須要解決地圖注記自動配置問題,從而提高制圖的效率。
傳統的注記配置方法主要有貪婪算法和回溯法,在結合其他優化算法后,形成了基于聚類分組的蟻群算法[1]、遺傳算法[2]、模擬退火算法[3]等。優化后的注記配置算法能夠較好地解決注記配置問題,但卻忽略了不同類別注記的特征不同,導致不同類別注記使用同一字體或顏色,表達上有所欠缺。
隨著人工智能技術、認知科學、地圖學的不斷發展,地圖制圖的自動化、智能化程度不斷提高,地圖制圖進入了機器智能制圖的新發展階段。2006年,深度學習這一概念由辛頓(Geoffrey Hinton)等[4]提出,此后,其在圖像和自然語言處理中得到了廣泛應用,并取得了眾多突破性成果[5——8]。深度學習通過模仿人腦的機制對數據進行解釋,為計算機通過學習地圖知識來繪制地圖提供了理論基礎。將深度學習的方法運用至地圖制圖中有助于提高計算機的“思維”能力,進而提高計算機制圖的智能化水平。為此,學者針對深度學習在地圖學領域中的應用開展了研究,從自動勾勒地圖特征[9]、自動制圖綜合[10——11]、地圖閱讀[12]和地圖識別[13——16]等方面,探討了深度學習方法在地圖學研究中的可行性。
在采用傳統方法進行注記配置的研究中,已有研究沒有充分考慮注記的類別及其特征等影響因素。為了在配置結果中突出注記的類別特征,并同時保證注記配置的效率和質量,本文嘗試將深度學習方法引入地圖點注記自動配置中,通過獲取注記圖片的類別及文字信息,實現針對不同類別的地圖點注記自動配置。首先采集公開出版的地圖集中不同種類的地圖點注記圖片,制作地圖點注記數據集,再通過卷積神經網絡對地圖點注記圖像的字體、尺寸、顏色、間隔等特征進行學習,從而識別地圖注記的類別;然后采用基于深度學習的文字識別提取注記文字,根據文字匹配相應的位置信息;最后將深度學習模塊與注記配置模塊相結合,通過深度學習方法識別地圖注記類別和文字,并在地圖上自動進行點注記配置。
本文的地圖點注記數據集,獲取自星球地圖出版社2017——2019年出版的“中國分省系列地圖集”中的《河南省地圖集》《湖北省地圖集》《青海省地圖集》《云南省地圖集》和《四川省地圖集》。這5部地圖集全面反映了各省的行政區劃、交通、旅游、地形等信息,包含較多內容明確、較為清晰的地圖注記。根據實驗需要,選取2200張點注記圖像作為本文的地圖點注記數據集,其中包含地名注記、森林公園注記、自然保護區注記和風景名勝區注記4個類別。各類別的注記示例如圖1所示。

圖1 4種類別的地圖注記示例
由圖1可以看出,4種類別的地圖注記在表示形式上具有各自的特點。地名注記以藍色為主色調表示,森林公園注記以綠色為主色調表示,自然保護區注記以紫色為主色調表示,風景名勝區注記以紅色為主色調表示。4種類別的注記在字體及背景顏色上存在明顯的區別,反映了人類在進行地圖制圖時對注記信息的表達習慣,而機器可以通過算法訓練學習來掌握這些習慣。
在共計2200張實驗圖像中,包含地名注記圖片1000張,森林公園注記、自然保護區注記和風景名勝區注記圖片各400張,在4個類別中分別選取80%的圖像作為實驗的訓練集,其余圖像作為實驗的測試集,另外根據實驗需要采集河南省的地圖注記圖像共70張作為驗證集,具體的數量分配見表1。圖片采用JPEG格式,設置為RGB模式,圖像的像素大小不一,基本為150×100。

表1 注記樣本類別及數量
卷積神經網絡(convolutional neural network ,英文縮寫CNN)能夠有效解決圖像分類問題[17],基于CNN的研究工作顯著提高了多個圖像數據庫的最佳性能,尤其在學習圖像的局部及全局結構上表現優異。本文所采用的地圖點注記數據集數據量較小,在這種小型數據集的圖像處理問題中,為了避免過擬合問題,通常采用在其他大型數據集上訓練好的預訓練網絡模型,但由于該數據集與其他數據集中圖像的相似特征較少,需要對其進行單獨訓練,因此選用參數較少、網絡結構簡單的CNN作為圖像分類的訓練模型。采用CNN對地圖注記圖像進行類別識別時,地圖注記圖像為CNN的輸入層,卷積層對注記圖像進行特征提取,池化層對卷積層輸出的特征圖進行降采樣,最后通過全連接層進行預測。
本文設置的CNN模型共11層,包含4個卷積層、4個池化層和3個全連接層,激活函數使用ReLu函數,采用Softmax分類器進行分類。輸入層輸入的是尺寸統一為100×100×3的圖片像素矩陣,前兩層卷積層的卷積核尺寸為5×5,第三、四層卷積層的卷積核尺寸為3×3。池化層的尺寸均為2×2,步長為1。全連接層的節點個數分別為1024、512和4,其中第三層的節點個數與輸出類別數一致。模型結構如圖2所示。

圖2 卷積神經網絡模型結構示意圖
為避免梯度消失問題,提高模型收斂速度,需要尋找合適的神經網絡初始化權重,一般設置為接近0的數字,本文將初始權重值設為0.0001,以便使卷積神經網絡模型在訓練時能迅速收斂。學習率對函數的收斂速度和收斂效果起著決定性作用,為達到更好的學習效果,一般將學習率設置為隨著訓練進程而衰減的值。經過測試,本文將初始學習率設為0.001,在訓練過程中,隨著迭代次數的增加,學習率不斷減小,直至模型收斂。
為進一步提高地圖注記圖像分類的精度,本文在已有的卷積神經網絡模型中加入卷積注意力模塊( convolutional block attention module,英文縮寫 CBAM)[18]進行注記分類實驗。CBAM是一種為CNN設計的注意力模塊,機制是使機器仿照人的視覺注意閱讀圖像,用于神經網絡可以使其更加關注重要特征,減少對圖像背景信息的學習,從而提高圖像分類的精度。CBAM可以無縫集成到任何CNN架構中,添加至CNN的卷積層中,其開銷可以忽略不計,并可以與基礎CNN一起進行端到端的訓練。
CBAM包含通道注意力模塊和空間注意力模塊,通過對經過卷積的特征圖進行通道和空間兩個維度的特征優化,以提高網絡精度。通道注意力強調輸入圖像的特征是有意義的,空間注意力強調輸入圖像哪些部分的特征是有意義的,是對通道注意力的補充。CBAM的輸入為經過卷積后的特征圖F,將F經過最大池化和平均池化得到的特征相加并通過激活函數獲得權重,得到通道注意力圖像,將其與輸入圖像進行像素級別的相乘操作,得到新的特征圖F'??臻g注意力模塊同樣采用最大池化和平均池化,對特征圖F'在通道維度上進行壓縮,經過激活函數得到空間注意力圖像,將其與圖像F'進行像素級別的相乘操作,最終得到優化后的特征圖像。
本文將CBAM設置在第一個卷積層后,在卷積核對輸入的注記圖像進行特征提取后,CBAM采用最大池化和平均池化的方法對獲得的特征圖進行兩個維度的特征優化,再將特征圖像傳遞給池化層。CBAM的具體工作流程如圖3所示。

圖3 卷積注意力模塊工作流程圖
使用深度學習方法進行文字識別(optical character recognition ,英文縮寫OCR),已有許多研究成果,并被廣泛應用于商業用途,如采用CRNN(convolutional recurrent neural network,卷積循環神經網絡)[19]、Res-Net(residual network,殘差網絡)[20]等網絡,對場景文字識別的精度可達94.2%,對印刷文字的識別精度高達99%。本文采用密集卷積網絡(DenseNet)[21]對地圖點注記圖像進行文字識別。DenseNet主要是在ResNet的基礎上進行改進,其最大的特征是采用密集連接的方式連接所有網絡,其每一層的輸入都來自前面所有層的輸出。這使得DenseNet具有減輕梯度消失、加強特征傳遞和需要較少參數等優勢。
在文字識別中,DenseNet具有預測速度快、中文識別效果更好等優點。本文基于中文OCR工具包cnocr中已經訓練好的DenseNet模型對地圖點注記圖像進行文字識別,該模型對印刷體文字的識別準確率為97%。
本文使用從地圖集中采集的2200張地圖注記圖像作為實驗數據集,開展注記識別和注記配置實驗。首先基于TensorFlow平臺,采用CNN和插入CBAM的神經網絡開展注記類別識別實驗,使網絡學習不同類別注記的顏色、字體等特征,然后基于MXNet框架,采用DenseNet開展注記文字識別實驗,并且在文字識別中加入字符串相似度計算算法以提高識別精度,最后結合注記類別識別和文字識別的結果定位注記位置并進行注記配置,在遵循注記配置規則的基礎上注重突出注記的類別特征,賦予各類別注記不同的顏色及符號特征。
在進行訓練前,先通過函數對數據集圖像的尺寸進行調整,如果圖像像素小于目標尺寸100×100,則對圖像進行固色填充;如果圖像大于目標尺寸,則截取圖像中心區域使其與目標尺寸大小相等。然后使用CNN開展分類實驗,在TensorFlow平臺上使用搭建好的CNN對數據集進行訓練、測試及驗證。通過訓練數據集生成模型,再調用生成的模型對地圖注記圖像進行驗證。實驗表明,該模型在經過約900次迭代后,分類精度趨于穩定,針對測試集的分類準確度達到98.69%,訓練時間為980秒。訓練和測試過程的精度準確率變化曲線如圖4所示。

圖4 CNN準確率變化曲線
然后采用插入CBAM后的CNN模型,在TensorFlow平臺上對數據集進行訓練、測試及驗證。同樣,先通過函數對數據集圖像的尺寸進行調整,然后通過訓練數據集生成模型,再調用生成的模型對地圖注記圖像進行驗證。實驗表明,該模型在經過約900次迭代后,分類精度趨于穩定,針對測試集的分類準確度達到99.22%,訓練時間為1436秒。訓練和測試過程的精度準確率變化曲線如圖5所示。

圖5 插入CBAM后的CNN準確率變化曲線
由實驗可知,在同樣的實驗環境和實驗數據集條件下,加入CBAM后,CNN的分類精度有所提高,但訓練所耗費的時間更長。實驗結果表明,在使用神經網絡進行地圖點注記分類時,加入注意力模塊可以更有效地提取圖像特征,提高識別準確率。因此,本文使用加入CBAM的CNN訓練模型對驗證集進行分類,針對驗證集的70張注記圖像,該模型的分類準確率為98.57%,其中河南省省會鄭州的分類有誤,原因是省會注記與其他地名類別注記的字體、顏色不同,存在較大差異,且訓練集中的省會注記圖像較少。手動修改錯分類別,將分類結果進行記錄以便后續使用。
將地圖注記圖像作為訓練好的DenseNet模型的測試集,在MXNet平臺上進行驗證,其識別精度為72.86%。由于地圖注記數據集存在噪聲,使用DenseNet模型直接進行預測時精度較低,因此先收集所需的地名及其經緯度,并在識別程序中加入字符串相似度計算算法,將模型預測出的字符串和地名文件中的字符串作對比,選取相似度更高的為預測結果,使得文字識別的結果可以正確匹配地名。加入字符串相似度計算算法后,模型的文字識別準確率顯著提高,達到94.29%。
依分類實驗的順序,在MXNet平臺上對70張驗證集進行文字識別,在匹配到相應的地名后,讀取該地名所對應的位置信息。在識別實驗中,個別注記圖像由于背景干擾因素較多,識別較為困難,需要采取裁剪圖像或消除背景的方法對其進行處理,從而提高識別精度。完成文字識別后,使用Python編程將地名、經度、維度和類別寫入同一文件中。
經過上述實驗,根據地圖注記圖像已獲取地圖注記的文字、位置和類別信息,可以基于網頁、在線工具、制圖軟件等開展注記配置實驗,主要是根據上述信息對點注記進行定位,尋找注記文字最佳放置位置以及為各類注記設置不同的字體、顏色、大小等特征。
加載河南省地圖底圖后,首先采用文字識別實驗中獲取的位置信息對注記點符號進行定位,并根據匹配的地名信息加載注記文字,然后根據地圖注記分類實驗中獲取的注記類別,為4類地圖注記設置不同的字體、大小、顏色及符號樣式等特征。
在直接讀取注記位置信息進行注記配置時,注記文字默認放置于點符號東北方向,由此產生了地圖注記沖突問題,沖突占比為27.15%。為解決該問題,在放置注記時使用ArcGIS環境下的 Maplex標注引擎,以選擇注記理想放置位置,使注記圍繞點符號分布,將注記沖突占比降至0%。地圖點注記的配置結果如圖6所示。

圖6 地圖點注記配置結果
由實驗結果可知,采用神經網絡能夠實現對地圖點注記的類別識別和文字識別,并應用至地圖注記自動配置中,是一種新的地圖注記配置思路。為評價本文方法的有效性,將配置結果與專家系統及其他注記配置方法的注記配置結果進行對比分析,采取壓蓋、沖突、放置位置等常用的注記質量評價標準對本文方法與專家系統及其他注記配置方法進行評價,結果如下:
(1)與專家系統的配置結果相比,采用本文方法得到的注記配置結果在注記位置分布上表現良好,避免了注記沖突的情況,注記壓蓋情況更少,注記配置結果較為分散,符合已有的注記配置規則,因此本文的注記配置方法能夠用于地圖注記自動配置,以提高地圖的質量。
(2)與專家系統及其他注記配置方法相比,本文方法考慮了地圖注記的類別屬性,在注記配置時采用不同的符號和色彩展示了地圖注記的類別,突出了各類注記的特點,進一步方便了地圖閱讀。同時,將區分注記類別與自動化配置相結合,簡化了地圖注記配置的過程,提高了地圖制圖的效率。
本文利用從公開出版的地圖集中獲取的地圖注記數據集,采用深度學習的方法對地圖點注記圖像進行類別識別和文字識別,并對地圖注記進行位置匹配,結合注記文字和類別信息進行注記樣式設置,實現了通過地圖注記圖像完成不同類別的地圖注記自動配置,為地圖注記自動配置提供了新的思路。對比已有的地圖注記配置方法,本文的方法具有以下優點:用戶可以通過注記圖像及地名位置信息實現注記的自動配置,簡化數據獲取過程,從而降低傳統制圖方法中數據處理的復雜度;將深度學習方法應用于地圖注記配置中,可以提高地圖制圖的自動化、智能化水平,對泛在用戶的制圖行為起到引導作用,同時提高了用戶的制圖效率和制圖質量;降低了制圖難度,制圖速度更快,制圖選擇性更多,能夠針對專題進行制圖。
隨著地圖注記數據集的擴大,所包含注記類別的增加,本文的方法將能夠更廣泛地應用于地圖制圖中,有效提高地圖制圖效率。根據地圖注記分類的實驗結果,可以發現CBAM能夠提高地圖注記圖像分類的精度,當樣本集數量擴大時,增加CBAM是否能進一步提高分類精度是后續研究的一個方向。