關於博客“基於SegNet和U-Net的遙感圖像語義分割”配置過程中出現的問題及解決方法

在利用深度學習,對遙感圖像中的景物進行語義分割時,使用https://github.com/AstarLight/Satellite-Segmentation的代碼,實驗環境爲Window 10,使用Anaconda集成環境,利用Spyder編譯器進行程序的編譯,在配置的過程中,出現瞭如下的問題:

  1. 支持庫的安裝

使用Python 3.6,在程序運行時,會發現缺少相關支持庫,主要缺少cv2,matplotlib以及Keras的安裝,通過Anaconda的集成環境,可以很方便的進行相關支持庫的安裝,安裝方式如下所示:

在輸入框中輸入想要進行安裝的支持庫,點擊apply進行相關支持庫的安裝。

  1. GPU的配置

由於在進行程序編譯的過程中需要利用GPU,因此需要在程序中配置如下語句:

os.environ["CUDA_VISIBLE_DEVICES"] = "0"
  1. 輸入參數的調整

此時對於多數使用者來說,將會出現如下的問題

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",此時,程序可以成功運行。

  1. Batch_size大小的更改

在程序的運行過程中,也許會出現顯存大小不夠的問題,如下類型所示:

Resource exhausted: OOM when allocating tensor with shape[10000,32,28,28]

此時,需要對程序中的Batch_size進行更改,將原始的16更改爲8或者其他可以運行的大小,此時程序便可以成功運行。成功運行結果如下所示:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章