关于博客“基于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或者其他可以运行的大小,此时程序便可以成功运行。成功运行结果如下所示:

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值