在利用深度學習,對遙感圖像中的景物進行語義分割時,使用https://github.com/AstarLight/Satellite-Segmentation的代碼,實驗環境爲Window 10,使用Anaconda集成環境,利用Spyder編譯器進行程序的編譯,在配置的過程中,出現瞭如下的問題:
- 支持庫的安裝
使用Python 3.6,在程序運行時,會發現缺少相關支持庫,主要缺少cv2,matplotlib以及Keras的安裝,通過Anaconda的集成環境,可以很方便的進行相關支持庫的安裝,安裝方式如下所示:
在輸入框中輸入想要進行安裝的支持庫,點擊apply進行相關支持庫的安裝。
- GPU的配置
由於在進行程序編譯的過程中需要利用GPU,因此需要在程序中配置如下語句:
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
- 輸入參數的調整
此時對於多數使用者來說,將會出現如下的問題
tensorflow.python.framework.errors_impl.InvalidArgumentError: Negative dimension size caused by subtracting 2 from 1 for 'max_pooling2d_2/MaxPool' (op: 'MaxPool') with input shapes: [?,1,128,128].
出現該問題的原因主要是因爲在圖片讀入時,輸入參數錯誤所導致的,因爲keras調用的後端深度學習框架一般都是Tensorflow後者Theano,對於兩種不同的深度學習框架來說,輸入參數的格式不盡相同,對於Tensorflow來說,輸入參數格式爲:(batch_size,w,h,channal),對於Theano來說,輸入參數格式爲:(batch_size,channal,w,h),因此需要進行參數格式的對應。
解決方法1:
model.add(Conv2D(64,(3,3),strides=(1,1),input_shape=(3,img_w,img_h),padding='same',activation='relu'))
更改input_shape的輸入方式爲(img_w,img_h,3),此時程序也許會成功運行。
解決方法2:
找到C盤下.keras文件夾下的keras.json文件,對該文件下的"image_data_format": 字段更改爲:"channels_first",此時,程序可以成功運行。
- Batch_size大小的更改
在程序的運行過程中,也許會出現顯存大小不夠的問題,如下類型所示:
Resource exhausted: OOM when allocating tensor with shape[10000,32,28,28]
此時,需要對程序中的Batch_size進行更改,將原始的16更改爲8或者其他可以運行的大小,此時程序便可以成功運行。成功運行結果如下所示: