keras 的 Deeplabv3+ 实现遇到的问题
代码大佬都已经写好了,具体参考: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+ 实现遇到的问题的更多相关文章
- [Keras] Develop Neural Network With Keras Step-By-Step
简单地训练一个四层全连接网络. Ref: http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/ 1 ...
- 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 ...
- keras安装
找对工具真的很重要,周末和学霸折腾了一天才装了几个包,问了同事找了一个方便的包,装起来不要太快啊.二十分钟全部搞定. 一.Anaconda 真是大杀器,牛到飞起来,一键部署,所有常用的机器学习包全部包 ...
- ubuntu系统theano和keras的安装
说明:系统是unbuntu14.04LTS,32位的操作系统,以前安装了python3.4,现在想要安装theano和keras.步骤如下: 1,安装pip sudo apt-get install ...
- neurosolutions 人工神经网络集成开发环境 keras
人工神经网络集成开发环境 : http://www.neurosolutions.com/ keras: https://github.com/fchollet/keras 文档 http ...
- Keras官方Example里Mnist-cnn的调试运行
问题:老板让测试运行Keras官网里的Mnist-cnn.py,结果从下载数据就是一路坑-- 当前环境:Ubuntu12.04.python2.7.Keras 1.1.1(不知道这个版本号对不对,在启 ...
- [Keras] mnist with cnn
典型的卷积神经网络. Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0. ...
- [Keras] Install and environment setting
Documentation: https://keras.io/ 1. 利用anaconda 管理python库是明智的选择. conda update conda conda update anac ...
- linux install Theano+Tensorflow+Keras
安装过程中,网络状态一定要好,如果安装过程中出现time out的提示信息,今天就可以洗洗睡啦,等明天网络状态好的时候再安装. 安装过程出现不知名的错误的时候,执行第一步,update一下 1.#up ...
随机推荐
- leetcode — path-sum
/** * Source : https://oj.leetcode.com/problems/path-sum/ * * * Given a binary tree and a sum, deter ...
- Jenkins结合.net平台综合应用之使用FileZilla搭建ftp服务器
上一节我们讲解了如何编译web项目,web项生成以后我们是手动复制到iis目录下的,这显然不符合devops初衷,这里我们讲解如何利用ftp协议把文件传到远程服务器的iis目录下. 这一讲分两部分一部 ...
- [JavaScript] JavaScript事件注册,事件委托,冒泡,捕获,事件流
面试题 event 事件 事件委托是什么? 如何阻止事件冒泡,阻止默认事件呢? Javascript 的事件流模型都有什么? 事件绑定和普通事件有什么区别? Event 对象 Event 对象,当事件 ...
- Using rqt_console and roslaunch
Description: This tutorial introduces ROS using rqt_console and rqt_logger_level for debugging and r ...
- MySQL 8.0版本连接报错:Could not create connection to database server.
准备搭建一个Spring Boot 组合mybatis的项目,数据库采用的是MySQL 8.0.11按照以往的配置,使用插件mybatis-generator-maven-plugin生成代码时,一直 ...
- 【.Net Core】获取绝对路径、相对路径
一.绝对路径 1.获取应用程序运行当前目录Directory.GetCurrentDirectory(). System.IO命名空间中存在Directory类,提供了获取应用程序运行当前目录的静态方 ...
- python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)
python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests ...
- Web前端 HTML知识总结
HTML篇 一.HTML的概念 HTML:就是Hyper Text Markup Languaged的缩写,意思就是超文本标志语言 (超文本:功能比普通文本要强:标志语言:使用一组标签对内容进行描述的 ...
- WebStorm 配置微信小程序开发 用html样式打开wxml 用css样式打开wxss 配置微信小程序提醒
1.点开preferences 2.搜索找到“File Types” 3.找到"HTML",点击“+”按钮,添加“*.wxml”然后“apply” 4.和3一样,再找到 ‘casc ...
- 【20190407】JavaScript-indexOf方法解析
在JavaScript中,字符串类型String和数组类型Array都有indexOf()方法,虽然他们的作用都是返回传入元素在指定字符串或数组中的位置,但他们之间还是存在着一点点不同. Str.in ...