当前位置:网站首页>deeplab实现自己遥感地质分割数据集
deeplab实现自己遥感地质分割数据集
2022-07-31 10:55:00 【我是一个小稻米】
1. 数据集下载
下载链接
提取码:2022
数据集文件夹中存放了样例image和label,可以查看他们的通道等信息,方便处理自己的数据集。
2. 数据集预处理
参考另一篇文章:图像预处理
- 数据集image
- 是24位深度
- 3通道RGB图像
- 数据集label
- 是8位深度
- 标签取值为0,1,2,…(有n类取值就到n-1)
如果您的数据集标签取值为255,需要转化为0,1,2,等(视自己情况而定)
例如:
Background [0,0,0]--------------0
Person [192,128,128]--------------1
Bike [0,128,0]----------------------2
Car [128,128,128]----------------- 3
Drone [128,0,0]--------------------4
Boat [0,0,128]--------------------- 5
Animal [192,0,128]---------------- 6
Obstacle [192,0,0]------------------7
Construction [192,128,0]-----------8
Vegetation [0,64,0]-----------------9
Road [128,128,0]-------------------10
Sky [0,128,128]---------------------11
如果显存不够,可以裁剪图像为256大小,对应代码如下:
裁剪后的图像保存在image和label中
import os
import numpy as np
import cv2
images_path = './JPEGImages/'
labels_path = './SegmentationClass/'
image_files = os.listdir(images_path)
for s in image_files:
image_path = images_path + s
label_path = labels_path + s[:-4]+'.png'
image = cv2.imread(image_path)
label = cv2.imread(label_path)
#print(image.shape)
index = 0
for i in range(4):
for j in range(4):
#print(i*256, ((i+1)*256-1), j*256, ((j+1)*256-1))
new_image = image[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
new_label = label[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
cv2.imwrite('./image/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_image)
new_label = cv2.cvtColor(new_label, cv2.COLOR_BGR2GRAY)
cv2.imwrite('./label/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_label)
index+=1
print(s)
3. 模型下载
4. 检查数据
- 数据准备完成之后,首先运行
voc_annotation.py
文件,生成数据列表,运行命令:python voc_annotation.py
,此处一般不会报错,如果报错可以按照下面的方式检查:检查标签是否是
8位深度
,如果不是,运行下面的代码:import os import cv2 file_names = os.listdir('./SegmentationClass/') for s in file_names: image_path = os.path.join('./SegmentationClass/', s) image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imwrite('./SegmentationClass/' + s , image)
检查标签中是否有其他值,比如说
类别为3
,那么标签中的取值只能是0,1,2
,如果出现其他值,就可能会报错;即便此处不报错,也可能在训练中出现问题,所以如果有这个问题,一定要记得修改。如果这种值不是特别多,可以直接设为0;如果特别多,那就需要检查是哪一步造成这个问题,如果找不到建议换数据集吧。
5. 训练模型
- 修改train.py代码
图像的尺寸(重要)
图像类别(重要)
batch_size等其他参数视情况而定 - 运行
python train.py
来训练
6. 模型评估
- 修改deeplab.py内容,分别是训练好的模型。类别数(包括背景在内)。图像尺寸
- 修改get_miou.py内容
- 运行
python get_miou.py
命令
7. 模型预测
- 修改deeplab.py内容,分别是训练好的模型。类别数(包括背景在内)。图像尺寸
- 修改predict.py内容。name_classes表示每个类别对应的名称
- 运行
python predict.py
命令
边栏推荐
猜你喜欢
A Method for Ensuring Data Consistency of Multi-Party Subsystems
【LeetCode】73.矩阵置零
windows平台下的mysql启动等基本操作
双链表的插入和删除
掌握SSR
可以用聚酯树脂将接线板密封接线盒吗?(接线盒灌封胶用哪种树脂)
Build finished with errors/Executable Not Found
矩形脉冲波形的占空比及脉冲和瞬态特征的测量
Burndown chart of project management tools: Dynamic assessment of team work ability
unity-shader-2
随机推荐
Threading(in thread main)
WEB核心【记录网站登录人数,记录用户名案例】Cookie技术实现
2022/7/30
SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)
darknet 训练分类网络
Web系统常见安全漏洞介绍及解决方案-XSS攻击
Inversion problem - key point
强大的SQL计算利器-SPL
7 天学个Go,Go 结构体 + Go range 来学学
蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 –传统蓝牙搜索演示以及实现原理[通俗易懂]
pycharm汉化教程(碧蓝幻想汉化插件安装)
strings包详细文档+示例
KVM virtualization job
Redis - Basics
掌握SSR
C#之泛型、委托、事件及其使用
SQL力扣刷题七
【LeetCode】141.环形链表
redis-enterprise use
“chmod 777-R 文件名”什么意思?