代码大佬都已经写好了,具体参考:https://github.com/bonlime/keras-deeplab-v3-plus

git clone 下来以后,按照指南要训练自己的数据集,只要设置好自己的数据大小和类别就可以了

from model import Deeplabv3
deeplab_model = Deeplabv3(input_shape=(384, 384, 3), classes=4)

问题1:我的数据集不是一张张小图片,而是一个大的遥感影像tif,如何训练这个数据

解决:用 gdal 读取得到它的 np.array,再通过生成器一小块一小块输入

问题2:但是这样的生成器无法打乱顺序,把多景影像标签和图像 zip 起来后也无法用 random.shuffle 打乱图片顺序

解决:现在只能每次都按顺序读入,应该对训练影响不大

设想:后续想法是设置一个随机数列,根据这个随机数列读取指定大小范围,这样是把步长变为了1,会有好多样本

问题3:验证集和训练集只能按 tif 分,如何能随机取

设想:随机数列解决

问题4:运行一直报错,各种错,先后有

  module 'tensorflow._api.v1.compat' has no attribute 'v1'

  unsupported operand type(s) for /: 'Dimension' and 'float'

解决:直接 git clone 下来的是用最新版 tf2.0 写的,需要升级自己的 tf 或者用作者之前版本的实现,在这里用了之前版本的 keras 实现,在命令行输入一下代码

git clone https://github.com/bonlime/keras-deeplab-v3-plus/
cd keras-deeplab-v3-plus/
git checkout 714a6b7d1a069a07547c5c08282f1a706db92e20

问题5:写的生成器生成的标签最后一维是1,导致运行一直报错,维度不匹配

解决:这个写的是用了 one-hot 编码的,需要把标签转换成 one-hot,用 “ from keras.utils import to_categorical ”,to_categorical(x, num_classes=n)把 x 里从 0 到 n-1的值根据大小扩展到 n 维,若最大值和类别数目不同会报错

问题6:评价指标 loss 和各种系数不在正常范围内

解决:一开始以为是 one-hot 编码问题,一直尝试用 k.argmax 去得到1维的 tensor,死活弄不出来,报错有:数据类型不对,用 K.cast 强制转换解决,tensor 不能和数值相加,用argmax导致梯度无法回流等。睡了一觉想想不能用 argmax,他就是要在每一个维度上计算出相应指标再求平均,原来在不是 one-hot 编码里用的函数都还是对的,那问题出在老版本里最后没有用激活函数,给他加个激活函数以后一切都正常了。

问题7:作者说没有实现 weight_decay,需要的自己加

还未解决:不知道去哪加

keras 的 Deeplabv3+ 实现遇到的问题的更多相关文章

  1. [Keras] Develop Neural Network With Keras Step-By-Step

    简单地训练一个四层全连接网络. Ref: http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/ 1 ...

  2. keras 中如何自定义损失函数

    http://lazycoderx.com/2016/10/09/keras%E4%BF%9D%E5%AD%98%E6%A8%A1%E5%9E%8B%E6%97%B6%E4%BD%BF%E7%94%A ...

  3. keras安装

    找对工具真的很重要,周末和学霸折腾了一天才装了几个包,问了同事找了一个方便的包,装起来不要太快啊.二十分钟全部搞定. 一.Anaconda 真是大杀器,牛到飞起来,一键部署,所有常用的机器学习包全部包 ...

  4. ubuntu系统theano和keras的安装

    说明:系统是unbuntu14.04LTS,32位的操作系统,以前安装了python3.4,现在想要安装theano和keras.步骤如下: 1,安装pip sudo apt-get install ...

  5. neurosolutions 人工神经网络集成开发环境 keras

    人工神经网络集成开发环境 :  http://www.neurosolutions.com/ keras:   https://github.com/fchollet/keras 文档    http ...

  6. Keras官方Example里Mnist-cnn的调试运行

    问题:老板让测试运行Keras官网里的Mnist-cnn.py,结果从下载数据就是一路坑-- 当前环境:Ubuntu12.04.python2.7.Keras 1.1.1(不知道这个版本号对不对,在启 ...

  7. [Keras] mnist with cnn

    典型的卷积神经网络. Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0. ...

  8. [Keras] Install and environment setting

    Documentation: https://keras.io/ 1. 利用anaconda 管理python库是明智的选择. conda update conda conda update anac ...

  9. linux install Theano+Tensorflow+Keras

    安装过程中,网络状态一定要好,如果安装过程中出现time out的提示信息,今天就可以洗洗睡啦,等明天网络状态好的时候再安装. 安装过程出现不知名的错误的时候,执行第一步,update一下 1.#up ...

随机推荐

  1. springboot情操陶冶-web配置(一)

    承接前文springboot情操陶冶-@SpringBootApplication注解解析,在前文讲解的基础上依次看下web方面的相关配置 环境包依赖 在pom.xml文件中引入web依赖,炒鸡简单, ...

  2. Perl一行式:文本编解码、替换

    perl一行式程序系列文章:Perl一行式 文本大小写转换 全部字符转换成大写或小写,有几种方式: # 转大写 $ perl -nle 'print uc' file.log $ perl -ple ...

  3. Java Socket通信实现私聊、群聊

    前言 闲言少叙,上代码! 代码编写 server服务端 /** * 服务端 */ public class Server { private static ServerSocket server = ...

  4. javascript基础修炼(10)——VirtualDOM和基本DFS

    1. Virtual-DOM是什么 Virtual-DOM,即虚拟DOM树.浏览器在解析文件时,会将html文档转换为document对象,在浏览器环境中运行的脚本文件都可以获取到它,通过操作docu ...

  5. JS_正则表达式_获取指定字符之后指定字符之前的字符串

    一个常见的场景,获取:标签背景图片链接: 如字符串:var bgImg = "url(\"https://img30.360buyimg.com/sku/jfs/t26203/26 ...

  6. MD5&&DES加密解密帮助类

    public class _MD5_NETCore加密解密 { /// <summary> /// 加密 /// </summary> /// <param name=& ...

  7. [Go] golang使用github里的imap类库

    1.在windows系统下,需要首先定义两个环境变量GOPATH和GOROOT, GOPATH是第三方类库的代码目录 , GOROOT是go的安装目录 2.按照我的定义 , 进入这个目录D:\gola ...

  8. 【Java】List遍历时删除元素的正确方式

    当要删除ArrayList里面的某个元素,一不注意就容易出bug.今天就给大家说一下在ArrayList循环遍历并删除元素的问题.首先请看下面的例子: import java.util.ArrayLi ...

  9. spring-boot的spring-cache中的扩展redis缓存的ttl和key名

    原文地址:spring-boot的spring-cache中的扩展redis缓存的ttl和key名 前提 spring-cache大家都用过,其中使用redis-cache大家也用过,至于如何使用怎么 ...

  10. jsp基础语言-jsp声明

    jsp声明的语法格式:<%! 声明代码 %> jsp声明的意义:用来定义在程序中使用到的变量.方法等.最后要以“:”结尾. jsp声明举例: <%! int a=100,b=200; ...