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,打算先将示例中的每个网络模型都拿出来用用,当然这样暴力的使用是不会有好结果的- -||| ,所以 ...
随机推荐
- Spring Cloud-微服务架构集大成者
本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过 ...
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(1)- 环境搭建(Python2.7.14 + pySerial3.4 + wxPython4.0.3)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之环境搭建. 在写Jays-PyCOM时需要先搭好开发和调试环境,下表列出了开发过程中会用到的所有软 ...
- Ansible 入门指南 - 安装及 Ad-Hoc 命令使用
安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...
- C#_Lamada帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- c#计算机视觉库openCVSharp
作为研究计算机视觉的一员,大家肯定对Intel大名鼎鼎的openCV系列计算机视觉库耳熟能详,对于很多人来说openCV甚至已经成为其项目研究不可缺少的一部分.但是,由于项目兼容性的要求.openCV ...
- Android开发——EditText的属性使用
最近使用的EditText控件,有些属性不太清楚,做一下笔记 判断EditText中内容是否为空 EditText多行显示 android:inputType="textMultiLin ...
- Java高并发--原子性可见性有序性
Java高并发--原子性可见性有序性 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 原子性:指一个操作不可中断,一个线程一旦开始,直到执行完成都不会被其他线程干扰.换 ...
- WordPress在Centos下Apache设置伪静态方法
1.设置httpd.conf文件 1.1 添加或取消注释这段代码 LoadModule rewrite_module modules/mod_rewrite.so 1.2 运行httpd -M查看这个 ...
- Spring(一)JdbcTemplate的环境搭建
1.建立一个项目,导入jar包(ioc aop dao 连接池 数据库驱动包)拷贝Spring容器对应的配置文件到src下 2.在配置文件中引入外部属性文件 3.配置数据源 4.配置JdbcTempl ...
- java 线程方法 ---- join()
class MyThread2 implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++){ S ...