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,打算先将示例中的每个网络模型都拿出来用用,当然这样暴力的使用是不会有好结果的- -||| ,所以 ...
随机推荐
- leetcode — longest-consecutive-sequence
import java.util.HashSet; import java.util.Set; /** * Source : https://oj.leetcode.com/problems/long ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- JDBC设计理念浅析 JDBC简介(一)
概念 JDBC是J2EE的标准规范之一,J2EE就是为了规范JAVA解决企业级应用开发制定的一系列规范,JDBC也不例外. JDBC是用于Java编程语言和数据库之间的数据库无关连接的标准Java A ...
- 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(6)- 文语合成实现(pyttsx3, eSpeak1.48.04)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之文语合成实现. 文语合成是Jays-PySPEECH的核心功能,Jays-PySPEECH借 ...
- SpringCloud(2) 服务注册和发现Eureka Server
一.简介 EureKa在Spring Cloud全家桶中担任着服务的注册与发现的落地实现.Netflix在设计EureKa时遵循着AP原则,它基于REST的服务,用于定位服务,以实现云端中间层服务发现 ...
- VS2017 启动调试报错无法启动程序 当前状态中非法
昨天还可以使用,今天就莫名报了这个错误,百度了一下: 1. 第一种尝试方法是右击解决方案中的项目(图标有带球的),打开属性选择“WEB”选项,修改特定页为Home,结果还是报错. 2.我又关闭Wind ...
- C# 处理PPT水印(一)——添加水印效果(文字水印、图片水印)
对文档添加水印可以有效声明和保护文档,是保护重要文件的方式之一.在PPT文档中同样也可以设置水印,包括文本水印和图片水印,本文将讲述如何通过Spire.Presentation for .NET来对P ...
- 零基础学Python--------第4章 序列的应用
第4章 序列的应用 4.1序列 序列是一块用于存放多个值的连续内存空间,并且按上一定顺序排列,每一个值(称为元素)都分配一个数字,称为索引或位置.通过该索引可以取出相应的值.例如,我们可以把一家酒店看 ...
- Timeline Style
from: https://freefrontend.com/css-timelines/ https://bootstrapthemes.co/items/resources/timeline/ h ...
- django项目环境搭建
本文转载自: https://blog.csdn.net/xiaogeldx/article/details/89038299 在码云平台创建项目 版本控制的种类 主要使用github(最主流) 国内 ...