利用多層感知機實現高分影像中的道路提取

2021-09-16 19:50:48 字數 2388 閱讀 6370

實驗資料: 解析度為0.5m的高分遙感影像

實驗目的:提取影響中的瀝青路面道路

前期資料處理在envi中實現。主要包括影像裁剪,道路向量化,影象二值化。

2-1 資料裁剪

裁剪的目的:在影象中裁剪除兩塊有代表性的區域,分別作為機器學習的樣本和測試資料。

裁剪效果:

2-2 裁剪區域目標要素(道路)向量化

目的:建立道路mask,並輸出道路區域影像

2-3 裁剪區域以2-2結果為mask輸出道路

輸出結果:

2-4 將2-3結果二值化

利用決策樹,將2-3結果二值化,其中,道路區域為1,非道路區為0,二值化表示式:b1 gt 0

二值化結果:

實驗使用keras,使用多層感知機實現,最終**結果為某一畫素是道路的概率

實驗中用到gdal庫進行tiff資料的開啟與儲存

3-1 影像資料匯入

from osgeo import gdal_array

import numpy as np

x_train_src="cut/cutcross.tif"

y_train_src="testdb/ch3.tif"

x_test_src="cut/cut2.tif"

y_test_src="testdb/ch7.tif"

x_train=gdal_array.loadfile(x_train_src)

y_train=gdal_array.loadfile(y_train_src)

x_test=gdal_array.loadfile(x_test_src)

y_test=gdal_array.loadfile(y_test_src)

3-2 資料矩陣處理主要包括資料格式轉換與範圍轉換,以滿足機器學習模型要求。

最終將x_train轉化為(n,3)的格式,n為 row*col ; y_train為(n,1)的二值矩陣

y_train與t_test類似。

3-3 建立模型與學習

hap=sequential()

hap.add(dense(256,activation='relu',input_shape=(3,)))

hap.add(dense(128,activation='relu'))

hap.add(dense(64,activation='relu'))

hap.add(dense(32,activation='relu'))

hap.add(dense(16,activation='relu'))

hap.add(dense(1,activation='sigmoid'))

hap.compile(optimizer=sgd(),loss="binary_crossentropy",metrics=['accuracy'])

hap.fit(x_train,y_train,epochs=1,validation_data=(x_test,y_test))

3-4 模型測試讀入一塊新的資料進行測試效果

原始影像(左)與檢測結果(右)

1、僅傳入三個波段作為學習資料,未考慮影像中地物的空間特徵。

2、使用影像切片學習的方式,操作複雜,效率低。

3、使用簡單的多層感知機模型,模型待優化。

tensorflow實現多層感知機

tensorflow 多層感知機識別手寫數字 匯入資料 import tensorflow as tf import tensorflow.tutorials.minist.input data as input data minist input data.read datasets mnist ...

多層感知機的簡潔實現

動手學深度學習pytorch 部分學習筆記,僅用作自己複習。使用gluon來實現上一節中的多層感知機。import torch from torch import nn from torch.nn import init import numpy as np import sys import d2...

3 10 多層感知機的簡潔實現

學習 import torch from torch import nn from torch.nn import init import numpy as np import sys import d2lzh pytorch as d2l加了乙個全連線層作為隱藏層。它的隱藏單元個數為256,並使用...