DeeplabV3+ 训练自己的遥感数据
一、预处理数据部分
1、创建 tfrecord(修改 deeplab\ dateasets\ build_data.py)
模型本身是把一张张 jpg 和 png 格式图片读到一个 Example 里,写入 tfrecord。但我是一个大的 tif 文件,需要把几万像素的图片分割成小块写入到一个 tfrecord 文件里,而 tf 没有对 tif 格式的图片的解码,因此不能直接使用原来的 build_data.py。
先用 osgeo 里的 gdal 读取 tif 文件,得到大 tif 的 np.array,再设置步长一块块读取,调用 tobytes() 转成二进制字符串,保存到 tfrecord 中,不过需要把图片 shape 都设置好,大小还有维度,这点有待改进。
最后的 tfrecord 里就只有两个数组:原图片和标签值
加入高度和宽度信息后会报错,不知道怎么 debug,只能从头到尾固定好大小 321 了
2、data_generator读数据(修改 deeplab\ dateasets\ data_generator.py)
加入自己的数据集,只需模仿它已经创建的数据就好,训练验证测试大小,以及忽略值等
解码时用 tf.decode_raw() 解码,不用再根据后缀判断调用哪个。
二、训练部分
1、训练(修改 deeplab\ train.py)
参数设置里需要指定自己的数据集 dataset
由于类别数不同,设置 initialize_last_layer=False,last_layers_contain_logits_only=True
crop_size缩小为321(由于内存不够,将其改小,但是crop_size至少要大于300,遵循的公式是(crop_size-1)/4为整数)
2、修改 deeplab\ utils\ train_utils.py
159 行改成 exclude_list = ['global_step','logits'],即把 logits 层加到不恢复的列表中,这样才能训练自己的数据,改类别数
训练的一些问题可以参考:https://github.com/tensorflow/models/issues/3730
logits is the last feature maps before softmax. logits 层是在 softmax 前的最后一层特征图,是没有经过归一化的预测值,如果面对分类问题再经过一层 softmax 就可以得到每类的概率
Maybe this can help you.
The vector of raw (non-normalized) predictions that a classification model generates, which is ordinarily then passed to a normalization function. If the model is solving a multi-class classification problem, logits typically become an input to the softmax function. The softmax function then generates a vector of (normalized) probabilities with one value for each possible class.
三、验证部分
1、验证(修改 deeplab\ eval.py)
eval.py 不会出现 miou 分数,在 summary 里加入一个 tf.Print 的 op,就可以显示了
四、可视化部分
1、可视化(修改 deeplab\ vis.py)
由于没有每个文件的文件名,需要把 vis.py 里有关文件名的地方做相应的修改,sample.HEIGHT,WIDTH 也没有要注释掉。_process_batch 的参数对应修改
需要在 get_dataset_colormap.py 中加入自己的数据集
2、可视化标签(再修改 deeplab\ vis.py)
原来的 vis 只可视化了图片和预测值,为了方便比较,把真值也显示,把 tfrecord 里的真值读出来就可以
3、可视化预测图像(修改 deeplab\ utils\ get_dataset_colormap.py)
加入自己的数据集,根据类别设置颜色个数
可视化真值时报错 label[255] 超出索引,把忽略值直接赋值为0解决
五、预测部分
1、修改deeplab\ datasets\ build_data_test.py
预测数据没有真值,需要重写一个 build_data
2、修改 deeplab\ input_preprocess.py
预测时 label 为 None,但原始影像还是要裁剪,去适配我的 data_generator,原始的不需要因为大小信息都在 tfrecord 里,会自动处理,我指定了大小
3、修改 deeplab\ datasets\ data_generator_test.py
不解析 label
参考:https://blog.csdn.net/weixin_38385446/article/details/82781109
DeeplabV3+ 训练自己的遥感数据的更多相关文章
- 通过整合遥感数据和社交媒体数据来进行城市土地利用的分类( Classifying urban land use by integrating remote sensing and social media data)DOI: 10.1080/13658816.2017.1324976 20.0204
Classifying urban land use by integrating remote sensing and social media data Xiaoping Liu, Jialv ...
- Aster及其它遥感数据下载地址
免费下载TM,ETM的网址,速度还行,本人下载过, http://glcfapp.umiacs.umd.edu 还有一个是下载其他数据的,也可以去看看免费下载·遥感数据http://daac.gsfc ...
- caffe简易上手指南(二)—— 训练我们自己的数据
训练我们自己的数据 本篇继续之前的教程,下面我们尝试使用别人定义好的网络,来训练我们自己的网络. 1.准备数据 首先很重要的一点,我们需要准备若干种不同类型的图片进行分类.这里我选择从ImageNet ...
- 利用 keras_proprecessing.image 扩增自己的遥感数据(多波段)
1.keras 自带的 keras_proprecessing.image 只支持三种模式图片(color_mode in ['grey', 'RGB', 'RGBA'])的随机扩增. 2.遥感数据除 ...
- 实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
三:使用Caffe训练Caffemodel并进行图像分类 上一篇记录的是如何使用别人训练好的MNIST数据做训练测试.上手操作一边后大致了解了配置文件属性.这一篇记录如何使用自己准备的图片素材做图像分 ...
- python+caffe训练自己的图片数据流程
1. 准备自己的图片数据 选用部分的Caltech数据库作为训练和测试样本.Caltech是加州理工学院的图像数据库,包含Caltech101和Caltech256两个数据集.该数据集是由Fei-Fe ...
- 美国NOAA/AVHRR遥感数据
1.美国国家海洋和大气管理局(National Oceanic and Atmospheric Administration,NOAA) 美国国家海洋和大气管理局隶属于美国商业部下属的科技部门,主要关 ...
- 使用deeplabv3+训练自己数据集(迁移学习)
概述 在前边一篇文章,我们讲了如何复现论文代码,使用pascal voc 2012数据集进行训练和验证,具体内容可以参考<deeplab v3+在pascal_voc 2012数据集上进行训练& ...
- Caffe初试(三)使用caffe的cifar10网络模型训练自己的图片数据
由于我涉及一个车牌识别系统的项目,计划使用深度学习库caffe对车牌字符进行识别.刚开始接触caffe,打算先将示例中的每个网络模型都拿出来用用,当然这样暴力的使用是不会有好结果的- -||| ,所以 ...
随机推荐
- mtools-你可能没用过的mongodb神器
前言 接触 mongodb 已经有一段时间了,从一开始的不了解,到现在已慢慢适应这个nosql领域的佼佼者,还是经历了不少波折. 在进行数据库选型的时候,许多人总是喜欢拿 mongodb和mysql. ...
- Android单个控件占父控件宽度一半且水平居中
前些天,在工作中遇到了一个需求:一个“加载上一页”的按钮宽度为父控件宽度一半,且水平居中于父控件中. 在此给出两种思路: 1.直接在Activity代码中获取到当前父控件的宽度,并将此按钮宽度值设置成 ...
- ASP.NET Core 2.1 : 十.升级现有Core2.0 项目到2.1
.NET Core 2.1 终于发布了, 赶紧升级一下. 一. 安装SDK 首先现在并安装 SDK(64-bit) 安装完毕后如果新建项目可以看到已经有2.1的选项了 二. 更新现有2.0项目到2.1 ...
- .NET LINQ 实现跨数据库数据的整合
如果要在不同的数据库之间,要把数据整合到一起,或者对数据进行统计分析的话,实现起来比较麻烦. 一般情况下我们第一时间想到的方法是通过前置机实现,在前置机上安装一个数据库和同步数据程序,定时的把数据同步 ...
- Java开发笔记(十七)各得其所的多路分支
前面提到条件语句的标准格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个 ...
- Android Material Design控件使用(三)——CardView 卡片布局和SnackBar使用
cardview 预览图 常用属性 属性名 说明 cardBackgroundColor 设置背景颜色 cardCornerRadius 设置圆角大小 cardElevation 设置z轴的阴影 ca ...
- create-react-app 修改项目端口号及ip,设置代理
项目相关配置,需要在package.json中配置
- js数组方法详解(最新最全)
数组是js中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响.本文所有的栗子都是在es7环境下测试的,如果有问题欢迎留言交流 ...
- 可视化设计,类Excel的快速开发平台
活字格Web应用生成器,是可视化设计,类Excel的快速开发平台,接下来给大家介绍如何体现这些特点. 一.可视化设计 网页系统的开发,包含UI设计+代码编写的工作,最终形成网页系统.这要求系统开发人员 ...
- 支持JSP和Servlet的Web服务器
支持JSP和Servlet的Web服务器 1.Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型.轻量级的支持JSP和Servle ...