《武大&華為:LuoJiaSet&LuoJiaNet產業應用白皮書(2022)(193頁).pdf》由會員分享,可在線閱讀,更多相關《武大&華為:LuoJiaSet&LuoJiaNet產業應用白皮書(2022)(193頁).pdf(193頁珍藏版)》請在三個皮匠報告上搜索。
1、 引言:隨著大數據、人工智能等技術的發展,基于深度學習的遙感影像解譯與監測技術表現出了一定的優勢。由于遙感對地觀測與智能處理的戰略價值,國外在2020 年將基于人工智能的遙感技術列為敏感技術并限制出口,形成新一輪封鎖態勢。各類國內外開源深度學習框架,雖然能適用于通用圖像處理,但目前尚無顧及遙感大幅面、多通道、知識融合特性的深度學習框架和相應任務驅動的大規模遙感影像樣本庫。武漢大學在國家自然科學基金委重大研究計劃集成項目“大規模遙感影像樣本庫構建及開源遙感深度網絡框架模型研究”(項目編號:92038301)的支持下,與華為昇騰 AI 團隊合作,雙方共享知識產權,共同研發了全球首個遙感影像智能解譯
2、專用深度學習框架 LuoJiaNET 和業界最大遙感影像樣本庫LuoJiaSET,并在華為昇思社區上線。為了進一步推進科研成果的產業落地,武漢大學與華為技術公司聯合發布大規模遙感樣本庫 LuoJiaSET 及遙感深度學習框架 LuoJiaNET 產業應用白皮書,以期形成“全?!弊灾骺煽氐闹悄苓b感生態。本白皮書分為 6 部分,包括國內外技術的發展現狀及趨勢、LuoJiaSET 樣本庫平臺功能介紹、LuoJiaNET 框架安裝部署及遙感特性介紹、LuoJiaNET 典型應用模型介紹、LuoJiaNET 典型行業應用介紹、以及 LuoJiaSET 與 LuoJiaNET的發展與展望。白皮書亮點摘要:
3、1.遙感智能化處理的云平臺,仍有較大提升空間。當前遙感影像樣本存在分類體系不統一、樣本數量不足、時空分布不均、標注效率不高等問題,需建立統一的遙感影像樣本分類體系,研發支持眾包協同的樣本標注工具,建立完善的版權保護體系,形成分類統一、類型完備、具有自適應擴展能力的遙感影像樣本庫;同時主流開源深度學習框架與模型主要針對的是普通影像,即普通的小像幅室內/外影像;現有遙感智能解譯與監測系統大多由通用圖像識別的深度神經網絡改造,一般只考慮了影像二維空間的可見光圖像特征,顧及遙感光譜特性、地學先驗知識、數據與框架協同等重要因素,支持遙感地學特性的框架仍是空白。武漢大學與華為技術公司聯合研發的 LuoJi
4、aSETT 與LuoJiaNET 構建了從底層硬件到樣本框架、再到面向智能測圖任務的上層應用模型的全鏈條自主可控智能化處理云平臺。2.LuoJiaSET 樣本庫可提供樣本的統一規范化接口。LuoJiaSET 是遙感領域滿足 OGC 標準的大規模遙感影像樣本庫,其制定了支持全球范圍的遙感影像樣本分類標準、標注規范,建立涵蓋不同遙感任務的統一分類體系,形成樣本要素的采集要求、內容和流程規范,可支持多級別、多類型遙感影像樣本庫的采集、制作、管理、共享、應用。目前,形成了包含 82個面向遙感智能解譯的樣本數據集、總數超過 500 萬張的樣本庫。LuojiaSET 構建了100類+的細粒度地表覆蓋數據集
5、Luojia-FGLC(Fine Grain Land Cover,)、國際上最大范圍的航空高光譜與高分辨率數據集 Luojia-HSSR(High Spatial and Spectral Resolution)和第一個基于公開地理信息的省域大范圍典型地表覆蓋數據集 Luojia-HBD4(Hubei Dataset of 4 Land Cover Types),有效支撐 了國家自然科學基金委“智能遙感處理大賽”等項目。3.LuoJiaNET 框架充分融合遙感特性。LuoJiaNET 由武漢大學 LuoJiaNET 框架團隊與華為昇騰 AI 團隊聯合打造而成,是遙感領域首個自主可控的遙感專用
6、機器學習框架。針對遙感數據像幅尺寸大、數據通道多、尺度變化大等特性,具備內存可擴展、尺度通道靈活創建、數據通道自主優選、框架與數據協同處理的特點??杉嫒菀延猩疃葘W習框架,并提供用戶友好的、可拖拽的交互式網絡結構搭建界面的方法。能屏蔽不同硬件設備間差異,同時管理多樣化的遙感影像樣本庫,實現遙多源感影像樣本的高效讀寫與存儲管理。其與國產人工智能硬件昇騰 NPU 深度融合,使智能計算軟硬件充分協同,形成融合探測機理與地學知識的統一計算圖表達、編譯優化、圖算融合、自動混合并行的新一代遙感智能解譯框架,可進行遙感樣本的自動提純與增廣,同時充分融合遙感地學知識。4.LuoJiaNET 框架提供 5 大類遙
7、感基礎應用模型。為了驗證 LuojiaNET 遙感專用深度學習框架的有效性,發揮其優勢,構建了基于 LuojiaNET 框架的典型應用解譯模型,包括:(1)場景分類模型;(2)目標檢測(側重細粒度);(3)語義分割模型(含多光譜/高光譜);(4)多視三維生成模型;(5)變化檢測模型。系列模型可兼容華為昇騰 AI 硬件架構,并對其性能、效果與主流的框架 PyTorch、Tensorflow 等構建的模型進行對比分析。此外,提供了大幅面影像處理、遙感知識嵌入的核心解決方案。5.LuoJiaSET 與 LuoJiaNET 框架為遙感行業應用提供支撐。LuoJiaNET 與 LuoJiaNET 為上海
8、數慧、武漢漢達瑞科技公司、航天宏圖信息技術股份有限公司、珈和科技等行業單位提供遙感基礎應用模型,共同構筑自 主可控開源遙感生態。在公測的一個月時間內,已有超 3000 人次的下載量,多家大型公司將 LuoJiaSET 與 LuoJiaNET 作為遙感人工智能基礎軟件平臺。目 錄 1 概述 1 1.1 編寫目的.1 1.2 項目背景.1 1.3 國內外發展現狀及趨勢.2 1.3.1 遙感影像樣本數據集構建方法.2 1.3.2 深度學習框架與模型.6 1.3.3 顧及遙感數據及任務特性的深度神經網絡優化理論與方法.10 1.3.4 遙感影像處理云平臺.13 2.LuoJiaSET 樣本庫平臺 15
9、 2.1 樣本共享服務平臺基礎功能.15 2.1.1 用戶注冊登錄.15 2.1.2 數據集顯示.16 2.1.3 數據集詳情查詢.18 2.2 樣本共享服務平臺查詢下載流程.20 2.2.1 數據集包含類別查詢.20 2.2.2 樣本元數據信息查詢.22 2.2.3 訂單提交.23 2.2.4 管理員訂單審核.24 2.2.5 訂單文件下載.24 2.3 樣本數據庫.25 2.3.1 數據集數量查詢.25 2.3.2 樣本數量查詢.25 3.LuoJiaNET 框架 27 3.1 安裝部署.27 3.2 大幅面處理特性與功能.38 3.2.1 遙感大幅面影像四叉樹索引功能.38 3.2.2
10、遙感大幅面影像專用 IR 功能.41 3.2.3 遙感大幅面影像算子分解功能.43 3.3 遙感先驗知識并行計算.58 3.3.1 遙感先驗知識提取.58 3.3.2 遙感先驗知識自動并行.76 4.LuoJiaNET 典型應用模型 92 4.1 場景分類.92 4.1.1 任務簡介.92 4.1.2 分類網絡簡介.92 4.1.3 測評結果.94 4.1.4 總結.97 4.2 目標檢測.98 4.2.1 任務簡介.98 4.2.2 目標檢測網絡簡介.98 4.2.3 測評結果.100 4.2.4 總結.113 4.3 地物分類.113 4.3.1 高光譜地物分類(一).113 4.3.2
11、高光譜地物分類(二).128 4.3.3 高空間分辨率地物分類(一).137 4.3.4 高空間分辨率地物分類(二).141 4.4 變化檢測.147 4.4.1 任務簡介.147 4.4.2 變化檢測網絡簡介.148 4.4.3 測評結果.151 4.5 多視三維.157 4.5.1 雙目立體.157 4.5.2 多視密集匹配.163 4.6 知識嵌入.170 4.6.1 任務簡介.170 4.6.2 知識嵌入網絡簡介.170 4.6.3 測評結果.171 4.6.4 總結.178 5.LuoJiaNET 的典型行業應用 179 5.1 上海數慧自然資源大腦解決方案.179 5.2 武漢漢達
12、瑞遙感影像智能化處理平臺.179 5.3 航天宏圖城市土地變化檢測平臺.180 5.4 珈和科技地事通智慧農業 SaaS 服務平臺.180 6.進一步發展與展望 182 6.1 LuoJiaSET 發展及展望.182 6.2 LuoJiaNET 發展及展望.183 7.致謝 184 1 概述 1.1 編寫目的 白皮書介紹了遙感影像樣本庫 LuoJiaSET 及專用深度學習框架 LuoJiaNET的整體使用方法;同時介紹 LuoJiaNET 基礎上的五大類應用模型測試情況,包括遙感場景檢索、目標檢測、地物分類、變化檢測、多視角三維重建等;此外,介紹了當前 LuoJiaSET 與 LuoJiaNE
13、T 在典型行業應用方面的成果。預期讀者包括機器學習系統設計開發人員、遙感影像樣本庫管理平臺開發人員、深度學習模型開發人員等。1.2 項目背景 隨著大數據、人工智能等技術的發展,基于深度學習的遙感影像解譯與監測技術表現出了一定的優勢。但在實際應用中,遙感影像智能處理框架和信息服務能力相對滯后,仍未形成與人臉識別等類似的可廣泛實用化的智能系統。無論是公開的遙感影像樣本庫,還是深度學習框架與模型,也尚不能滿足空間稀疏表征與融合處理的需求。當今人工智能時代,專用的遙感深度學習框架與模型是連通硬件、軟件、應用場景的樞紐與關鍵。由于遙感對地觀測與智能處理的戰略價值,美國在2020 年將基于人工智能的遙感技
14、術列為敏感技術并限制出口,對我國形成新一輪封鎖態勢。鑒于目前我國尚無顧及遙感特性的深度學習框架,研究面向遙感應用、具備自主知識產權的專用深度學習框架模型技術,占領遙感人工智能生態鏈的制高點已顯得尤為緊迫。武漢大學面向國家科技重大需求,在國家自然科學基金重大研究計劃項目“大規模遙感影像樣本庫構建及開源遙感深度網絡框架模型研究”(項目批準號:92038301)支持下,與華為昇騰 AI 團隊合作,歷時一年半,圍繞空間信息稀疏表征與融合處理新理論、新技術與新成果綜合集成和演示驗證的實際效果評估需求:(1)提出了遙感影像數據集分類標準和標注規范,研發了互聯網協同樣本標注系統,構建了多種類、百萬規模的標注
15、數據和標準數據集及其發布平臺-LuojiaSET。該樣本庫有不少于 500 萬公開的、可擴展與精化遙感影像樣本,包含第一個大規模細粒度地表覆蓋樣本集和大范圍高光譜航空影像樣本集;(2)針對遙感影像特點和應用需求,研發了遙感影像處理的深度神經網絡開源架構、模型與網絡優化方法,形成尺度通道靈活創建、數據通道自適應優選、多層級聯合優化的遙感深度學習框架-LuojiaNET。它是國際上首個針對遙感信息機器學習的專用框架,有效地解決了遙感影像大幅面、多通道數據的特征提取等問題。(3)提出了遙感數據及任務特性的深度神經網絡優化方法,包括高效的網絡結構自搜索、地學知識嵌入等。LuoJiaNET 不僅可以支持
16、通用GPU 的大幅面處理,還可以支持全國產昇騰 NPU 硬件,使遙感智能信息提取的底座“全?!弊灾骺煽?。1.3 國內外發展現狀及趨勢 1.3.1 遙感影像樣本數據集構建方法 近年來,隨著深度學習的應用,出現了遙感任務的樣本數據集,包括場景分類樣本集(如表 1 中的 UC-Merced、NWPU-RESISC45、AID 等)、地物目標檢測(飛機、輪船等)樣本集(如表 2 中的 DOTA、DIOR、xView 等)、單要素/多要素語義分割樣本集(如表 3 中的 GID、Massachusetts)、變化檢測樣本集(如表 4 中的 SCDN、SZTAKI)等。從表 1-4 可看出,遙感影像樣本數量
17、少,地物要素分類和變化檢測樣本集嚴重不足,且樣本集分類體系各異、采集方法不同、樣本尺寸不一、影像分辨率多樣。遙感影像受傳感器、季節變化等因素影響,呈現“同物異譜、異物同譜”現象?,F有大部分樣本集并未提供成像時間、區域范圍等信息。且大都是全色或 RGB 彩色圖像,缺少高光譜、紅外、SAR 影像樣本,使得在解譯與監測方法忽略了其它類型影像特性。同時,缺少多視三維重建樣本,導致其未充分顧及多視角成像方式。表 1.場景分類常用公開遙感影像數據集 表 2.目標檢測常用公開遙感影像數據集 表 3.常用的遙感影像語義分割公開數據集 表 4.常用的遙感影像變化檢測公開數據集 在分類體系方面,構建遙感影像樣本庫
18、,首先要解決分類體系問題。然而,由于遙感任務的復雜性,不同樣本集分類體系不盡相同。以土地覆蓋分類為例,聯合國糧農組織(FAO)、美國地質調查局(USGS)、歐洲環境署均提出各自的土地覆蓋分類體系,其中 FAO 分類體系(LCCS)形成了國際標準 ISO 19144,中國據此制定了國家標準地理信息分類系統(GB/T 30322)。此外,還針對土地利用分類制定了土地利用現狀分類(GB/T 21010-2017),針對地理國情監測制定了 基礎性地理國情監測內容與指標(CH/T 9029-2019)行業標準。但不同分類體系間在分類命名、類別層級、類別語義以及兼容性方面有較大差異,沒有一種體系能完全滿足
19、所有需求,如土地覆蓋分類體系適于地物要素分類樣本,但缺少目標檢測樣本的類別描述(如“飛機”、“車輛”等)。此外,再大量的樣本庫,都難做到分類完備,囊括所有的特征類別。不可預見的類別常會出現開集 問題(預測類別在樣本庫所含類別之外),導致解譯體系無法靈活擴展,難以服務于大范圍應用。在樣本標注與構建方面,遙感影像標注的專業性強,需具備地學知識和專業軟件操作技術。首先,從樣本標注工具角度,通用的標注工具(如 LabelMe、LabelImg)可用于小尺寸全色、RGB 影像的目標檢測或語義分割標注,但大尺寸的遙感影像需切割成小尺寸進行標注,且不支持高光譜樣本制作;同時,通用標注工具無法實現特定任務的標
20、注,如遙感變化檢測、全要素地物分類等;此外,地理信息軟件(如 ArcGIS 和 QGIS)雖支持多光譜影像標注,但導出標簽一般為矢量,輸入模型前需轉換格式。對于像素級標注,通常用專業軟件(如 ENVI、ERDAS)人工采集,采用面向對象方法分割形成地物要素分類樣本。其次,從樣本標注方法角度,分人工與半自動標注。人工標注包括專業人員和眾包標注方式,前者質量高但效率低,后者效率高但質量參差不齊。大規模普通影像樣本(如ImageNet)制作將兩者結合,即眾包標注后再經專業人員審核。在遙感領域,一方面樣本標注需專業基礎,另一方面眾包標注工具缺乏,樣本制作限于專業人員,并未發揮眾包優勢,且缺乏樣本版權保
21、護。因此亟需半自動標注方法,通過已訓練模型(如目標檢測模型)初步采集,再用標注工具完善版權等信息。此外,部分地物提取軟件(如 EasyFeature 等)也可用于半自動樣本制作,但缺乏樣本采集的眾包平臺,導致成本高、效率低。在樣本的地理空間采樣策略方面,合理的采樣策略對構建大范圍(區域及全球)遙感影像樣本庫至關重要,但目前已有樣本集(特別是地物要素分類樣本)是基于局部區域的少量影像構建,導致類別覆蓋度不高、樣本分布不均(包括時空分布不均和類內樣本數量不均)。地理空間中某一類別要素的空間分布可能是 不均勻的,例如東南亞水系豐富,而中亞草原荒漠較多。均勻抽樣會導致各要素的樣本不均衡,使機器學習模型
22、對少數類別錯誤分類。為此需研究顧及地貌景觀類別的樣本分布策略,以優化樣本分布,保證稀有類別樣本數量足夠,每個地理空間區域有足夠樣本量。在樣本組織管理方面,多數遙感影像樣本集由遙感社區的研究人員制作,或遙感組織根據競賽任務制作,其樣本數量有限。通常以數據文件方式組織,存儲在個人服務器、公共資源托管(如 GitHub 等)和云存儲平臺(如華為云、Google Drive 等),并提供鏈接供下載使用。雖然大部分數據集提供了描述信息,且部分綜述文章介紹了各類樣本集,但遙感領域仍沒有統一平臺,有效管理不同樣本集并提供快速索引方式。此外,大多數遙感任務使用單一數據集訓練模型,造成泛化性不佳等問題。以目標檢
23、測為例,不同樣本集均有“飛機”目標,模型若能利用不同成像質量、季節和區域的樣本訓練,則會強化泛化能力。因此,迫切需要搭建開放平臺,存儲和管理多類型、多尺度、多級別的遙感影像樣本庫。綜上所述,當前遙感影像樣本存在分類體系不統一、樣本數量不足、時空分布不均、標注效率不高等問題,不能滿足多類型、多級別、多尺度的智能解譯與監測需求,且公開樣本集缺乏有效動態擴充機制和管理方式,不利于樣本集綜合利用和動態維護。因此,需建立統一的遙感影像樣本分類體系,研發支持眾包協同的樣本標注工具,建立完善的版權保護體系,形成分類統一、類型完備、具有自適應擴展能力的遙感影像樣本庫,為遙感影像解譯與監測提供數據基礎。1.3.
24、2 深度學習框架與模型 自 2012 年 ImageNet 挑戰賽以來,面向普通圖像處理的深度神經網絡框架和模型獲得迅猛發展。在遙感領域,影像處理模型主要由普通影像預訓練模型 遷移獲得,并未從框架與模型集成遙感影像解譯與動態監測所需特性。目前開源深度學習框架種類繁多,項目組前期調研的國內外開源深度學習框架如圖 1-1。國內中科院計算所推出了人臉識別深度學習框架 Dragon,清華大學發布了計圖(Jittor),華為、曠世、一流科技等互聯網企業相繼開源了MindSpore、MegEngine 以及 OneFlow 等框架。在國外,早期蒙特利爾理工學院開源了 Theano、伯克利大學研發了 Caf
25、fe,日本首選網絡研發了當時領先的 Chainer 框架,Google、Facebook、Amazon 等先后開源了 Tensorflow、PyTorch、MxNet 等框架。雖然通用深度學習框架數目眾多,但構建框架的核心技術正呈收斂態勢。主要包括:控制流與數據流、以及操作符與張量;計算圖優化與自動梯度計算;執行引擎、編程接口、部署運維及分布式訓練等。圖 1-1 國內外主要開源深度學習框架對比 在控制流與數據流方面,神經網絡數據依賴關系表示為有向無環圖,該圖設計了表達式的求值先后關系,可并行執行。函數式編程能挖掘表達式間的數據依賴關系。隨著并發處理需求增多,函數式編程的深度學習框架正占據主流。
26、以 Tensorflow、PyTorch、MXNet 為代表的框架開始側重計算圖的函數 式求解方式,對完整模型一次性求解。在操作符與張量表達方面,傳統深度學習框架,例如 Caffe 使用層(Layer)這種粗粒度結構的雙向執行邏輯,在前向傳播時,程序執行從零開始的遞增循環;在反向傳播時,程序逆向做遞減循環。Tensorflow 將有向無環圖的兩個基本元素:操作符和張量分開表示。這種細粒度表示更加符合有向圖計算思想,開發的靈活性更強。由于細粒度代碼對編譯器要求較高,多數框架也支持較粗粒度的操作符,例如卷積、池化、矩陣乘操作符等。因此,粗細結合的靈活算子是深度學習框架的發展趨勢。此外,對張量計算的
27、支持,也可通過 C+模板元編程提高效率。例如 TensorFlow 等框架使用 Eigen 庫,MXNet 采用自研的 Mshadow 庫。在計算圖優化方面,定義網絡結構的有向無環圖后,深度學習框架利用編譯器技術對圖優化重寫。計算圖優化包括編譯器優化、無用代碼與公共子表達式消除、操作符融合、類型/形狀推導及內存優化等。這些優化方法在Tensorflow、Pytorch、MXNet 等框架均有體現。在自動梯度計算方面,深度學習框架有兩種構建方式,一種是靜態圖,例如 Caffe 和 Tensorflow,另一種是 Chainer 和 Pytorch 框架推出的動態圖。靜態圖計算效率高、易優化,但靈
28、活性、易用性不如動態圖。無論基于靜態圖還是動態圖的框架,自動逆拓撲序推導鏈式法則的反向傳播計算圖已成標配。用戶只需描述前向傳播,反向傳播由框架推導完成。在執行引擎、編程接口、分布式訓練與遷移部署方面,Tensorflow/Pytorch 等通過協調 CPU 和 GPU 設備提高計算效率與資源利用率??蚣艿讓踊?C+開發,同時提供 Python 等前端接口。從開發到部署遵從“離線訓練、在線識別”原則。模型訓練依賴分布式平臺,例如 Hadoop 或 Spark 支撐,使用數據并行的策略擴大處理任務和規模。然而設備數量不斷增加,會導致通信開銷增長,出現模型效率損失等缺陷。因此,將計算矩陣分塊的模型
29、并行策略,及 GPU 接力訓練的流水線并行策略受到了重視。目前,主流開源框架都能支持數據并行,但模型并行和流水線并行仍較困難。此外,在框架部署與運維方面,普遍使用 Docker 和 Kubernetess 結合,Tensorflow 也推出托管工具 Serving,便于線上部署與運維。同時,隨著開放神經網絡交換標準(ONNX)的推出,多框架切換也得以滿足,Tensorflow、PyTorch 等框架都支持 ONNX 標準。在基礎模型設計方面,蒙特利爾大學率先在 GPU 上實現 AlexNet,并在ImageNet 取得超過第二名 10%的精度;牛津大學設計了 VGG-Net 使 top5錯誤率
30、降至 7.5%;谷歌推出的 GoogleNet,使識別精度大幅度提升;何愷明等人提出 ResNet,使 top5 錯誤率降低至 4.5%;康奈爾大學、清華大學與Facebook FAIR 實驗推出 DenseNet,使相同精度下計算量大幅降低;中國科學技術大學與 MSRA 開源了 HRNet,刷新了 MS-COCO 數據集三項紀錄。在模型結構自動搜索(NAS)方面,數據驅動的搜索主要包含基于強化學習、演化計算與基于梯度的方法?;趶娀瘜W習方法通過代理模型指導網絡搜索方向,常用代理模型有循環神經網絡與近端策略優化等?;谘莼嬎惴椒▽⒛P腕w系結構編碼為字符序列,根據驗證集的性能評估,執行交叉和變
31、異操作,生成新的高性能結構。其中網絡架構參數與模型參數分別基于演化與隨機梯度下降方法迭代更新?;趶娀瘜W習和演化計算方法法具有出色性能,但對計算的要求很高?;谔荻鹊姆椒茱@著提升效率,利用概率平滑使搜索空間可微,因而能夠端對端優化。這些模型及搜索方法是針對小尺寸影像訓練或搜索 的模型,未顧及大幅遙感影像“像素-目標-場景”多層級要素提取、變化發現等任務的特性。通過對比國內外開源深度學習框架和模型可以發現,為平衡計算性能和靈活性需求,主流深度學習框架都有其優缺點。然而,主流開源深度學習框架與模型主要針對的是普通影像,即普通的小像幅室內/外影像;現有遙感智能解譯與監測系統大多由通用圖像識別的深度
32、神經網絡改造,一般只考慮了影像二維空間的可見光圖像特征,顧及遙感光譜特性、地學先驗知識、數據與框架協同等重要因素,支持遙感地學特性的框架仍是空白。1.3.3 顧及遙感數據及任務特性的深度神經網絡優化理論與方法 1.3.3.1 顧及遙感數據及遙感任務的高效網絡結構自搜索優化理論 網絡結構搜索方法最先在計算機視覺領域被提出。其流程為:定義搜索空間,通過搜索策略找出候選網絡結構,對網絡結構進行評估,根據反饋進行下一輪搜索。Baker 等人和 Zoph 等人于 2016 年分別提出基于強化學習的網絡結構搜索方法,開拓了網絡搜索方法的先河。該類方法在圖像分類任務上基本可以擊敗同量級的網絡,但需要花費大量
33、的 GPU 計算資源和訓練時間。此后,Real 等人引入進化算法解決網絡結構搜索問題。相較于強化學習算法,進化算法搜索得更快,且能得到更小的模型。2018 年,Liu 等人提出了基于梯度的方法,將網絡候選操作使用softmax函數進行混合,把搜索空間變成連續空間、目標函數成為可微函數,從而可以使用基于梯度的優化方法找尋最優結構,大大減少了計算資源消耗。此后,在加速手段方面,有層次化表示、權重共享、變現預測等。網絡結構搜索在語義分割、模型壓縮、數據增強等任務上都有應用。然而,現有的網絡結 構搜索方法往往僅針對某一種任務類型,無法滿足遙感目標識別的多任務需求。在遙感領域,網絡結構搜索方法的研究尚處
34、于起步階段。國內學者們目前剛開始探索該方法,尚未應用到遙感領域;國外有少量網絡結構搜索方法在遙感領域的研究。具體地,Bahri 等人、Wei 等人在遙感影像場景分類問題上嘗試了網絡結構搜索方法;Dong 等人使用網絡結構搜索解決極化合成孔徑雷達影像分類問題;Zhang 等人將網絡結構搜索應用于遙感影像語義分割。特別地,Wang 等人提出了一種任務驅動的網絡結構搜索框架,支持自適應地處理場景分類加地物分類兩種任務,該方法在面向多種任務的方向上做出了一定嘗試,但其任務種類仍不足以滿足遙感目標識別任務的多樣性需求。亟需研究滿足目標檢索與場景分類、目標檢測、地物要素分類、變化檢測、多視三維重建等多種遙
35、感解譯與監測的網絡結構搜索方法。1.3.3.2 地學知識嵌入的遙感深度學習優化理論與方法 深度學習方法通過降低輸出結果與標簽的損失來優化網絡參數。相比之下,人腦作為面向知識的高級智能系統,可以通過知識推理做出可靠性高、可解釋性強的決策。因此,亟需研究地學先驗知識的表達及嵌入,主要包括以下三個方面:(1)地學本體建模與地學知識圖譜創建 作為對特定領域中概念及其相互關系的形式化表達,本體(Ontology)具有強大的表示、推理和共享知識的能力,因而被引入到地學領域以構建地學本體模型。知識圖譜則由本體實例化而來,是由圖數據結構表示的知識載體,描述了客觀世界的事物與關系。知識圖譜最早被用于介紹語義網搜
36、索技術,隨后出現了 DBpedia,YAGO 等大型通用知識圖譜。知識圖譜的創建分為自頂向下和自底向上的方法,具備圖結構組織、抽象的概念與關系、實體間的關系連接等特征。目前地學領域尚無大規??捎玫闹R圖譜,亟需開展面向遙感智能解譯和知識服務的地學本體建模和地學知識圖譜創建工作。(2)基于地學知識圖譜表示學習的遙感影像場景分類 基于地學知識圖譜表示學習的遙感影像場景分類可將遙感影像包含的豐富語義信息融入學習過程,進而提高分類準確率。受語義空間中詞向量的平移不變性特征的啟發,Bordes 等人提出了 TransE 模型,TransE 模型訓練參數少,易于計算而且能有效地對知識圖譜包含的實體和關系進
37、行表示,但缺乏對復雜關系的處理能力。在表示學習方法方面,Fan 等人提出了 DKRL 模型在利用實體的描述信息上進行了嘗試。目前,針對地學領域知識圖譜進行表示學習的探索仍處于萌芽期,亟需研究適用于地學領域的知識圖譜構建和表示學習方法。(3)耦合地學知識圖譜和深度語義分割網絡的遙感影像語義分割 地學知識圖譜基于知識建模、推理和共享,能夠建立模擬人類感知過程的知識模型來實現遙感影像的智能解譯。以地理對象圖像分析方法(GEOBIA)為代表,基于地學知識圖譜的遙感影像解譯方法相繼出現。上述方法與深度學習方法相比,分類精度較差。Alirezaie 等人提出了一種地學知識圖譜推理協助深度語義分割網絡的方法
38、,增強可解釋性的同時提高了分類精度。綜上所述,結合知識驅動和數據驅動的優勢,構建耦合地學知識圖譜與深度學習的方法是實現遙感影像解譯的必由之路。1.3.4 遙感影像處理云平臺 面向遙感大數據的云計算技術平臺方面,誕生了美國谷歌地球引擎 GEE(Google Earth Engine)、美國航空航天局的 NEX(NASA Earth Exchange)、笛卡爾實驗室的 Geoprocessing Platform、澳大利亞的地球科學數據立方體(Geoscience Data Cube)、微軟的行星計算機(Planetary Computer),以及中國科學院“地球大數據科學工程”(CASEarth
39、)的“地球大數據挖掘分析系統(EarthDataMiner)云服務”、航天宏圖所開發 PIE-Engine、武漢大學與華為昇騰 AI 聯合研發的 LuoJiaNET 等(如圖 1.3)。圖 1.3 遙感云計算平臺 遺憾的是,雖然現有遙感云計算平臺已取得了較大進展,但在實際進行智能化分析和信息挖掘時,由于大規模遙感影像樣本庫的缺乏、深度學習智能處理框架相對滯后,未形成從底層硬件到樣本框架、再到面向智能測圖任務的上層應用模型的全鏈條自主可控生態。截止目前,現有平臺仍存在以下局限:(1)底層 AI 硬件主要依賴國外進口?,F有通用人工智能硬件,主要依賴于美國英偉達(NVIDIA)公司生產的圖形處理單元
40、(GPU)。俄烏沖突期間,英偉達公司聯合 AMD、Intel 公司對俄羅斯全面禁售 GPU 產品。此外,深度學習所依賴智能計算加速庫 cudnn,不對外開源,卷積 conv 等算子也有顯存容量限制,直接制約了大幅面遙感影像智能處理。武漢大學與華為技術有限公司聯合研發了 遙感處理框架 LuoJiaNET,從底層硬件解決了上述問題,但在全鏈條的可控性方面,仍有待進一步增強。(2)遙感影像樣本庫仍需增強可控性。2019 年底,美國宇航局(NASA)和蓋茨基金會等聯合資助的 Radiant Earth Foundation 推出 Radiant ML Hub平臺,方便研究人員訪問其發布的地球觀測訓練數
41、據集。2020 年歐空局(ESA)立項了 AIREO 項目,旨在制定社區規范和最佳實踐,以可發現、可訪問、互操作、可重用的方式共享對地觀測訓練數據集。與 NASA、ESA 相比,我國現有遙感影像樣本庫分類不完備、傳感器種類單一、時空分布零散、規模和擴展性有限,造成深度學習模型泛化能力不足,無法支撐大時空跨度海量遙感影像精準解譯。(3)遙感深度學習框架不能自主可控?,F有遙感深度學習處理主要依賴于國外的框架,例如 PyTorch、Tensorflow 等。一般只考慮了通用的圖像處理模式,不能完全適應于多類型、多尺度、多級別的遙感影像測圖處理任務。此外,PyTorch 框架轉向支持自研 AI ASI
42、C 硬件;Tensorflow 轉向 JAX 框架,底層支持谷歌 TPU 硬件,致使深度學習框架可控性差,且無法滿足遙感測圖任務。(4)遙感解譯缺乏自主知識產權模型?,F有遙感云平臺在執行解譯任務時,所使用的模型通常由計算機視覺模型改造而來,例如DeepLab等地物分類模型。缺乏直接面向遙感測圖任務、具備融合“場景-目標-像素”多層級的解譯方法,不能直接輸出地理信息系統制圖綜合所需的地物矢量要素。此外,在地物矢量入庫方面,缺乏有效的地物要素識別、自動制圖綜合與人機協同提取機制,致使作業效率低下。2.LuoJiaSET 樣本庫平臺 2.1 樣本共享服務平臺基礎功能 2.1.1 用戶注冊登錄(1)平
43、臺新用戶注冊 測試方案:在已遷移的 LuoJiaSET 平臺用戶注冊界面,進行用戶注冊。測試結果:可成功注冊登錄,并在數據庫中添加對應的用戶字段。注冊用戶:lliv (2)平臺原有用戶登錄 測試方案:在原有 LuojiaSET 平臺注冊的用戶,在遷移后的平臺登陸,查看是否通過用戶數據庫驗證。測試結果:經過測試,在原有 LuojiaSet 平臺注冊的用戶可以通過數據庫驗證,并成功登錄。測試用戶:admin、demo 2.1.2 數據集顯示(1)數據集總量:83 項 (2)各任務類型數據集數量:場景分類:34 項 地物分類:13 項 目標識別:26 項 變化檢測:8 項 多視三維:2 項 2.1.
44、3 數據集詳情查詢 測試方案:在數據集詳情界面,查看各數據集的元數據是否正確顯示,并查詢各數據集各類別統計信息是否正確顯示。元數據信息包括:1)數據集文件大小 2)數據集中包含樣本數量 3)數據集影像文件尺寸 4)數據集影像文件影像類型 5)數據集影像分辨率 6)數據集影像波段數 7)數據集影像文件類型格式 8)數據集獲取傳感器 9)數據集聯系人姓名 10)數據集聯系人聯系方式 11)數據集聯系人地址 12)數據集聯系人所屬工作單位 測試結果:可順利對現有全部的數據集元數據信息訪問:DOTA:AID:2.2 樣本共享服務平臺查詢下載流程 2.2.1 數據集包含類別查詢 在查詢服務界面,選擇某一
45、任務類型,并在數據集名稱查詢欄中,篩選某一個數據,查看類別下拉框中出現的類別名稱是否與元數據表中的類別信息一致。以目標識別中的 DOTA(version=1.5)為例。數據集共包含類別 16個,包括 Container_Crane,Harbor,Bridge,Plane,Helicopter,Storage_Tank,Swimming_Pool,Tennis_Court,Basketball_Court,Roundabout,Ground_Track_Field,Large_Vehicle,Baseball_Diamond,Small_Vehicle,Soccerball_Field,Ship
46、 等類別。其中可獲取各個類別的詳細數量:類別名稱 類別英文名稱 數量 集裝箱起重機 Container_Crane 156 港口 Harbor 8118 橋 Bridge 2541 飛機 Plane 10622 直升機 Helicopter 713 儲存罐 Storage_Tank 8286 游泳池 Swimming_Pool 2757 網球場 Tennis_Court 3188 籃球場 Basketball_Court 672 環形交叉路口 Roundabout 622 田徑場 Ground_Track_Field 476 大型車輛 Large_Vehicle 27357 棒球場 Baseb
47、all_Diamond 625 小型車輛 Small_Vehicle 169838 足球場 Soccerball_Field 487 小船 Ship 43738 2.2.2 樣本元數據信息查詢 在樣本查詢結果界面,點擊某一條返回結果,查看樣本詳情彈出框中是否包含樣本縮略圖,以及樣本 ID、類別、傳感器、數據集、樣本尺寸、分辨率、版本、空間范圍等字段的元數據信息是否正確顯示。如圖所示:2.2.3 訂單提交 以非游客身份登錄共享服務平臺,完成查詢測試后,在樣本查詢結果界面,點擊結果前的勾選框,選擇一組樣本后,點擊提交查詢,查看是否彈出使用協議對話框,且對話框中是否正確包含勾選的樣本所在數據集信息及
48、引用信息;完成上述操作后,點擊訂單列表菜單欄,查看是否生成了對應的樣本下載訂單。在遷移后的平臺通過選擇樣本屬性條件篩選,查詢對應的樣本集合:提交樣本訂單,管理員查詢并通過訂單審核。通過樣本查詢,可順利提交訂單,并在個人訂單列表中顯示訂單詳情信息。個人訂單查看頁面;2.2.4 管理員訂單審核 管理員登陸訂單審核界面,通過點擊審核按鈕,通過訂單審核,后臺下載訂單中的樣本,并壓縮上傳至 OBS 服務器,并發送郵件為用戶提供數據信息。如圖所示:2.2.5 訂單文件下載 測試用戶登錄個人訂單查看頁面,點擊下載按鈕,可完成樣本數據下載。結 果如下圖:2.3 樣本數據庫 2.3.1 數據集數量查詢 統計 O
49、BS 中各個任務類型的數據集數量,并與數據庫中記錄的數據集數量信息統計比較:現遷移后的平臺共包含數據集 83 個,其中:任務類型 OBS 數據集數量 數據庫數據集數量 場景識別 34 34 目標識別 26 26 變化檢測 8 8 地物分類 13 13 多視三維 2 2 2.3.2 樣本數量查詢 在遷移后的平臺樣本查詢界面對各個任務類型和各個類別的樣本數量進行查詢,核對查詢結果是否與原有數據相對應。結果如下表:任務類型 樣本影像數量 場景分類 2184116 目標檢測 232721 地物分類 1915179 變化檢測 41479 多視三維 16614 3.LuoJiaNET 框架 3.1 安裝部
50、署 (1)多源遙感影像 I/O 庫編譯 執行命令:bash build_gdal.sh 編譯獲得如下 GDAL 文件:在 GDAL_Linux/bin 或 GDAL_Win/bin 執行命令./gdalinfo-formats,即可查詢多源I/O所 支 持 的 格 式。經 測 試,所 有 第 三 方 庫(參 見:https:/ 等主要遙感影像類型的 I/O 操作(見 2.3.1 節調用情況,python 端測試用例在https:/ 多平臺編譯流程 CPU 下編譯 安裝 MinGW,執行命令:build.bat,編譯過程如下圖:驗證是否成功:python-c import luojianet_m
51、s;luojianet_ms.run_check()輸出如下,則說明安裝成功:GPU 下編譯 執行命令:bash build.sh-e gpu-j 6,編譯過程如下圖:驗證是否成功:python-c import luojianet_ms;luojianet_ms.run_check()輸出如下,說明安裝成功:NPU 下編譯 執行命令:bash build_npu.sh e ascend j 6,編譯過程如下圖:驗證是否成功:import numpy as np from luojianet_ms import Tensor import luojianet_ms.ops as ops imp
52、ort luojianet_ms.context as context context.set_context(device_target=Ascend)x=Tensor(np.ones(1,3,3,4).astype(np.float32)y=Tensor(np.ones(1,3,3,4).astype(np.float32)print(ops.add(x,y)輸出如下,說明安裝成功:(3)前端平臺部署測試 模型構建 以 ResNet 模型為例進行測試,使用可視化建模拖拽式建模,建模圖像圖下圖:模型構建之后使用 LuojiaNet 后端將模型 Json 數據轉換為 python 文件,轉換后
53、模型代碼如下:代碼成功生成,模型構建流程成功。模型訓練 在 LuojiaNet 前端云平臺上上傳填寫表單并上傳 Resnet-18 模型文件,表單填寫如下所示:模型文件上傳如下所示:流程完畢后,用戶已成功將模型代碼上傳至數據庫之中,可在訓練訂單界面進行訓練訂單創建任務,新建訓練訂單界面如下圖所示,使用 Resnet-18 模型對 AID 數據庫創建場景檢索任務:點擊確定后,后臺數據庫中獲得訂單信息,等待管理員進行審核:管理員通過審核后,顯示“訓練進行中”,則說明訓練已在后臺正常進行,此時前端頁面如下圖所示:后端 ModelArts 控制臺任務顯示如下圖所示:訓練完畢后可在前端進行訓練結果的 c
54、kpt 等文件下載以及訓練日志下載,具體如下圖所示:結果下載:日志下載:成功進行結果及日志下載后,說明模型訓練成功。訓練完成之后,用戶可以根據此訓練訂單在推理界面新建推理任務。模型推理 選擇第二步訓練好的模型進行推理,模型訓練后 CKPT 文件選擇界面如下圖所示:選擇完成后自動生成推理任務表單,表單項如下圖所示:推理任務初始信息完成后,用戶可上傳需要進行推理的數據,數據上傳頁面如下圖所示:如圖,上傳 input.png 作為測試圖像,點擊確定后任務推送至華為 ModelArts 進行推理任務,此時 ModelArts 控制臺任務信息顯示如下:推理完成后可在前端下載,Resnet-18 執行場景
55、檢索后所得結果為 json 格式,數據信息如下圖所示:獲取 json 后,說明模型推理成功,至此,整個構建-訓練-推理流程測試完畢。3.2 大幅面處理特性與功能 3.2.1 遙感大幅面影像四叉樹索引功能(1)模塊的導入與使用 LuoJiaNET 安裝測試成功后,即可在 python 訓練腳本中直接導入遙感大幅面四叉樹索引功能模塊,其使用方式如下:from luojianet_ms.geobject import get_objects#Get the minimum bounding rectangle data of one-specified class.#paramin device_n
56、um,the number of device for training(max=8).#paramin device_id,the current device ID.#paramin image_path,big_input image path.#paramin label_path,big_input label path.#paramin n_classes,num classes of labels.#paramin ignore_label,pad value of ground features.#paramin seg_threshold,segmentation setti
57、ngs.#paramin block_size,basic processing unit for big_input data.#paramin max_searchsize,max output data size(max_searchsize x max_searchsize).#return out,image-label objects in Numpy dtype.data_objects=get_objects(args.device_number,args.device_id,image_path,label_path,args.num_classes,args.ignore_
58、label,150,4096,800)image_objects,label_objects=data_objects0,data_objects1 image_objects 和 label_objects 得到的大幅影像目標對象數據展示如下:在得到當前大幅影像的所有目標對象數據之后,即可進行網絡模型的數據加載和訓練。(2)測試結果 隨機抽取 GID 數據集的 120 張作為訓練集,剩下 30 張作為測試集,在打亂順序的情況下對整幅影像進行讀取和訓練,目標地物對象的尺寸大小統一為 800 x 800,使用DeepLabV3+模型訓練 300 個 epoch,采用總體精度(OA)、平均交并比(
59、MIoU)這兩個指標進行評價,其測試結果的定量評估如下:從結果看,與傳統的切分方法相比,在模型訓練中引入的遙感大幅面四叉樹索引功能模塊,能夠將地物分類結果提高 2-3%,極大消除了地物分類任務中的“分塊效應”。3.2.2 遙感大幅面影像專用 IR 功能(1)TVM 編譯鏈接 TVM 源碼基于 TVM0.8 Release 版,可以采用兩種方式進行編譯 1)直接下載倉庫內的 tvm 代碼并編譯。所有需要對源碼修改的位置已經修改完畢,編譯過程可參考 TVM 官網。2)基于自己的 TVM 版本進行修改。具體修改位置如下:python 部分,基礎路徑為 tvm/python/tvm:-relay/op
60、/nn/nn.py-relay/op/nn/_nn.py-relay/op/strategy/cuda.py-relay/op/strategy/generic.py-topi/cuda/conv2d.py-contrib/cudnn.py-relay/op/_tensor_grad.py c+部分,基礎路徑為 tvm/src:-relay/op/nn/convolution.cc-relay/op/nn/convolution.h-runtime/contrib/cudnn/conv_backward.cc-runtime/contrib/cudnn/cudnn_utils.h (2)推理和
61、訓練 FCN32s 1)對數據集 label 進行預處理,將 RGB 圖像轉成單通道圖像 命令行輸入 python label.py,需要修改數據集目錄 2)根據 GPU 顯存修改算子分解的塊數 N,保證能夠正常計算 3)訓練 python tvm_train_fcn_gid.py 1 log.txt 2&!將輸出寫入文件方便記錄 4)根據訓練好的模型在測試集上進行推理 python tvm_infer_fcn_gid.py (2)測試結果 隨機抽取 120 張作為訓練集,剩下 30 張作為測試集,在打亂順序的情況下分別采用算子分解方法對整圖進行訓練,裁剪成 10001000 大小后再進行訓練
62、,以及使用最近濾波器降采樣到 680720 大小后再進行訓練,各訓練 100 個 epoch。采用像素精度(PA)、平均像素精度(MPA)、平均交并比(MIoU)、加權平均交并比(FWIoU),測試結果的定量評估如下:3.2.3 遙感大幅面影像算子分解功能 (1)FCN8s 算子分解調用方式如下:(a)網絡結構定義 import luojianet_ms.nn as nn from luojianet_ms.ops import operations as P class FCN8s(nn.Module):def _init_(self,n_class):super()._init_()sel
63、f.n_class=n_class self.conv1=nn.SequentialCell(nn.Conv2d(in_channels=3,out_channels=64,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(64),nn.ReLU(),nn.Conv2d(in_channels=64,out_channels=64,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(64),nn.ReLU()self.pool1=nn.MaxPool2d(kernel_
64、size=2,stride=2)self.conv2=nn.SequentialCell(nn.Conv2d(in_channels=64,out_channels=128,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(128),nn.ReLU(),nn.Conv2d(in_channels=128,out_channels=128,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(128),nn.ReLU()self.pool2=nn.MaxPool2d(ker
65、nel_size=2,stride=2)self.conv3=nn.SequentialCell(nn.Conv2d(in_channels=128,out_channels=256,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(256),nn.ReLU(),nn.Conv2d(in_channels=256,out_channels=256,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(256),nn.ReLU(),nn.Conv2d(in_channels
66、=256,out_channels=256,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(256),nn.ReLU()self.pool3=nn.MaxPool2d(kernel_size=2,stride=2)self.conv4=nn.SequentialCell(nn.Conv2d(in_channels=256,out_channels=512,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(512),nn.ReLU(),nn.Conv2d(in_cha
67、nnels=512,out_channels=512,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(512),nn.ReLU(),nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(512),nn.ReLU()self.pool4=nn.MaxPool2d(kernel_size=2,stride=2)self.conv5=nn.SequentialCell(nn.Conv2d(i
68、n_channels=512,out_channels=512,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(512),nn.ReLU(),nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,weight_init=xavier_uniform),nn.BatchNorm2d(512),nn.ReLU(),nn.Conv2d(in_channels=512,out_channels=512,kernel_size=3,weight_init=xavier_unifo
69、rm),nn.BatchNorm2d(512),nn.ReLU()self.pool5=nn.MaxPool2d(kernel_size=2,stride=2)self.conv6=nn.SequentialCell(nn.Conv2d(in_channels=512,out_channels=4096,kernel_size=7,weight_init=xavier_uniform),nn.BatchNorm2d(4096),nn.ReLU(),)self.conv7=nn.SequentialCell(nn.Conv2d(in_channels=4096,out_channels=4096
70、,kernel_size=1,weight_init=xavier_uniform),nn.BatchNorm2d(4096),nn.ReLU(),)self.score_fr=nn.Conv2d(in_channels=4096,out_channels=self.n_class,kernel_size=1,weight_init=xavier_uniform)self.upscore2=nn.Conv2dTranspose(in_channels=self.n_class,out_channels=self.n_class,kernel_size=4,stride=2,weight_ini
71、t=xavier_uniform)self.score_pool4=nn.Conv2d(in_channels=512,out_channels=self.n_class,kernel_size=1,weight_init=xavier_uniform)self.upscore_pool4=nn.Conv2dTranspose(in_channels=self.n_class,out_channels=self.n_class,kernel_size=4,stride=2,weight_init=xavier_uniform)self.score_pool3=nn.Conv2d(in_chan
72、nels=256,out_channels=self.n_class,kernel_size=1,weight_init=xavier_uniform)self.upscore8=nn.Conv2dTranspose(in_channels=self.n_class,out_channels=self.n_class,kernel_size=16,stride=8,weight_init=xavier_uniform)self.upscore_pool3=nn.Conv2dTranspose(in_channels=self.n_class,out_channels=self.n_class,
73、kernel_size=4,stride=2,weight_init=xavier_uniform)self.score_pool2=nn.Conv2d(in_channels=128,out_channels=self.n_class,kernel_size=1,weight_init=xavier_uniform)self.upscore4=nn.Conv2dTranspose(in_channels=self.n_class,out_channels=self.n_class,kernel_size=8,stride=4,weight_init=xavier_uniform)self.s
74、hape=P.Shape()self.cast=P.Cast()self.add1=P.Add()self.add2=P.Add()self.add3=P.Add()def set_model_parallel_shard_strategy(self,device_num):self.conv2d_strategy=(1,1,1,device_num),(1,1,1,1)self.bn_strategy=(1,1,1,device_num),(1,),(1,),(1,),(1,)self.relu_strategy=(1,1,1,device_num),)self.maxpool_strate
75、gy=(1,1,1,device_num),)self.add_strategy=(1,1,1,device_num),(1,1,1,device_num)self.conv1.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv1.cell_list1.bn_train.shard(self.bn_strategy)self.conv1.cell_list1.bn_infer.shard(self.bn_strategy)self.conv1.cell_list2.relu.shard(self.relu_strategy)self.c
76、onv1.cell_list3.conv2d.shard(self.conv2d_strategy)self.conv1.cell_list4.bn_train.shard(self.bn_strategy)self.conv1.cell_list4.bn_infer.shard(self.bn_strategy)self.conv1.cell_list5.relu.shard(self.relu_strategy)self.pool1.max_pool.shard(self.maxpool_strategy)self.conv2.cell_list0.conv2d.shard(self.co
77、nv2d_strategy)self.conv2.cell_list1.bn_train.shard(self.bn_strategy)self.conv2.cell_list1.bn_infer.shard(self.bn_strategy)self.conv2.cell_list2.relu.shard(self.relu_strategy)self.conv2.cell_list3.conv2d.shard(self.conv2d_strategy)self.conv2.cell_list4.bn_train.shard(self.bn_strategy)self.conv2.cell_
78、list4.bn_infer.shard(self.bn_strategy)self.conv2.cell_list5.relu.shard(self.relu_strategy)self.pool2.max_pool.shard(self.maxpool_strategy)self.conv3.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv3.cell_list1.bn_train.shard(self.bn_strategy)self.conv3.cell_list1.bn_infer.shard(self.bn_strateg
79、y)self.conv3.cell_list2.relu.shard(self.relu_strategy)self.conv3.cell_list3.conv2d.shard(self.conv2d_strategy)self.conv3.cell_list4.bn_train.shard(self.bn_strategy)self.conv3.cell_list4.bn_infer.shard(self.bn_strategy)self.conv3.cell_list5.relu.shard(self.relu_strategy)self.conv3.cell_list6.conv2d.s
80、hard(self.conv2d_strategy)self.conv3.cell_list7.bn_train.shard(self.bn_strategy)self.conv3.cell_list7.bn_infer.shard(self.bn_strategy)self.conv3.cell_list8.relu.shard(self.relu_strategy)self.pool3.max_pool.shard(self.maxpool_strategy)self.conv4.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv4
81、.cell_list1.bn_train.shard(self.bn_strategy)self.conv4.cell_list1.bn_infer.shard(self.bn_strategy)self.conv4.cell_list2.relu.shard(self.relu_strategy)self.conv4.cell_list3.conv2d.shard(self.conv2d_strategy)self.conv4.cell_list4.bn_train.shard(self.bn_strategy)self.conv4.cell_list4.bn_infer.shard(sel
82、f.bn_strategy)self.conv4.cell_list5.relu.shard(self.relu_strategy)self.conv4.cell_list6.conv2d.shard(self.conv2d_strategy)self.conv4.cell_list7.bn_train.shard(self.bn_strategy)self.conv4.cell_list7.bn_infer.shard(self.bn_strategy)self.conv4.cell_list8.relu.shard(self.relu_strategy)self.pool4.max_poo
83、l.shard(self.maxpool_strategy)self.conv5.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv5.cell_list1.bn_train.shard(self.bn_strategy)self.conv5.cell_list1.bn_infer.shard(self.bn_strategy)self.conv5.cell_list2.relu.shard(self.relu_strategy)self.conv5.cell_list3.conv2d.shard(self.conv2d_strateg
84、y)self.conv5.cell_list4.bn_train.shard(self.bn_strategy)self.conv5.cell_list4.bn_infer.shard(self.bn_strategy)self.conv5.cell_list5.relu.shard(self.relu_strategy)self.conv5.cell_list6.conv2d.shard(self.conv2d_strategy)self.conv5.cell_list7.bn_train.shard(self.bn_strategy)self.conv5.cell_list7.bn_inf
85、er.shard(self.bn_strategy)self.conv5.cell_list8.relu.shard(self.relu_strategy)self.pool5.max_pool.shard(1,1,1,device_num),)self.conv6.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv6.cell_list1.bn_train.shard(self.bn_strategy)self.conv6.cell_list1.bn_infer.shard(self.bn_strategy)self.conv6.ce
86、ll_list2.relu.shard(self.relu_strategy)self.conv7.cell_list0.conv2d.shard(self.conv2d_strategy)self.conv7.cell_list1.bn_train.shard(self.bn_strategy)self.conv7.cell_list1.bn_infer.shard(self.bn_strategy)self.conv7.cell_list2.relu.shard(self.relu_strategy)self.score_fr.conv2d.shard(self.conv2d_strate
87、gy)self.upscore2.conv2d_transpose.shard(self.conv2d_strategy)self.score_pool4.conv2d.shard(self.conv2d_strategy)self.upscore_pool4.conv2d_transpose.shard(self.conv2d_strategy)self.score_pool3.conv2d.shard(self.conv2d_strategy)self.upscore8.conv2d_transpose.shard(self.conv2d_strategy)self.add1.shard(
88、self.add_strategy)self.add2.shard(self.add_strategy)self.add3.shard(self.add_strategy)self.upscore_pool3.conv2d_transpose.shard(self.conv2d_strategy)self.score_pool2.conv2d.shard(self.conv2d_strategy)self.upscore4.conv2d_transpose.shard(self.conv2d_strategy)def call(self,x):x1=self.conv1(x)p1=self.p
89、ool1(x1)x2=self.conv2(p1)p2=self.pool2(x2)x3=self.conv3(p2)p3=self.pool3(x3)x4=self.conv4(p3)p4=self.pool4(x4)x5=self.conv5(p4)p5=self.pool5(x5)x6=self.conv6(p5)x7=self.conv7(x6)sf=self.score_fr(x7)u2=self.upscore2(sf)s4=self.score_pool4(p4)f4=self.add1(s4,u2)u4=self.upscore_pool4(f4)s3=self.score_p
90、ool3(p3)f3=self.add2(s3,u4)u3=self.upscore_pool3(f3)s2=self.score_pool2(p2)f2=self.add3(s2,u3)u2=self.upscore4(f2)return u2(b)數據加載并行切分:if split_size is not None:if isinstance(split_size,int):num_h,num_w=split_size,split_size elif isinstance(split_size,tuple or list):num_h,num_w=split_size column_img
91、=data column_lbl=label column_img_slice=column_img+str(x)for x in range(num_h*num_w)column_lbl_slice=column_lbl+str(x)for x in range(num_h*num_w)slice_patches_op=vision.SlicePatches(num_h,num_w)data_set=data_set.map(operations=slice_patches_op,input_columns=data,output_columns=column_img_slice,colum
92、n_order=column_img_slice+label+name,num_parallel_workers=8)data_set=data_set.map(operations=slice_patches_op,input_columns=label,output_columns=column_lbl_slice,column_order=column_img_slice+column_lbl_slice+name,num_parallel_workers=8)(2)FCN8s 多卡并行切分調用方式如下:parallel_mode=ParallelMode.SEMI_AUTO_PARAL
93、LEL dataset_strategy=(1,1,1,rank_size),(1,1,rank_size)context.reset_auto_parallel_context()context.set_auto_parallel_context(parallel_mode=parallel_mode,gradients_mean=True,dataset_strategy=dataset_strategy,device_num=device_num,enable_alltoall=True)if context.get_auto_parallel_context(parallel_mode
94、)in ParallelMode.SEMI_AUTO_PARALLEL,ParallelMode.AUTO_PARALLEL:net.set_model_parallel_shard_strategy(device_num)命令行中執行:mpirun n 8 python main_train.py,運行過程如下:(3)運行結果(a)實現細節 在數據預處理時,以 120 張 6 個類別的 GID 數據為訓練集,其余為驗證集,驗證模型精度。GPU 型號為 Navidia Tesla V100,單卡顯存 32Gb,8 卡并行處理。在進行訓練時,采用的損失函數為多類交叉熵 CE 損失,優化器選擇為
95、SGD。初始學習率統一固定為 1.28,batch size 設置為 1,訓練共 600 輪,每次均以原始像幅的 GID 數據作為輸入。此外在訓練中由于背景類是除上述 5 類地物的其他地物類別,因此背景類需要參與到網絡訓練過程,網絡最終輸出類別為 6,并參與最終的定量評價。(b)評價指標 在實驗中,采用的定量指標采用多個類別的平均交并比(mIoU)。(c)定量實驗結果 表 1 FCN8s 精度結果 框架 mIoU FCN8s(切分)59.80 FCN8s(大幅面)63.20 FCN8s 采用切分與原始大幅面處理方法,在 GID 分類數據集上的定量結果見表 1,從結果看出,采用大幅面算子等價分解
96、處理的方法,以原始像幅的影像作為輸入,其在驗證集上的平均交并比為 63.20%,與傳統切分策略相比,mIoU 提升約 4%,處理結果達到預期目標。下圖為相應的可視化結果,采用大幅面整幅載入方法可保持較好的空間上下文信息,“分塊效應”得以消除。(a)切分 (b)大幅面 (c)真值 大幅面影像算子分解測試結果 3.3 遙感先驗知識并行計算 3.3.1 遙感先驗知識提取 當前 LuoJiaNET 可支持 41 種遙感影像先驗知識提取的方法,包括植被指數、水體指數、建筑物紋理與顏色特征、SAR 影像指數等多源遙感影像先驗知識提取方法。列表如下:表 3.1 植被指數類 序號 名稱 公式 來源 備注 1
97、Normalized Difference Vegetation Index(NDVI)NDVI=(NIR-R)/(NIR+R)Deering D W.RANGELAND REFLECTANCE CHARACTERISTICS MEASURED BY AIRCRAFT AND SPACECRAFTSENSORSM.Texas A&M University,1978.輸入影像:RGB+NIR(四波段)2 Ratio Vegetation Index(RVI)RVI=NIR/R Jordan C F.Derivation of leafarea index from quality of ligh
98、t on the forest floorJ.Ecology,1969,50(4):輸入影像:RGB+NIR(四波段)663-666.3 Difference Vegetation Index(DVI)DVI=NIR-R Jordan C F.Derivation of leafarea index from quality of light on the forest floorJ.Ecology,1969,50(4):663-666.輸入影像:RGB+NIR(四波段)4 Enhanced Vegetation Index(EVI)EVI=2.5*(NIR R)/(NIR+6.0*R-7.5
99、*B+1)Liu H Q,Huete A.A feedback based modification of the NDVI to minimize canopy background and atmospheric noiseJ.IEEE transactions on geoscience and remote sensing,1995,33(2):457-465.輸入影像:RGB+NIR(四波段)5 Soil-adjusted Vegetation Index(SAVI)SAVI=(NIR R)/(NIR+R+L)*(1+L)L 0,1 Huete A R.A soil-adjusted
100、 vegetation index(SAVI)J.Remote sensing of environment,1988,25(3):295-309.輸入影像:RGB+NIR(四波段)6 Modified Soil Adjusted Vegetation Iindex(MSAVI)MSAVI=(2*NIR+1 sqrt(2*NIR+1)*2 Qi J,Chehbouni A,Huete A R,et al.A modified soil adjusted vegetation indexJ.Remote sensing of environment,1994,48(2):119-126.輸入影像
101、:RGB+NIR(四波段)8*(NIR R)/2 7 Transformed Vegetation Iindex(TVI)TVI=sqrt(NIR-R)/(NIR+R)+0.5 Deering D W.Measuring forage production of grazing units from Landsat MSS dataC/Proceedings of the Tenth International Symposium of Remote Sensing of the Envrionment.1975:1169-1198.輸入影像:RGB+NIR(四波段)8 Wide Dynami
102、c Range Vegetation Index(WDRVI)WDRVI=(*NIR R)/(*NIR+R)0.1,0.2 Gitelson A A.Wide dynamic range vegetation index for remote quantification of biophysical characteristics of vegetationJ.Journal of plant physiology,2004,161(2):165-173.輸入影像:RGB+NIR(四波段)9 Renormalized Difference Vegetation Index(RDVI)RDVI
103、=(NIR R)/sqrt(NIR+R)Roujean J L,Breon F M.Estimating PAR absorbed by vegetation from bidirectional reflectance measurementsJ.Remote sensing of Environment,1995,51(3):375-384.輸入影像:RGB+NIR(四波段)10 Optimization of OSAVI=Rondeaux G,Steven M,Baret F.輸入影像:Soil-Adjusted Vegetation Indices(OSAVI)(NIR R)/(NIR
104、+R+)const =0.16 Optimization of soil-adjusted vegetation indicesJ.Remote sensing of environment,1996,55(2):95-107.RGB+NIR(四波段)表 3.2 水體指數類 11 Normalized Difference Water Index(NDWI)NDWI=(G NIR)/(G+NIR)McFeeters S K.The use of the Normalized Difference Water Index(NDWI)in the delineation of open water
105、 featuresJ.International journal of remote sensing,1996,17(7):1425-1432.輸入影像:RGB+NIR(四波段)12 Modified Normalized Difference Water Index(MNDWI)MNDWI=(G MIR1)/(G+MIR1)徐涵秋.利用改進的歸一化差異水體指數(MNDWI)提取水體信息的研究D.,2005.多 光譜/高光譜 按波段輸入 13 Combined Index for Water CIWI=NDVI+NIR+C 莫偉華,孫涵,鐘仕全,等.MODIS 水體指數模型(ClWI)研究及其
106、應輸入影像:RGB+NIR identification(CIWI)C=100 用J.遙感信息,2007(5):16-21.(四波段)14 Enhanced Water index(EWI-y)EWI-y=(G NIR MIR1)/(G+NIR+MIR1)閆霈,張友靜,張元.利用增強型水體指數(EWI)和 GIS 去噪音技術提取半干旱地區水系信息的研究J.遙感信息,2007(6):62-67.多 光譜/高光譜 按波段輸入 15 Normalized Difference Pond Index(NDPI)NDPI=(MIR1 G)/(MIR1+G)Lacaux J P,Tourre Y M,Vi
107、gnolles C,et al.Classification of ponds from high-spatial resolution remote sensing:Application to Rift Valley Fever epidemics in SenegalJ.Remote Sensing of Environment,2007,106(1):66-74.多 光譜/高光譜 按波段輸入 16 New Water Index(NWI)NWI=(B (NIR+MIR1+MIR2)/(B+(NIR+MIR1+MIR2)丁鳳.一種基于遙感數據快速提取水體信息的新方法J.遙感技術與應用,2
108、012,24(2):167-171.多 光譜/高光譜 按波段輸入 17 Modified CIWI(MCIWI)MCIWI=NDVI+NDBI,NDBI=(MIR 楊 寶 鋼,陳 昉,羅 孳 孳.基 于 MODIS 的改進型組合水體指數(MCIWI)提取復雜水體信息的試多 光譜/高光譜 按波段輸入 NIR)/(MIR+NIR)驗J.西南大學學報:自然科學版,2011,33(1):112-119.18 Gaussian Normalized Water Index(GNDWI)GNDWI=(NDWI NDWI-)/NDWI-為所有像素NDWI 的均值,為所有像素的標準差 沈占鋒,夏列鋼,李均力,
109、等.采用高斯歸一化水體指數實現遙感影像河流的精確提取J.中國圖象圖形學報,2013,18(4):421-428.多 光譜/高光譜 按波段輸入 19 False NDWI(FNDWI)FNDWI=(FG NIR)/(FG+NIR)FG=G+S*(CNIR-NIR)CNIR=40,S=1(默認值)周藝,謝光磊,王世新,等.利用偽歸一化差異水體指數提取城鎮周邊J.地 球 信 息 科 學 學 報,2014,16(1):102-107.多 光譜/高光譜 按波段輸入 20 Simple Ratio of Water index(SRWI)SRWI=G/MIR1 王晴晴,余明.基于簡單比值型水體指數(SRW
110、I)的水體信息提取研究J.福建師范大學學報:自然科學版,2014,30(1):39-44.多 光譜/高光譜 按波段輸入 21 Automated Water Extraction Index AWEInsh=4*(G MIR1)(0.25*NIR+2.75*Feyisa G L,Meilby H,Fensholt R,et al.Automated Water Extraction Index:A new 多 光譜/高光譜 按波段輸入 (AWEI)MIR2);AWEIsh=B+2.5*G 1.5*(NIR+MIR1)0.25*MIR2 technique for surface water m
111、apping using Landsat imageryJ.Remote Sensing of Environment,2014,140:23-35.22 Enhanced Water Index(EWI-w)EWI-w=(G-MIR1+m)/(G+MIR1)*(NDVI+n)m=0.1,n=0.5 Wang S,Baig M H A,Zhang L,et al.A simple enhanced water index(EWI)for percent surface water estimation using Landsat dataJ.IEEE Journal of Selected T
112、opics in Applied Earth Observations and Remote Sensing,2015,8(1):90-97.多 光譜/高光譜 按波段輸入 23 Water Index 2015(WI2015)WI2015=1.7204+171*G+3*R 70*NIR 45*MIR1-71*MIR2 Fisher A,Flood N,Danaher T.Comparing Landsat water index methods for automated water classification in eastern AustraliaJ.Remote Sensing of
113、Environment,2016,175:167-182.多 光譜/高光譜 按波段輸入 24 Weighted WNDWI=(G-Guo Q,Pu R,Li J,et al.A 多 光譜/高 Normalized Difference Water Index(WNDWI)*NIR (1 )*MIR1)/(G+NIR+(1)*MIR1)0.45,0.55 weighted normalized difference water index for water extraction using Landsat imageryJ.International journal of remote sen
114、sing,2017,38(19):5430-5445.光譜 按波段輸入 25 Multi-band Water Index(MBWI)MBWI=2*G R NIR MIR1 MIR2 Wang X,Xie S,Zhang X,et al.A robust Multi-Band Water Index(MBWI)for automated extraction of surface water from Landsat 8 OLI imageryJ.International Journal of Applied Earth Observation and Geoinformation,2018
115、,68:73-91.多 光譜/高光譜 按波段輸入 26 Water Index 2019(WI2019)WI2019=(1.75*G R 1.08*MIR1)/(G+MIR1)黃遠林,鄧開元,任超,等.一種新的水體指數及其穩定性研究J.地球物理學進展,2020,35(3):829-835.多 光譜/高光譜 按波段輸入 27 Augmented Normalized ANDWI=(B+G+R NIR MIR1 Rad A M,Kreitler J,Sadegh M.Augmented Normalized 多 光譜/高光譜 Difference Water Index(ANDWI)MIR2)/(
116、B+G+R+NIR+MIR1+MIR2)Difference Water Index for improved surface water monitoringJ.Environmental Modelling&Software,2021,140:105030.按波段輸入 表 3.3 建筑物紋理、顏色特征 28 Normalized Difference Building Index(NDBI)NDBI=(MIR1-NIR)/(MIR1+NIR)Zha Y,Gao J,Ni S.Use of normalized difference built-up index in automatical
117、ly mapping urban areas from TM imageryJ.International journal of remote sensing,2003,24(3):583-594.多光譜/高光譜 按波段輸入 29 Morphological Building Index(MBI)(1)()=1(band()(2)(,)=(,)(3)(,)=(,)(,0)=Huang X,Zhang L.A multidirectional and multiscale RGB影(4)(,)=(,+(,)式中:(5)=,(,)=()/)+1;D 為計算建筑物剖面時的方向數。morphologi
118、cal index for automatic building extraction from multispectral GeoEye-1 imageryJ.Photogrammetric Engineering&Remote Sensing,2011,77(7):721-732.像 30 Local Binary Pattern(LBP)(,)=8=1()()2()=1,00,otherwise Ojala T,Pietikainen M,Harwood D.Performance evaluation of texture measures with classification ba
119、sed on Kullback discrimination of distributionsC/Proceedings of 12th international conference on pattern recognition.IEEE,1994,1:582-585.RGB影像 31 Gray Level Co-occurrence Matrix(GLCM)(1)=1=1(,)2(2)=1=02(=(,)(3)=1=1(,)1+()2(4)=1=1(,)log(,)(5)COR=1=1()(,)Haralick R M,Shanmugam K,Dinstein I H.Textural
120、features for image classificationJ.IEEE Transactions on systems,man,and cybernetics,1973(6):610-621.RGB影像 32 Gabor filter(1)(,;,)=exp(2+2222)exp(2+)(復數)(2)(,;,)=exp(2+2222)cos(2+)(實數)(3)(,;,)=exp(2+2222)sin(2+)(虛數)=cos+sin=sin+cos Dunn D,Higgins W E,Wakeley J.Texture segmentation using 2-D Gabor ele
121、mentary functionsJ.IEEE Transactions on Pattern Analysis and Machine Intelligence,1994,16(2):130-149.RGB影像 33 GIST(,)=cat(,)m(,),(,)Friedman A.Framing pictures:The role of knowledge in automatized encoding RGB影像 and memory for gistJ.Journal of experimental psychology:General,1979,108(3):316.34 Histo
122、gram of Oriented Gradient (HOG)(,)=(,)gamma (,)=(+1,)(1,)(,)=(,+1)(,1)(,)=(,)2+(,)2(,)=tan1(,)(,)Dalal N,Triggs B.Histograms of oriented gradients for human detectionC/2005 IEEE computer society conference on computer vision and pattern recognition(CVPR05).Ieee,2005,1:886-893.RGB影像 35 RGB(HSV)Histog
123、ram()=(=)=,0 ()=0()(直方圖歸一化)Acharya T,Ray A K.Image processing:principles and applicationsM.John Wiley&Sons,2005.RGB影像 表 3.4 SAR 影像指數 36 Polarization Salinity Index(PSI)=HV02 HH02HV02+HH02 劉全明,成秋明,王學,李相君.河套灌區土壤鹽漬化微波雷達 反 演 J.農 業 工 程 學報,2016,32(16):109-114.RADARSAT-2,etc 37 Radar Forest Degradation Ind
124、ex(RFDI)=HH0 HV0HH0+HV0 Ningthoujam R K.Retrieving Forest Characteristics from High-Resolution Airborne S-Band Radar DataD.University of Leicester,2016.Sentinel-1,etc 38 Biomass Index(BMI)=HH0+VV02 Pope K O,Rey-Benayas J M,Paris J F.Radar remote sensing of forest and wetland ecosystems in the Centra
125、l American tropicsJ.Remote Sensing of Environment,1994,48(2):205-219.Sentinel-1,etc 39 Volume Scattering Index(VSI)=HV0HV0+Bouvet A,Mermoz S,Le Toan T,et al.An above-ground biomass map of African savannahs and woodlands at 25 m resolution derived from ALOS PALSARJ.Remote sensing of environment,2018,
126、206:156-173.ALOS PALSAR,etc 40 Canopy Structure Index(CSI)CSI=VV0HH0+VV0 Haldar D,Patnaik C,Mohan S,et al.Jute and tea discrimination through fusion of SAR and optical dataJ.Progress In Electromagnetics Research B,2012,39:337-354.ALOS PALSAR,etc 41 Radar Vegetation Index(RVI)=8HV0HH0+VV0+2HV0 Kim Y,
127、Jackson T,Bindlish R,et al.Radar vegetation index for estimating the vegetation water content of rice and soybeanJ.IEEE ALOS PALSAR,etc Geoscience and Remote Sensing Letters,2011,9(4):564-568.(1)RGB 影像 Python 端使用方法:C+端使用方法:以上為 LBP 紋理計算的 Python 端和 C+端的調用方式。主要利用 OpenCV 讀取 RGB影像,調用 LBP 紋理計算,其中 N 表示 LBP
128、 計算模式。0 表示原始 LBP 計算,1 表示圓形LBP 計算,2 表示旋轉不變 LBP,3 表示均勻模式 LBP(Uniform LBP)。該函數的輸出為單通道的紋理特征。其余紋理、濾波、建筑物特征提取算子用法類似。結果展示:圖 1 輸入 RGB 影像,輸出為單波段的 LBP 紋理特征(原始 LBP)(2)多光譜影像(RGB+NIR)Python 端使用方法:C+端使用方法:以上為歸一化植被指數(NDVI)的 Python 端和 C+端的調用方式。主要利用 OpenCV讀取 RGB+NIR 的多光譜影像,然后調用 NDVI 計算算子。該函數的輸出為單通道的植被指數特征。其余 RGB+NIR
129、 的多光譜影像算子用法類似。結果展示:圖 2 輸入 RGB+NIR 的多光譜影像,輸出為單波段的 NDVI 特征(3)高(多)光譜影像 Python 端使用方法:C+端使用方法:以上為增強的歸一化水體指數(ANDWI)的 Python 端和 C+端的調用方式。主要利用 OpenCV 讀取 Landsat8 的多光譜影像,然后調用 ANDWI 計算算子。該函數的輸出為單通道的水體指數特征。其余的多光譜(高光譜)影像算子用法類似,高光譜可通過光譜特征選擇、降維等操作獲取相應波段作為輸入即可。結果展示:圖 3 按波段輸入多(高)光譜影像,輸出為單波段的 ANDWI 特征(3)SAR 影像 Pytho
130、n 端使用方法:C+端使用方法:以上為極化鹽度指數(PSI)的 Python 端和 C+端的調用方式。主要利用 OpenCV 讀取極化 SAR 的影像,然后調用 PSI 計算算子。該函數的輸出為單通道的鹽堿度特征。其余的極化 SAR 影像算子用法類似。結果展示:圖 3 按波段輸入極化 SAR 影像,輸出為單波段的 PSI 特征 3.3.2 遙感先驗知識自動并行(1)數據集 WHU-RS19 數據集 WHU-RS19 場景識別數據集影像來源于谷歌衛星影像上獲取的遙感影像,數據包含 19個場景類。圖像的輸入尺寸為 600600 像素,共計 1005 張,其中每個類別有 50 張。數據包含的主要區域
131、為中國的城市地區。在實驗驗證時,按照 3:1 的比例劃分訓練集與驗證集,包括訓練集 804 張,驗證集 201 張。(2)實現細節 1)Python 端代碼定義 在 luojianet_ms/python/luojianet_ms/ops/operations/下,到對應類型 py 文件,在 nn_ops.py 定義了神經網絡類型相關函數存儲搬運函數:class MemOP(Primitive):prim_attr_register def _init_(self):Initialize MemOP self.init_prim_io_names(inputs=x,outputs=output
132、)在luojianet_ms/python/luojianet_ms/ops/operations/_init_.py 中對應的算子類別中添加算子名 MemOP。導入注冊好的算子原語,方便算子使用,注意的是需要添加在對應的算子類別和_all_中兩處地方添加算子名 MemOP。2)C+端代碼定義 在 luojianet_ms/core/ops/*.h 文件中聲明算子類與接口函數文件 mem_op.h 與mem_op.cc mem_op.h#ifndef LUOJIANET_MS_CORE_OPS_MEM_OP_H_#define LUOJIANET_MS_CORE_OPS_MEM_OP_H_#i
133、nclude#include#include#include#include ops/primitive_c.h#include ops/op_utils.h#include abstract/abstract_value.h#include utils/check_convert_utils.h namespace luojianet_ms namespace ops constexpr auto kNameMemOP=prim:kMemOP;/constexpr auto kNameMemOP=MemOP;/brief Computes MemOP(Rectified Linear Uni
134、t activation function)of input tensors element-wise./Refer to Python API ref luojianet_ms.ops.MemOP for more details.class MS_CORE_API MemOP:public PrimitiveC public:/brief Constructor.MemOP():PrimitiveC(kNameMemOP)InitIOName(x,output);/brief Destructor.MemOP()=default;MS_DECLARE_PARENT(MemOP,Primit
135、iveC);/brief Init.void Init();/namespace ops /namespace luojianet_ms#endif /LUOJIANET_MS_CORE_OPS_MEM_OP_H_ mem_op.cc#include ops/mem_op.h#include#include#include#include#include#include ops/op_utils.h#include utils/check_convert_utils.h#include abstract/primitive_infer_map.h namespace luojianet_ms
136、namespace ops namespace abstract:ShapePtr InferShape(const PrimitivePtr&primitive,const std:vector&input_args)MS_EXCEPTION_IF_NULL(primitive);auto prim_name=primitive-name();(void)CheckAndConvertUtils:CheckInteger(input numbers,SizeToLong(input_args.size(),kGreaterEqual,1,prim_name);(void)CheckAndCo
137、nvertUtils:CheckArgs(prim_name,input_args,0);auto x=input_args0-BuildShape();MS_EXCEPTION_IF_NULL(x);auto shape_element=x-cast();MS_EXCEPTION_IF_NULL(shape_element);return shape_element;TypePtr InferType(const PrimitivePtr&prim,const std:vector&input_args)MS_EXCEPTION_IF_NULL(prim);auto prim_name=pr
138、im-name();(void)CheckAndConvertUtils:CheckInteger(input numbers,SizeToLong(input_args.size(),kEqual,1,prim_name);MS_EXCEPTION_IF_NULL(input_args0);auto x_type=input_args0-BuildType();(void)CheckAndConvertUtils:CheckTensorTypeValid(input_x,x_type,common_valid_types,prim_name);return x_type;/namespace
139、 AbstractBasePtr MemOPInfer(const abstract:AnalysisEnginePtr&,const PrimitivePtr&primitive,const std:vector&input_args)auto type=InferType(primitive,input_args);auto shape=InferShape(primitive,input_args);return abstract:MakeAbstract(shape,type);REGISTER_PRIMITIVE_EVAL_IMPL(MemOP,prim:kPrimMemOP,Mem
140、OPInfer,nullptr,true);/namespace ops /namespace luojianet_ms 在 core/base/core_ops.h 中添加:constexpr auto kMemOP=MemOP;inline const PrimitivePtr kPrimMemOP=std:make_shared(kMemOP);core/ops/grad 中添加 mem_op_grad.h、mem_op_grad.cc:mem_op_grad.h#ifndef LUOJIANET_MS_CORE_OPS_MEME_OP_GRAD_H_#define LUOJIANET_
141、MS_CORE_OPS_MEME_OP_GRAD_H_#include#include#include#include#include ops/primitive_c.h#include ops/op_utils.h#include abstract/abstract_value.h#include utils/check_convert_utils.h namespace luojianet_ms namespace ops constexpr auto kNameMemOPGrad=prim:kReLUGrad;class MS_CORE_API MemOPGrad:public Prim
142、itiveC public:MemOPGrad():PrimitiveC(prim:kPrimMemOPGrad-name()InitIOName(x,output);MemOPGrad()=default;MS_DECLARE_PARENT(MemOPGrad,PrimitiveC);void Init();/namespace ops /namespace luojianet_ms#endif /LUOJIANET_MS_CORE_OPS_MEME_OP_GRAD_H_ mem_op_grad.cc#include ops/grad/mem_op_grad.h#include#includ
143、e#include#include#include#include abstract/param_validator.h#include ops/op_utils.h#include utils/check_convert_utils.h#include abstract/primitive_infer_map.h namespace luojianet_ms namespace ops namespace abstract:ShapePtr InferShape(const PrimitivePtr&primitive,const std:vector&input_args)MS_EXCEP
144、TION_IF_NULL(primitive);auto prim_name=primitive-name();const int64_t input_num=2;(void)CheckAndConvertUtils:CheckInteger(input number,SizeToLong(input_args.size(),kEqual,input_num,prim_name);for(const auto&item:input_args)MS_EXCEPTION_IF_NULL(item);auto dout=CheckAndConvertUtils:CheckArgs(prim_name
145、,input_args,0);auto out=CheckAndConvertUtils:CheckArgs(prim_name,input_args,1);abstract:CheckShapeSame(prim_name,out,dout);auto x=input_args0-BuildShape();MS_EXCEPTION_IF_NULL(x);auto shape_element=x-cast();MS_EXCEPTION_IF_NULL(shape_element);return shape_element;TypePtr InferType(const PrimitivePtr
146、&prim,const std:vector&input_args)MS_EXCEPTION_IF_NULL(prim);auto prim_name=prim-name();const int64_t input_num=2;(void)CheckAndConvertUtils:CheckInteger(input number,SizeToLong(input_args.size(),kEqual,input_num,prim_name);MS_EXCEPTION_IF_NULL(input_args0);auto dout=CheckAndConvertUtils:CheckArgs(p
147、rim_name,input_args,0);auto out=CheckAndConvertUtils:CheckArgs(prim_name,input_args,1);(void)abstract:CheckDtypeSame(prim_name,out,dout);auto x_type=input_args0-BuildType();MS_EXCEPTION_IF_NULL(x_type);if(!x_type-isa()MS_EXCEPTION(TypeError)The prim_name s input must be tensor type but got ToString(
148、);return x_type;/namespace AbstractBasePtr MemOPGradInfer(const abstract:AnalysisEnginePtr&,const PrimitivePtr&primitive,const std:vector&input_args)auto type=InferType(primitive,input_args);auto shape=InferShape(primitive,input_args);return abstract:MakeAbstract(shape,type);REGISTER_PRIMITIVE_EVAL_
149、IMPL(MemOPGrad,prim:kPrimMemOPGrad,MemOPGradInfer,nullptr,true);/namespace ops /namespace luojianet_ms 在 core/base/core_ops.h 中添加:constexpr auto kMemOPGrad=MemOPGrad;inline const PrimitivePtr kPrimMemOPGrad=std:make_shared(kMemOPGrad);gpu 端實現:在 ccsrcbackendkernel_compilergpunn 添加 luojianet_ms/ccsrc/
150、backend/kernel_compiler/gpu/nn/mem_op_grad_gpu_kernel.cc luojianet_ms/ccsrc/backend/kernel_compiler/gpu/nn/mem_op_grad_gpu_kernel.h luojianet_ms/ccsrc/backend/kernel_compiler/gpu/nn/mem_op_gpu_kernel.h luojianet_ms/ccsrc/backend/kernel_compiler/gpu/nn/mem_op_gpu_kernel.cc backend/kernel_compiler/gpu
151、/cuda_impl 添加:luojianet_ms/ccsrc/backend/kernel_compiler/gpu/cuda_impl/mem_op_impl.cuh luojianet_ms/ccsrc/backend/kernel_compiler/gpu/cuda_impl/mem_op_impl.cu luojianet_ms/ccsrc/backend/kernel_compiler/gpu/cuda_impl/mem_op_grad_impl.cuh luojianet_ms/ccsrc/backend/kernel_compiler/gpu/cuda_impl/mem_op
152、_grad_impl.cu python 端 luojianet_ms/python/luojianet_ms/ops/_grad 添加反向:luojianet_ms/python/luojianet_ms/ops/_grad/grad_nn_ops.py bprop_getters.register(P.MemOP)def get_bprop_mem_op(self):Grad definition for ReLU operation.input_grad=G.MemOPGrad()def bprop(x,out,dout):dx=input_grad(dout,out)return(dx
153、,)return bprop luojianet_ms/python/luojianet_ms/ops/operations/_grad_ops.py class MemOPGrad(Primitive):Performs grad of MemOP operation.prim_attr_register def _init_(self):Initialize MemOPGrad self.init_prim_io_names(inputs=y_backprop,x,outputs=output)def _call_(self,y_backprop,x):raise NotImplement
154、edError 并行計算添加:luojianet_ms/ccsrc/frontend/parallel/auto_parallel/operator_costmodel.h using TanhCost=SqrtCost;using EluCost=SqrtCost;using ReLUCost=SqrtCost;using MemOPCost=SqrtCost;using SigmoidCost=SqrtCost;luojianet_ms/ccsrc/frontend/parallel/step_auto_parallel.cc MEMOP luojianet_ms/ccsrc/fronte
155、nd/parallel/ops_info/ops_utils.h constexpr char MEMOP=MemOP;luojianet_ms/ccsrc/frontend/parallel/ops_info/ops_info_head_files.h#include frontend/parallel/ops_info/mem_op_info.h luojianet_ms/ccsrc/frontend/parallel/dynamic_creator.h REGISTER(MemOPInfo);luojianet_ms/ccsrc/frontend/parallel/ops_info/me
156、m_op_info.h luojianet_ms/ccsrc/frontend/parallel/ops_info/mem_op_info.cc luojianet_ms/ccsrc/frontend/parallel/auto_parallel/rec_core/rec_parse_graph.h TANH,OperatorType:kRecReLU,MEMOP,OperatorType:kRecReLU,3)在 LuoJiaNET 上采用 ResNET-50 網絡。在進行訓練時,每個樣本大小保持原始比例,隨機裁剪為 224x224 像素,以適應殘差網絡輸入影像尺寸。采用的損失函數為 cro
157、ss entropy 標簽平滑損失,優化器選擇為 SGD,初始學習率設置為 0.1,最大學習率為 0.1,采用 warm-up 訓練策略,批次數設置為 64,訓練時采用 fp32 浮點精度訓練,共 1600 個輪次直至收斂。遙感先驗知識采用 GLCM 灰度共生矩陣特征作為先驗知識,與歸一化后的影像堆疊為 4 通道的影像作為殘差網絡輸入。訓練環境為 Tesla V100,32Gb 顯存,8 張顯卡并行訓練。在進行推理時,每個樣本保持原始大小。(3)實驗結果 實驗對比三種結果,分別為基準網絡(ResNET-50)、加入先驗知識(+GLCM)的常規并行策略的網絡(+AutoParallel)、加入
158、GLCM 與顯存搬運(MemOP)后的分布式并行網絡(+GLCM)。表 1 精度結果對比 Methods top1-acc top5-acc ResNET-50 0.865 0.985+AutoParallel(+GLCM)0.895 0.980+AutoParallel(+GLCM+MemOP)0.870 0.990 從表 1 能看到,融入 GLCM 遙感先驗知識后,可以使 top-5 精度保持相當的情況下,top-1 精度提升約 3%,驗證了遙感先驗知識融合的有效性;在增加 GLCM 同時采用顯存搬運的并行策略,使 top-5 精度提升至 0.99,top-1 精度提升至 0.87。與基線
159、網絡 ResNET-50 相比,表明設計的遙感先驗知識自動并行策略能顯著提升網絡精度,達到了預期目標。4.LuoJiaNET 典型應用模型 4.1 場景分類 4.1.1 任務簡介(1)使用 LuoJiaNET 完成經典深度學習場景分類網絡 VGG、ResNet、SENet 的搭建與訓練,將 LuoJiaNET 框架應用到遙感影像場景分類任務中;(2)將 LuoJiaNET 和主流的深度學習框架 PyTorch、TensorFlow 進行對比,測試LuoJiaNET 在場景分類任務中的性能表現。4.1.2 分類網絡簡介 VGG VGG 是 Oxford 的 Visual Geometry Gro
160、up 的組提出。該網絡是在 ILSVRC 2014 上的相關工作,主要工作是證明了增加網絡的深度能夠在一定程度上影響網絡最終的性能。VGG 有兩種結構,分別是 VGG16 和 VGG19,兩者并沒有本質上的區別,只是網絡深度不一樣。VGG 網絡是第一個在每個卷積層使用更小的 33 卷積核對圖像進行卷積,并把這些小的卷積核排列起來作為一個卷積序列,僅使用多個 33 卷積核可以模仿較大卷積核那樣對圖像進行局部感知。因此其能在分類任務上取得較好的效果。圖 2 VGG 網絡圖 ResNet ResNet 網絡是參考了 VGG19 網絡,在其基礎上進行了修改,并通過短路機制加入了殘差單元,如圖 3 所示
161、。變化主要體現在 ResNet 直接使用 stride=2 的卷積做下采樣,并且用 global average pool 層替換了全連接層。ResNet 的一個重要設計原則是:當 feature map 大小降低一半時,feature map 的數量增加一倍,這保持了網絡層的復雜度。從圖 3中可以看到,ResNet 相比普通網絡每兩層間增加了短路機制,這就形成了殘差學習,其中虛線表示 feature map 數量發生了改變。圖展示的 34-layer 的 ResNet,還可以構建更深的網絡如 ResNet50,ResNet101,ResNet152。當網絡更深時,其進行的是三層間的殘差學習,
162、三層卷積核分別是 1x1,3x3 和 1x1,一個值得注意的是隱含層的 feature map 數量是比較小的,并且是輸出 feature map 數量的 1/4。圖 3 ResNet 網絡圖 SENet SENet 是一個非常經典的分類網絡,它通過構建 SEblock 實現特征的通道選擇,且SEblock 能夠嵌入到現有的任何全卷積網絡中,實現特征在通道維度的篩選和增強。SENet 主要由特征提取模塊、SEBlock 以及分類器構成。SEBlock 即為 Squeeze-and-Excitation Block,該模塊通過利用全連接層以及 sigmoid 生成每個通道的權重來對通道進行增強和
163、篩選,輸入的特征首先通過擠壓和重采樣操作,將特征圖在空間維度 H,W 上聚集起來,產生一個通道描述符。這個描述符包含了通道特征反應的全局分布,使得全局信息得到充分的利用。接下來是一個激勵操作,在這個過程中,每個通道的權重都是基于門控機制來學習的。分類器即為最終的全連接層,與 VGG、ResNet 等常見的網絡一致。圖 4 SEBlock 示意圖 4.1.3 測評結果(1)數據集 PatternNet 數據集 PatternNet 由武漢大學于 2018 年發布,是一個用于遙感圖像分類的大規模高分辨率遙感數據集。該數據集共包含有 38 個類,每個類有 800 張大小為 256256 像素的圖像。
164、該數據集質量高,截止目前為止已久有 215 個引用,超過了其余遙感影像分類數據集的引用量。我們從該數據集中每個類別隨機選擇 50 張作為測試集對模型精度進行驗證和評價。(2)實現細節 我們分別在主流的深度學習框架 PyTorch 和我們的 LuoJiaNET 上復現了上面三種分類網絡,在后文中分別簡寫為 VGG、ResNet、ResNet_SE。為了進行公平的對比,網絡均在同一硬件上進行訓練和測試。GPU 型號為 GeForce GTX 3090(24G)、CPU 型號為 Intel(R)Core(TM)i9-7900X CPU 3.30GHz。使用的 pytorch 框架為 v1.8.1,L
165、uoJiaNET 版本為 v1.0.0,TensorFlow 版本為 v2.4.0。在進行訓練時,每個樣本大小為 256256 像素的小塊,采用的損失函數為 cross entrophy 損失,優化器選擇為 SGD,初始學習率設置為 1e-4,最大學習率為 0.1,采用warm-up 訓練策略,避免過擬合,批次數設置為 8,訓練共 200 個輪次,共計約 7.5 萬次迭代。在進行推理時,每個樣本保持原始大小。(3)評價指標 在實驗中,采用的定量指標如下:a.準確率(Precision)統計分類的準確率,計算方式如下:=+(1)其中,TP為預測正確的類別,FP 為預測錯誤的類別。b.召回率(Re
166、call)統計分類結果占全部準確結果的百分比,計算方式如下:=+(2)其中,TP 表示預測正確的類別,FN 表示誤檢測的類別.c.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。d.運行時間(Time)記錄了模型在訓練或者推理過程中處理一個樣本所需要的時間。(4)實驗結果 由于每個分類網絡所包含的子集眾多,所以這里僅選擇使用最廣泛的網絡進行對比測試。其中LuojiaNet表示為LuojiaNET,TensorFlow表示為TF,pytorch表示為Pytorch。表 2 精度結果對比 Methods Precision Recall top1-acc top5-acc
167、VGG16(LuojiaNET)0.894 0.896 0.918 0.955 VGG16(TF)0.891 0.890 0.902 0.950 VGG16(PyTorch)0.891 0.892 0.903 0.952 ResNet50(LuojiaNET)0.941 0.960 0.967 0.979 ResNet50(TF)0.937 0.961 0.965 0.977 ResNet50(PyTorch)0.940 0.959 0.965 0.977 ResNet50_SE(LuojiaNET)0.976 0.962 0.983 0.997 ResNet_SE(TF)0.969 0.96
168、7 0.981 0.995 ResNet50_SE(PyTorch)0.970 0.964 0.981 0.994 從表 1 能看到,相比于 PyTorch 以及 TensorFlow 復現的網絡,使用 LuoJiaNET 復現的網絡在精度上有略微提升,提升不明顯的原因可能是所使用的數據集相對簡單。表 3 時間與顯存占用對比 Methods Training Inference Memory(MB)Time(ms)Memory(MB)Time(ms)VGG16(LuojiaNET)5621 51.9 3517 24.9 VGG16(TF)7523 58.3 3715 25.5 VGG16(Py
169、Torch)6313 63.2 3673 26.3 ResNet50(LuojiaNET)12757 266.1 4285 93.9 ResNet50(TF)15431 300.3 4703 90.3 ResNet50(PyTorch)13431 350.7 4610 94.2 ResNet50_SE(LuojiaNET)18931 420.7 4539 143.5 ResNet50_SE(TF)21345 507.8 6741 145.2 ResNet50_SE(PyTorch)20257 532.5 6756 167.8 從表 2 可以看出,在訓練時,模型越復雜(表現在網絡的層數、是否使用
170、注意力等方面)LuojiaNet 與其余兩種框架下的結果差距越明顯,且這個差距隨模型復雜程度增大而增大,原因可能是 LuojiaNet 在擬合網絡參數時所保留的參數精度與另外兩種不同,該原因也會影響網絡的精度;在測試時,由于不存在梯度回傳,所以差距較??;因此猜測訓練時顯存和時間差距主要由梯度回傳修正網絡模型參數時產生。4.1.4 總結 基于 LuoJiaNET 框架,已經完成了遙感影像分類網絡的典型應用。相比于主流深度學習框架 PyTorch、TensorFlow,LuoJiaNET 在訓練過程中的顯存占用低,在推理速度上也略優于另外兩種。同時當使用相同的數據以及網絡模型進行測試時,Luoji
171、aNet 框架下的網 絡精度略優于另外兩種,造成這種現象的原因可能是 LuojiaNet 在進行訓練與推理是模型參數保存的精度較高。4.2 目標檢測 4.2.1 任務簡介(1)使用 LuoJiaNET 完成目標檢測深度學習網絡 Faster-RCNN、Mask-RCNN 的搭建、訓練與推理實驗,將 LuoJiaNET 框架應用到遙感影像目標檢測任務中;(2)測試 LuoJiaNET 在目標檢測任務中的性能表現,并將 LuoJiaNET 和主流的深度學習框架 PyTorch 進行對比,測試在精度、訓練時間、顯存消耗方面的表現。4.2.2 目標檢測網絡簡介 Faster-RCNN 目標檢測網絡 F
172、aster-RCNN 是 Kaiming He 等人在 2016 年提出的端到端的兩階段目標檢測算法,也是目前落地最成功的深度學習模型之一,是目標檢測領域最經典的模型之一。Faster-RCNN 將目標檢測任務分成了兩個階段,首先第一階段,利用深度網絡找出圖像中可能存在物體的區域,產生 Region Proposal;第二階段,對 Region Proposal 內的物體進行分類,并對第一階段檢測的 anchor 框進行回歸。網絡損失主要有三部分構成,包括 RPN 分類、回歸損失,以及 Bounding Box Head 和 Classification Head 的損失。兩階段目標檢測算法相
173、比于 Yolo 系列等一階段目標檢測算法具有檢測精度更高的優勢,但是相對來說計算效率相對較低。論文地址:https:/arxiv.org/abs/1506.01497 圖 1 Faster-RCNN 目標檢測網絡結構圖 Mask-RCNN 實例分割網絡 Mask-RCNN 是 Kaiming He 等人在 2018 年提出的端到端的兩階段實例分割算法,該方法是在 Faster-RCNN 的基礎上添加了一個預測分割 mask 的分支以及對應的損失函數,并對 Faster-RCNN 做出了一些改進,實現了對圖像中檢測到的目標實例進行分割的目的?;谶@個思想,可以借助該模型可以進一步實現姿態檢測等任
174、務。同時,實驗證明,該方法通過利用多任務學習的思想,有助于提升目標檢測的效果。該網絡模型的主要結構如下圖所示:圖 2 Mask-RCNN 目標檢測網絡結構圖 本實驗中,利用 Mask-RCNN 實現對旋轉目標的檢測,并與 pytorch 的結果進行對比。論文地址如下:https:/arxiv.org/pdf/1703.06870.pdf 4.2.3 測評結果(1)數據集:天智杯可見光圖像飛機智能檢測識別數據集 該數據集是慧眼“天智杯”人工智能挑戰賽可見光圖像飛機智能檢測識別賽道提供的訓練和驗證數據集。數據來源于國產自主產權系列衛星影像,圖像內容主要是多種成像條件下的機場可見光圖像,包含 611
175、 幅圖像,其中訓練集 308 幅,驗證集 122 幅,測試集181 幅(不開放下載),包含 11 類目標,約 13000 個飛機樣本。數據集影像的地面分辨率約為 0.5-1m。其中每組數據包含一幅飛機遙感圖像,以及對應的飛機標簽,即坐標和類別信息。圖像為 4096x4096 尺寸的 png 格式。標簽為 json 格式,以旋轉框的方式對飛機進行標注。官網地址:https:/ 圖 3 數據集圖像示例 圖 4 檢測目標(其中一類飛機)示例(2)實現細節 PyTorch 版本:v1.10.1 LuoJiaNET:v1.0.0 GPU 型號:GeForce RTX 3090(24G)CPU 型號:In
176、tel(R)Xeon(R)Silver 4110 CPU 2.10GHz 數據集大?。?024*1024(4506 train)+4096*4096(122 val),使用多尺度訓練 優化器:Momentum 學習率:0.02(warmup+cosine decay)批大?。? 訓練輪次:50 補充說明:目前廣泛使用的目標檢測網絡都是基于現有的開源目標檢測框架進行實現的,常用的基于 Pytorch 的目標檢測框架有 detectron2(Facebook 團隊開發維護),mmdetection(香港中文大學-商湯聯合實驗室開發維護)等。本項目實驗中 Pytorch 下目標檢測網絡實現是基于mm
177、detection進行實現的,具體內容可參考:https:/ 在本實驗中,采用的定量評價指標如下所示:a.精度評價指標(基于混淆矩陣)Precision=+(1)Recall=+(2)F1=(Precision Recall 2)(Precision+Recall)(3)mF1=1(表示總類別數)(4)b.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。c.運行時間(Time)記錄了模型在訓練或者推理過程中處理一個樣本所需要的時間。(4)實驗結果 Faster-RCNN 實驗中,初步使用水平目標框,僅對飛機進行目標檢測(不進行細粒度分類),下面是使用多尺度訓練的結果。表
178、 4 Faster-RCNN 飛機目標檢測精度結果對比 Methods Precision Recall mF1 Faster-RCNN 92.05 91.44 91.75 (LuoJiaNET)Faster-RCNN(PyTorch)89.04 91.27 90.15 從表 1 能看到,相比于 PyTorch 復現,在置信度為 0.7,IoU 為 0.5 的條件下,使用LuoJiaNET 復現的結果在精確度以及 mF1 上具有一定優勢,召回率上兩者精度相當。綜合來看,LuoJiaNet 在 mF1 數值上相比于 Pytorch 更好,其主要原因在于檢測精度上的提高。表 5 Faster-RC
179、NN 飛機目標檢測時間、顯存占用對比 Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)Faster-RCNN(LuojiaNET)16511 0.556 3513 2.64 Faster-RCNN(PyTorch)16295 0.505 2963 5.46 從表 2 可以看出,使用 LuoJiaNET 進行訓練,在顯存上相比 Pytorch 差距不大。單卡訓練情況下,兩者在處理時間上差異不大,LuoJiaNET 迭代相對時間略長。(注:由于對大幅面圖像采取了切分再檢測的策略以檢測小目標,這里的時間僅計算了對裁剪后的圖
180、像進行前向推理的時間)推理占用顯存上,LuoJiaNET 比 Pytorch 多 500M 左右,但是速度相對更快。(a)Ground Truth (b)Pytorch 檢測結果 (c)LuoJiaNET 檢測結果 圖 5 Faster-RCNN 檢測結果可視化 Mask-RCNN 實驗中,使用 Mask-RCNN 實現對旋轉目標的檢測,具體而言是通過將旋轉目標框作為掩膜進行預測,并將掩膜的最小外接矩形作為最終的旋轉目標檢測結果。需要注意的是,這里僅對飛機進行目標檢測(不進行細粒度分類)。表 3 Mask-RCNN 飛機目標檢測精度結果對比 Methods Precision Recall m
181、F1 HBB Result Mask-RCNN(LuoJiaNET)93.51 91.00 92.24 Mask-RCNN(PyTorch)89.72 91.49 90.59 OBB Result Mask-RCNN(LuoJiaNET)92.79 90.30 91.53 Mask-RCNN(PyTorch)89.03 90.79 89.90 從表 3 能看到,相比于 PyTorch 復現,在置信度為 0.7,IoU 為 0.5 的條件下,使用LuoJiaNET 復現的結果在精確度以及 mF1 上具有一定優勢,召回率上比 pytorch 結果略低。綜合來看,LuoJiaNet 在 mF1 數值
182、上相比于 Pytorch 更好,其主要原因在于檢測精度上相比 pytorch 結果顯著更好。同時,該結果與 Faster-RCNN 上的實驗結論是一致的。表 4 Mask-RCNN 飛機目標檢測時間、顯存占用對比 Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)Mask-RCNN(LuojiaNET)18559 1.901 5561 4.76 Mask-RCNN(PyTorch)16121 0.601 2985 6.56 從表 4 可以看出,使用 LuoJiaNET 進行訓練,Mask-RCNN 在顯存上相比與 Py
183、torch要多 2.5G 左右;同時,在處理時間上,單卡訓練情況下,Mask-RNN 所需時間更長,原因是由于實現造成的差異,在訓練數據標注的處理上與 mmdetection 有所不同(為了將同一個 batch 中的不同圖像中實例數量處理成一致的以進行批迭代,增加了冗余的分割實例,具體而言將每張圖的標注個數增加至 128 個實例,多余的標注使用掩膜進行標注)。推理占用顯存上,LuoJiaNET 比 Pytorch 多 2.5G 左右,一部分可能是由于網絡本身預測時的數據處理帶來的(與訓練階段顯存占用較多的原因一致),另一部分可能是由于框架本身造成的(在Faster-RCNN 實驗中,LuoJi
184、aNET 相比 Pytorch 要占用的顯存更多),但是 LuoJiaNET 在推理速度上相對 Pytorch 更快。(a)Ground Truth (b)Pytorch 檢測結果 (c)LuoJiaNET 檢測結果 圖 6 Mask-RCNN 檢測結果可視化 Mask-RCNN(DOTA_v2.0 數據集補充實驗)實現細節:PyTorch 版本:v1.10.1 LuoJiaNET:v1.0.0 GPU 型號:GeForce RTX 3090(24G)*2 CPU 型號:Intel(R)Xeon(R)Silver 4110 CPU 2.10GHz 數據集大?。河柧毤?13135 張圖像(102
185、4*1024),測試集為 DOTA2.0 的驗證集(593 張不同尺寸的圖像),使用多尺度訓練 優化器:SGD 學習率:0.01(warmup+step_decay)批大?。?/GPU 訓練輪次:30 該實驗是為了比較 LuoJiaNet 與 PyTorch 之間在大規模數據集下的性能,以使結論更具有說服力,具體實驗結果如下:表 5 Mask-RCNN 飛機目標檢測精度結果對比(AP/mAP)LV SP HC BR PL SH SBF BC AP CC GTF SV HA BD TC RA ST HP mAP HBB Result luojiaNet 66.86 61.01 54.40 40.
186、89 87.04 82.42 61.60 62.65 11.34 6.19 70.70 46.51 71.97 67.78 93.94 58.95 59.02 0.0 55.74 Pytorch 66.67 58.78 53.40 42.44 85.87 81.67 63.50 60.78 20.78 1.46 69.02 46.07 72.80 63.60 93.21 60.74 58.60 0.0 55.52 從表 5 能看到,相比于 PyTorch 復現,置信度為 0.2(一般論文中測試 DOTA 數據集采用的置信度為 0.1 或 0.2)、IoU 為 0.5 的條件下,使用 LuoJi
187、aNET 水平框 AP 結果在 12 類(總共 18 類)上的比 PyTorch 高,5 類上的結果比 PyTorch 低,mAP 比 PyTorch 高 0.22;旋轉框 AP 結果在 8類上比 PyTorch高,9 類上的比PyTorch低,mAP比 PyTorch 低0.78。從整體結果上看,使用 luojianet 和 pytorch 的結果差異并不顯著,可以近似認為兩者檢測結果精度接近。表 6 Mask-RCNN 目標檢測時間、顯存占用對比 Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)Mask-RCNN
188、(LuojiaNET)10393/GPU 2.68 10681 5.23 Mask-RCNN(PyTorch)7242/GPU 0.65 4027 5.63 從表 6 的結果得到的結論與在天智杯數據集上得到的結論相近(注:由于對大幅面圖像采取了切分再檢測的策略以檢測小目標,這里的時間僅計算了對裁剪后的圖像進行前向推理的時間)。OBB Result luojiaNet 57.15 54.12 54.40 35.87 86.74 79.56 60.58 61.48 9.83 0.48 70.30 43.12 64.16 67.47 93.22 58.95 58.79 0.0 53.12 Pytor
189、ch 57.26 54.16 56.31 39.43 85.87 78.43 62.62 59.27 20.78 0.89 69.40 42.36 66.02 66.07 92.84 58.37 60.10 0.0 53.90 (a)Ground Truth (b)Pytorch 檢測結果 (c)LuoJiaNET 檢測結果 圖 7 Mask-RCNN DOTA_v2.0 數據集檢測結果可視化 細粒度目標檢測模型 實現細節:LuoJiaNET:v1.0.0 GPU 型號:GeForce RTX 3090(24G)CPU 型號:Intel(R)Xeon(R)Silver 4110 CPU 2.1
190、0GHz 數據集大?。河柧毤焊鶕熘潜柧毤瘶俗⑽募薪o出的邊界框數據從原圖中裁剪出來的各類飛機圖像(11類,6793張)+使用LuojiaNet訓練得到的Mask-RCNN模型預測訓練集時將背景錯誤識別為飛機的背景圖像(1 類,134 張,有篩選),共 12 類6927 張。優化器:Adam 學習率:0.0001(cosine_decay)批大?。?28 訓練輪次:300 表 7 Mask-RCNN+細粒度分類結果(F1/mF1)A B C D E F G H I J K mF1 HBB Result luojiaNet 90.41 84.42 88.95 68.04 73.17 88.8
191、0 100.0 95.65 89.23 92.48 78.57 86.34 OBB Result (a)Ground Truth (b)LuoJiaNET 檢測結果 圖 8 Mask-RCNN+細粒度分類檢測結果可視化 luojiaNet 90.41 82.91 88.95 65.69 73.17 88.40 100.0 95.65 89.23 91.92 78.33 85.88 4.2.4 總結 基于 LuoJiaNET 框架,已經完成 Faster-RCNN 以及 Mask-RCNN 的復現以及對比實驗發現兩者在天智杯數據集上召回率大致相同,但是 LuoJiaNET 結果在檢測精度上更高。
192、綜合來看,LuoJiaNET 的性能在該數據集上的結果更優,在天智杯數據集取得了相對mmdetection(Pytorch)更好的結果 mF1,在 DOTA_v2.0 數據集上兩者性能差不多。在內存方面,LuoJiaNET 要比 PyTorch 消耗高,推理時間上則是 LuoJiaNET 稍快點。4.3 地物分類 4.3.1 高光譜地物分類(一)4.3.1.1 任務簡介(1)在 LuoJiaNET 遙感專用深度學習框架下實現高光譜語義分割網絡 FreeNet 和HRNet-3D,從而將 LuoJiaNET 框架應用于高光譜遙感影像地物分類中。(2)進行深度學習主流框架 Tensorflow、P
193、ytorch 和遙感專用深度學習框架 LuoJiaNET的對比實驗,以測試 LuoJiaNET 框架在高光譜語義分割中的性能。4.3.1.2 高光譜地物分類網絡介紹 圖 1 FreeNet 網絡結構 FreeNet 網絡1采用了語義分割網絡中常用的編碼-解碼網絡結構,總體結構如圖 1 所示。主要由編碼器、解碼器、跳躍連接三部分組成,以實現“端到端”的語義分割。編碼器用于從原始影像中抽象出特征,解碼器用于從特征圖中恢復出與原始影像大小相同的語義分割結果圖,跳躍連接將編碼器每一層的特征與解碼器每一層的輸出相結合,使得語義分割結果中能還原更多的影像細節。此外,為了充分挖掘高光譜影像中豐富的光譜信息,
194、FreeNet網絡在編碼器的每一個卷積層后加入了光譜注意力機制以充分挖掘影像各個波段之間的相互關系。圖 2 HRNet-3D 網絡結構 HRNet 網絡2最早為了解決姿態估計問題而提出,后被廣泛應用于遙感影像的語義分割中,它著重于學習影像的高分辨率特征表示,現有的語義分割網絡大多數采用從高分辨率到低分辨率,再由低分辨率恢復出高分辨率特征表示的結構,與此不同,HRNet 網絡能夠在整個過程中都保持高分辨率的表征,并通過逐步增加多分辨率的子網絡,進行多次多尺度的融合,使得高分辨率的特征表示中能夠含有更加豐富的信息,從而能夠預測出更加準確的地物位置。為了適應高光譜影像波段數多的特點,HRNet-3D
195、 網絡在 HRNet 網絡的基礎之上加入了 3D 卷積層以及光譜注意力機制層,以充分挖掘影像的光譜信息,整體網絡結構如 圖 2 所示。4.3.1.3 測評結果(1)實驗數據 采用了 WHU-OHS 大范圍高光譜數據集來進行實驗,該數據集由覆蓋了中國 42 個城市的 OHS 高光譜影像組成,每景影像空間分辨率為 10m,幅面大小約為 6000*6000,共32 個波段,影像對應的標簽共包含了 24 個地表覆蓋類別。選取了數據集中的吉林、鄭州兩個城市的數據進行實驗,如圖 1 和圖 2 所示。將影像和標簽裁剪為了 256*256 的影像塊以進行深度網絡的訓練和測試,以 7:3 的比例劃分了訓練集和測
196、試集。(a)影像(b)樣本 圖 1 吉林 OHS 影像及樣本 (a)影像(b)樣本 圖 2 鄭州 OHS 影像及樣本 (2)實驗細節 實驗分別在 Tensorflow、Pytorch 和 LuoJiaNET 框架下實現了 FreeNet 網絡,采用的Tensorflow 版本為 2.5.0、Pytorch 版本為 1.11.0、LuoJiaNET 版本為 1.0.0,采用的硬件設備為型號為 Inter(R)Core(TM)i7-10700 CPU 2.90GHz 的 CPU,以及型號為 NVIDIA GeoForce RTX 3070(8G)的 GPU。實驗采用的損失函數為加權交叉熵損失函數,
197、優化器選擇為 Adam,batchsize 大小為2,共訓練了 100 個 epoch,初始學習率為 0.0001,并按照以下公式隨著 epoch 的推進進行衰減(為初始學習率,為當前的 epoch 數,_為總 epoch 數):=(1 _)0.9 (3)精度評價指標 采用了以下定量指標進行精度評價:a.總體精度(OA)指分類正確的樣本數量占總體樣本數量的比例:=1=1=1 其中為混淆矩陣,矩陣的第行第列表示了真實樣本為第類,實際被預測為第類的像素個數。b.Kappa 系數 評價了分類結果和真實樣本分布的一致性:=1 =1=1=1=+=1()=1=12 c.生產者精度(PA)指每一類分類正確的
198、樣本個數占所有這一類樣本個數的比例:=1 d.用戶精度(UA)指每一類分類正確的樣本個數占所有被分為這一類的樣本個數的比例:=1 e.F1 分數 生產者精度和用戶精度的調和平均:1=2 +f.交并比(IoU)每一類實際提取的像素和真實的像素的交集和并集的比值:=()()其中表示實際提取的像素的集合,表示真實的像素的集合。除了測試模型的精度之外,還計算了模型在訓練和測試過程中消耗的時間和所占用的顯存,以測試不同框架的運行效率。(4)實驗結果 FreeNet 網絡實驗結果 得到的 FreeNet 在不同框架下的精度對比如表 1 和表 2 所示。表 1 FreeNet 在不同框架下的測試精度對比(吉
199、林)WHU-OHS-Jilin Tensorflow-FreeNet Pytorch-FreeNet LuoJiaNET-FreeNet 樣本占比 Classname PA UA F1 IoU PA UA F1 IoU PA UA F1 IoU Paddy field 0.614 0.610 0.612 0.441 0.656 0.669 0.662 0.495 0.672 0.657 0.665 0.498 4.8%Dry farm 0.829 0.770 0.798 0.664 0.791 0.811 0.801 0.668 0.832 0.778 0.804 0.672 15.7%Woo
200、dland 0.935 0.989 0.962 0.926 0.965 0.984 0.974 0.950 0.957 0.989 0.973 0.947 60.2%River canal 0.929 0.848 0.887 0.797 0.914 0.806 0.857 0.750 0.840 0.840 0.840 0.724 1.3%Lake 0.998 0.943 0.970 0.941 0.998 0.937 0.967 0.936 0.997 0.958 0.977 0.955 11.4%Reservoir pond 0.505 0.374 0.430 0.274 0.240 0.
201、373 0.292 0.171 0.307 0.791 0.443 0.284 0.6%Shoal 0.395 0.052 0.092 0.048 0.284 0.108 0.156 0.085 0.506 0.346 0.411 0.259 0.1%Urban built-up 0.888 0.987 0.935 0.878 0.918 0.975 0.945 0.896 0.944 0.922 0.933 0.874 3.9%Rural settlement 0.720 0.505 0.594 0.422 0.795 0.520 0.629 0.458 0.651 0.533 0.586
202、0.414 1.7%Other construction land 0.762 0.439 0.557 0.386 0.767 0.551 0.641 0.472 0.775 0.595 0.674 0.508 0.2%Marshland 0.320 0.124 0.179 0.098 0.400 0.173 0.241 0.137 0.491 0.185 0.269 0.155 0.1%Bare rock 0.186 0.879 0.307 0.181 0.077 0.868 0.141 0.076 0.360 0.714 0.479 0.315 0.1%OA 0.901 0.916 0.9
203、16 Kappa 0.839 0.860 0.861 mean F1 0.610 0.609 0.671 mean IoU 0.505 0.508 0.550 表 2 FreeNet 在不同框架下的測試精度對比(鄭州)WHU-OHS-Zhengzhou Tensorflow-FreeNet Pytorch-FreeNet LuoJiaNET-FreeNet 樣本占比 Classname PA UA F1 IoU PA UA F1 IoU PA UA F1 IoU Dry farm 0.771 0.966 0.858 0.751 0.822 0.965 0.888 0.798 0.804 0.9
204、60 0.875 0.778 51.4%Woodland 0.852 0.790 0.820 0.695 0.728 0.729 0.729 0.573 0.876 0.801 0.837 0.719 2.5%Shrubbery 0.013 0.065 0.022 0.011 0.009 0.102 0.017 0.009 0.409 0.549 0.469 0.306 0.2%Sparse woodland 0.298 0.290 0.294 0.172 0.381 0.421 0.400 0.250 0.491 0.553 0.520 0.352 1.6%Other forest land
205、 0.361 0.208 0.264 0.151 0.592 0.241 0.343 0.207 0.396 0.160 0.227 0.128 0.2%High-covered grassland 0.261 0.127 0.170 0.093 0.182 0.095 0.124 0.066 0.566 0.153 0.241 0.137 1.2%Medium-covered grassland 0.197 0.017 0.031 0.016 0.271 0.033 0.059 0.030 0.597 0.096 0.165 0.090 0.1%Low-covered grassland 0
206、.895 0.132 0.231 0.130 0.838 0.159 0.267 0.154 0.721 0.308 0.432 0.275 0.4%River canal 0.943 0.841 0.889 0.800 0.921 0.894 0.907 0.830 0.929 0.851 0.888 0.799 6.4%Lake 0.651 0.896 0.754 0.605 0.538 0.963 0.690 0.527 0.496 0.986 0.660 0.493 0.3%Reservoir pond 0.700 0.369 0.484 0.319 0.654 0.414 0.507
207、 0.340 0.830 0.490 0.616 0.445 2.1%Shoal 0.754 0.463 0.574 0.402 0.798 0.558 0.656 0.488 0.713 0.659 0.685 0.520 3.4%Urban built-up 0.963 0.977 0.970 0.942 0.958 0.990 0.974 0.948 0.951 0.992 0.971 0.943 16.7%Rural settlement 0.831 0.741 0.783 0.644 0.850 0.757 0.801 0.668 0.839 0.774 0.806 0.674 10
208、.1%Other construction land 0.403 0.488 0.442 0.284 0.530 0.473 0.500 0.333 0.603 0.438 0.507 0.340 3.4%OA 0.791 0.819 0.822 Kappa 0.718 0.751 0.756 mean F1 0.506 0.524 0.593 mean IoU 0.401 0.415 0.467 從表 1 和表 2 來看,Tensorflow 框架和 Pytorch 框架的效果相當,Pytorch 略好于Tensorflow;而從 Pytorch 和 LuoJiaNET 框架下的精度對比來看
209、,得到的總體精度指標OA、Kappa 比較接近,這是因為每個測試區域中不同類別的樣本量不均衡,這兩個框架在樣本數量較多的類別上得到的精度是比較接近的。而從每一類的精度上來看,在 LuoJiaNET框架下大部分類別上(特別是樣本較少的類別)都能夠取得比在 Tensorflow 框架和 Pytorch框架下更高的精度,因此得到的類別平均的 F1 分數和平均 IoU 也更高。更進一步地,對隨著迭代的推進模型的訓練集 loss 以及測試集平均 IoU 的變化進行了可視化分析,如圖 3 和圖 4 所示。(a)Loss(b)mIoU 圖 3 訓練集 loss 和測試集 mIoU 隨著迭代的變化(吉林)(a
210、)Loss(b)mIoU 圖 4 訓練集 loss 和測試集 mIoU 隨著迭代的變化(鄭州)從圖 3 和圖 4 可以看出,FreeNet 網絡在 LuoJiaNET 框架下進行訓練的過程中的訓練集 loss 值要明顯比 Tensorflow 框架和 Pytorch 框架下更低,由于采用的 loss 是針對樣本的比例進行了加權的交叉熵損失函數,因此這與 LuoJiaNET 框架下有著更高的各類別精度是比較一致的。此外,從測試集的平均 IoU 隨著迭代的變化可以看出,LuoJiaNET 框架下的訓練過程更加穩定。圖 5 展示了 FreeNet 網絡在不同框架下得到的局部結果可視化對比,可以看出L
211、uoJiaNET 框架下得到的分類結果比其它框架更加準確。(a)影像(b)標簽(c)Tensorflow(d)Pytorch(e)LuoJiaNET 圖 5 FreeNet 網絡局部結果可視化對比 表3展示了不同框架下FreeNet的訓練和測試的效率對比,其中訓練時間為每個epoch所需要的時間,測試時間為整個測試過程所需要的時間。(額外測試了近期發布的LuoJiaNET最新版本 v1.0.5 的運行效率)表 3 FreeNet 在不同框架下的運行效率對比 深度學習框架 訓練時間 測試時間 訓練顯存占用 測試顯存占用 Tensorflow 48.40s/epoch 15.09s 7352MB
212、7268MB Pytorch 45.01s/epoch 5.98s 6436MB 5736MB LuoJiaNET 171.48s/epoch 14.15s 7155MB 3999MB LuoJiaNET_v1.0.5 172.41s/epoch 14.49s 6667MB 2965MB 從表 3 可以看出,LuoJiaNET 除了訓練時間以外都優于 Tensorflow,但只在測試所占用的顯存上優于 Pytorch,并沒有體現出在運行效率上的優勢,出現這種現象的可能原因在于 GPU 驅動和 CUDA 版本不匹配導致底層調度較慢,還有待進一步分析。此外,經測試,最新 v1.0.5 版本的 Lu
213、oJiaNET 能夠顯著降低訓練和測試時的顯存占用,但沒有縮短訓練和測試所需要的時間。HRNet-3D 網絡實驗結果 得到的 HRNet-3D 在不同框架下的精度對比如表 4 和表 5 所示。表 4 HRNet-3D 在不同框架下的測試精度對比(吉林)WHU-OHS-Jilin Tensorflow-HRNet3D Pytorch-HRNet3D LuoJiaNET-HRNet3D 樣本占比 Classname PA UA F1 IoU PA UA F1 IoU PA UA F1 IoU Paddy field 0.490 0.793 0.606 0.434 0.508 0.786 0.617
214、 0.446 0.618 0.703 0.658 0.490 4.8%Dry farm 0.894 0.734 0.806 0.675 0.878 0.730 0.797 0.663 0.856 0.762 0.806 0.675 15.7%Woodland 0.976 0.974 0.975 0.951 0.976 0.973 0.975 0.951 0.970 0.982 0.976 0.952 60.2%River canal 0.630 0.965 0.762 0.616 0.795 0.945 0.863 0.759 0.897 0.908 0.903 0.823 1.3%Lake
215、0.997 0.963 0.979 0.959 0.996 0.957 0.976 0.953 0.996 0.959 0.977 0.955 11.4%Reservoir pond 0.232 0.526 0.322 0.192 0.188 0.563 0.282 0.164 0.193 0.504 0.280 0.162 0.6%Shoal 0.322 0.784 0.456 0.296 0.106 0.601 0.180 0.099 0.517 0.697 0.594 0.422 0.1%Urban built-up 0.838 0.920 0.877 0.781 0.766 0.917
216、 0.834 0.716 0.929 0.975 0.952 0.908 3.9%Rural settlement 0.372 0.699 0.485 0.320 0.437 0.708 0.540 0.370 0.473 0.614 0.535 0.365 1.7%Other construction land 0.570 0.896 0.697 0.535 0.518 0.884 0.653 0.485 0.851 0.886 0.868 0.767 0.2%Marshland 0.021 1.000 0.041 0.021 0.034 0.963 0.065 0.034 0.029 0.
217、444 0.054 0.028 0.1%Bare rock 0.573 1.000 0.729 0.573 0.668 1.000 0.801 0.668 0.666 1.000 0.799 0.666 0.1%OA 0.916 0.914 0.921 Kappa 0.857 0.854 0.868 mean F1 0.645 0.632 0.700 mean IoU 0.529 0.526 0.601 表 5 HRNet-3D 在不同框架下的測試精度對比(鄭州)WHU-OHS-Zhengzhou Tensorflow-HRNet3D Pytorch-HRNet3D LuoJiaNET-HRN
218、et3D 樣本占比 Classname PA UA F1 IoU PA UA F1 IoU PA UA F1 IoU Dry farm 0.939 0.858 0.897 0.813 0.955 0.842 0.895 0.810 0.890 0.923 0.906 0.829 51.4%Woodland 0.069 0.717 0.126 0.067 0.057 0.531 0.104 0.055 0.771 0.817 0.793 0.657 2.5%Shrubbery 0.092 0.153 0.115 0.061 0.066 0.125 0.086 0.045 0.204 0.351
219、0.258 0.148 0.2%Sparse woodland 0.287 0.276 0.281 0.164 0.001 0.100 0.002 0.001 0.173 0.547 0.263 0.151 1.6%Other forest land 0.171 0.079 0.108 0.057 0.193 0.071 0.104 0.055 0.136 0.234 0.172 0.094 0.2%High-covered grassland 0.098 0.100 0.099 0.052 0.060 0.100 0.075 0.039 0.527 0.217 0.308 0.182 1.2
220、%Medium-covered grassland 0.258 0.070 0.110 0.058 0.245 0.305 0.272 0.157 0.480 0.141 0.218 0.122 0.1%Low-covered grassland 0.399 0.683 0.503 0.336 0.092 0.603 0.159 0.087 0.675 0.589 0.629 0.459 0.4%River canal 0.815 0.813 0.814 0.686 0.887 0.831 0.858 0.751 0.945 0.864 0.903 0.823 6.4%Lake 0.010 0
221、.242 0.020 0.010 0.390 0.917 0.547 0.377 0.126 0.920 0.222 0.125 0.3%Reservoir pond 0.769 0.731 0.750 0.600 0.756 0.760 0.758 0.611 0.705 0.625 0.663 0.495 2.1%Shoal 0.573 0.654 0.611 0.440 0.337 0.842 0.482 0.317 0.673 0.748 0.709 0.549 3.4%Urban built-up 0.935 0.958 0.946 0.898 0.966 0.945 0.955 0
222、.914 0.970 0.965 0.968 0.937 16.7%Rural settlement 0.772 0.857 0.812 0.684 0.801 0.804 0.803 0.670 0.821 0.733 0.775 0.632 10.1%Other construction land 0.330 0.492 0.395 0.246 0.365 0.510 0.425 0.270 0.425 0.457 0.441 0.283 3.4%OA 0.826 0.834 0.847 Kappa 0.739 0.746 0.780 mean F1 0.439 0.435 0.548 m
223、ean IoU 0.345 0.344 0.432 HRNet-3D 網絡在不同框架下精度的對比結果與 FreeNet 基本一致,在 LuoJiaNET 框架下能夠得到明顯更高的總體精度以及每一類的精度。此外,從不同網絡的精度對比上看,HRNet-3D 網絡要略好于 FreeNet 網絡。圖 6 和圖 7 對隨著迭代的推進模型的訓練集 loss 以及測試集平均 IoU 的變化進行了可視化分析。(a)Loss(b)mIoU 圖 6 訓練集 loss 和測試集 mIoU 隨著迭代的變化(吉林)(a)Loss(b)mIoU 圖 7 訓練集 loss 和測試集 mIoU 隨著迭代的變化(鄭州)隨著迭代
224、的推進,HRNet-3D 在不同框架下的訓練集 loss 最終能夠收斂到比較接近的值,但是 LuoJiaNET 框架下能夠達到的測試集 mIoU 明顯更高,可見 LuoJiaNET 框架下所訓練的網絡具有更好的泛化能力。圖 8 展示了 HRNet-3D 網絡在不同框架下得到的局部結果可視化對比,LuoJiaNET 框架下得到的地物分類結果更加準確。(a)影像(b)標簽(c)Tensorflow(d)Pytorch(e)LuoJiaNET 圖 8 HRNet-3D 網絡局部結果可視化對比 表 6 展示了不同框架下 HRNet-3D 網絡的訓練和測試的效率對比。(額外測試了近期發布的 LuoJia
225、NET 最新版本 v1.0.5 的運行效率)表 6 HRNet-3D 在不同框架下的運行效率對比 深度學習框架 訓練時間 測試時間 訓練顯存占用 測試顯存占用 Tensorflow 193.54s/epoch 41.35s 7318MB 7270MB Pytorch 200.14s/epoch 19.85s 5087MB 4781MB LuoJiaNET 576.37s/epoch 41.52s 6129MB 3950MB LuoJiaNET_v1.0.5 585.97s/epoch 41.23s 5610MB 2947MB 與 FreeNet 得到的結果較為一致,除了測試階段的顯存占用之外,
226、并沒有體現出LuoJiaNET 框架在效率上的明顯優勢。此外,經測試,最新 v1.0.5 版本的 LuoJiaNET 能夠顯著降低訓練和測試時的顯存占用,但沒有縮短訓練和測試所需要的時間。4.3.1.4 總結 實驗基于 FreeNet 和 HRNet-3D 兩種深度網絡,在遙感專用深度學習框架 LuoJiaNET下完成了高光譜遙感影像地物語義分割的應用,并且與深度學習主流框架 Tensorflow 和Pytorch 進行了對比。實驗結果表明,LuoJiaNET 框架能夠得到比 Tensorflow 框架和Pytorch 框架更加穩定的訓練過程以及更高的語義分割精度,但是除了測試階段能夠占用更少
227、的顯存之外,沒有體現出 LuoJiaNET 框架在效率上的優勢,需要進一步分析其中的原因,可能這也是 LuoJiaNET 可以優化的地方。4.3.2 高光譜地物分類(二)4.3.2.1 任務簡介(1)使用 LuoJiaNET 完成最新 SOTA 的高光譜深度分類網絡 S3ANet 和經典高光譜分類網絡 FreeNet 的搭建與訓練,將 LuoJiaNET 框架應用到高光譜分類任務中;(2)將 LuoJiaNET 和主流的深度學習框架 PyTorch 進行對比,測試 LuoJiaNET 在高光譜分類任務中的性能表現。4.3.2.2 高光譜地物分類網絡簡介 S3ANet 簡介 S3ANet 網絡是
228、由 RSIDEA 研究組提出的高光譜深度分類模型,不同于傳統高光譜分類網絡僅關注于局部空譜特征,S3ANet 網絡以端到端的方式基于全局空譜信息實現高光譜影像精細分類,具備更強的空譜特征提取能力(架構見圖 1)。圖 5 高光譜分類網絡 S3ANet 結構圖 圖 2 S3ANet 中光譜注意力模塊圖 圖 3 S3ANet 中空間注意力模塊圖 圖 4 S3ANet 中尺度注意力模塊圖 為了更好地應對高光譜影像中的光譜異質性問題,緩解較大類內方差帶來的影響,S3ANet 網絡設計利用了光譜注意力模塊,空間注意力模塊和尺度注意力模塊(架構見圖 2,3,4)。編碼器部分由級聯的 33 卷積網絡和空譜注意
229、力模塊構成,光譜注意力可以促使網絡關注更具判別性的波段范圍,33 卷積網絡以較小的卷積核提取高層次的空間特征,二者相互結合提取更魯棒的空譜特征。解碼器部分,每層反卷積網絡均與編碼器輸出特征圖連接。借助空間注意力模塊對低級空間信息進行加權處理,減少編碼器輸出特征圖和解碼器高級語義信息之間的鴻溝,使得網絡在保持良好空間細節信息的同時,提升網絡的語義特征提 取能力。鑒于高光譜影像中地物尺度不一,固定的卷積感受野會局限網絡語義特征的提取,為此,在編碼器和解碼器的連接處,S3ANet 設計了尺度注意力模塊將提取到的多尺度信息進行加權融合,而非 ASPP 中的等比例融合,實現網絡對多尺度信息的捕獲和特征提
230、取。損失方面,S3ANet 網絡在訓練階段除了交叉熵損失,還設計了邊緣角度損失用于更好地應對光譜異質性問題。FreeNet 簡介 FreeNet 是第一個做到端到端 patch-free 的分類架構,其架構如圖 5 所示。編碼器由一系列堆疊的 33 卷積和光譜注意力構成,解碼器由 33 卷積和二倍上采樣操作完成。編碼器和解碼器之間包含多個跨層連接,編碼層輸出經過空譜融合模塊后與解碼層相加,使得網絡在解碼時可以利用編碼器的底層細節信息,兼顧高級語義特征和低級細節特征。圖 5 FreeNet 架構 4.3.2.3 測評結果(1)數據集 本次實驗采用數據集為 RSIDEA 研究組發布的三套無人機高光
231、譜數據集 WHU-Hi-HongHu,WHU-Hi-HanChuan 和 WHU-Hi-JiaYu。所使用三套高光譜數據集影像和光譜信息展示見圖 6,相關類別信息和采集信息見表 1。圖 6 所使用三套高光譜數據集影像和光譜信息展示 表 1 所使用三套高光譜數據集影像類別信息和采集信息 (2)實現細節 使用的 PyTorch 版本是 v1.8.0,LuoJiaNET 版本為 v1.0.0。我們分別在主流的深度學習框架 PyTorch 和我們的 LuoJiaNET 上復現了 S3ANet 和FreeNet 網絡。為了進行公平的對比,兩網絡均在同一硬件上進行訓練和測試。GPU 型號為 Navidia
232、 Geoforce RTX 3090、CPU 型號為 Intel(R)Xeon(R)Silver 4210R CPU 2.40GHz。在進行訓練時,S3ANet 損失函數為邊緣角度損失及交叉熵損失,FreeNet 損失函數為交叉熵損失,優化器選擇為 Adam。S3ANet 和 FreeNet 網絡學習率為 0.001。訓練時的樣本構造采用分層采樣算法。每個樣本保持原始大小,不適用任何數據增強技巧。對于每個類別,本次實驗選取 50 個樣本點進行訓練,其余樣本點進行測試。(3)評價指標 a.精度評價指標(基于混淆矩陣)總體精度 Overall accuracy(OA),平均精度 Average a
233、ccuracy(AA),Kappa 系數。b.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。c.運行時間(Time)記錄了模型在訓練或者推理過程中處理網絡一次反向傳播和前向傳播所需要的時間 (4)定量實驗結果 S3ANet 在三個數據集上的定量結果見表 2,FreeNet 的定量結果見表 3。加粗字體顯示相對最優。精度方面,使用 LuojiaNet 框架訓練的 S3ANet 和 FreeNet 相較于 Pytorch框架,可以取得更優的 OA 和 Kappa 精度,但 AA 略低。顯存方面,FreeNet 使用 LuojiaNet框架占用訓練和推理顯存明顯少于 Pyt
234、orch 框架,S3ANet 在兩個框架上占用顯存相似。時間方面,基于 Pytorch 的兩個模型擁有更少的訓練和推理時間,關于這點我們認為可能是由于以下幾個原因導致。(1)兩種框架底層的梯度下降優化方式(動態圖與靜態圖計算)不同有關;(2)在 LuojiaNET 自定義單步訓練流程需要繼承 nn.TrainOneStepCell 類,然后再定義計算損失的 nn.Module 子類計算反向傳播的損失,單步的網絡反向傳播方式不同,該部分可以考慮繼續優化。(3)在 LuojiaNET 自定義單步訓練流程需要繼承 nn.TrainOneStepCell 類,梯度反向傳播過程中涉及到數據 cpu 和
235、gpu 之間的相互轉換,LuojiaNET 并沒有像 Pytorch 一樣將數據直接轉換成.cuda()和.cpu()格式類型。S3ANet 和 FreeNet 在三個數據集上的混淆矩陣見表 4??梢钥闯?,LuojiaNet 最終得到的單類精度情況和 Pytorch 總體一致。表 2 S3ANet 在三個數據集上的定量結果 OA AA Kappa 訓練顯存 推理顯存 訓練時間 推理時間 HongHu Pytorch 96.43 97.20 95.51 8921M 3805M 0.520s 0.462s LuojiaNet 96.53 96.89 95.63 9459M 4409M 0.453s
236、 0.746s LongKou Pytorch 97.70 98.26 96.99 5181M 2743M 0.532s 0.482s LuojiaNet 98.49 98.21 98.03 5361M 3001M 0.379s 0.612s HanChaun Pytorch 96.28 96.70 95.32 6447M 3447M 0.537s 0.464s LuojiaNet 96.97 96.59 96.46 6857M 3513M 0.479s 0.724s 表 3 FreeNet 在三個數據集上的定量結果 OA AA Kappa 訓練顯存 推理顯存 訓練時間 推理時間 HongHu
237、 Pytorch 95.25 95.78 94.02 9635M 4291M 0.134s 0.012s LuojiaNet 95.68 95.56 94.57 8953M 3009M 2.462s 0.179s LongKou Pytorch 96.95 97.53 96.02 5513M 3021M 0.076s 0.016s LuojiaNet 97.31 97.43 96.48 4985M 2241M 2.063s 0.384s HanChaun Pytorch 94.22 94.11 93.27 6723M 3839M 0.129s 0.013s LuojiaNet 94.67 94
238、.28 93.79 6649M 3523M 2.165s 0.139s 表 4 S3ANet 和 FreeNet 在三個數據集上的單類精度 S3ANet LuojiaNet S3ANet Pytorch FreeNet LuojiaNet FreeNet Pytorch HongHu LongKou HanChuan (5)定性可視化 S3ANet 和 FreeNet 在三個高光譜分類數據集上的定性結果見圖 7-9。從結果可以看出,Luojianet 輸出的分類圖具備更少的噪點和更平滑的邊界,與定量結果展示的優越性一致。圖 7 S3ANet 和 FreeNet 在洪湖數據集上的定性對比 圖 8
239、 S3ANet 和 FreeNet 在龍口數據集上的定性對比 圖 9 S3ANet 和 FreeNet 在漢川數據集上的定性對比 4.3.2.4 時間占用分析 從第三節的定量結果可以看出,雖然 LuojiaNet 在精度和顯存占用方面略優于 Pytorch,但在 FreeNet 的相關實驗中,訓練和推理時間明顯多于 Pytorch。為了找見具體原因,我們將時間分析細化到每一層,并分開展示了損失計算,梯度計算和參數更新這些步驟。分析結果見表 5。所有測試均在相同條件下進行。從結果可以看出,LuojiaNet占用時間明顯較多的算子為GN,AvgPool2d和interplote算子。此外,Luoj
240、iaNet 在損失計算,梯度計算和參數更新這三個步驟上消耗時間明顯多于 Pytorch。其中,梯度計算消耗時間最為嚴重。表 5 FreeNet 包含算子在三個數據集上訓練時間的具體分析 HongHu Luojianet HongHu Pytorch LongKou LuojiaNet LongKou Pytorch HanChuan Luojianet HanChuan Pytorch conv3x3 0.0004 0.0066 0.0004 0.0033 0.0009 0.0160 GN 0.0031 0.0021 0.0032 0.0011 0.0088 0.0021 Relu 0.000
241、2 0.0004 0.0002 0.0002 0.0006 0.0005 SEBlock-AvgPool2d 0.0060 0.0003 0.0056 0.0002 0.0008 0.0001 SEBlock-Linear 0.0016 0.0003 0 0.0003 0.0001 0.0003 SEBBlock-Multiply 0.0004 0.0005 0.0008 0.0002 0.0006 0.0002 Idendity 0 0 0 0 0 0 Interpolate 0.0014 0.0002 0.0012 0.0001 0.0015 0.0002 Loss 計算 0.0025 0
242、.0005 0.0025 0.0003 0.0025 0.0004 梯度計算 2.2011 0.0506 1.2084 0.0448 1.9027 0.0757 更新參數 0.0617 0.0060 0.0708 0.0043 0.0620 0.0035 4.3.2.5 總結 基于 LuoJiaNET 框架,已經完成了高光譜分類的典型應用。在高光譜分類任務中,LuoJiaNET 相比于主流深度學習框架 PyTorch,部分精度指標有一定提升,總體相差不大。在顯存占用上,也略優于 PyTorch。不過,LuoJiaNET 需要更長的訓練和推理時間。4.3.3 高空間分辨率地物分類(一)4.3.3
243、.1 任務簡介(1)使用 LuoJiaNET 完成經典深度學習語義分割網絡 UNet 和 HRNet 的搭建與訓練.(2)將 LuoJiaNET 和主流的深度學習框架 PyTorch、Tensorflow 進行對比,測試LuoJiaNET 在語義分割任務中的性能表現。4.3.3.2 高分辨率地物分類網絡簡介 HRNet 和 UNet 分別代表了 CNN 在語義分割任務上的兩大網絡體系,一種是并行不同分辨率的卷積流并不斷進行信息交互的高分辨率網絡結構,一種是經過不斷卷積池化提取特征后在恢復原始分辨率的編解碼體系。UNet 網絡結構 HRNet 網絡結構 4.3.3.3 測評結果(1)GID 數據
244、集 GID 數據集包括兩個部分:大規模分類集和精細土地覆蓋分類集。本次測試選用大規模分類集部分。該部分包括訓練集 120 張,輸入為 512*512,初始學習率 1e-1,并使用余弦退火策略,最大迭代次數為 90,并使用旋轉、翻轉、顏色抖動等數據增強方式。需要注意的是,繼續訓練網絡更多的迭代次數仍可使得測驗證集 30 張(6800*7200)。波段為 RGB 形式或NIR+RGB(6800*7200*4)。分為5類(build-up、farmland、forest、meadow、water)。下圖為樣本地理位置分布及圖片示例。(2)實現細節 訓練時,所有網絡批次大小為 24,試精度上升。(3)
245、評價指標 在實驗中,采用的定量指標如下:a.平均交并比(MIOU)MIOU=1k+1TPTP+FP+FNki=0 b.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。c.幀率(FPS)每秒處理的圖片數量。(4)實驗結果 表 6 精度結果對比 MIOU Build-up Farmland Forest Meadow Water UNet-Pytorch 62.89 63.34 63.28 41.04 65.96 80.85 UNet-Luojianet 63.66 62.80 65.28 45.67 64.57 79.97 UNet-Tensorflow 61.33 62
246、.82 65.42 38.13 61.80 78.49 HRNet-Pytorch 61.34 62.47 64.78 40.51 58.38 80.55 HRNet-Luojianet 62.58 62.92 64.90 43.26 61.71 80.10 HRNet-Tensorflow 62.58 60.34 66.55 41.94 63.46 80.60 表 7 時間與顯存占用對比 UNet HRNet Training Inference Training Inference Memory FPS Memory FPS Memory FPS Memory FPS Pytorch 20
247、694 38 7540 115 18550 30 5536 94 Luojianet 21996 24 9652 32 19936 15 5556 30 Tensorflow 23641 31 9510 50 33191 11 7462 25 顯存占用以及 FPS 為在 RTX3090、輸入數據尺寸為(24,3,512,512)時測得。在精度上,LuoJiaNet 與 PyTorch 差別不大,有微弱優勢。在效率上,LuoJiaNet 在內容和處理速度上均不如 PyTorch,但比 Tensorflow 的內存占用小,處理速度相當。(5)結果可視化 精度差別不大,預測結果未見明顯區別。4.3.
248、3.4 總結 基于 LuoJiaNET 框架,已經完成了高分辨率遙感地物語義分割的典型應用。在高分辨率語義分割任務中,LuoJiaNET 相比于主流深度學習框架 PyTorch、Tensorflow,具有相當的精度,在效率上低于 Pytorch。4.3.4 高空間分辨率地物分類(二)4.3.4.1 任務簡介(1)使用LuojiaNET完成/完善常用遙感語義分割深度學習網絡U-Net、DeepLabv3、DeepLabv3+的搭建、訓練與推理實驗,將 LuojiaNET 框架應用到遙感語義分割任務中;(2)將 LuojiaNET 和主流的深度學習框架 PyTorch 進行對比,測試 Luojia
249、NET 在遙感語義分割任務中的性能表現。4.3.4.2 高分辨率地物分類網絡網絡簡介 U-Net 簡介 圖 1 U-Net 結構圖 U-Net 的 U 形結構如圖 1 所示。是由卷積和 Max Pooling 構成的一系列降采樣操作,壓縮路徑由 4 個 block 組成,每個 block 使用了 3 個有效卷積和 1 個 Max Pooling 降采樣,每次降采樣之后 Feature Map 的個數乘 2,因此有了圖中所示的 Feature Map 尺寸變 化。最終得到了尺寸為的 Feature Map。同樣由 4 個 block 組成,每個 block 開始之前通過反卷積或上采樣將 Feat
250、ure Map 的尺寸乘 2,同時將其個數減半(最后一層略有不同),然后和左側對稱的壓縮路徑的 Feature Map 合并,由于左側壓縮路徑和右側擴展路徑的Feature Map 的尺寸不一樣,U-Net 是通過將壓縮路徑的 Feature Map 裁剪到和擴展路徑相同尺寸的 Feature Map 進行歸一化的(即圖 1 中左側虛線部分)。擴展路徑的卷積操作依舊使用的是有效卷積操作,最終得到的 Feature Map 的尺寸。DeepLab 系列簡介 圖 2 DeepLabv3 網絡結構圖 對于 DeepLabv3 網絡結構,原始圖像經過 encoder 特征提取,逐次下采樣 4 次,在第
251、 4 個 block 之后經過 ASPP 模塊,經過不同的空洞卷積最后進行特征融合,其經過 1x1的分類層后直接雙線性插值到原始圖片大小,輸出分類結果。圖 3 DeepLabv3+網絡結構圖 DeepLabv3+模型的整體架構如圖 3 所示,它的 Encoder 的主體是帶有空洞卷積的DCNN,可以采用常用的分類網絡如 ResNet,然后是帶有空洞卷積的空間金字塔池化模塊(Atrous Spatial Pyramid Pooling,ASPP)),主要是為了引入多尺度信息;相比DeepLabv3,v3+引入了 Decoder 模塊,其將底層特征與高層特征進一步融合,提升分割邊界準確度。4.3.
252、4.3 測評結果(1)數據集:ISPRS Vaihingen 數據集 ISPRS 提供了城市分類和三維建筑重建測試項目的兩個最先進的機載圖像數據集。該數據集采用了由高分辨率正交照片和相應的密集圖像匹配技術產生的數字地表模型(DSM)。這兩個數據集區域都涵蓋了城市場景。Vaihingen 是一個相對較小的村莊,有許多獨立的建筑和小的多層建筑;Postdam 是一個典型的歷史城市,有著大的建筑群、狹窄的街道和密集的聚落結構。每個數據集已手動分類為 6 個最常見的土地覆蓋類別,分別是不透水面、建筑物、低矮植被、樹木、汽車、背景,其中背景類包括水體和與其他已定義類別不同的物體(例如容器、網球場、游泳池
253、),這些物體通常屬于城市場景中的不感興趣的語義對象。影像分辨率約為 0.1 米。該數據集包含 33 幅不同大小的遙感圖像,每幅圖像都是從一個更大的頂層正射影像圖片提取的,圖像選擇的過程避免了出現沒有數據的情況。頂層影像和 DSM 的空間分辨率為 9 cm。遙感圖像格式為 8 位 TIFF 文件,由近紅外、紅色和綠色 3個波段組成。DSM 是單波段的 TIFF 文件,灰度等級(對應于 DSM 高度)為 32 位浮點值編碼,具體可視化圖像如圖 4 所示。圖 4 ISPRS Vaihingen 數據集 從數據集的地物空間分布來看,該數據集的主要挑戰如下:(1)地物類別不平衡;(2)不同地物在影像中尺
254、度差異大,光譜相似;(3)目標背景復雜,建筑物陰影遮擋等問題。(2)實現細節 在數據預處理時,選用 Vaihingen 數據集中的編號為 1、11、13、15、17、21、23、26、28、3、30、32、34、37、5、7 的 RGB 圖像作為訓練集,以滑動窗口 512*512,步長 256 對圖像裁切,選用 Vaihingen 數據集中的編號為 6、24、35、16、14、22、10、4、2、20、8、31、33、27、38、12、29 的 RGB 圖像作為驗證集,同樣以滑動窗口 512*512,步長 256 對圖像裁切。本次實驗使用的 PyTorch 版本是 v1.8.0,LuojiaN
255、ET 版本為 v1.0.0。分別在主流的深度學習框架 PyTorch 和 LuojiaNET 上復現 U-Net、DeepLabv3 和 DeepLabv3+網絡。為了進行公平的對比,兩網絡均在同一硬件上進行訓練和測試。GPU型號為Navidia Geoforce RTX 3090、CPU 型號為 Intel(R)Xeon(R)Silver 4210R CPU 2.40GHz。在進行訓練時,采用的損失函數為多類交叉熵 CE 損失,優化器選擇為 Adam。學習率統一固定為 0.0001,batch size 設置為 8,訓練共 200 輪,每輪 43 次迭代。數據增強采用隨機水平旋轉、垂直旋轉、
256、隨機 90 度旋轉、圖像轉置。驗證時對 398 張 512*512 的圖像直接推理驗證。此外在訓練中由于背景類是除上述 5 類地物的其他地物類別,因此背景類需要參與到網絡訓練過程,網絡最終輸出類別為 6,并參與最終的定量評價。(3)評價指標 在實驗中,采用的定量指標如下:a.精度評價指標(基于混淆矩陣)各類別的交并比(IoU),總體精度 Overall accuracy(OA),Kappa 系數與平均交并比(mIoU)。b.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。c.運行時間(Time)記錄了模型在訓練或者推理過程中處理網絡一次反向傳播和前向傳播所需要的時間 (
257、4)定量實驗結果 表 1 三種語義分割網絡分類精度結果 方法 框架 IoU(%)OA Kappa mIoU 不透水面 建筑物 低矮植被 樹木 汽車 背景 U-Net Pytorch 78.21 84.27 67.00 75.44 54.78 11.78 86.10 81.61 61.91 LuojiaNET 78.06 83.25 65.20 73.89 59.39 22.80 85.47 80.79 63.77 DeepLabv3 Pytorch 75.88 81.61 62.11 73.23 44.19 17.35 84.11 78.99 59.06 LuojiaNET 76.71 81.
258、86 63.27 71.54 49.45 13.50 84.25 79.15 59.39 DeepLabv3+Pytorch 75.61 82.08 59.45 71.29 41.08 18.98 83.51 78.17 58.09 LuojiaNET 76.37 80.79 62.20 72.05 41.68 10.64 83.80 78.57 57.29 U-Net、DeepLabv3 和 DeepLabv3+在三個高光譜分類數據集上的定量結果見表 1,從結果看出,LuojiaNET 與 Pytorch 訓練結果總體相差不大,且在部分指標上 LuojiaNET可取得更高的精度。表 2 三種
259、語義分割網絡運行在兩種框架下的效率對比 方法 框架 訓練顯存(M)訓練時間(s)測試顯存(M)測試時間(s)U-Net Pytorch 16491 0.21 2461 0.01 LuojiaNET 15345 0.25 2235 0.02 DeepLabv3 Pytorch 12079 0.62 2517 0.02 LuojiaNET 12273 0.70 1989 0.03 DeepLabv3+Pytorch 7663 0.21 2289 0.02 LuojiaNET 7514 0.38 1733 0.02 兩種框架在運行效率指標下,LuojiaNET 在大多數網絡架構中訓練與測試顯存占用更
260、少,在訓練時間上LuojiaNET 的訓練時間訓練較慢,可能的原因如下:(1)兩種框架底層的梯度下降優化方式(動態圖與靜態圖計算)不同有關;(2)在 LuojiaNET 自定義單步訓練流程需要繼承 nn.TrainOneStepCell 類,然后再定義計算損失的 nn.Module 子類計算反向傳播的損失,單步的網絡反向傳播方式不同,該部分可以考慮繼續優化。(3)在 LuojiaNET 自定義單步訓練流程需要繼承 nn.TrainOneStepCell 類,梯度反向傳播過程中涉及到數據 cpu 和 gpu 之 間的相互轉換,LuojiaNET 并沒有像 Pytorch 一樣將數據直接轉換成.c
261、uda()和.cpu()格式類型??赡苁且陨先齻€原因導致訓練時間。測試時間上相差不大。(5)定性可視化 圖 5 ISPRS Vaihingen 定性結果可視化 與 Pytorch 相比,LuojiaNET 在分類邊界表現更平滑,椒鹽噪聲較少。4.3.4.4 總結 基于 LuojiaNET 框架,完成高分辨率遙感語義分割任務典型應用。LuojiaNET 相比于主流深度學習框架 Pytorch,部分精度指標有一定提升,總體相差不大,在運行效率方面,LuojiaNET 在本報告大多數網絡架構中訓練與測試顯存占用更少,測試時間相差不大,但訓練時間不占優,后期可繼續優化訓練流程。4.4 變化檢測 4.4
262、.1 任務簡介(1)使用 LuoJiaNET 完成/完善全要素變化檢測深度學習網絡 DTCDSCN、DSIFN 和單要素(建筑物)變化檢測網絡 BuildingChangeDetection(均已上傳 gitee 模型庫)的搭建、訓練與推理實驗,將 LuoJiaNET 框架應用到變化檢測任務中;(2)將 LuoJiaNET 和主流的深度學習框架 PyTorch 進行對比,測試 LuoJiaNET 在變化檢測任務中的性能表現。4.4.2 變化檢測網絡簡介 4.4.2.1 全要素變化檢測網絡 DTCDSCN1(Dual Task Constrained Deep Siamese Convoluti
263、onal Network)網絡是一個雙任務約束的孿生卷積神經網絡,它的整個網絡包括一個變化檢測模塊和兩個語義分割模塊 SSN,引入了雙注意力模塊(Dual Attention Module,DAM),整個網絡的輸出是一個變化檢測圖和兩時相分割結果圖。其中變化檢測網絡是基于孿生神經網絡的,其網絡結構具有兩個共享權重的編碼器,以及一個解碼器。采用 SE-ResNet 作為基礎的編碼器模塊。為了利用全局上下文信息,引入了空間特征金字塔池化模塊作為中心塊,這樣可以增大特征圖的感受野,并嵌入不同尺度的上下文特征。解碼器使用 D-LinkNet,其中每個變化檢測塊(CD block)都有 3 個輸入??紤]
264、到來自不同空間位置和不同通道的特征可能會相關,以及受到注意力機制的啟發,在解碼器部分加入了 DAM 注意力模塊,因此可以提高特征提取的辨別能力。圖 1 雙任務約束的孿生卷積神經網絡 DTCDSCN 結構圖 DSIFN2(deeply supervised image fusion network)包括深度特征提取網絡 DFEN和差異判別網絡 DDN。首先通過完全卷積的雙流架構(DFEN)提取具有高度代表性的雙時圖像深度特征,然后將提取的深度特征輸入深度監督的差異判別網絡(DDN)進行變化檢測。為了提高輸出變化圖中對象的邊界完整性和內部緊湊性,模型還增加了注意力模塊將原始圖像的多層深度特征與圖像
265、差異特征融合,通過直接向網絡中間層引入變化圖損失來進一步增強 DDN,并以端到端的方式訓練整個網絡。圖 2 深度監督圖像融合網絡網絡 DSIFN 結構圖 4.4.2.2 單要素變化檢測網絡 BuildingCD 是一個基于建筑檢測先驗知識的端到端變化檢測方法,是一種基于遷移學習思想的新型多任務網絡,該網絡主要包括建筑物提取分支和變化檢測分支,并加入了對象級細化算法。該網絡利用建筑提取數據集對建筑提取分支進行預訓練,使網絡的特征提取模塊能夠更好地提取建筑特征。因此,后續網絡訓練只需要少量的建筑物變化檢測樣本也可以達到優異的檢測效果。并且為充分利用建筑提取分支的結果提高變化檢測精度,提出一種對象級
266、細化算法。結合變化檢測分支和建筑物提取分支的結果,選擇變化面積大于預定義閾值的建筑掩膜作為最終變化檢測結果,提高了變化檢測結果的準確性和視覺效果。與其他多任務變化檢測網絡相比其優點在于:該網絡借助高精度建筑掩膜可以充分利用來自建筑檢測分支的先驗信息,并可通過其對象級細化算法進一步提高變化檢測結果。圖 3 BuildingCD 網絡結構圖 4.4.3 測評結果(1)變化檢測數據集:WHU-BCD 數據集 WHU-BCD 數據集是一個大規模建筑物變化檢測數據集,整個數據集涵蓋了 2011 年 2 月發生 6.3 級地震并在隨后幾年重建的區域。該數據集由 2012 年 4 月獲得的航拍圖像組成,包含
267、 20.5 平方公里內的 12796 座建筑物(2016 年數據集中同一區域的 16077 座建筑物)。通過在地表手動選擇 30 個 GCP,子數據集被地理校正為航空數據集,精度為 1.6 像素。每個樣本包含一個前時期影像、后時期影像、前時期建筑物 mask,后時期建筑物 mask 以及發生變化的二值 label。為了方便深度學習的訓練與測試,樣本的尺寸已經被統一裁剪為 512*512 大小的圖像,影像分辨率約為 0.1 米。(2)實現細節 PyTorch 版本:v1.6.0 LuoJiaNET:v1.0.0 GPU 型號:GeForce GTX 3080(10G)CPU 型號:Intel(R
268、)Xeon(R)Gold 6126 CPU 2.60GHz 數據集大?。?500 張大小為 5125123 的影像對 優化器:Adam 學習率:0.001,batch_size:5,epoch:500(3)評價指標 在實驗中,采用的定量指標如下:a.精度評價指標(基于混淆矩陣)Precision=+(1)IoU=+(2)Recall=+(3)F1=(Precision Recall 2)(Precision+Recall)(4)b.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要的顯存占用。c.運行時間(Time)記錄了模型在訓練或者推理過程中處理一個樣本所需要的時間。(4)實驗情
269、況 DTCDSCN 網絡 表 8 DTCDSCN 精度結果對比 Methods Precision Recall F1 IoU DTCDSCN(LuojiaNET)88.210 97.381 0.89894 85.999 DTCDSCN(PyTorch)72.052 93.444 0.81365 81.203 從表 1 和圖 4 可以看出,Luojianet 環境下,模型各項指標均高于 pytorch 環境,且均 達到 85%以上,從視覺效果上來看 luojianet 環境下的模型提取效果更優,pytorch 環境下的模型漏檢高,且邊界不完整,而在 luojianet 環境下該模型能夠提取出更
270、為完整、邊界更準確的變化建筑.表 9 DTCDSCN 時間與顯存占用對比(batch_size=1)Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)DTCDSCN(LuojiaNET)4372 82.3 2781 0.16 DTCDSCN(PyTorch)5091 136.9 3522 0.211 使用 LuoJiaNET 框架進行訓練,內存消耗比 PyTorch 略小,訓練時間減少接近一半;在推理過程中,LuoJiaNET 推理速度稍快,內存占用較 Pytorch 也小。圖 4 可視化結果 DSIFN 網絡 表 1
271、0 DSIFN 精度結果對比 Methods Precision Recall F1 IoU DSIFN(LuojiaNET)95.896 89.910 0.9083 86.687 DSIFN(PyTorch)96.552 80.517 0.8708 78.267 從表 3 和圖 5 可以看出,Luojianet 環境下,模型虛檢略高于 pytorch 環境,但 IoU 和F1 遠超 pytorch 環境,能夠提取出更為完整、邊界更準確的變化建筑,Luojianet 環境下的 DSIFN 整體提取效果要優于 pytorch 環境.表 11 DSIFN 時間與顯存占用對比(batch_size=
272、1)Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)DSIFN(LuojiaNET)4540 253.1 3459 0.103 DSIFN(PyTorch)4664 425.65 2530 0.158 從表 4 可以看出,使用 LuoJiaNET 進行訓練,內存消耗比 PyTorch 略小,訓練時間減少接近一半;在推理過程中,LuoJiaNET 推理速度稍快,但是內存消耗較 Pytorch 占用更多(暫未更新到最新版 luojianet)。圖 5 DSIFN 可視化結果 BuildingCD 網絡 表 5 Build
273、ingCD 精度結果對比 Methods Precision F1 Recall BuildingCD(LuojiaNET)87.030 0.85803 95.933 BuildingCD(PyTorch)94.570 0.9374 92.930 從表 5 和圖 6 可以看出,使用 LuoJiaNET 進行訓練后的模型進行推理評估,模型召回率高于 pytorch 環境,且各項指標均達到 85%以上,反映出 Luojianet 環境下的該模型虛檢稍高,但 luojianet 下的模型比 Pytorch 環境下的模型漏檢更少,整體檢測效果更優。表 6 BuildingCD 時間與顯存占用對比(ba
274、tch_size=1)Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)BuildingCD(LuojiaNET)5008 2781 BuildingCD(PyTorch)5155 2436 從表 6 可以看出,使用 LuoJiaNET 進行訓練,內存消耗比 PyTorch 略??;但在推理過程中,顯存消耗較 Pytorch 占用更多,暫未更新 1.0.5 版本測試,更新后將繼續進行測試。圖 6 可視化結果 4.5 多視三維 4.5.1 雙目立體 4.5.1.1 任務簡介 (1)使用 LuoJiaNET 完成經典的深度學
275、習雙目立體匹配網絡 GC-Net 的搭建與訓練,將 LuoJiaNET 框架應用到立體匹配與三維重建任務中;(2)基于搭建的 GC-Net 模型,將 LuoJiaNET 和主流的深度學習框架 PyTorch 以及 Tensorflow 進行對比,測試 LuoJiaNET 在立體匹配任務中的性能表現。4.5.1.2 雙目立體匹配網絡 GC-Net 簡介 GC-Net 1(Geometry and Context Network)是一個經典的深度學習雙目立體匹配模型,它以端到端的方式完成了雙目密集匹配的過程,以糾正后的核線立體像對為輸入,由網絡學習特征映射得到視差圖,無需任何手工設計特征和后處理就
276、能達到子像素級別的立體匹配,大大減少工程設計的復雜性。GC-Net 的組成部分包含特征提取模塊、代價體構建模塊、代價體正則化模塊、回歸模塊四大部分組成。在特征提取模塊中,網絡通過共享權重的一系列 2D 卷積對左右核線影像對進行高維特征的提取。在代價體構建模塊,將左右影像特征進行“錯位疊合”,形成一個形狀為 WHD 代價體(其中,W、H 和 D 分別代表了影像的寬度、高度與最大視差)。其中,“錯位疊合”的具體含義是,重復將右影像特征沿著視差方向移動,再與左影像特征進行串聯,每次移動一個像素,直到達到最大視差處停止。在代價體正則化模塊中,利用多尺度的 3D 卷積和 3D 轉置卷積對代價體進行正則化
277、,融合空間方向上和視差搜索方向上的特征信息,進行代價聚合。在回歸模塊,利用 soft argmin 運算從正則化后的代價體中得到歸一化的概率體,以歸一化的概率值作為權重,對搜索范圍內的每個視差值 d 進行加權求和,從而回歸出平面視差圖。最后利用 L1 范式將網絡得到的平面視差圖與輸入的真實視差圖比較,比較結果用于迭代訓練模型。GC-Net 網絡以三維特征的形式同時考慮了圖像平面特征和視差值,具有極高的魯棒性和準確性,是目前大多數立體匹配方法的基礎架構。圖 6 雙目立體匹配網絡 GC-Net 結構圖 4.5.1.3 測評結果(1)數據集 LuojiaSET-多視三維數據集 采用 LuojiaSE
278、T-多視三維數據集中的 WHU-Stereo 子數據集。WHU-Stereo 是一個大規模合成航空影像雙目立體匹配數據集。整個數據集包含訓練集和測試集,其中訓練集和測試集包含的樣本數分別是 8316 組和 2618 組。每一個樣本包含左影像、右影像以及左影像對應的視差圖。為了便于深度學習的訓練與測試,樣本的尺寸已經被統一裁剪為 768384像素。影像數據的分辨率約為 10 cm。(2)實現細節 我們分別在主流的深度學習框架 PyTorch、Tensorflow 以及我們的 LuoJiaNET 上復現了 GC-Net 網絡,在后文中分別簡寫為 GC-Net(PyTorch)、GC-Net(Ten
279、sorflow)與 GC-Net(LuoJiaNET)。其中使用的Pytorch版本是V1.8.0,使用的Tensorflow版本是V1.13.1,使用的 LuojiaNET 版本是 V1.0.0。為了進行公平的對比,三個網絡均在同一硬件上進行訓練和測試,所有超參數和網絡架構均保持一致。GPU 型號為 GeForce GTX 1080Ti(11G)、CPU型號為Intel(R)Core(TM)i9-7900X CPU 3.30GHz,使用的CUDA的版本是V10.1。在進行訓練時,最大視差設置為 160,每個樣本被隨機裁剪為 512256 像素的小塊,采用的損失函數為 L1 損失,優化器選擇為
280、 RMSProp,學習率固定為 0.001,批次數設置為 1,訓練共 20 個輪次,共計約 17 萬次迭代。推理時的參數設置與訓練過程保持一致,最大視差設置為 160,樣本大小為 512256 像素。(3)評價指標 在實驗中,采用的定量指標如下:a.平均絕對誤差(Mean Absolute Error,MAE)統計模型預測視差圖與視差圖真值之間絕對差異的平均值,計算方式如下:1=1|()|(1)其中,yi為視差真值,而f(xi)為視差估計值,其中m為影像中有效像素的數量,x代表了影像上的像素。b.n像素精度占比(n-pixel)統計模型預測視差圖與視差圖真值之間的絕對差異小于n個像素的像素數量
281、占比,計算方式如下:|()|=11=1(2)其中,為艾佛森括號,當括號內的條件滿足時為 1,否則為 0.c.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要占用的峰值顯存。d.運行時間(Time)記錄了模型在訓練或者推理過程中處理一個樣本所需要的時間。(4)實驗結果 表 12 精度結果對比 Methods MAE(pixel)1-pixel(%)2-pixel(%)3-pixel(%)GC-Net(LuojiaNET)0.176 98.12 98.98 99.31 GC-Net(PyTorch)0.202 97.88 98.83 99.20 GC-Net(Tensorflow)0.
282、235 96.87 98.16 98.67 從表 1 可知,相比于 PyTorch 和 Tensorflow 構建的模型,使用 LuoJiaNET 構建的 GC-Net 網絡在精度上均有所提升。與 PyTorch 構建的模型相比,在平均絕對誤差(MAE)指標上提升約 12%,在一像素(1-pixel)、兩像素(2-pixel)、三像素(3-pixel)精度占比指標上分別提升約 0.24%、0.15%和 0.11%。相比于 Tensorflow 模型,LuoJiaNET 構建的 GC-Net 網絡在精度上也有優勢,在平均絕對誤差(MAE)指標上提升約 25%,在一像素(1-pixel)、兩像素(
283、2-pixel)、三像素(3-pixel)精度占比指標上分別提升約 1.25%、0.82%和 0.64%。表 2 時間與顯存占用對比 Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)GC-Net(LuojiaNET)7587M 1.63s 4515M 0.28s GC-Net(PyTorch)8695M 2.75s 3085M 0.45s GC-Net(Tensorflow)8671M 0.83s 4575M 0.27s 從表 2 可以看出,使用 LuoJiaNET 進行訓練時,內存消耗比 PyTorch 以及 Te
284、nsorflow略小,在本模型上減少約 12%;在本模型上訓練時,訓練時間相比于 PyTorch 減少約 33%,相比于 Tensorflow 的訓練時間增加約 1 倍。在推理過程中,顯存占用較 PyTorch 要略高,與 Tensorflow 的占用基本持平;LuojiaNet 構建的模型的推理時間與 Tensorflow 基本持平,相比于 PyTorch,推理時間減少約 37%。(5)結果可視化 左圖 真實視差圖 預測視差圖(LuoJiaNet)預測視差圖(Pytorch)預測視差圖(Tensorflow)圖 2.GC-Net 模型推理的視差圖可視化結果。從上到下,分別是不同的樣本,樣本編
285、號分別為 009_53/006003、009_53/009010、009_59/005006 與 012_38/011008。從左到右,分別是左影像、視差圖真值、GC-Net(LuoJiaNET)模型的預測結果、GC-Net(PyTorch)的預測結果和 GC-Net(Tensorflow)模型的預測結果。4.5.1.4 總結 基于 LuoJiaNET 框架,實現了立體匹配網絡,完成了在三維重建任務上的典型應用。在立體匹配與三維重建任務中,基于復現的雙目立體匹配網絡 GC-Net,在 WHU-Stereo數據集中的實驗證明了:LuoJiaNET 相比于主流深度學習框架 PyTorch,在結果精
286、度上,提高約 10%20%左右;在訓練和推理的時間占用上,降低約 30%左右;在訓練的顯存占用上,減少約 10%左右,但是在推理時,顯存占用較 PyTorch 略高。相比于靜態圖模型的Tensorflow,在結果精度上提高約 20%30%,LuoJiaNET 在訓練時的顯存占用略高,訓練時間增加約 1 倍,在推理時,二者的顯存占用和時間占用基本持平。4.5.2 多視密集匹配 4.5.2.1 任務簡介 (1)使用LuoJiaNET完成經典的深度學習多視密集匹配網絡MVSNet的搭建與訓練,將 LuoJiaNET 框架應用到多視立體匹配與三維重建任務中;(2)基于搭建的 MVSNet 模型,將 L
287、uoJiaNET 和主流的深度學習框架 PyTorch、TensorFlow 進行對比,測試 LuoJiaNET 在多視密集匹配任務中的性能表現。4.5.2.2 多視密集匹配網絡 MVSNet 簡介 MVSNet1(Multi-view Stereo Network)是一種經典的端到端深度學習多視密集匹配模型,用于對具有多視角影像的場景的密集匹配,不借助于核線影像和視差值,而直接從原始多視影像出發,以一張中心影像和幾張輔助影像,以及與影像對應的相機位姿參數作為輸入,得到中心影像對應的深度圖。MVSNet 組成部分包括特征檢測模塊、代價體構建模塊、代價體規則化模塊、回歸模塊、深度精化模塊五個部分
288、組成。在特征檢測模塊中,通過一個由八個卷積層構成的2D CNN模塊提取輸入的 N 張影像的深層特征表示,最終得到下采樣四倍后的 N 個 32 通道的影像特征圖。在代價體構建模塊,利用相機參數將特征圖構建為以深度為第三維的 3D 代價體。利用相機參數將特征圖構建為以深度為第三維的 3D 代價體。所有特征圖轉換為在不同深度d處的一系列互相平行的平面Fi。第 i 張特征圖到深度 d 處的平面的坐標映射轉換關系由 33 的單應矩陣 Hi(d)表示:()=(1)1)1 1 每張特征圖在不同深度d處得到一張平面特征,給定多個d值可得到多個特征圖對應的特征體 Vi。對于N張不同視角的輸入影像,以方差的形式計
289、算相似性測度,計算代價體 C。即:=(1,)=1()2 代價體的計算過程遵循等權原則,即所有輸入影像具有同等重要的地位。在代價體規則化模塊中,通過一個 4 層的 3D U-Net 進行規則化。3D U-Net 結構引入了多尺度的卷積操作,通過編碼器-解碼器結構聚合不同尺度的空間方向上和深度搜索方向上的特征信息,進行代價聚合。在 3D 卷積的最后一層,輸出為 1 通道的 3D 特征代價體。在深度回歸模塊中,沿著深度方向應用 softmax 函數將規則化后的代價體轉換為概率體,概率體中的每個值表示對應像素點的深度為當前高深度圖 Di 對應深度值的概率,以歸一化的概率值作為權重,對搜索范圍內的每個深
290、度值 d 進行加權求和,得到連續的深度預測值。深度精化模塊采用 4 個卷積層組成的殘差結構,用于利用影像的特征信息,對得到的初始深度圖進行邊緣精化。訓練 MVSNet 網絡采用的 Loss 為中心影像對應的地面真實深度值與網絡估計的深度值之間絕對差值的平均值。當地面真實深度圖存在黑洞時,只考慮具有有效 標簽的像素點。MVSNet 將多視成像幾何顯式地編碼進深度學習網絡中,從而在幾何約束條件的支持下,端到端的實現多視影像間的密集匹配任務,是現有通用的多視密集匹配方法的基礎和核心架構。圖 1 MVSNet 網絡結構示意圖 4.5.2.3 測評結果(1)數據集 LuojiaSET-多視三維數據集 采
291、用 LuojiaSET-多視三維數據集中的 WHU-MVS 數據集。WHU-MVS 是一個大規模合成航空影像多視密集匹配數據集。用于模型訓練的數據有 45 組,測試集有 17 組,每組包括80對五視匹配數據樣本,每一個樣本包含五個相鄰視角、彼此具有一定重疊度的影像,以及每張影像對應的相機參數文件和真實深度圖。為了便于深度學習的訓練與測試,樣本的尺寸已經被統一裁剪為 768384 像素。影像數據的分辨率約為 10 cm。在訓練和測試中,每張影像的深度采樣數量固定為 200 個采樣平面,訓練視角數量固定為 3.(2)實現細節 參與實驗的深度學習框架有 PyTorch、Tensorflow 和 Lu
292、ojiaNET,這三個框架上實現 的 MVSNet 網絡分別表示為 MVSNet(PyTorch)、MVSNet(Tensorflow)與 MVSNet(LuoJiaNET)。其中使用的 PyTorch 版本是 V1.1.0,使用的 Tensorflow 版本是 V1.13.1,使用的 LuojiaNET 版本是 V1.0.0。三個網絡均在同一硬件上進行訓練和測試,所有超參數和網絡架構均保持一致。GPU 型號為 GeForce GTX 1080Ti(11G)、CPU 型號為 Intel(R)Core(TM)i9-7900X CPU 3.30GHz,使用的 CUDA 的版本是 V10.1。在訓練
293、階段,采用的損失函數為 Smooth L1 損失,優化器選擇為 RMSProp,學習率固定為 0.001,批次數設置為 1,訓練共 30 個輪次,每個輪次有 3600 對樣本,共計約 11萬次迭代。在訓練和推理階段,所有超參數保持一致:參與匹配的影像視角數量固定為 N=3,每張影像的大小為 738384 像素,深度采樣數量為 D=200,每張影像的最大和最小深度搜索范圍采用該影像實際覆蓋到的深度范圍,MVSNet 網絡輸出深度圖的分辨率是原始輸入大小的 1/16,利用雙線性上采樣函數將結果采樣為真實深度圖大小,在同一個標準下進行精度評定。(3)評價指標 在實驗中,采用的定量指標如下:a.平均絕
294、對誤差(Mean Absolute Error,MAE)表示深度估計值與地面真實深度值間的絕對差值的平均值,為剔除極大粗差對距離測度的影響,僅對偏差在 100 個采樣間隔范圍內的誤差求均值:1=1|()|(1)其中,yi為深度真值,而f(xi)為深度估計值,其中m為影像中有效像素的數量,x代表了影像上的像素。b.固定間隔精度占比(n)統計模型預測深度圖與真實深度圖之間的絕對差異小于采樣間隔n的像素數量占所有像素點的百分比,計算方式如下:|()|=11=1(2)其中,為艾佛森括號,當括號內的條件滿足時為 1,否則為 0.c.顯存占用(Memory)記錄了模型在訓練或者推理過程中所需要占用的峰值顯
295、存。d.運行時間(Time)記錄了模型在訓練或者推理過程中處理一個樣本所需要的時間。(4)實驗結果 表 13 精度結果對比 Methods MAE(m)0.1m(%)0.3m(%)0.6m(%)MVSNet(LuojiaNET)0.218 56.31 86.00 93.46 MVSNet(PyTorch)0.195 54.79 88.51 95.03 MVSNet(TensorFlow)0.182 59.63 91.53 95.67 從表 1 可知,在 LuojiaNET、PyTorch、Tensorflow 三個框架上構建的 MVSNet 模型,以 Tensorflow 的精度最高,在各個指
296、標上相比其余二者均有明顯優勢。與 PyTorch 相比,使用 LuoJiaNET 構建的 MVSNet 網絡僅在 0.1m(%)的精度上稍有優勢??傮w提升不明顯。表 2 時間與顯存占用對比 Methods Training Inference Memory(MiB)Time(s)Memory(MiB)Time(s)MVSNet(LuojiaNET)11173M 1.5s 10661M 0.63s MVSNet(PyTorch)5901M 0.57s 2629M 0.13s MVSNet(TensorFlow)9255M 0.78s 3115M 0.34s 從表 2 可以看出,使用 LuoJia
297、NET 進行訓練時,內存占用和時間消耗均比 PyTorch 以及Tensorflow 高:其中顯存占用比 PyTorch 高 1.9 倍,比 TensorFlow 高約 1.2 倍;時間消耗比 PyTorch 高 2.6 倍,比 TensorFlow 高約 1.9 倍。使用 LuoJiaNET 進行推理時,LuoJiaNET 的顯存占用和時間消耗最高,PyTorch 的最低,其中時間消耗比 PyTorch 高約5 倍,比 TensorFlow 高約 1.9 倍。問題分析:在本模型的實驗中,使用 LuojiaNET 構建的 MVSNet 模型在訓練和推理的顯存和時間占用上均表現較差,因此對 MV
298、SNet 模型進行逐模塊拆分分析問題所在。MVSNet 主要由特征檢測模塊、代價體構建模塊、代價體聚合模塊、回歸模塊、深度精化模塊五個部分組成。其中前三個模塊是網絡的核心結構,我們單獨統計了這三個子模塊各自的峰值顯存占用和時間消耗情況,如表 3 所示。表 3 推理階段 3 個主要子模塊峰值顯存與時間占用情況 模塊 Modules 顯存 Memory(MiB)時間 Times(s)*2D 特征提取模塊 2467 M 0.014 s 代價體構建模塊(with homo.Warping)10661 M 0.607 s 3D 代價體聚合模塊 5539 M 0.086 s*運行時間是取 100 個樣本的
299、平均時間。與表 2 對比之后可以看出,MVSNet(LuojiaNET)的時間和顯存峰值均出現在代價體構建模塊。該模塊主要用于多視特征幾何對齊,給定一系列深度采樣平面,該模塊通過單應映射變換將一組相鄰影像的 2D 特征圖投影變換至中心影像視角下,并計算多個不同視角特征圖間的方差作為代價值。其中涉及到矩陣相乘、矩陣相除、矩陣求逆、規則格網重采樣等操作,目前在 LuojiaNET 里的模型實現這一過程采用的方式較 PyTorch 更加復雜,因此影響了模型的總體性能。該部分具有很大的提升空間,隨著 LuojiaNET 對一些算子的支持更加全面,我們對一些函數和運算進行精簡,該問題有望被很好地優化。(
300、5)結果可視化 中心影像 真實深度圖 預測深度圖預測深度圖預測深度圖(LuoJiaNet)(Pytorch)(Tensorflow)圖 3.MVSNet 模型推理的深度圖可視化結果。從上到下,分別是不同的樣本,樣本編號分別為 009_53/000008、009_56/001009、009_59/000005 與 009_59/001005。從左到右,分別是中心影像、深度圖真值、MVS-Net(LuoJiaNET)模型的預測結果、MVS-Net(PyTorch)模型的預測結果和 MVS-Net(Tensorflow)模型的預測結果。4.5.2.4 總結 在立體匹配與三維重建典型應用任務中,分別基
301、于 LuoJiaNET、PyTorch、Tensorflow 框架復現了經典的多視密集匹配網絡 MVSNet。在該模型上,LuoJiaNET 相比其余兩者未表現出優勢,甚至在顯存和時間占用上明顯更高。經分析主要是一些幾何運算模塊的實現復雜,降低了模型性能,隨著 LuoJiaNET 對更多算子提供支持,該問題或許可以進一步被優化。4.6 知識嵌入 4.6.1 任務簡介(1)專用框架中遙感解譯知識圖譜的構建方法,構建包含地理空間實體及關系的遙感解譯知識圖譜,建立遙感解譯知識庫;(2)研究專用框架下經驗知識引導與知識規則推理的方法,建立專用框架下面向遙感智能解譯任務的知識耦合模型。4.6.2 知識嵌
302、入網絡簡介 知識嵌入的遙感影像解譯網絡結構如圖 1 所示。利用該網絡對遙感影像進行解譯時,首 先基于遙感影像的地理坐標、成像時間等元數據信息,查詢時空知識圖譜,獲取對應的坡度坡向數據,將其與遙感影像一同輸入深度網絡進行學習。輸出預測結果后,一方面,將預測結果劃分為一定數量的推理單元,調用時空知識圖譜的解譯常識,應用本體推理規則對預測結果進行修正。另一方面,再次查詢時空知識圖譜,獲取對應的眾源地理數據、定量遙感產品等先驗知識,結合置信度規則將其用于預測結果的修正。經過上述時空知識圖譜可信推理,即得到遙感影像最終的解譯結果。圖 1 知識嵌入的遙感影像解譯網絡 4.6.3 測評結果(1)語義分割數據
303、集:France Urban Atlas 數據集 France Urban Atlas 數據集是一個自主構建的大規模高分辨率大幅面遙感影像語義分割數據集。數據集共包含法國范圍內 321 幅幅面為 1000010000、分辨率為 0.5 米的遙感影像。如圖 2 所示,訓練集 1、驗證集、測試集由一定區域以內的 201 幅影像按 6:2:2的比例不重疊地劃分而成,訓練集 2 由上述區域以外的 120 幅影像組成。語義標簽采用開源的 Urban Atlas 數據,并將類別合并至 12 類。圖 2 數據集在法國的地理分布(2)評價指標 在實驗中,采用的定量指標如下:a.交并比(IoU,Intersec
304、tion over Union)統計單個類別對應真實值和預測值的交集和并集之比,計算方式如下:IoU=+(1)其中,TP為預測正確的正類,FP 為預測錯誤的正類,FN 為預測錯誤的負類。b.均交并比(mIoU,mean Intersection over Union)統計所有類別交并比的平均值,計算方式如下:mIoU=1+1IoU=0(2)(3)實驗結果 影像對應的數字高程模型是一種自然先驗知識,在將其應用于遙感影像解譯時,通過對其進行計算,生成坡度、坡向,作為遙感影像的附加通道輸入網絡進行訓練。在遙感影像解 譯模型中嵌入自然先驗知識的實驗條件設置見表 1,實驗的定量結果見表 2。由表 2 可
305、知,嵌入自然先驗知識的實驗(2)相比無知識嵌入的實驗(1)在 mIoU 上提升約 3%。表 1 時空先驗知識嵌入實驗條件設置 知識類型 條件 內容(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)自然先驗知識 DEM 坡度、坡向 專家先驗知識 規則1.1 與建筑、工礦用地、城市綠地相鄰長度占鄰接邊總長度一半以上的森林修正為城市綠地 規則1.2 與工礦用地相鄰的裸地修正為工礦用地 規則1.3 將被建筑、基礎設施、工礦用地包圍的水體修正為相應類別 規則1.4 將被水體包圍的裸地修正為水體 場景先驗知識 規則2.1 將 OSM 數據中屬于工礦用地的像素修改為工礦用地 規則2.2
306、將 OSM 數據中屬于工業用地、商 業用地、零售用地的像素修改為基礎設施 規則2.3 將 OSM 數據中屬于道路的像素修改為基礎設施 規則2.4 將 OSM 數據中屬于交通設施的像素修改為基礎設施 規則2.5 將 OSM 數據中屬于水體的濕地、園地修改為水體 表 2 時空先驗知識嵌入實驗定量結果 (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)建筑 0.6871 0.7057 0.7057 0.7057 0.7057 0.7057 0.7057 0.7067 0.7072 0.7073 0.7073 基礎設施 0.5300 0.5524 0.5524 0.5524 0.5
307、527 0.5527 0.5520 0.5795 0.5902 0.6030 0.6030 工礦用地 0.2354 0.2538 0.2538 0.2712 0.2713 0.2713 0.2854 0.2971 0.2956 0.2980 0.2980 城市綠地 0.2444 0.3024 0.3197 0.3197 0.3197 0.3197 0.3198 0.3204 0.3205 0.3195 0.3195 耕地 0.5058 0.5211 0.5211 0.5211 0.5211 0.5211 0.5207 0.5218 0.5215 0.5228 0.5228 園地 0.3704
308、0.3831 0.3831 0.3831 0.3831 0.3831 0.3831 0.3823 0.3825 0.3825 0.3826 牧場 0.3991 0.4287 0.4287 0.4287 0.4287 0.4287 0.4285 0.4291 0.4291 0.4318 0.4318 森林 0.7716 0.7683 0.7702 0.7702 0.7702 0.7702 0.7702 0.7757 0.7758 0.7758 0.7758 灌木 0.5015 0.3136 0.3136 0.3136 0.3136 0.3136 0.3137 0.3138 0.3139 0.31
309、39 0.3139 裸地 0.1930 0.2962 0.2962 0.3033 0.3033 0.3036 0.3036 0.3039 0.3039 0.3040 0.3040 濕地 0.5447 0.7486 0.7486 0.7486 0.7486 0.7486 0.7486 0.7486 0.7492 0.7492 0.7607 水體 0.7135 0.7955 0.7955 0.7955 0.7961 0.7965 0.7941 0.7948 0.7953 0.7955 0.7971 mIoU 0.4747 0.5058 0.5074 0.5094 0.5095 0.5096 0.5
310、105 0.5145 0.5154 0.5169 0.5180 專家先驗知識的知識圖譜實現如圖 3 所示。對網絡預測結果進行連通域劃分,形成推理單元;生成推理單元的面積向量、類別向量,計算出推理單元之間的鄰接矩陣、鄰接邊長矩陣;根據以上結果,計算出推理單元滿足的條件;將每個推理單元的類別及其滿足的條件輸入知識圖譜進行知識推理,生成知識推理結果。在遙感影像解譯模型中嵌入專家先驗知識的實驗條件設置見表 1,實驗的定量結果見表2。觀察實驗結果發現,嵌入了4種專家先驗知識的實驗結果(6)相比實驗(2)提高了約0.4%。圖 3 常識解譯規則的知識圖譜實現 在遙感影像解譯模型中嵌入場景先驗知識的實驗條件設
311、置見表 1,實驗的定量結果見表2。由于 OSM 數據中工礦用地的分布較為準確,工業用地、商業用地、零售用地等類別部分彌補了深度網絡難以把握基礎設施整體性的問題,規則 2.1、2.2 帶來了一定的精度提升。觀察實驗結果發現,應用 4 種專家先驗知識及 5 種場景先驗知識的實驗(11)相比作為基準的實驗(1)在 mIoU 上提高了 4.33%。由統計結果總結出裸地的葉面積指數分布較為集中,是一種明顯的場景先驗知識,可以用于區分裸地和其他類別。使用葉面積指數取值作為限制條件,將葉面積指數高于 9 的裸地像素的類別修改為網絡預測概率第二高的類別,應用這一場景先驗知識進行修正。實驗結果的 mIoU 有所
312、上升,達到了 0.5269,主要是由于灌木、裸地兩個類別的分類精度提升較為明顯。深度學習結果、深度學習+自然先驗結果、深度學習+自然先驗+專家先驗結果、深度學習+自然先驗+專家先驗+場景先驗結果的定性對比如圖 4 所示。第一行示例中,工礦用地內的裸地被修正為工礦用地,城市內的森林被修正為城市綠地;第二行示例中,引入坡度坡向可以防止將坡度相對較大的類別識別為水體,大量在深度學習結果中被誤分類為水體的單元被糾正,利用專家先驗知識修正后城市內的森林被修正為城市綠地。第三行示例表明,場景先驗知識的規則 2.3 實現了對斷續道路的修正。圖 4 時空先驗知識嵌入實驗定性結果 4.6.4 總結 在所構建的法
313、國區域大幅面高分遙感影像數據集上進行的對比實驗結果表明,本方法通過嵌入自然先驗、專家先驗、場景先驗等多種類型的經驗知識,在 mIoU 這一定量指標上相比無知識嵌入的深度網絡模型提升了 4%以上。5.LuoJiaNET 的典型行業應用 5.1 上海數慧自然資源大腦解決方案 上海數慧構建了自然資源大腦,提供了“一張網-一張圖-一大腦”的解決方案。其中“一大腦”的空間智能識別采用了 LuoJiaNET“全?!苯鉀Q方案,硬件平臺以華為昇騰 910 服務器為基礎,軟件平臺采用 LuoJiaNET 構建了地物分類的識別系統。圖 5.1 上海數慧“自然資源大腦”解決方案 5.2 武漢漢達瑞遙感影像智能化處理
314、平臺 漢達瑞科技有限公司以 LuoJiaSET 與 LuoJiaNET 作為基礎底座,結合昇騰AI 硬件,研發了遙感人工智能解譯平臺,包含樣本制作與管理、模型訓練與要素自動提取等功能??芍С秩剡b感解譯,道路、房屋、水系、林地、云雪專題信息提取,同時提供全要素自動變化檢測與建筑物變化檢測功能,以云平臺人機交互方式實現多要素的協同處理。圖 5.2 武漢漢達瑞科技有限公司遙感人工智能平臺 5.3 航天宏圖城市土地變化檢測平臺 航天宏圖公司以國產 AI 芯片、遙感影像樣本庫 LuoJiaSET 和遙感深度學習框架 LuoJiaNET,構建了智能變化檢測平臺,可處理海量軍用、民用、商用遙感數據與變化
315、檢測樣本,同時采用國產 AI 芯片提升遙感影像處理速度。圖 5.3 航天宏圖基于 LuoJiaNET 的土地利用變化監測平臺 5.4 珈和科技地事通智慧農業 SaaS 服務平臺 武漢珈和科技公司以 LuoJiaNET 作為遙感時空大數據 SaaS 平臺基礎軟件,結合昇騰 AI 軟硬件,研發了地事通 SaaS 服務平臺,包含農田非糧化監測、農情病蟲害監測、智慧農田服務、種植險監測等應用,解決行業在農業監測方面的痛點問題。圖 5.4 珈和科技地事通農業遙感 SaaS 平臺 6.進一步發展與展望 截止目前,境內外已有超 30 余家媒體專題報道 LuoJiaSET 與 LuoJiaNET 形成的初步成
316、果,在公測的一個月時間內,已有超 3000 人次的下載量,多家大型公司將 LuoJiaSET 與 LuoJiaNET 作為遙感人工智能基礎軟件平臺。6.1 LuoJiaSET 發展及展望 在線標注工具的實用化完善 發揮聯盟的作用,快速擴充樣本集,2022 年達到 1000 萬樣本的規模 建立全球網格下的樣本組織和管理,OPEN-GLOBAL_LANDCOVER_MAPPING?開發可進化的樣本庫的開源工具集 樣本的精化-自動的樣本提純、修正系統 樣本的轉換-自動的樣本轉換(實現傳感器成像特性、地理環境、物候等特性的遙感圖像轉換與模擬)樣本的生成-自動的跨模態樣本生成與仿真系統(例如:語言描述-
317、遙感樣本的生成系統)6.2 LuoJiaNET 發展及展望 針對(大規模)點云數據的深度學習優化框架,算子補齊,例如:體素處理、稀疏卷積、超點分割.高維數據(高光譜、多通道)處理進一步優化,目前的通道優選方法優點單薄 時序數據與雷達數據處理?大幅面影像的圖神經網絡處理優化+知識嵌入方法 建立 OGC 的模型標準。目前 NASA、ESA 已在參與討論交換標準,但仍未立項 構建更大范圍的智能遙感開源社區,促進遙感產業長遠發展 7.致謝 本白皮書制作過程中,在中國科學院院士龔健雅教授、武漢大學胡翔云教授指導下,由武漢大學張覓副研究員(LuoJiaNET 技術負責人)執筆統籌,得到了武漢大學姜良存副研
318、究員(LuoJiaSET 技術負責人)、測繪遙感信息工程國家重點實驗室孫開敏教授(場景分類)、眭海剛教授(變化檢測)、王密教授、鐘燕飛教授、潘俊教授的支持,武漢大學遙感信息工程學院黃昕教授、李家藝副教授(地物分類)、王心宇副研究員(高光譜地物分類)、季順平教授(多視三維)、李彥勝副教授(知識嵌入)的支持,武漢大學計算機學院夏桂松教授、劉菊華副教授(目標檢測)、袁夢霆教授(遙感 IR)的支持。同時得到 LuoJiaNET 框架團隊博士研究生張展、楊炳楠、趙元昕、騰昊天,碩士研究生周桓、王斌、譚靜懿,本科生劉青瑀、楊青林、佘可、劉思琪、楊元釗,科研助理李大宇的支持;LuoJiaNET 應用模型驗證得到博士生李王斌、趙恒偉、涂理林、張震、杜卓童、史瑋玥、劉瑾、陳蔚,碩士生宣文杰、賀海斌、段坤仁、潘洋、李靜濤、吳敏郎、鐘振宇、周寧、高建,本科生王宇的支持;LuoJiaSET樣本庫團隊樂鵬教授、博士生許越、曹志鵬、劉帥旗等的支持。武漢理工大學熊盛武教授、碩士生周云飛、黨偉沖、李銳在眾智算子方面的支持;華為昇騰 AI 團隊田昆陽、丁來平、張國穩、蘇騰、楊振章、張曉達、梁成輝、江振光、劉軍主、張豐偉、李詠、曹建、范翱翔等在雙方共享知識產權、聯合申報專利方面的支持。武漢人工智能計算中心王景俊、董長杰、鄧凱、楊佳妮、段欣宇在華為云平臺接口上的支持。衷心感謝上述機構和人員在白皮書制作方面的鼎力支持!