数据集

使用的数据集是kaggle的Semantic segmentation of aerial imagery
其数据的组织形式为

项目结构

utils

dataConvert.py

dataConvert中主要包含数据的变换过程

函数 作用
loadColorMap 用于加载标签的颜色映射
voc_colormap2label 获取颜色标签到数值标签的映射关系
voc_rand_crop 用于裁剪数据
voc_label_indices 将RGB标签转换成数值标签
one hot 将标签转换成one hot

dataLoader.py

dataLoader.py包含数据的加载过程

类/函数 作用
SemanticDataset 数据加载类,包含数据归一化,数据裁剪过程,用于加载数据
load_data_voc 调用SemanticDataset批量加载训练集和测试集

losses.py

定义损失函数,本项目中采用的是Focal loss和Dice loss相加作为损失函数

model.py

包含U-net模型和deeplabv3+两种模型,在训练和测试过程可以通过修改参数进行选择

prepare模块

这个模块在训练前执行,是整个项目的准备工作

函数

函数 作用
semantic2dataset 航拍数据集转换成语义分割的数据集
trainValSplit 分割训练集和测试集
getMeanStd 获取均值和方差
writeColorClasses 保存颜色和类别

参数

参数只有两个,就是颜色映射和类别,在本项目中这两个参数为

VOC_COLORMAP = [[226, 169, 41], [132, 41, 246], [110, 193, 228], [60, 16, 152], [254, 221, 58], [155, 155, 155]]
VOC_CLASSES = ['Water', 'Land (unpaved area)', 'Road', 'Building', 'Vegetation', 'Unlabeled']

train模块

函数

train
根据传入的参数进行训练

参数

参数 作用
batch_size 批量大小,在语义分割中可以设置小一些
crop_size 裁剪图像大小
model_choice 模型的选择,可选U-net、deeplabv3+
in_channels 输入图像通道数,RGB图像为3,灰度图为1
out_channels 输出标签类别,本项目中为6
num_epochs 训练总轮次
auto_save 自动保存权值的间隔轮次
lr 学习率
device 训练使用的环境,当cuda可用时自动设为cuda,否则自动设为cpu

predict模块

predict模块只是浅测一下模型的精度和效果,如果需要应用可以调用predict函数进行预测并与实际应用结合

函数

函数 作用
label2image 数值标签转换成RGB标签
predict 单张图片的预测
read_voc_images 读取图片
plotPredictAns 画出测试结果

参数

参数 作用
voc_dir 测试数据的路径
means 图像均值
stds 图像方差
device 训练使用的环境,当cuda可用时自动设为cuda,否则自动设为cpu
batch_size 批量大小
model_choice 模型的选择,可选U-net、deeplabv3+

下载地址

GitHub下载地址:Semantic-segmentation-for-aerial

详细讲解

语义分割项目(一)——数据概况及预处理

语义分割项目(二)——标签转换与数据加载

语义分割项目(三)——语义分割模型(U-net和deeplavb3+)

语义分割项目(四)——模型训练与预测

pytorch深度学习案例(二)——航拍街道语义分割相关推荐

  1. Pytorch深度学习实战教程:UNet语义分割网络

    1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 本文的开发环境如下: 开发环境:Windows 开发语言:Python3. ...

  2. 深度学习实战23(进阶版)-语义分割实战,实现人物图像抠图的效果(计算机视觉)

    大家好,我是微学AI,今天给大家带来深度学习实战23(进阶版)-语义分割实战,实现人物图像抠图的效果.语义分割是计算机视觉中的一项重要任务,其目标是将图像中的每个像素都分配一个语义类别标签.与传统的目 ...

  3. AI深度学习入门与实战19 语义分割:打造简单高效的人像分割模型

    上一讲,我向你介绍了语义分割的原理.在理解上一课时中 U-Net 语义分割网络的基础上,这一讲,让我们来实际构建一个人像分割模型吧. 语义分割的评估 我们先简单回顾一下语义分割的目的:把一张图中的每一 ...

  4. 深度学习100问:图像语义分割有哪些经典的上采样方法?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 大家都知道目前主流的语义分割模型都是编码-解码框架的.通过编码器不 ...

  5. 了解图像分割的深度学习技术(2019年语义分割论文综述)

    论文名称:Understanding Deep Learning Techniques for Image Segmentation 论文链接:https://arxiv.org/abs/1907.0 ...

  6. Pytorch 深度学习实战教程(二):UNet语义分割网络

    本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 一 ...

  7. Pytorch深度学习实战教程(二):UNet语义分割网络

    1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 如果不了解语义分割原理以及开发环境的搭建,请看该系列教程的上一篇文章< ...

  8. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割

    随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍.农业.植保.灾难评估.救援.测绘.电力巡检等.但同时由于无人机飞行高度低.获取目标类型多.以及环境复杂等因素使得对无人机获取的数据处理 ...

  9. 【Pytorch深度学习实践】B站up刘二大人之BasicCNN Advanced CNN -代码理解与实现(9/9)

    这是刘二大人系列课程笔记的 最后一个笔记了,介绍的是 BasicCNN 和 AdvancedCNN ,我做图像,所以后面的RNN我可能暂时不会花时间去了解了: 写在前面: 本节把基础个高级CNN放在一 ...

最新文章

  1. 中国商业航天单轮最大融资!星际荣耀B轮获投11.925亿
  2. localdatetime获得时间搓_得用户者得天下,一禅小和尚×往事若茶如何获得消费者认同...
  3. 关于我转生变成史莱姆这档事
  4. Tomcat : IOException while loading persisted sessions: java.io.EOFException
  5. 哥谈的是语言,不是寂寞
  6. markdown 提示文本_【文本编辑01】MarkdownPad安装及基本配置
  7. 研发管理系统选型必读
  8. 将域名从易名中国(www.ename.cn)转移到中国万网(www.net.cn)
  9. 高质量论文配图配色,让你的图更加亮眼
  10. 虚拟服务器443端口开启,服务器开启443端口
  11. PPT——地图快速获取(各地区域)
  12. 【大学物理·早期量子论和量子力学基础】量子力学中的氢原子问题
  13. Juniper路由器基本命令及中文解
  14. 为什么raw图是绿色的?
  15. JavaScript学习过程
  16. 论文阅读笔记:vTPM
  17. JAVA科学计数法,金额数字,转换为中文大写字
  18. java版wifi下载电脑版_360wifi下载
  19. OA系统开发人事模块关于请假跨月的处理
  20. usb3.0 ssd 测试软件,Msata SSD转USB3.0的盘盒不完全测试

热门文章

  1. ROC/AUC曲线学习及Python实现
  2. js html转pdf并在线浏览器,Egg + Puppeteer 实现Html转PDF
  3. DoDataExchange(CDataExchange *pDX)
  4. Php实现rdp协议,RDPY - Twisted Python 实现的RDP协议(Windows 远程桌面)
  5. Python 爬虫速成教程,还有35个实战项目送给你
  6. H5移动端适配 rem 和 vw 的区别
  7. 一诺万金智慧物业大脑平台
  8. web前端开发职业培训,前端应届生如何做一个职业规划
  9. 图书分类怎么写用php,PHP开发简单图书后台管理系统实现图书统计
  10. stringstream的使用方法