內容概要:土地分類是遙感影像的重要應用場景之一,本文介紹了土地分類的幾個經常使用方法,並利用開源語義分割代碼,打造了一個土地分類模型。
原創:HyperAI超神經html
關鍵詞:遙感數據集 語義分割 機器視覺python
遙感影像是開展測繪地理信息工做的重要數據,對於地理國情監測、地理信息數據庫更新等意義重大,在軍事、商業、民生等領域發揮了愈來愈重要的做用。
近年來,隨着國家衛星影像獲取能力的提高,遙感影像數據採集效率大幅提高,造成了低空間分辨率、高空間分辨率、寬視角多角度、雷達等多種傳感器共存的格局。算法
軌道中的 Landsat 2 正在收集地球遙感數據數據庫
該衛星是 NASA 陸地衛星計劃中的第 2 顆,於 1975 年發射,旨在以中等分辨率獲取全球季節性數據網絡
傳感器種類齊全,知足了不一樣用途的對地觀測需求,可是也形成了遙感影像數據格式不統1、耗費大量存儲空間等問題,在圖像處理過程當中經常面臨較大的挑戰。框架
以土地分類爲例,以往利用遙感影像進行土地分類,每每依賴大量人力進行標註和統計,耗時長達數月甚至一年的時間;加上土地類型複雜多樣,不免也會出現人爲統計失誤。機器學習
隨着人工智能技術的發展,遙感影像的獲取、加工、分析,也變得更加智能和高效。工具
經常使用的土地分類方法,基本上分爲三類:以 GIS 爲基礎的傳統分類方法、以機器學習算法爲依據的分類方法,以及利用神經網絡語義分割的分類方法。學習
傳統方法:利用 GIS 地理信息系統分類測試
GIS 是處理遙感影像時常須要用到的工具,全稱 Geographic Information System,又被稱爲地理信息系統。
它把關係數據庫管理、高效圖形算法、插值、區劃和網絡分析等先進技術集成起來,讓空間分析變得簡單易行。
利用 GIS 對伊麗莎白河東部支流地區進行空間分析
利用 GIS 的空間分析技術,能夠獲取對應土地類型的空間位置、分佈、形態、造成和演變等信息,識別土地特徵並進行判斷。
機器學習:利用算法分類
傳統的土地分類方法包括監督分類和非監督分類。
監督分類又稱訓練分類法,它是指用已確認類別的訓練樣本像元,跟未知類別像元做比較和識別,進而完成對整個土地類型的分類。
在監督分類中,當訓練樣本精度不夠時,一般會從新選擇訓練區或人爲目視修改,以確保訓練樣本像元的準確性。
監督分類後的遙感圖像(左),紅色爲建設用地,綠色爲非建設用地
非監督分類是指沒必要提早獲取先驗類別標準,而是徹底按照遙感影像中像元的光譜特性進行統計分類,該方法自動化程度高,人爲干預少。
藉助支持向量機、最大似然法等機器學習算法,能夠極大提升監督分類和非監督分類的效率和準確度。
神經網絡:利用語義分割分類
語義分割是一種端到端像素級別的分類方法,能夠增強機器對環境場景的理解,在自動駕駛、土地規劃等領域應用普遍。
基於深度神經網絡的語義分割技術,在處理像素級分類任務時,其表現優於傳統的機器學習方法。
利用語義分割算法對某地遙感影像進行識別和判斷
高分辨率遙感圖像場景複雜、細節信息豐富,地物間光譜差別不肯定,很容易致使分割精度低,甚至產生無效分割。
利用語義分割處理高分辨率、超高分辨率遙感影像,能夠更準確地提取圖像的像素特徵,迅速且準確地識別特定土地類型,進而提升遙感圖像的處理速度。
經常使用的像素級語義分割開源模型包括 FCN、SegNet 和 DeepLab。
一、全卷積網絡(FCN)
特性:端到端語義分割
優勢:不限制圖像尺寸,具備通用性和高效率
缺點:沒法快速進行實時推理,處理結果不夠精細,對圖像細節不敏感
二、SegNet
特性:將最大池化指數轉移至解碼器中,改善了分割分辨率
優勢:訓練速度快、效率高,佔用內存少
缺點:測試時不是前饋(feed-forward ),須要優化來肯定 MAP 標籤
三、DeepLab
DeepLab 由 Google AI 發佈,主張用 DCNN 來解決語義分割任務,共包括 v一、v二、v三、v3+ 四個版本。
DeepLab-v1 爲了解決池化引發的信息丟失問題,提出了空洞卷積的方式,在增大感覺野的同時不增長參數數量,同時保證信息不丟失。
DeepLab-v1 模型流程演示
DeepLab-v2 在 v1 的基礎上,增長了多尺度並行,解決了對不一樣大小物體的同時分割問題。
DeepLab-v3 將空洞卷積應用在了級聯模塊,而且改進了 ASPP 模塊。
DeepLab-v3+ 在 encoder-decoder 結構上採用 SPP 模塊,能夠恢復精細的物體邊緣。細化分割結果。
目的:在 DeepLab-v3+ 基礎上,開發用於土地分類的 7 分類模型
數據:源自 Google Earth 的 304 張某地區遙感圖像。除原圖外,還包括通過專業標註的配套 7 分類圖、7 分類 mask、25 分類圖、25 分類 mask 圖像。圖像分辨率爲 560*560,空間分配率爲 1.2m。
原圖及對應 7 分類圖拼接示例,上半部分爲原圖,下半部分爲 7 分類圖
調參代碼以下:
net = DeepLabV3Plus(backbone = 'xception') criterion = CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.05, momentum=0.9,weight_decay=0.00001) lr_fc=lambda iteration: (1-iteration/400000)**0.9 exp_lr_scheduler = lr_scheduler.LambdaLR(optimizer,lr_fc,-1)
訓練詳情
算力選擇:NVIDIA T4
訓練框架:PyTorch V1.2
迭代次數:600 epoch
訓練時長:約爲 50h
IoU:0.8285(訓練數據)
AC:0.7838(訓練數據)
數據集連接:
https://openbayes.com/console...
詳細訓練過程直達連接:
https://openbayes.com/console...
遙感圖像土地七分類公共教程詳情
教程使用
教程中的樣例展現文件是 predict.ipynb,運行這個文件,會安裝環境,並展現已有模型的識別效果。
項目路徑
semantic_pytorch/out/result/pic3
semantic_pytorch/out/result/label
semantic_pytorch/out/result/predict
使用說明
訓練模型進入 semantic_pytorch,訓練的模型被保存在 model/new_deeplabv3_cc.pt。
模型採用 DeepLabV3plus,訓練參數中,Loss 採用二進制交叉熵。Epoch 爲600,初始學習率0.05。
訓練指令:
python main.py
若是使用咱們已經訓練好的模型,則使用保存在 model 文件夾中 fix_deeplab_v3_cc.pt,在 predict.py 中直接調用便可。
預測指令:
python predict.py
教程地址:
https://openbayes.com/console...
模型做者
問題 1:爲了開發這個模型,你都經過哪些渠道,查閱了哪些資料?
王巖鑫:主要是經過技術社區、GitHub 等渠道,查看了一些 DeepLab-v3+ 的論文和相關項目案例,提早了解了一下都有哪些坑、怎麼克服,爲後續模型開發過程當中隨時遇到問題隨時查詢解決,作了比較充分的準備。
問題 2:過程當中遇到了哪些障礙?怎麼克服的?
王巖鑫:數據量不是很夠,致使 IoU 和 AC 的表現通常,下次能夠用數據量更豐富的公開遙感數據集試試。
問題 3:關於遙感還想嘗試哪些方向?
王巖鑫:這一次是對土地進行分類,接下來我想利用結合機器學習和遙感技術,對海洋景觀和海洋要素進行分析,又或者結合聲學技術嘗試對海底地形進行識別和判斷。
這次訓練所用數據量較小,在訓練集上 IoU 及 AC 表現通常,你們也能夠嘗試用已有公共遙感數據集進行模型訓練,通常狀況下訓練越充分、訓練數據越豐富,模型表現越好。
本系列的(下)篇文章中,咱們彙總了 11 個主流的公共遙感數據集,並將其作了歸類整理。你們能夠依據本文提供的訓練思路,按需選用,訓練更完善的模型。
參考:http://tb.sinomaps.com/CN/049...
file:///Users/antonia0912/Downloads/2018-6A-50.pdf
https://zhuanlan.zhihu.com/p/...
http://www.mnr.gov.cn/zt/zh/z...