高 香,宋敦江2,梅 新
(1.湖北大學 資源環(huán)境學院,武漢 430061; 2.中國科學院科技戰(zhàn)略咨詢研究院,北京 100190)
地理信息系統(tǒng) (GIS,geographic information system),遙感(RS,remote sensing)以地理信息資源和測繪數(shù)據(jù)等為基礎數(shù)據(jù)[1],包括大量的航空航天圖片,遙感影像, 地形圖以及各尺度的DEM(digital elevation model)數(shù)據(jù)。這些地理信息基礎數(shù)據(jù)具有與其它數(shù)據(jù)不同的特性,拓撲關系強,具有自相關性,而且數(shù)據(jù)量龐大,計算復雜,處理困難。國內(nèi)外學者將機器學習(Machine Learning)和深度學習算法應用于各領域大數(shù)據(jù)處理、分析,獲取有用信息[2]。例如運用圖像模式識別來進行大數(shù)據(jù)挖掘,構建大數(shù)據(jù)智能地質(zhì)學[3]。
圖像匹配技術是圖像處理、分析的重要內(nèi)容,其結果的精度與可靠性直接決定了后續(xù)工作能否正常進行。圖像匹配它是根據(jù)目標的特殊特征,按一定相似性準則,建立未知圖像與已知圖像之間的匹配[4]。隨著社會信息化程度逐漸提高,計算機存儲和計算能力大幅度提升,深度學習技術和方法在飛速發(fā)展,圖像匹配技術也趨于成熟,圖像匹配是幾乎所有圖像分析過程中的關鍵組成部分。圖像匹配成功應用于例如導航、指導,自動監(jiān)視,計算機視覺、繪圖科學、無人駕駛、醫(yī)學診斷交通監(jiān)控等領域[5]。
地形匹配是圖像匹配的一種,在遠程巡航導彈導航、潛水器導航,飛機航行跟隨、地形回避,模式識別,地理定位,目標跟蹤等領域具有十分重要的作用[6-7]。地形匹配制導自主、可靠、不受干擾、導航精度與航程無關,無需在導航區(qū)域建立信號中繼站等基礎設施,它不受氣象條件和其他電子設備干擾等的影響,是GPS導航的一種有效輔助手段[8]。
地形匹配是利用已知地形數(shù)據(jù),從基準圖中提取具有不變特征或明顯特征的子區(qū),或者用已知地面控制點作為模板,在所匹配的圖中搜索與模板相似的區(qū)域。當兩個地圖的匹配相似性測度達到最大,且超過預先規(guī)定的閾值時,判定為找到了正確的匹配位置[9]。在地形匹配過程中,基準地形(假定稱為A)是全國或全球地形,待匹配地形(假定稱為T)是任意一塊具有明顯地形特征的地形,地形匹配就是要在A中進行搜索或進行特征匹配,確定T在A中的位置,包括中心點坐標和邊角拐點坐標。與地形匹配相關研究一般運用三維表面匹配算法、計算機視覺技術[10]來確定基準地形A內(nèi)恢復待匹配圖形T的位置和方向。但到目前為止卻很少有基于深度學習來進行地形匹配的相關研究。
盡管圖像匹配技術發(fā)展快速,地形匹配相關研究也很多,但運用深度學習進行地形匹配相關研究卻很少。將地形匹配數(shù)據(jù),相關匹配算法進行系統(tǒng)集成可以使地形匹配流程系統(tǒng)化,能夠?qū)Φ匦螆D進行快速匹配、更新。但由于地形數(shù)據(jù)數(shù)據(jù)量大,計算復雜,不能僅依賴于 CPU的計算,CPU+GPU 的硬件框架更能滿足實際需求,由于GPU服務器租用昂貴,從經(jīng)濟因素與算法安全性因素出發(fā),本文嘗試GPU服務器和WEB服務器分離相互獨立的做法。本文研究基于Java開發(fā)的地形匹配Web系統(tǒng),運用當今互聯(lián)網(wǎng)、云計算等技術優(yōu)勢搭建的分布式在線處理系統(tǒng),解決了本地系統(tǒng)或局域網(wǎng)環(huán)境系統(tǒng)下的專業(yè)模型或處理算法在互聯(lián)網(wǎng)上的應用,提供了更廣泛的共享[11]。同時,該架構采用了消息調(diào)度概念及應用模式,對地形匹配算法進行了封裝,復用了已有的地形匹配算法,開發(fā)效率大大提高。該系統(tǒng)托管在阿里云服務器中,它通過消息傳遞機制與另外一臺GPU服務器進行通信,實現(xiàn)GPU地形匹配計算與地圖網(wǎng)站的功能分離,增加了系統(tǒng)的可擴展性,方便進一步的升級。
已有全國地形數(shù)據(jù)A(30米分辨率的DEM),對現(xiàn)有區(qū)域的地形等高線(數(shù)據(jù)A)(contourA.shp),任意切割一個方形區(qū)域得到子集等高線數(shù)據(jù)B,對數(shù)據(jù)B進行平移和旋轉得到數(shù)據(jù)C,對數(shù)據(jù)C隨機加入噪音得到數(shù)據(jù)T(contourT.shp)。地形匹配服務目標實現(xiàn)上傳數(shù)據(jù)T,恢復或匹配、查找后確定數(shù)據(jù)T在數(shù)據(jù)A原始位置,并反饋匹配結果??紤]算法的復用性,以及進一步的改進與升級,地形匹配服務在架構設計時,采用基于“消息/訂閱”模式的消息調(diào)度模式[12],對地形算法庫進行了封裝,將網(wǎng)站平臺模塊,消息隊列傳遞模塊等與地形匹配算法進行分離,相互獨立運行工作,通過消息隊列服務器建立網(wǎng)站與算法之間的通信,構建了地形匹配服務體系。如圖1所示。
圖1 地形匹配服務架構體系
如圖1所示,地形匹配系統(tǒng)整個服務架構體系分為Web網(wǎng)站、消息調(diào)度服務器、文檔服務器、匹配處理服務四部分,其中Web網(wǎng)站、消息調(diào)度服務器、文檔服務器部署于阿里云服務器中,匹配處理算法部署于局域網(wǎng)環(huán)境。其中Web網(wǎng)站負責整個系統(tǒng)的前端的顯示以及交互操作,消息調(diào)度服務器、文檔服務器負責門戶網(wǎng)站與地形匹配算法服務的溝通,匹配算法部分負責地形匹配運算。整個系統(tǒng)采取松耦合的模式,彼此之間保持相對獨立性。
Web網(wǎng)站模塊主要是網(wǎng)頁部分,負責為用戶提供系統(tǒng)應用界面,用戶通過操作Web網(wǎng)站輸入待匹配地形圖片,執(zhí)行匹配命令,網(wǎng)站獲取地形匹配信息,發(fā)起執(zhí)行操作,最后接收匹配處理后結果,并儲存到Web網(wǎng)站數(shù)據(jù)庫中。
消息調(diào)度服務和文檔服務器模塊負責門戶網(wǎng)站與地形匹配算法服務的溝通。消息隊列調(diào)度服務[13]可以簡單的理解為系統(tǒng)各部分之間建立聯(lián)系的“橋梁”,它通過隊列的方式實現(xiàn)各模塊之間的消息傳遞,屬于系統(tǒng)的中間組件,它將數(shù)據(jù)與計算進行分離,確保了數(shù)據(jù)的獨立性,提高了算法的重用性,便于后期算法的完善。文檔服務器提供了消息監(jiān)聽機制,后臺匹配處理接收消息調(diào)度服務器發(fā)送的處理請求,進行數(shù)據(jù)從阿里云文檔服務器上下載。
匹配處理服務模塊主要負責地形匹配算法的實現(xiàn),匹配處理后臺需要集成消息隊列接收處理消息,包括文件名和數(shù)據(jù)庫此數(shù)據(jù)的id號。通過FTP服務器(File Transfer Protocol Server)下載對應save_name的數(shù)據(jù),執(zhí)行匹配處理,然后通過Web網(wǎng)站API將數(shù)據(jù)結果及狀態(tài)寫入到數(shù)據(jù)庫表中。
網(wǎng)站部分通過Java 體系開發(fā),采用 Play框架, 消息隊列采用Rabbitmq服務器,后臺空間匹配采用Python開發(fā)語言??紤]系統(tǒng)的安全性以及算法的重要性,消息調(diào)度服務器,Web網(wǎng)站和FTP服務器部署在阿里云上,后臺匹配算法部署在局域網(wǎng)內(nèi)。系統(tǒng)實現(xiàn)流程圖如圖2所示。
圖2 系統(tǒng)實現(xiàn)流程圖
如圖2所示,在阿里云CPU環(huán)境中安裝系統(tǒng)依賴軟件,并搭建Web網(wǎng)站,配置相關環(huán)境,在本地GPU環(huán)境中進行地形匹配算法的訓練,以及地形匹配算法封裝及應用,并配置相關環(huán)境。系統(tǒng)相關依賴軟件如表1所示。
表1 系統(tǒng)開發(fā)平臺工具
如表1所示,系統(tǒng)開發(fā)網(wǎng)站選擇了play開發(fā)框架、 Postgis數(shù)據(jù)庫、Pika內(nèi)存數(shù)據(jù)庫、Rabbitmq消息隊列服務器、FTP服務器、后臺算法地形匹配算法使用python3語言開發(fā)、網(wǎng)站部署在阿里云環(huán)境中。
Play框架(http://www.playframework.com/),它是開源Web框架,相比于其他框架,靈活性高,具有熱重載(hot reload)[14]特性,修改代碼,可直接刷新頁面顯示效果,無需重新構建,使用Play框架開發(fā),可以快速搭建網(wǎng)站,大大提高了系統(tǒng)的開發(fā)效率。
PostGIS數(shù)據(jù)庫是對象關系型數(shù)據(jù)庫系統(tǒng) PostgreSQL(https://www.postgresql.org/) 的一個擴展,能夠有效的對空間數(shù)據(jù)進行管理與處理,地形數(shù)據(jù)屬于空間數(shù)據(jù)的一種,為了便于存儲空間數(shù)據(jù)的空間位置、空間關系,選用了PostGIS數(shù)據(jù)庫。
Rabbitmq(http://www.rabbitmq.com/)是開源消息傳遞中間組件,可在多平臺,多操作系統(tǒng)中運行,具有可靠性,使消息和消息隊列具有可恢復性,消息隊列調(diào)度服務機制進行數(shù)據(jù)的傳遞,將數(shù)據(jù)與后臺算法進行分離,確保了數(shù)據(jù)的獨立性,提高了算法的重用性[15]。
Ftp服務是通過Internet利用FTP服務器和FTP客戶機實現(xiàn)的是一種高效可靠的文件傳輸服務,客戶端進行FTP會話,服務器與客戶端之間連接建立雙向的傳輸文件的連接,實現(xiàn)計算機與計算機之間實現(xiàn)相互通訊[16]。此系統(tǒng)在阿里云上配置了FTP服務器,建立了后臺匹配處理與前端網(wǎng)站間的數(shù)據(jù)傳輸機制,后臺匹配平臺接收消息調(diào)度服務器發(fā)送的處理請求,連接到在阿里云主機上的FTP服務器程序進行數(shù)據(jù)的下載。匹配處理后將處理后的結果返回給前端網(wǎng)站。
Pika是類似于Redis的一款開源的存儲系統(tǒng),它的優(yōu)勢在于Pika 是多線程的結構,因此在線程數(shù)比較多的情況下,某些數(shù)據(jù)結構的性能可以優(yōu)于 Redis,由于系統(tǒng)需要儲存的為全國范圍內(nèi)的地形圖,數(shù)據(jù)量較大,若選擇Redis會因內(nèi)存過大恢復時間長,而Pika正好解決了用戶使用Redis內(nèi)存過大恢復時間長的問題。
匹配后臺算法采用Python開發(fā)語言,利用深度學習算法對全國地形數(shù)據(jù)進行訓練,之后模糊匹配,再利用機器視覺方法進行精確定位。pika,ftplib是python的內(nèi)置的標準模塊,Pika包進行消息接收,ftplib包提供了強大的對FTP服務器的操作,通過它連接并操作FTP服務端使用。
地形匹配系統(tǒng)中消息調(diào)度服務器,Web網(wǎng)站和FTP服務器部署在阿里云(https://www.aliyun.com/?utm_content=se_1000301881)上,后臺匹配算法部署在局域網(wǎng)內(nèi),具體配置如圖3所示。
圖3 系統(tǒng)部署圖
如圖3所示,地形匹配系統(tǒng)Web網(wǎng)站部署在阿里云上,遠程登錄阿里云服務器,進行PostGIS數(shù)據(jù)庫、消息隊列服務器 Rabbitmq、文件服務器 FTP服務等依賴軟件的安裝。并運用Play框架搭建網(wǎng)站,修改配置文件application.conf進行相關服務配置。修改配置信息如下所示:
file_path=["C:zkydataimg"]
save_file_path=["C:zkydataimg"]
mq = ["47.105.32.162"]
file_path為輸入文件路徑,save_file_path為保存文件路徑 mq為阿里云公網(wǎng)IP地址。然后構建消息隊列服務,新建隊列(queue),命名為web_pro1,全國地形數(shù)據(jù)A存放于PostGIS數(shù)據(jù)庫中。
接著進行匹配算法運行環(huán)境的搭建,在后臺匹配算法中進行Rabbitmq環(huán)境配置,在匹配算法中輸入消息隊列登錄名稱,以及登陸密碼和Rabbitmq服務器配置網(wǎng)站url,并進行FTP環(huán)境的配置,使后臺匹配算法能夠獲取消息隊列message信息,需包括網(wǎng)站url,獲取時間以及文件名稱。
系統(tǒng)地形匹配的目標是實現(xiàn)輸入任意變換后的地形數(shù)據(jù)T執(zhí)行匹配命令,匹配后得到T在全國地形數(shù)據(jù)A的具體位置。
地形匹配過程分成兩個子過程:
1)第一個子過程是先對總圖A用深度學習的殘差網(wǎng)絡模型(ResNet)進行訓練學習,再進行模糊匹配,找出子圖T在A中的大概位置T’;
2)第二個子過程是利用計算機視覺OpenCV里的尺度不變特征變換(Scale-invariant feature transform,SIFT)方法對T進行精確定位,精確確定T與T’的相對位置。匹配結果示意圖如圖4所示。
圖4 匹配結果示意圖
如圖4中所示T1、T2待匹配地形圖為數(shù)據(jù)總圖變換后的子圖。P為T1、T2重疊部分,A、P為未重疊部分。
為了便于算法后期的完善和升級,提高算法的復用性,我們對地形匹配算法進行了封裝。匹配算法通過集成消息隊列接收消息體名稱和隊列名稱,獲取處理請求,得到文件名和數(shù)據(jù)庫此數(shù)據(jù)的id號。通過FTP服務器下載對應save_name的數(shù)據(jù),執(zhí)行匹配處理,形成標準算法庫。并將處理后的結果通過Web網(wǎng)站API將數(shù)據(jù)結果及狀態(tài)寫入到數(shù)據(jù)庫表中。
算法庫的封裝,實現(xiàn)了后臺算法與前端網(wǎng)站的分離,后臺匹配算法只負責算法方面的開發(fā),前端網(wǎng)站只需通過消息調(diào)度機制與后臺算法建立聯(lián)系,提高了匹配系統(tǒng)的效率,以及系統(tǒng)的復用性。
地形匹配系統(tǒng)頁面設計遵循簡潔,醒目的原則,主要包括導航欄模塊,地圖顯示模塊,地形圖片輸入模塊,以及執(zhí)行處理模塊。如圖5所示。
圖5 頁面設計圖
如圖5,頁面右側模塊設計用戶輸入待匹配地形圖,左側設計執(zhí)行匹配命令按鈕,并顯示匹配信息,中間模塊顯示地圖,并顯示匹配成功結果。
地形數(shù)據(jù)經(jīng)過地形匹配算法匹配后,數(shù)據(jù)的輸出形式為匹配地形圖在參考全國地形數(shù)據(jù)A上的坐標信息,即四個頂點的經(jīng)緯度信息,并將坐標信息通過Web數(shù)據(jù)接口傳送給前端網(wǎng)頁,并顯示在前端網(wǎng)頁地圖中。
整個體系系統(tǒng)統(tǒng)分Web網(wǎng)站建設、消息調(diào)度服務、后臺匹配處理服務三部分。消息調(diào)度服務器,Web網(wǎng)站和FTP服務器在阿里云上部署??臻g算法部署在局域網(wǎng)內(nèi),用戶通過操作Web網(wǎng)站瀏覽器頁面輸入待匹配的地形圖,執(zhí)行匹配命令,消息調(diào)度機制通過接收Web網(wǎng)站信息將處理請求發(fā)送給后臺匹配處理,匹配處理后臺集成消息隊列包括文件名和數(shù)據(jù)庫此數(shù)據(jù)的id號接收處理消息,然后通過FTP服務器下載阿里云環(huán)境中PostGIS數(shù)據(jù)庫中對save_name的數(shù)據(jù),執(zhí)行匹配處理,處理完成后,然后通過Web網(wǎng)站API將數(shù)據(jù)結果及狀態(tài)寫入到數(shù)據(jù)庫表中并在Web瀏覽器頁面中展示。具體過程如圖6所示。
圖6 系統(tǒng)流程圖
在實際應用中,構建了基于Web的地形匹配系統(tǒng),瀏覽器頁面由導航欄,執(zhí)行處理命令部分,地圖部分,上傳待匹配地形圖四部分組成,用戶通過操作瀏覽器在頁面右側上傳待匹配地形數(shù)據(jù),上傳成功后,點擊頁面左側執(zhí)行命令,通過消息調(diào)度服務,后臺匹配算法進行處理,將執(zhí)行結果在瀏覽器地圖上顯示,如圖 7所示。
圖7 匹配成功結果截圖
圖7中綠色虛線位置即為待匹配地形圖T所在位置。
在地形匹配系統(tǒng)主要實現(xiàn)過程分為:1)樣本數(shù)據(jù)制作;2)地形匹配算法模型訓練;3)地形匹配算法模型應用。本文重點在于訓練好的地形匹配模型的應用。
在全國地形數(shù)據(jù)A中隨機提取一方形區(qū)域T(300行*300列),并對數(shù)據(jù)進行旋轉得到37個樣本數(shù)據(jù),其中包括18個副本數(shù)據(jù),隨機提取160 000批數(shù)據(jù),得到實驗數(shù)據(jù)T約為600萬個樣本數(shù)據(jù)。
以600萬個樣本數(shù)據(jù)作為訓練樣本,利用深度學習的殘差網(wǎng)絡模型(ResNet50)進行訓練,進行模糊匹配,隨機選取2 000個樣本數(shù)據(jù)作為測試樣本測試精度,每個訓練樣本返回10張地形圖,利用計算機視覺OpenCV里的尺度不變特征變換方法對T進行精確定位,利用ResNet50訓練模型,匹配結果精度達到97%。
將訓練好的模型進行封裝,應用到地形匹配系統(tǒng)中。在阿里云CPU環(huán)境中,搭建Web網(wǎng)站環(huán)境,配置消息隊列服務環(huán)境、FTP服務器,以及安裝數(shù)據(jù)庫系統(tǒng)等軟件。在本地GPU環(huán)境部署匹配算法運行環(huán)境。首先遠程登錄阿里云服務器,進行PostGIS數(shù)據(jù)庫、消息隊列服務器 Rabbitmq、文件服務器 FTP服務等依賴軟件的安裝。并通過Java 體系進行Web網(wǎng)站的搭建,然后構建消息隊列服務,新建隊列(queue),命名為web_pro1,然后將全國地形數(shù)據(jù)A存放于PostGIS數(shù)據(jù)庫中,之后將封裝好的匹配算法匹配算法部署在本地GPU環(huán)境部署中,在匹配算法中進行Rabbitmq環(huán)境配置,在匹配算法中輸入消息隊列登錄名稱,以及登陸密碼和Rabbitmq服務器配置網(wǎng)站url,并進行FTP環(huán)境的配置,使后臺匹配算法能夠獲取消息隊列message信息,需包括網(wǎng)站url,獲取時間以及文件名稱。
在Web網(wǎng)站中點擊上傳圖片或直接拖拽,將實驗數(shù)據(jù)T導入到網(wǎng)頁中,點擊網(wǎng)頁左側執(zhí)行匹配按鈕,通過消息隊列將待匹配信息傳送到后臺,匹配處理后臺需要集成消息隊列接收處理消息,包括文件名和數(shù)據(jù)庫此數(shù)據(jù)的id號。通過FTP服務器下載對應save_name的數(shù)據(jù),執(zhí)行匹配處理,計算待匹配地形圖在參考全國地形數(shù)據(jù)A上的坐標信息,即四個頂點的經(jīng)緯度信息,然后通過Web網(wǎng)站API將數(shù)據(jù)結果及狀態(tài)寫入到數(shù)據(jù)庫表中,并將坐標信息通過Web數(shù)據(jù)接口傳送給前端網(wǎng)頁,并顯示在前端網(wǎng)頁地圖中。
基于Web的地形匹配系統(tǒng)采用了消息調(diào)度概念及應用模式,對地形匹配算法進行了封裝,復用了已有的地形匹配算法,實現(xiàn)GPU地形匹配計算與地圖網(wǎng)站的功能分離,增加了系統(tǒng)的可擴展性,方便進一步的升級。
但系統(tǒng)同時存在不足,例如地形匹配過程中上傳地形數(shù)據(jù)必須和數(shù)據(jù)庫中全國地形數(shù)據(jù)A同一比例尺才能進行匹配。
系統(tǒng)匹配數(shù)據(jù)為全國地形數(shù)據(jù)A(30米分辨率的DEM ),共計約1000塊,每塊空間范圍為108 km*108 km(3 600行*3 600列),存放在postgis數(shù)據(jù)庫中。
待匹配實驗數(shù)據(jù)T由Web網(wǎng)站輸入,是從全國地形數(shù)據(jù)A隨機提取一方形區(qū)域T(300行*300列)得到數(shù)據(jù)B,數(shù)據(jù)B經(jīng)過旋轉、平移等得到實驗數(shù)據(jù)T。
文章研究構建了基于Web的地形匹配系統(tǒng), 對匹配算法進行了封裝,Web網(wǎng)站通過消息調(diào)度服務器建立于后臺匹配之間的信息傳遞與溝通,三部分分工合作,極大的提高了系統(tǒng)開發(fā)效率,匹配算法基于深度學習的地形匹配(Deep Learning-based Terrain Matching, DLTM),匹配樣本來自于數(shù)據(jù)集任意一塊旋轉,變換,加噪后的子集。相比于其他地形匹配研究,文章有如下優(yōu)點:
1)文章將機器學習運用于地形匹配算法之中,并對算法進行了封裝,可直接調(diào)用。
2)文章將地形匹配數(shù)據(jù),相關匹配算法進行系統(tǒng)集成,使地形匹配流程系統(tǒng)化,能夠?qū)Φ匦螆D進行快速匹配、更新。
3)文章將GPU地形匹配計算與地圖網(wǎng)站的功能分離,將消息調(diào)度服務器,Web網(wǎng)站和Ftp服務器部署在阿里云服務器,匹配處理算法部署于局域網(wǎng)環(huán)境內(nèi)本地GPU服務器中,極大的降低了租用GPU服務器的成本,同時確保了數(shù)據(jù)的獨立性,提高了算法的重用性,便于后期算法的完善。
但文章中地形匹配算法無法應用于不同尺度地形數(shù)據(jù)的相互匹配和多分辨率的地形匹配。今后將對不同尺度地形數(shù)據(jù)的相互匹配、解決多分辨率的地形匹配、基于切割等高線方法的地形匹配、基于地學信息圖譜的地形分類、輔助地形匹配、全球影像的自動定位等問題進行研究。